summaryrefslogtreecommitdiff
path: root/spec/ruby/shared/file/writable.rb
diff options
context:
space:
mode:
Diffstat (limited to 'spec/ruby/shared/file/writable.rb')
-rw-r--r--spec/ruby/shared/file/writable.rb16
1 files changed, 16 insertions, 0 deletions
diff --git a/spec/ruby/shared/file/writable.rb b/spec/ruby/shared/file/writable.rb
index 4bb8aedce6..65ea2c1781 100644
--- a/spec/ruby/shared/file/writable.rb
+++ b/spec/ruby/shared/file/writable.rb
@@ -19,6 +19,22 @@ describe :file_writable, shared: true do
it "accepts an object that has a #to_path method" do
File.open(@file,'w') { @object.send(@method, mock_to_path(@file)).should == true }
end
+
+ platform_is_not :windows do
+ as_superuser do
+ context "when run by a superuser" do
+ it "returns true unconditionally" do
+ file = tmp('temp.txt')
+ touch file
+
+ File.chmod(0555, file)
+ @object.send(@method, file).should == true
+
+ rm_r file
+ end
+ end
+ end
+ end
end
describe :file_writable_missing, shared: true do
class='graph'>
-rw-r--r--GPL39
-rw-r--r--Makefile.in134
-rw-r--r--NEWS565
-rw-r--r--README152
-rw-r--r--README.EXT1312
-rw-r--r--README.EXT.ja2116
-rw-r--r--README.ja241
-rw-r--r--ToDo124
-rw-r--r--addr2line.c562
-rw-r--r--array.c2656
-rw-r--r--bcc32/Makefile.sub617
-rw-r--r--bcc32/README.bcc32130
-rwxr-xr-xbcc32/configure.bat163
-rwxr-xr-xbcc32/mkexports.rb26
-rw-r--r--bcc32/setup.mak179
-rw-r--r--benchmark/bm_app_aobench.rb292
-rw-r--r--benchmark/bm_app_mandelbrot.rb2
-rw-r--r--benchmark/bm_app_raise.rb4
-rw-r--r--benchmark/bm_app_strconcat.rb4
-rw-r--r--benchmark/bm_hash_shift.rb10
-rw-r--r--benchmark/bm_io_select2.rb6
-rw-r--r--benchmark/bm_io_select3.rb6
-rw-r--r--benchmark/bm_loop_whileloop.rb4
-rw-r--r--benchmark/bm_loop_whileloop2.rb4
-rw-r--r--benchmark/bm_so_binary_trees.rb9
-rw-r--r--benchmark/bm_so_concatenate.rb4
-rw-r--r--benchmark/bm_so_exception.rb2
-rw-r--r--benchmark/bm_so_lists.rb2
-rw-r--r--benchmark/bm_so_nsieve_bits.rb1
-rw-r--r--benchmark/bm_so_random.rb4
-rw-r--r--benchmark/bm_so_sieve.rb4
-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.rb4
-rw-r--r--benchmark/bm_vm1_const.rb2
-rw-r--r--benchmark/bm_vm1_ensure.rb4
-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.rb2
-rw-r--r--benchmark/bm_vm1_ivar_set.rb2
-rw-r--r--benchmark/bm_vm1_length.rb4
-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.rb2
-rw-r--r--benchmark/bm_vm1_not.rb2
-rw-r--r--benchmark/bm_vm1_rescue.rb4
-rw-r--r--benchmark/bm_vm1_simplereturn.rb4
-rw-r--r--benchmark/bm_vm1_swap.rb4
-rw-r--r--benchmark/bm_vm1_yield.rb10
-rw-r--r--benchmark/bm_vm2_array.rb4
-rw-r--r--benchmark/bm_vm2_bigarray.rb106
-rw-r--r--benchmark/bm_vm2_bighash.rb5
-rw-r--r--benchmark/bm_vm2_case.rb4
-rw-r--r--benchmark/bm_vm2_defined_method.rb4
-rw-r--r--benchmark/bm_vm2_dstr.rb6
-rw-r--r--benchmark/bm_vm2_eval.rb4
-rw-r--r--benchmark/bm_vm2_method.rb4
-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.rb4
-rw-r--r--benchmark/bm_vm2_poly_method.rb4
-rw-r--r--benchmark/bm_vm2_poly_method_ov.rb4
-rw-r--r--benchmark/bm_vm2_proc.rb4
-rw-r--r--benchmark/bm_vm2_raise1.rb18
-rw-r--r--benchmark/bm_vm2_raise2.rb18
-rw-r--r--benchmark/bm_vm2_regexp.rb4
-rw-r--r--benchmark/bm_vm2_send.rb4
-rw-r--r--benchmark/bm_vm2_super.rb2
-rw-r--r--benchmark/bm_vm2_unif1.rb2
-rw-r--r--benchmark/bm_vm2_zsuper.rb2
-rw-r--r--benchmark/bm_vm3_backtrace.rb22
-rw-r--r--benchmark/bm_vm3_clearmethodcache.rb4
-rw-r--r--benchmark/bm_vm_thread_create_join.rb4
-rw-r--r--benchmark/bm_vm_thread_mutex1.rb4
-rw-r--r--benchmark/bm_vm_thread_mutex2.rb4
-rw-r--r--benchmark/bm_vm_thread_mutex3.rb4
-rw-r--r--benchmark/bm_vm_thread_pass_flood.rb2
-rw-r--r--benchmark/bm_vm_thread_queue.rb18
-rw-r--r--benchmark/bmx_temp.rb9
-rw-r--r--benchmark/driver.rb131
-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/other-lang/fact.rb4
-rw-r--r--benchmark/other-lang/loop.rb4
-rw-r--r--bignum.c7226
-rwxr-xr-xbin/erb4
-rwxr-xr-xbin/irb11
-rwxr-xr-xbin/rake1
-rwxr-xr-xbin/rdoc4
-rwxr-xr-xbin/testrb9
-rwxr-xr-xbootstraptest/runner.rb112
-rw-r--r--bootstraptest/test_autoload.rb40
-rw-r--r--bootstraptest/test_block.rb32
-rw-r--r--bootstraptest/test_class.rb10
-rw-r--r--bootstraptest/test_eval.rb37
-rw-r--r--bootstraptest/test_exception.rb16
-rw-r--r--bootstraptest/test_flow.rb37
-rw-r--r--bootstraptest/test_io.rb10
-rw-r--r--bootstraptest/test_literal.rb33
-rw-r--r--bootstraptest/test_literal_suffix.rb54
-rw-r--r--bootstraptest/test_method.rb122
-rw-r--r--bootstraptest/test_proc.rb1
-rw-r--r--bootstraptest/test_syntax.rb4
-rw-r--r--bootstraptest/test_thread.rb42
-rw-r--r--class.c572
-rw-r--r--common.mk513
-rw-r--r--compar.c32
-rw-r--r--compile.c1970
-rw-r--r--complex.c712
-rw-r--r--configure.in1972
-rw-r--r--constant.h4
-rw-r--r--cont.c311
-rw-r--r--cygwin/GNUmakefile.in4
-rw-r--r--debug.c8
-rw-r--r--defs/default_gems12
-rw-r--r--defs/gmake.mk29
-rw-r--r--defs/id.def105
-rw-r--r--defs/opt_operand.def49
-rw-r--r--dir.c527
-rw-r--r--dln.c71
-rw-r--r--dln.h19
-rw-r--r--dln_find.c48
-rw-r--r--dmydln.c2
-rw-r--r--dmyencoding.c2
-rw-r--r--dmyext.c5
-rw-r--r--dmyversion.c2
-rw-r--r--doc/.document4
-rw-r--r--doc/ChangeLog-1.8.0152
-rw-r--r--doc/ChangeLog-1.9.312157
-rw-r--r--doc/ChangeLog-2.0.024015
-rw-r--r--doc/NEWS-1.8.725
-rw-r--r--doc/NEWS-1.9.133
-rw-r--r--doc/NEWS-1.9.250
-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.rd75
-rw-r--r--doc/etc.rd.ja76
-rw-r--r--doc/forwardable.rd83
-rw-r--r--doc/forwardable.rd.ja44
-rw-r--r--doc/globals.rdoc69
-rw-r--r--doc/irb/irb-tools.rd.ja110
-rw-r--r--doc/irb/irb.rd391
-rw-r--r--doc/irb/irb.rd.ja372
-rw-r--r--doc/marshal.rdoc313
-rw-r--r--doc/pty/README84
-rw-r--r--doc/pty/README.expect22
-rw-r--r--doc/pty/README.expect.ja28
-rw-r--r--doc/pty/README.ja86
-rw-r--r--doc/rake/CHANGES440
-rw-r--r--doc/rake/README196
-rw-r--r--doc/rake/command_line_usage.rdoc102
-rw-r--r--doc/rake/example/Rakefile138
-rw-r--r--doc/rake/example/Rakefile235
-rw-r--r--doc/rake/example/a.c6
-rw-r--r--doc/rake/example/b.c6
-rw-r--r--doc/rake/example/main.c11
-rw-r--r--doc/rake/glossary.rdoc51
-rw-r--r--doc/rake/jamis.rb591
-rw-r--r--doc/rake/proto_rake.rdoc127
-rw-r--r--doc/rake/rakefile.rdoc534
-rw-r--r--doc/rake/rational.rdoc151
-rw-r--r--doc/rake/release_notes/rake-0.8.7.rdoc55
-rw-r--r--doc/regexp.rdoc (renamed from doc/re.rdoc)231
-rw-r--r--doc/rubygems/ChangeLog5689
-rw-r--r--doc/rubygems/History.txt852
-rw-r--r--doc/rubygems/LICENSE.txt53
-rw-r--r--doc/rubygems/README41
-rw-r--r--doc/security.rdoc144
-rw-r--r--doc/shell.rd347
-rw-r--r--doc/shell.rd.ja150
-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.in10
-rw-r--r--enc/ascii.c7
-rw-r--r--enc/big5.c12
-rw-r--r--enc/cp949.c4
-rw-r--r--enc/depend96
-rw-r--r--enc/emacs_mule.c3
-rw-r--r--enc/encdb.c4
-rw-r--r--enc/encinit.c.erb26
-rw-r--r--enc/euc_jp.c292
-rw-r--r--enc/euc_kr.c4
-rw-r--r--enc/euc_tw.c4
-rw-r--r--enc/gb18030.c4
-rw-r--r--enc/gbk.c4
-rw-r--r--enc/iso_2022_jp.h7
-rw-r--r--enc/iso_8859_1.c4
-rw-r--r--enc/iso_8859_10.c4
-rw-r--r--enc/iso_8859_11.c4
-rw-r--r--enc/iso_8859_13.c4
-rw-r--r--enc/iso_8859_14.c4
-rw-r--r--enc/iso_8859_15.c4
-rw-r--r--enc/iso_8859_16.c4
-rw-r--r--enc/iso_8859_2.c4
-rw-r--r--enc/iso_8859_3.c4
-rw-r--r--enc/iso_8859_4.c4
-rw-r--r--enc/iso_8859_5.c4
-rw-r--r--enc/iso_8859_6.c4
-rw-r--r--enc/iso_8859_7.c4
-rw-r--r--enc/iso_8859_8.c4
-rw-r--r--enc/iso_8859_9.c4
-rw-r--r--enc/koi8_r.c4
-rw-r--r--enc/koi8_u.c4
-rwxr-xr-xenc/make_encmake.rb86
-rw-r--r--enc/mktable.c1162
-rw-r--r--enc/shift_jis.c279
-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@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.trans3
-rw-r--r--enc/trans/chinese.trans3
-rw-r--r--enc/trans/emoji.trans3
-rw-r--r--enc/trans/emoji_iso2022_kddi.trans3
-rw-r--r--enc/trans/emoji_sjis_docomo.trans3
-rw-r--r--enc/trans/emoji_sjis_kddi.trans3
-rw-r--r--enc/trans/emoji_sjis_softbank.trans3
-rw-r--r--enc/trans/escape.trans3
-rw-r--r--enc/trans/gb18030.trans3
-rw-r--r--enc/trans/gbk.trans3
-rw-r--r--enc/trans/iso-8859-16-tbl.rb98
-rw-r--r--enc/trans/iso2022.trans3
-rw-r--r--enc/trans/japanese.trans3
-rw-r--r--enc/trans/japanese_euc.trans15
-rw-r--r--enc/trans/japanese_sjis.trans3
-rw-r--r--enc/trans/korean.trans3
-rw-r--r--enc/trans/single_byte.trans4
-rw-r--r--enc/trans/utf8_mac-tbl.rb23655
-rw-r--r--enc/trans/utf8_mac.trans160
-rw-r--r--enc/trans/utf_16_32.trans3
-rw-r--r--enc/unicode.c1945
-rw-r--r--enc/unicode/casefold.h2238
-rw-r--r--enc/unicode/name2ctype.h15274
-rw-r--r--enc/unicode/name2ctype.h.blt15274
-rw-r--r--enc/unicode/name2ctype.kwd12679
-rw-r--r--enc/unicode/name2ctype.src12679
-rw-r--r--enc/us_ascii.c4
-rw-r--r--enc/utf_16_32.h5
-rw-r--r--enc/utf_16be.c11
-rw-r--r--enc/utf_16le.c11
-rw-r--r--enc/utf_32be.c12
-rw-r--r--enc/utf_32le.c12
-rw-r--r--enc/utf_8.c12
-rw-r--r--enc/windows_1251.c4
-rw-r--r--enc/windows_31j.c80
-rw-r--r--encoding.c483
-rw-r--r--enum.c1361
-rw-r--r--enumerator.c1063
-rw-r--r--error.c756
-rw-r--r--eval.c661
-rw-r--r--eval_error.c84
-rw-r--r--eval_intern.h102
-rw-r--r--eval_jump.c61
-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-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-/iter/break.c25
-rw-r--r--ext/-test-/iter/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/depend6
-rw-r--r--ext/-test-/old_thread_select/extconf.rb3
-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/numhash.c57
-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.c8
-rw-r--r--ext/-test-/string/depend5
-rw-r--r--ext/-test-/string/enc_str_buf_cat.c14
-rw-r--r--ext/-test-/string/extconf.rb1
-rw-r--r--ext/-test-/string/normalize.c18
-rw-r--r--ext/-test-/string/qsort.c61
-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/depend6
-rw-r--r--ext/-test-/win32/dln/extconf.rb1
-rw-r--r--ext/.document12
-rw-r--r--ext/Setup2
-rw-r--r--ext/Setup.atheos2
-rw-r--r--ext/Setup.emx4
-rw-r--r--ext/Setup.nacl49
-rw-r--r--ext/Setup.nt3
-rw-r--r--ext/bigdecimal/README6
-rw-r--r--ext/bigdecimal/bigdecimal.c3990
-rw-r--r--ext/bigdecimal/bigdecimal.gemspec10
-rw-r--r--ext/bigdecimal/bigdecimal.h48
-rw-r--r--ext/bigdecimal/bigdecimal_en.html792
-rw-r--r--ext/bigdecimal/bigdecimal_ja.html799
-rw-r--r--ext/bigdecimal/depend2
-rw-r--r--ext/bigdecimal/lib/bigdecimal/jacobian.rb6
-rw-r--r--ext/bigdecimal/lib/bigdecimal/math.rb74
-rw-r--r--ext/bigdecimal/lib/bigdecimal/newton.rb5
-rw-r--r--ext/bigdecimal/lib/bigdecimal/util.rb46
-rw-r--r--ext/bigdecimal/sample/linear.rb1
-rw-r--r--ext/bigdecimal/sample/nlsolve.rb2
-rw-r--r--ext/coverage/coverage.c14
-rw-r--r--ext/coverage/depend11
-rw-r--r--ext/coverage/extconf.rb1
-rw-r--r--ext/curses/curses.c383
-rw-r--r--ext/curses/depend6
-rw-r--r--ext/curses/extconf.rb137
-rw-r--r--ext/curses/hello.rb30
-rw-r--r--ext/curses/mouse.rb53
-rw-r--r--ext/curses/rain.rb76
-rw-r--r--ext/date/date_core.c552
-rw-r--r--ext/date/date_parse.c825
-rw-r--r--ext/date/date_strftime.c1692
-rw-r--r--ext/date/date_strptime.c7
-rw-r--r--ext/date/date_tmx.h2
-rw-r--r--ext/date/depend7
-rw-r--r--ext/dbm/dbm.c196
-rw-r--r--ext/dbm/depend1
-rw-r--r--ext/dbm/extconf.rb382
-rw-r--r--ext/digest/bubblebabble/bubblebabble.c32
-rw-r--r--ext/digest/bubblebabble/depend4
-rw-r--r--ext/digest/depend3
-rw-r--r--ext/digest/digest.c66
-rw-r--r--ext/digest/lib/digest.rb10
-rw-r--r--ext/digest/lib/digest/hmac.rb2
-rw-r--r--ext/digest/md5/depend7
-rw-r--r--ext/digest/md5/extconf.rb4
-rw-r--r--ext/digest/md5/md5.c2
-rw-r--r--ext/digest/md5/md5init.c3
-rw-r--r--ext/digest/rmd160/depend7
-rw-r--r--ext/digest/rmd160/extconf.rb4
-rw-r--r--ext/digest/rmd160/rmd160.c10
-rw-r--r--ext/digest/rmd160/rmd160init.c3
-rw-r--r--ext/digest/sha1/depend9
-rw-r--r--ext/digest/sha1/extconf.rb4
-rw-r--r--ext/digest/sha1/sha1init.c3
-rw-r--r--ext/digest/sha2/depend9
-rw-r--r--ext/digest/sha2/extconf.rb4
-rw-r--r--ext/digest/sha2/lib/sha2.rb6
-rw-r--r--ext/digest/sha2/sha2.c23
-rw-r--r--ext/digest/sha2/sha2ossl.c2
-rw-r--r--ext/dl/callback/depend2
-rw-r--r--ext/dl/callback/mkcallback.rb28
-rw-r--r--ext/dl/cfunc.c25
-rw-r--r--ext/dl/cptr.c14
-rw-r--r--ext/dl/depend15
-rw-r--r--ext/dl/dl.c206
-rw-r--r--ext/dl/dl.h33
-rw-r--r--ext/dl/extconf.rb16
-rw-r--r--ext/dl/handle.c2
-rw-r--r--ext/dl/lib/dl.rb3
-rw-r--r--ext/dl/lib/dl/cparser.rb47
-rw-r--r--ext/dl/lib/dl/func.rb8
-rw-r--r--ext/dl/lib/dl/import.rb14
-rw-r--r--ext/dl/lib/dl/struct.rb154
-rw-r--r--ext/dl/lib/dl/types.rb6
-rw-r--r--ext/dl/lib/dl/value.rb2
-rw-r--r--ext/dl/win32/extconf.rb3
-rw-r--r--ext/etc/depend4
-rw-r--r--ext/etc/etc.c414
-rwxr-xr-xext/extmk.rb182
-rw-r--r--ext/fcntl/depend1
-rw-r--r--ext/fcntl/fcntl.c188
-rw-r--r--ext/fiddle/closure.c29
-rw-r--r--ext/fiddle/conversions.c2
-rw-r--r--ext/fiddle/depend4
-rw-r--r--ext/fiddle/extconf.rb5
-rw-r--r--ext/fiddle/fiddle.c369
-rw-r--r--ext/fiddle/fiddle.h40
-rw-r--r--ext/fiddle/function.c65
-rw-r--r--ext/fiddle/handle.c477
-rw-r--r--ext/fiddle/lib/fiddle.rb31
-rw-r--r--ext/fiddle/lib/fiddle/cparser.rb176
-rw-r--r--ext/fiddle/lib/fiddle/function.rb11
-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/depend1
-rw-r--r--ext/gdbm/gdbm.c53
-rw-r--r--ext/iconv/charset_alias.rb104
-rw-r--r--ext/iconv/depend2
-rw-r--r--ext/iconv/extconf.rb54
-rw-r--r--ext/iconv/iconv.c1256
-rw-r--r--ext/iconv/mkwrapper.rb53
-rw-r--r--ext/io/console/console.c48
-rw-r--r--ext/io/console/depend4
-rw-r--r--ext/io/console/extconf.rb12
-rw-r--r--ext/io/console/io-console.gemspec10
-rw-r--r--ext/io/console/lib/console/size.rb2
-rw-r--r--ext/io/nonblock/depend4
-rw-r--r--ext/io/nonblock/nonblock.c31
-rw-r--r--ext/io/wait/depend4
-rw-r--r--ext/io/wait/wait.c51
-rw-r--r--ext/json/fbuffer/fbuffer.h181
-rw-r--r--ext/json/generator/depend2
-rw-r--r--ext/json/generator/extconf.rb8
-rw-r--r--ext/json/generator/generator.c294
-rw-r--r--ext/json/generator/generator.h72
-rw-r--r--ext/json/lib/json.rb4
-rw-r--r--ext/json/lib/json/add/bigdecimal.rb28
-rw-r--r--ext/json/lib/json/add/core.rb250
-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/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.rb67
-rw-r--r--ext/json/lib/json/ext.rb6
-rw-r--r--ext/json/lib/json/generic_object.rb70
-rw-r--r--ext/json/lib/json/version.rb2
-rw-r--r--ext/json/parser/depend2
-rw-r--r--ext/json/parser/extconf.rb7
-rw-r--r--ext/json/parser/parser.c200
-rw-r--r--ext/json/parser/parser.h9
-rw-r--r--ext/json/parser/parser.rl33
-rw-r--r--ext/nkf/depend7
-rw-r--r--ext/nkf/nkf-utf8/nkf.c706
-rw-r--r--ext/nkf/nkf-utf8/nkf.h25
-rw-r--r--ext/nkf/nkf-utf8/utf8tbl.c5876
-rw-r--r--ext/nkf/nkf-utf8/utf8tbl.h13
-rw-r--r--ext/nkf/nkf.c23
-rw-r--r--ext/objspace/depend13
-rw-r--r--ext/objspace/gc_hook.c103
-rw-r--r--ext/objspace/object_tracing.c490
-rw-r--r--ext/objspace/objspace.c563
-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.rb53
-rw-r--r--ext/openssl/lib/openssl.rb5
-rw-r--r--ext/openssl/lib/openssl/bn.rb11
-rw-r--r--ext/openssl/lib/openssl/buffering.rb21
-rw-r--r--ext/openssl/lib/openssl/cipher.rb6
-rw-r--r--ext/openssl/lib/openssl/config.rb169
-rw-r--r--ext/openssl/lib/openssl/digest.rb34
-rw-r--r--ext/openssl/lib/openssl/ssl-internal.rb177
-rw-r--r--ext/openssl/lib/openssl/ssl.rb210
-rw-r--r--ext/openssl/lib/openssl/x509-internal.rb158
-rw-r--r--ext/openssl/lib/openssl/x509.rb164
-rw-r--r--ext/openssl/openssl_missing.c4
-rw-r--r--ext/openssl/ossl.c316
-rw-r--r--ext/openssl/ossl.h8
-rw-r--r--ext/openssl/ossl_asn1.c92
-rw-r--r--ext/openssl/ossl_bio.c2
-rw-r--r--ext/openssl/ossl_bn.c52
-rw-r--r--ext/openssl/ossl_cipher.c224
-rw-r--r--ext/openssl/ossl_config.c9
-rw-r--r--ext/openssl/ossl_engine.c196
-rw-r--r--ext/openssl/ossl_hmac.c100
-rw-r--r--ext/openssl/ossl_ns_spki.c138
-rw-r--r--ext/openssl/ossl_ocsp.c2
-rw-r--r--ext/openssl/ossl_pkcs5.c104
-rw-r--r--ext/openssl/ossl_pkey.c40
-rw-r--r--ext/openssl/ossl_pkey.h10
-rw-r--r--ext/openssl/ossl_pkey_dh.c61
-rw-r--r--ext/openssl/ossl_pkey_dsa.c73
-rw-r--r--ext/openssl/ossl_pkey_ec.c99
-rw-r--r--ext/openssl/ossl_pkey_rsa.c89
-rw-r--r--ext/openssl/ossl_ssl.c526
-rw-r--r--ext/openssl/ossl_x509attr.c4
-rw-r--r--ext/openssl/ossl_x509cert.c4
-rw-r--r--ext/openssl/ossl_x509name.c106
-rw-r--r--ext/openssl/ossl_x509store.c71
-rw-r--r--ext/openssl/ruby_missing.h13
-rw-r--r--ext/pathname/depend3
-rw-r--r--ext/pathname/lib/pathname.rb158
-rw-r--r--ext/pathname/pathname.c399
-rw-r--r--ext/psych/.gitignore11
-rw-r--r--ext/psych/depend3
-rw-r--r--ext/psych/extconf.rb32
-rw-r--r--ext/psych/lib/psych.rb274
-rw-r--r--ext/psych/lib/psych/class_loader.rb101
-rw-r--r--ext/psych/lib/psych/core_ext.rb9
-rw-r--r--ext/psych/lib/psych/deprecated.rb4
-rw-r--r--ext/psych/lib/psych/exception.rb13
-rw-r--r--ext/psych/lib/psych/handler.rb13
-rw-r--r--ext/psych/lib/psych/handlers/recorder.rb39
-rw-r--r--ext/psych/lib/psych/json/stream.rb1
-rw-r--r--ext/psych/lib/psych/nodes/node.rb4
-rw-r--r--ext/psych/lib/psych/scalar_scanner.rb73
-rw-r--r--ext/psych/lib/psych/stream.rb1
-rw-r--r--ext/psych/lib/psych/streaming.rb15
-rw-r--r--ext/psych/lib/psych/syntax_error.rb4
-rw-r--r--ext/psych/lib/psych/visitors/json_tree.rb7
-rw-r--r--ext/psych/lib/psych/visitors/to_ruby.rb214
-rw-r--r--ext/psych/lib/psych/visitors/yaml_tree.rb106
-rw-r--r--ext/psych/lib/psych/y.rb9
-rw-r--r--ext/psych/psych.gemspec23
-rw-r--r--ext/psych/psych.h8
-rw-r--r--ext/psych/psych_emitter.c (renamed from ext/psych/emitter.c)0
-rw-r--r--ext/psych/psych_emitter.h (renamed from ext/psych/emitter.h)0
-rw-r--r--ext/psych/psych_parser.c (renamed from ext/psych/parser.c)2
-rw-r--r--ext/psych/psych_parser.h (renamed from ext/psych/parser.h)0
-rw-r--r--ext/psych/psych_to_ruby.c (renamed from ext/psych/to_ruby.c)4
-rw-r--r--ext/psych/psych_to_ruby.h (renamed from ext/psych/to_ruby.h)0
-rw-r--r--ext/psych/psych_yaml_tree.c (renamed from ext/psych/yaml_tree.c)0
-rw-r--r--ext/psych/psych_yaml_tree.h (renamed from ext/psych/yaml_tree.h)0
-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/depend7
-rw-r--r--ext/pty/extconf.rb4
-rw-r--r--ext/pty/lib/expect.rb24
-rw-r--r--ext/pty/pty.c371
-rw-r--r--ext/racc/cparse/cparse.c48
-rw-r--r--ext/racc/cparse/depend1
-rw-r--r--ext/rbconfig/sizeof/depend3
-rw-r--r--ext/rbconfig/sizeof/extconf.rb2
-rw-r--r--ext/readline/README.ja343
-rw-r--r--ext/readline/depend6
-rw-r--r--ext/readline/extconf.rb103
-rw-r--r--ext/readline/readline.c980
-rw-r--r--ext/ripper/depend23
-rw-r--r--ext/ripper/eventids2.c20
-rw-r--r--ext/ripper/extconf.rb3
-rw-r--r--ext/ripper/lib/ripper.rb69
-rw-r--r--ext/ripper/lib/ripper/core.rb8
-rw-r--r--ext/ripper/lib/ripper/filter.rb21
-rw-r--r--ext/ripper/lib/ripper/lexer.rb23
-rw-r--r--ext/ripper/lib/ripper/sexp.rb4
-rwxr-xr-xext/ripper/tools/generate.rb12
-rw-r--r--ext/sdbm/_sdbm.c84
-rw-r--r--ext/sdbm/depend4
-rw-r--r--ext/sdbm/init.c352
-rw-r--r--ext/socket/.document1
-rw-r--r--ext/socket/ancdata.c134
-rw-r--r--ext/socket/basicsocket.c39
-rw-r--r--ext/socket/constants.c2
-rw-r--r--ext/socket/depend8
-rw-r--r--ext/socket/extconf.rb752
-rw-r--r--ext/socket/getaddrinfo.c10
-rw-r--r--ext/socket/getnameinfo.c8
-rw-r--r--ext/socket/ifaddr.c457
-rw-r--r--ext/socket/init.c145
-rw-r--r--ext/socket/ipsocket.c55
-rw-r--r--ext/socket/lib/socket.rb110
-rw-r--r--ext/socket/mkconstants.rb98
-rw-r--r--ext/socket/option.c212
-rw-r--r--ext/socket/raddrinfo.c427
-rw-r--r--ext/socket/rubysocket.h224
-rw-r--r--ext/socket/socket.c438
-rw-r--r--ext/socket/sockport.h71
-rw-r--r--ext/socket/tcpserver.c27
-rw-r--r--ext/socket/tcpsocket.c4
-rw-r--r--ext/socket/udpsocket.c13
-rw-r--r--ext/socket/unixserver.c6
-rw-r--r--ext/socket/unixsocket.c42
-rw-r--r--ext/stringio/depend7
-rw-r--r--ext/stringio/stringio.c274
-rw-r--r--ext/strscan/depend9
-rw-r--r--ext/strscan/extconf.rb1
-rw-r--r--ext/strscan/strscan.c139
-rw-r--r--ext/syck/bytecode.c1165
-rw-r--r--ext/syck/depend12
-rw-r--r--ext/syck/emitter.c1247
-rw-r--r--ext/syck/extconf.rb5
-rw-r--r--ext/syck/gram.c1894
-rw-r--r--ext/syck/gram.h79
-rw-r--r--ext/syck/handler.c173
-rw-r--r--ext/syck/implicit.c2990
-rw-r--r--ext/syck/lib/syck.rb447
-rw-r--r--ext/syck/lib/syck/baseemitter.rb242
-rw-r--r--ext/syck/lib/syck/basenode.rb222
-rw-r--r--ext/syck/lib/syck/constants.rb45
-rw-r--r--ext/syck/lib/syck/encoding.rb35
-rw-r--r--ext/syck/lib/syck/error.rb34
-rw-r--r--ext/syck/lib/syck/loader.rb14
-rw-r--r--ext/syck/lib/syck/rubytypes.rb467
-rw-r--r--ext/syck/lib/syck/stream.rb41
-rw-r--r--ext/syck/lib/syck/stringio.rb85
-rw-r--r--ext/syck/lib/syck/syck.rb16
-rw-r--r--ext/syck/lib/syck/tag.rb95
-rw-r--r--ext/syck/lib/syck/types.rb192
-rw-r--r--ext/syck/lib/syck/yamlnode.rb54
-rw-r--r--ext/syck/lib/syck/ypath.rb54
-rw-r--r--ext/syck/lib/yaml/syck.rb14
-rw-r--r--ext/syck/node.c407
-rw-r--r--ext/syck/rubyext.c2328
-rw-r--r--ext/syck/syck.c524
-rw-r--r--ext/syck/syck.h453
-rw-r--r--ext/syck/token.c2724
-rw-r--r--ext/syck/yaml2byte.c259
-rw-r--r--ext/syck/yamlbyte.h171
-rw-r--r--ext/syslog/depend4
-rw-r--r--ext/syslog/lib/syslog/logger.rb208
-rw-r--r--ext/syslog/syslog.c191
-rw-r--r--ext/thread/extconf.rb3
-rw-r--r--ext/thread/thread.c579
-rw-r--r--ext/tk/ChangeLog.tkextlib2
-rw-r--r--ext/tk/MANUAL_tcltklib.eng26
-rw-r--r--ext/tk/MANUAL_tcltklib.eucj584
-rw-r--r--ext/tk/MANUAL_tcltklib.ja584
-rw-r--r--ext/tk/README.1st16
-rw-r--r--ext/tk/README.ActiveTcl2
-rw-r--r--ext/tk/README.tcltklib16
-rw-r--r--ext/tk/extconf.rb109
-rw-r--r--ext/tk/lib/multi-tk.rb2
-rw-r--r--ext/tk/lib/tcltk.rb2
-rw-r--r--ext/tk/lib/tk/canvas.rb9
-rw-r--r--ext/tk/lib/tk/image.rb42
-rw-r--r--ext/tk/lib/tk/wm.rb6
-rw-r--r--ext/tk/lib/tkextlib/SUPPORT_STATUS8
-rwxr-xr-xext/tk/lib/tkextlib/pkg_checker.rb2
-rw-r--r--ext/tk/lib/tkextlib/tile/style.rb4
-rw-r--r--ext/tk/old-README.tcltklib.eucj159
-rw-r--r--ext/tk/old-README.tcltklib.ja159
-rw-r--r--ext/tk/sample/demos-en/README114
-rw-r--r--ext/tk/sample/demos-en/README.tkencoding18
-rw-r--r--ext/tk/sample/demos-en/text.rb2
-rw-r--r--ext/tk/sample/demos-en/tree.rb2
-rw-r--r--ext/tk/sample/demos-en/widget8
-rw-r--r--ext/tk/sample/demos-jp/README102
-rw-r--r--ext/tk/sample/demos-jp/README.1st28
-rw-r--r--ext/tk/sample/demos-jp/anilabel.rb22
-rw-r--r--ext/tk/sample/demos-jp/aniwave.rb10
-rw-r--r--ext/tk/sample/demos-jp/arrow.rb22
-rw-r--r--ext/tk/sample/demos-jp/bind.rb38
-rw-r--r--ext/tk/sample/demos-jp/bitmap.rb20
-rw-r--r--ext/tk/sample/demos-jp/button.rb20
-rw-r--r--ext/tk/sample/demos-jp/check.rb30
-rw-r--r--ext/tk/sample/demos-jp/check2.rb30
-rw-r--r--ext/tk/sample/demos-jp/clrpick.rb28
-rw-r--r--ext/tk/sample/demos-jp/colors.rb20
-rw-r--r--ext/tk/sample/demos-jp/combo.rb36
-rw-r--r--ext/tk/sample/demos-jp/cscroll.rb22
-rw-r--r--ext/tk/sample/demos-jp/ctext.rb36
-rw-r--r--ext/tk/sample/demos-jp/dialog1.rb12
-rw-r--r--ext/tk/sample/demos-jp/dialog2.rb12
-rw-r--r--ext/tk/sample/demos-jp/entry1.rb32
-rw-r--r--ext/tk/sample/demos-jp/entry2.rb32
-rw-r--r--ext/tk/sample/demos-jp/entry3.rb46
-rw-r--r--ext/tk/sample/demos-jp/filebox.rb28
-rw-r--r--ext/tk/sample/demos-jp/floor.rb24
-rw-r--r--ext/tk/sample/demos-jp/floor2.rb24
-rw-r--r--ext/tk/sample/demos-jp/form.rb28
-rw-r--r--ext/tk/sample/demos-jp/goldberg.rb20
-rw-r--r--ext/tk/sample/demos-jp/hello6
-rw-r--r--ext/tk/sample/demos-jp/hscale.rb14
-rw-r--r--ext/tk/sample/demos-jp/icon.rb24
-rw-r--r--ext/tk/sample/demos-jp/image1.rb22
-rw-r--r--ext/tk/sample/demos-jp/image2.rb34
-rw-r--r--ext/tk/sample/demos-jp/image3.rb18
-rw-r--r--ext/tk/sample/demos-jp/items.rb60
-rw-r--r--ext/tk/sample/demos-jp/ixset240
-rw-r--r--ext/tk/sample/demos-jp/knightstour.rb20
-rw-r--r--ext/tk/sample/demos-jp/label.rb30
-rw-r--r--ext/tk/sample/demos-jp/labelframe.rb32
-rw-r--r--ext/tk/sample/demos-jp/mclist.rb58
-rw-r--r--ext/tk/sample/demos-jp/menu.rb108
-rw-r--r--ext/tk/sample/demos-jp/menu84.rb50
-rw-r--r--ext/tk/sample/demos-jp/menu8x.rb120
-rw-r--r--ext/tk/sample/demos-jp/menubu.rb28
-rw-r--r--ext/tk/sample/demos-jp/msgbox.rb30
-rw-r--r--ext/tk/sample/demos-jp/msgbox2.rb32
-rw-r--r--ext/tk/sample/demos-jp/paned1.rb16
-rw-r--r--ext/tk/sample/demos-jp/paned2.rb22
-rw-r--r--ext/tk/sample/demos-jp/pendulum.rb10
-rw-r--r--ext/tk/sample/demos-jp/plot.rb26
-rw-r--r--ext/tk/sample/demos-jp/puzzle.rb30
-rw-r--r--ext/tk/sample/demos-jp/radio.rb30
-rw-r--r--ext/tk/sample/demos-jp/radio2.rb26
-rw-r--r--ext/tk/sample/demos-jp/radio3.rb24
-rw-r--r--ext/tk/sample/demos-jp/rolodex-j132
-rw-r--r--ext/tk/sample/demos-jp/ruler.rb22
-rw-r--r--ext/tk/sample/demos-jp/sayings.rb20
-rw-r--r--ext/tk/sample/demos-jp/search.rb40
-rw-r--r--ext/tk/sample/demos-jp/spin.rb42
-rw-r--r--ext/tk/sample/demos-jp/states.rb34
-rw-r--r--ext/tk/sample/demos-jp/style.rb192
-rw-r--r--ext/tk/sample/demos-jp/tcolor34
-rw-r--r--ext/tk/sample/demos-jp/text.rb102
-rw-r--r--ext/tk/sample/demos-jp/textpeer.rb32
-rw-r--r--ext/tk/sample/demos-jp/toolbar.rb56
-rw-r--r--ext/tk/sample/demos-jp/tree.rb24
-rw-r--r--ext/tk/sample/demos-jp/ttkbut.rb56
-rw-r--r--ext/tk/sample/demos-jp/ttkmenu.rb46
-rw-r--r--ext/tk/sample/demos-jp/ttknote.rb42
-rw-r--r--ext/tk/sample/demos-jp/ttkpane.rb24
-rw-r--r--ext/tk/sample/demos-jp/ttkprogress.rb26
-rw-r--r--ext/tk/sample/demos-jp/twind.rb76
-rw-r--r--ext/tk/sample/demos-jp/twind2.rb116
-rw-r--r--ext/tk/sample/demos-jp/unicodeout.rb42
-rw-r--r--ext/tk/sample/demos-jp/vscale.rb16
-rw-r--r--ext/tk/sample/demos-jp/widget322
-rw-r--r--ext/tk/sample/figmemo_sample.rb2
-rw-r--r--ext/tk/sample/msgs_rb2/ja.msg154
-rw-r--r--ext/tk/sample/msgs_tk/README2
-rw-r--r--ext/tk/sample/tcltklib/sample0.rb12
-rw-r--r--ext/tk/sample/tcltklib/sample1.rb304
-rw-r--r--ext/tk/sample/tcltklib/sample2.rb14
-rw-r--r--ext/tk/sample/tkextlib/blt/readme.txt2
-rw-r--r--ext/tk/sample/tkextlib/bwidget/Orig_LICENSE.txt12
-rw-r--r--ext/tk/sample/tkextlib/iwidgets/catalog_demo/Orig_LICENSE.txt24
-rw-r--r--ext/tk/sample/tkextlib/iwidgets/sample/notebook.rb2
-rw-r--r--ext/tk/sample/tkextlib/iwidgets/sample/notebook2.rb2
-rw-r--r--ext/tk/sample/tkextlib/tcllib/Orig_LICENSE.txt8
-rw-r--r--ext/tk/sample/tkextlib/tkHTML/page1/index.html2
-rw-r--r--ext/tk/sample/tkextlib/tkimg/demo.rb2
-rw-r--r--ext/tk/sample/tkextlib/tkimg/readme.txt2
-rw-r--r--ext/tk/sample/tkextlib/tktable/Orig_LICENSE.txt4
-rw-r--r--ext/tk/sample/tkextlib/treectrl/readme.txt2
-rw-r--r--ext/tk/sample/tkextlib/vu/Orig_LICENSE.txt4
-rw-r--r--ext/tk/sample/tkoptdb-safeTk.rb2
-rw-r--r--ext/tk/sample/tkoptdb.rb2
-rw-r--r--ext/tk/sample/tktextframe.rb2
-rw-r--r--ext/tk/stubs.c4
-rw-r--r--ext/tk/tcltklib.c247
-rw-r--r--ext/tk/tkutil/tkutil.c97
-rw-r--r--ext/win32/extconf.rb3
-rw-r--r--ext/win32/lib/Win32API.rb (renamed from ext/dl/win32/lib/Win32API.rb)3
-rw-r--r--ext/win32/lib/win32/importer.rb14
-rw-r--r--ext/win32/lib/win32/registry.rb (renamed from ext/dl/win32/lib/win32/registry.rb)129
-rw-r--r--ext/win32/lib/win32/resolv.rb (renamed from ext/dl/win32/lib/win32/resolv.rb)5
-rw-r--r--ext/win32/lib/win32/sspi.rb (renamed from ext/dl/win32/lib/win32/sspi.rb)2
-rw-r--r--ext/win32ole/extconf.rb11
-rw-r--r--ext/win32ole/lib/win32ole.rb22
-rw-r--r--ext/win32ole/win32ole.c232
-rw-r--r--ext/zlib/depend5
-rw-r--r--ext/zlib/extconf.rb4
-rw-r--r--ext/zlib/zlib.c1016
-rw-r--r--file.c725
-rw-r--r--gc.c7399
-rw-r--r--gc.h22
-rw-r--r--golf_prelude.rb37
-rw-r--r--goruby.c36
-rw-r--r--hash.c1109
-rw-r--r--ia64.s4
-rw-r--r--id.c51
-rw-r--r--include/ruby.h1
-rw-r--r--include/ruby/backward/rubysig.h8
-rw-r--r--include/ruby/debug.h110
-rw-r--r--include/ruby/defines.h252
-rw-r--r--include/ruby/encoding.h45
-rw-r--r--include/ruby/intern.h228
-rw-r--r--include/ruby/io.h24
-rw-r--r--include/ruby/missing.h51
-rw-r--r--include/ruby/oniguruma.h98
-rw-r--r--include/ruby/re.h8
-rw-r--r--include/ruby/regex.h8
-rw-r--r--include/ruby/ruby.h756
-rw-r--r--include/ruby/st.h45
-rw-r--r--include/ruby/subst.h1
-rw-r--r--include/ruby/thread.h45
-rw-r--r--include/ruby/util.h10
-rw-r--r--include/ruby/version.h14
-rw-r--r--include/ruby/vm.h8
-rw-r--r--include/ruby/win32.h170
-rw-r--r--inits.c1
-rw-r--r--insns.def1119
-rw-r--r--internal.h662
-rw-r--r--io.c2757
-rw-r--r--iseq.c1269
-rw-r--r--iseq.h52
-rw-r--r--lib/English.rb42
-rw-r--r--lib/README91
-rwxr-xr-x[-rw-r--r--]lib/abbrev.rb84
-rw-r--r--lib/base64.rb2
-rw-r--r--lib/benchmark.rb149
-rw-r--r--lib/cgi.rb56
-rw-r--r--lib/cgi/cookie.rb60
-rw-r--r--lib/cgi/core.rb106
-rw-r--r--lib/cgi/html.rb319
-rw-r--r--lib/cgi/session.rb8
-rw-r--r--lib/cgi/util.rb64
-rw-r--r--lib/cmath.rb2
-rw-r--r--lib/csv.rb240
-rw-r--r--lib/debug.rb202
-rw-r--r--lib/delegate.rb66
-rw-r--r--lib/drb/drb.rb115
-rw-r--r--lib/drb/eq.rb2
-rw-r--r--lib/drb/extserv.rb2
-rw-r--r--lib/drb/gw.rb42
-rw-r--r--lib/drb/invokemethod.rb2
-rw-r--r--lib/drb/observer.rb3
-rw-r--r--lib/drb/ssl.rb159
-rw-r--r--lib/drb/timeridconv.rb16
-rw-r--r--lib/drb/unix.rb7
-rw-r--r--lib/e2mmap.rb20
-rw-r--r--lib/erb.rb82
-rw-r--r--lib/fileutils.rb244
-rw-r--r--lib/find.rb42
-rw-r--r--lib/forwardable.rb168
-rw-r--r--lib/getoptlong.rb2
-rw-r--r--lib/gserver.rb5
-rw-r--r--lib/ipaddr.rb106
-rw-r--r--lib/irb.rb372
-rw-r--r--lib/irb/cmd/chws.rb3
-rw-r--r--lib/irb/cmd/fork.rb5
-rw-r--r--lib/irb/cmd/help.rb2
-rw-r--r--lib/irb/cmd/load.rb2
-rw-r--r--lib/irb/cmd/nop.rb3
-rw-r--r--lib/irb/cmd/pushws.rb2
-rw-r--r--lib/irb/cmd/subirb.rb2
-rw-r--r--lib/irb/completion.rb54
-rw-r--r--lib/irb/context.rb171
-rw-r--r--lib/irb/ext/change-ws.rb10
-rw-r--r--lib/irb/ext/history.rb15
-rw-r--r--lib/irb/ext/loader.rb17
-rw-r--r--lib/irb/ext/math-mode.rb13
-rw-r--r--lib/irb/ext/multi-irb.rb48
-rw-r--r--lib/irb/ext/save-history.rb31
-rw-r--r--lib/irb/ext/tracer.rb11
-rw-r--r--lib/irb/ext/use-loader.rb9
-rw-r--r--lib/irb/ext/workspaces.rb13
-rw-r--r--lib/irb/extend-command.rb76
-rw-r--r--lib/irb/frame.rb16
-rw-r--r--lib/irb/help.rb1
-rw-r--r--lib/irb/init.rb13
-rw-r--r--lib/irb/input-method.rb71
-rw-r--r--lib/irb/inspector.rb146
-rw-r--r--lib/irb/lc/.document4
-rw-r--r--lib/irb/lc/error.rb4
-rw-r--r--lib/irb/lc/help-message26
-rw-r--r--lib/irb/lc/ja/encoding_aliases.rb2
-rw-r--r--lib/irb/lc/ja/error.rb3
-rw-r--r--lib/irb/lc/ja/help-message20
-rw-r--r--lib/irb/locale.rb2
-rw-r--r--lib/irb/notifier.rb89
-rw-r--r--lib/irb/output-method.rb46
-rw-r--r--lib/irb/ruby-lex.rb42
-rw-r--r--lib/irb/ruby-token.rb2
-rw-r--r--lib/irb/slex.rb4
-rw-r--r--lib/irb/version.rb2
-rw-r--r--lib/irb/workspace.rb14
-rw-r--r--lib/irb/xmp.rb76
-rw-r--r--lib/logger.rb200
-rw-r--r--lib/matrix.rb425
-rw-r--r--lib/matrix/eigenvalue_decomposition.rb18
-rw-r--r--lib/matrix/lup_decomposition.rb58
-rw-r--r--lib/minitest/.document2
-rw-r--r--lib/minitest/README.txt212
-rw-r--r--lib/minitest/autorun.rb1
-rw-r--r--lib/minitest/benchmark.rb85
-rw-r--r--lib/minitest/hell.rb20
-rw-r--r--lib/minitest/mock.rb152
-rw-r--r--lib/minitest/parallel_each.rb80
-rw-r--r--lib/minitest/pride.rb36
-rw-r--r--lib/minitest/spec.rb324
-rw-r--r--lib/minitest/unit.rb795
-rw-r--r--lib/mkmf.rb4065
-rw-r--r--lib/monitor.rb2
-rw-r--r--lib/mutex_m.rb58
-rw-r--r--lib/net/.document8
-rw-r--r--lib/net/ftp.rb231
-rw-r--r--lib/net/http.rb1879
-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/imap.rb129
-rw-r--r--lib/net/pop.rb28
-rw-r--r--lib/net/protocol.rb16
-rw-r--r--lib/net/smtp.rb44
-rw-r--r--lib/net/telnet.rb21
-rw-r--r--lib/observer.rb19
-rw-r--r--lib/open-uri.rb144
-rw-r--r--lib/open3.rb198
-rw-r--r--lib/optparse.rb75
-rw-r--r--lib/optparse/ac.rb50
-rw-r--r--lib/ostruct.rb126
-rw-r--r--lib/pp.rb188
-rw-r--r--lib/prettyprint.rb205
-rw-r--r--lib/prime.rb125
-rw-r--r--lib/profiler.rb155
-rw-r--r--lib/pstore.rb76
-rw-r--r--lib/racc/parser.rb249
-rw-r--r--lib/racc/rdoc/grammar.en.rdoc226
-rw-r--r--lib/rake.rb4
-rw-r--r--lib/rake/alt_system.rb7
-rw-r--r--lib/rake/application.rb535
-rw-r--r--lib/rake/backtrace.rb20
-rw-r--r--lib/rake/classic_namespace.rb11
-rw-r--r--lib/rake/clean.rb33
-rw-r--r--lib/rake/cloneable.rb23
-rw-r--r--lib/rake/contrib/ftptools.rb27
-rw-r--r--lib/rake/contrib/sys.rb193
-rw-r--r--lib/rake/dsl_definition.rb45
-rw-r--r--lib/rake/ext/core.rb3
-rw-r--r--lib/rake/ext/module.rb38
-rw-r--r--lib/rake/ext/string.rb7
-rw-r--r--lib/rake/ext/time.rb3
-rw-r--r--lib/rake/file_list.rb53
-rw-r--r--lib/rake/file_task.rb3
-rw-r--r--lib/rake/file_utils.rb22
-rw-r--r--lib/rake/file_utils_ext.rb13
-rw-r--r--lib/rake/gempackagetask.rb17
-rw-r--r--lib/rake/invocation_chain.rb42
-rw-r--r--lib/rake/lib/.document1
-rw-r--r--lib/rake/linked_list.rb103
-rw-r--r--lib/rake/multi_task.rb7
-rw-r--r--lib/rake/packagetask.rb17
-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.rb5
-rw-r--r--lib/rake/rake_module.rb8
-rw-r--r--lib/rake/rdoctask.rb236
-rw-r--r--[-rwxr-xr-x]lib/rake/ruby182_test_unit_fix.rb6
-rw-r--r--lib/rake/runtest.rb5
-rw-r--r--lib/rake/scope.rb42
-rw-r--r--lib/rake/task.rb149
-rw-r--r--lib/rake/task_arguments.rb17
-rw-r--r--lib/rake/task_manager.rb60
-rw-r--r--lib/rake/tasklib.rb2
-rw-r--r--lib/rake/testtask.rb22
-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.rb7
-rw-r--r--lib/rake/win32.rb5
-rw-r--r--lib/rbconfig/obsolete.rb43
-rw-r--r--lib/rdoc.rb172
-rw-r--r--lib/rdoc/alias.rb2
-rw-r--r--lib/rdoc/anon_class.rb2
-rw-r--r--lib/rdoc/any_method.rb159
-rw-r--r--lib/rdoc/attr.rb63
-rw-r--r--lib/rdoc/class_module.rb309
-rw-r--r--lib/rdoc/code_object.rb176
-rw-r--r--lib/rdoc/code_objects.rb24
-rw-r--r--lib/rdoc/comment.rb229
-rw-r--r--lib/rdoc/constant.rb118
-rw-r--r--lib/rdoc/context.rb349
-rw-r--r--lib/rdoc/context/section.rb238
-rw-r--r--lib/rdoc/cross_reference.rb136
-rw-r--r--lib/rdoc/encoding.rb69
-rw-r--r--lib/rdoc/erb_partial.rb18
-rw-r--r--lib/rdoc/extend.rb9
-rw-r--r--lib/rdoc/generator.rb32
-rw-r--r--lib/rdoc/generator/darkfish.rb515
-rw-r--r--lib/rdoc/generator/json_index.rb248
-rw-r--r--lib/rdoc/generator/markup.rb91
-rw-r--r--lib/rdoc/generator/ri.rb70
-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/classpage.rhtml321
-rw-r--r--lib/rdoc/generator/template/darkfish/filepage.rhtml124
-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-rwxr-xr-xlib/rdoc/generator/template/darkfish/images/delete.pngbin0 -> 715 bytes-rwxr-xr-xlib/rdoc/generator/template/darkfish/images/tag_blue.pngbin0 -> 1880 bytes-rw-r--r--lib/rdoc/generator/template/darkfish/images/transparent.pngbin0 -> 97 bytes-rw-r--r--lib/rdoc/generator/template/darkfish/index.rhtml77
-rw-r--r--lib/rdoc/generator/template/darkfish/js/darkfish.js150
-rw-r--r--lib/rdoc/generator/template/darkfish/js/jquery.js44
-rw-r--r--lib/rdoc/generator/template/darkfish/js/quicksearch.js114
-rw-r--r--lib/rdoc/generator/template/darkfish/js/search.js102
-rw-r--r--lib/rdoc/generator/template/darkfish/js/thickbox-compressed.js10
-rw-r--r--lib/rdoc/generator/template/darkfish/page.rhtml18
-rw-r--r--lib/rdoc/generator/template/darkfish/rdoc.css777
-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.rb2
-rw-r--r--lib/rdoc/include.rb99
-rw-r--r--lib/rdoc/known_classes.rb1
-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.rb335
-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.rb46
-rw-r--r--lib/rdoc/markup/attributes.rb70
-rw-r--r--lib/rdoc/markup/block_quote.rb14
-rw-r--r--lib/rdoc/markup/document.rb61
-rw-r--r--lib/rdoc/markup/formatter.rb129
-rw-r--r--lib/rdoc/markup/formatter_test_case.rb120
-rw-r--r--lib/rdoc/markup/hard_break.rb31
-rw-r--r--lib/rdoc/markup/heading.rb60
-rw-r--r--lib/rdoc/markup/include.rb42
-rw-r--r--lib/rdoc/markup/indented_paragraph.rb14
-rw-r--r--lib/rdoc/markup/inline.rb145
-rw-r--r--lib/rdoc/markup/list.rb28
-rw-r--r--lib/rdoc/markup/list_item.rb21
-rw-r--r--lib/rdoc/markup/paragraph.rb14
-rw-r--r--lib/rdoc/markup/parser.rb203
-rw-r--r--lib/rdoc/markup/pre_process.rb90
-rw-r--r--lib/rdoc/markup/raw.rb10
-rw-r--r--lib/rdoc/markup/special.rb40
-rw-r--r--lib/rdoc/markup/text_formatter_test_case.rb2
-rw-r--r--lib/rdoc/markup/to_ansi.rb15
-rw-r--r--lib/rdoc/markup/to_bs.rb2
-rw-r--r--lib/rdoc/markup/to_html.rb243
-rw-r--r--lib/rdoc/markup/to_html_crossref.rb66
-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.rb52
-rw-r--r--lib/rdoc/markup/to_table_of_contents.rb87
-rw-r--r--lib/rdoc/markup/to_test.rb3
-rw-r--r--lib/rdoc/markup/to_tt_only.rb16
-rw-r--r--lib/rdoc/markup/verbatim.rb38
-rw-r--r--lib/rdoc/meta_method.rb2
-rw-r--r--lib/rdoc/method_attr.rb95
-rw-r--r--lib/rdoc/mixin.rb120
-rw-r--r--lib/rdoc/normal_class.rb39
-rw-r--r--lib/rdoc/normal_module.rb21
-rw-r--r--lib/rdoc/options.rb495
-rw-r--r--lib/rdoc/parser.rb200
-rw-r--r--lib/rdoc/parser/c.rb604
-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.rb1394
-rw-r--r--lib/rdoc/parser/ruby_tools.rb11
-rw-r--r--lib/rdoc/parser/simple.rb30
-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.rb194
-rw-r--r--lib/rdoc/require.rb2
-rw-r--r--lib/rdoc/ri.rb6
-rw-r--r--lib/rdoc/ri/driver.rb663
-rw-r--r--lib/rdoc/ri/paths.rb121
-rw-r--r--lib/rdoc/ri/store.rb356
-rw-r--r--lib/rdoc/ruby_lex.rb368
-rw-r--r--lib/rdoc/ruby_token.rb132
-rw-r--r--lib/rdoc/rubygems_hook.rb61
-rw-r--r--lib/rdoc/servlet.rb441
-rw-r--r--lib/rdoc/single_class.rb2
-rw-r--r--lib/rdoc/stats.rb155
-rw-r--r--lib/rdoc/store.rb979
-rw-r--r--lib/rdoc/task.rb28
-rw-r--r--lib/rdoc/test_case.rb217
-rw-r--r--lib/rdoc/text.rb75
-rw-r--r--lib/rdoc/token_stream.rb45
-rw-r--r--lib/rdoc/tom_doc.rb257
-rw-r--r--lib/rdoc/top_level.rb368
-rw-r--r--lib/resolv-replace.rb2
-rw-r--r--lib/resolv.rb480
-rw-r--r--lib/rexml/attribute.rb7
-rw-r--r--lib/rexml/document.rb90
-rw-r--r--lib/rexml/element.rb21
-rw-r--r--lib/rexml/encoding.rb14
-rw-r--r--lib/rexml/formatters/pretty.rb2
-rw-r--r--lib/rexml/light/node.rb2
-rw-r--r--lib/rexml/output.rb7
-rw-r--r--lib/rexml/parsers/baseparser.rb70
-rw-r--r--lib/rexml/parsers/sax2parser.rb30
-rw-r--r--lib/rexml/parsers/streamparser.rb6
-rw-r--r--lib/rexml/parsers/treeparser.rb6
-rw-r--r--lib/rexml/parsers/ultralightparser.rb2
-rw-r--r--lib/rexml/sax2listener.rb16
-rw-r--r--lib/rexml/security.rb27
-rw-r--r--lib/rexml/source.rb87
-rw-r--r--lib/rexml/streamlistener.rb12
-rw-r--r--lib/rexml/text.rb59
-rw-r--r--lib/rexml/xmldecl.rb8
-rw-r--r--lib/rinda/rinda.rb50
-rw-r--r--lib/rinda/ring.rb282
-rw-r--r--lib/rinda/tuplespace.rb6
-rw-r--r--lib/rss/0.9.rb33
-rw-r--r--lib/rss/1.0.rb32
-rw-r--r--lib/rss/2.0.rb31
-rw-r--r--lib/rss/atom.rb83
-rw-r--r--lib/rss/content.rb2
-rw-r--r--lib/rss/dublincore.rb2
-rw-r--r--lib/rss/image.rb4
-rw-r--r--lib/rss/itunes.rb2
-rw-r--r--lib/rss/maker.rb26
-rw-r--r--lib/rss/maker/base.rb12
-rw-r--r--lib/rss/maker/entry.rb4
-rw-r--r--lib/rss/parser.rb2
-rw-r--r--lib/rss/rexmlparser.rb5
-rw-r--r--lib/rss/rss.rb84
-rw-r--r--lib/rss/slash.rb2
-rw-r--r--lib/rss/syndication.rb3
-rw-r--r--lib/rss/taxonomy.rb4
-rw-r--r--lib/rss/trackback.rb4
-rw-r--r--lib/rss/utils.rb92
-rw-r--r--lib/rss/xmlparser.rb3
-rw-r--r--lib/rubygems.rb888
-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/builder.rb99
-rw-r--r--lib/rubygems/command.rb133
-rw-r--r--lib/rubygems/command_manager.rb161
-rw-r--r--lib/rubygems/commands/build_command.rb47
-rw-r--r--lib/rubygems/commands/cert_command.rb308
-rw-r--r--lib/rubygems/commands/check_command.rb108
-rw-r--r--lib/rubygems/commands/cleanup_command.rb147
-rw-r--r--lib/rubygems/commands/contents_command.rb149
-rw-r--r--lib/rubygems/commands/dependency_command.rb163
-rw-r--r--lib/rubygems/commands/environment_command.rb145
-rw-r--r--lib/rubygems/commands/fetch_command.rb27
-rw-r--r--lib/rubygems/commands/generate_index_command.rb54
-rw-r--r--lib/rubygems/commands/help_command.rb134
-rw-r--r--lib/rubygems/commands/install_command.rb179
-rw-r--r--lib/rubygems/commands/list_command.rb19
-rw-r--r--lib/rubygems/commands/lock_command.rb2
-rw-r--r--lib/rubygems/commands/mirror_command.rb23
-rw-r--r--lib/rubygems/commands/outdated_command.rb18
-rw-r--r--lib/rubygems/commands/owner_command.rb35
-rw-r--r--lib/rubygems/commands/pristine_command.rb83
-rw-r--r--lib/rubygems/commands/push_command.rb58
-rw-r--r--lib/rubygems/commands/query_command.rb304
-rw-r--r--lib/rubygems/commands/rdoc_command.rb63
-rw-r--r--lib/rubygems/commands/search_command.rb25
-rw-r--r--lib/rubygems/commands/server_command.rb2
-rw-r--r--lib/rubygems/commands/setup_command.rb213
-rw-r--r--lib/rubygems/commands/sources_command.rb192
-rw-r--r--lib/rubygems/commands/specification_command.rb44
-rw-r--r--lib/rubygems/commands/stale_command.rb10
-rw-r--r--lib/rubygems/commands/uninstall_command.rb78
-rw-r--r--lib/rubygems/commands/unpack_command.rb30
-rw-r--r--lib/rubygems/commands/update_command.rb243
-rw-r--r--lib/rubygems/commands/which_command.rb24
-rw-r--r--lib/rubygems/commands/yank_command.rb112
-rw-r--r--lib/rubygems/compatibility.rb58
-rw-r--r--lib/rubygems/config_file.rb234
-rw-r--r--lib/rubygems/core_ext/kernel_gem.rb59
-rwxr-xr-xlib/rubygems/core_ext/kernel_require.rb149
-rw-r--r--lib/rubygems/custom_require.rb69
-rw-r--r--lib/rubygems/defaults.rb66
-rw-r--r--lib/rubygems/dependency.rb83
-rw-r--r--lib/rubygems/dependency_installer.rb443
-rw-r--r--lib/rubygems/dependency_list.rb32
-rw-r--r--lib/rubygems/deprecate.rb80
-rw-r--r--lib/rubygems/doc_manager.rb243
-rw-r--r--lib/rubygems/doctor.rb131
-rw-r--r--lib/rubygems/errors.rb120
-rw-r--r--lib/rubygems/exceptions.rb175
-rw-r--r--lib/rubygems/ext.rb4
-rw-r--r--lib/rubygems/ext/build_error.rb6
-rw-r--r--lib/rubygems/ext/builder.rb198
-rw-r--r--lib/rubygems/ext/cmake_builder.rb16
-rw-r--r--lib/rubygems/ext/configure_builder.rb6
-rw-r--r--lib/rubygems/ext/ext_conf_builder.rb60
-rw-r--r--lib/rubygems/ext/rake_builder.rb7
-rw-r--r--lib/rubygems/format.rb82
-rw-r--r--lib/rubygems/gem_openssl.rb90
-rw-r--r--lib/rubygems/gem_path_searcher.rb172
-rw-r--r--lib/rubygems/gem_runner.rb41
-rw-r--r--lib/rubygems/gemcutter_utilities.rb126
-rw-r--r--lib/rubygems/indexer.rb182
-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.rb77
-rw-r--r--lib/rubygems/installer.rb519
-rw-r--r--lib/rubygems/installer_test_case.rb90
-rw-r--r--lib/rubygems/mock_gem_ui.rb17
-rw-r--r--lib/rubygems/name_tuple.rb121
-rw-r--r--lib/rubygems/old_format.rb153
-rw-r--r--lib/rubygems/package.rb601
-rw-r--r--lib/rubygems/package/digest_io.rb64
-rw-r--r--lib/rubygems/package/f_sync_dir.rb23
-rw-r--r--lib/rubygems/package/old.rb178
-rw-r--r--lib/rubygems/package/tar_header.rb73
-rw-r--r--lib/rubygems/package/tar_input.rb235
-rw-r--r--lib/rubygems/package/tar_output.rb146
-rw-r--r--lib/rubygems/package/tar_reader.rb23
-rw-r--r--lib/rubygems/package/tar_test_case.rb18
-rw-r--r--lib/rubygems/package/tar_writer.rb99
-rw-r--r--lib/rubygems/package_task.rb14
-rw-r--r--lib/rubygems/path_support.rb31
-rw-r--r--lib/rubygems/platform.rb67
-rw-r--r--lib/rubygems/psych_additions.rb13
-rw-r--r--lib/rubygems/psych_tree.rb29
-rw-r--r--lib/rubygems/rdoc.rb336
-rw-r--r--lib/rubygems/remote_fetcher.rb353
-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/require_paths_builder.rb18
-rw-r--r--lib/rubygems/requirement.rb118
-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.rb861
-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.rb129
-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_index.rb406
-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.rb345
-rw-r--r--lib/rubygems/specification.rb1443
-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/ssl_certs/ca-bundle.pem3366
-rw-r--r--lib/rubygems/stub_specification.rb176
-rw-r--r--lib/rubygems/syck_hack.rb75
-rw-r--r--lib/rubygems/test_case.rb746
-rw-r--r--lib/rubygems/test_utilities.rb202
-rw-r--r--lib/rubygems/uninstaller.rb155
-rw-r--r--lib/rubygems/uri_formatter.rb49
-rw-r--r--lib/rubygems/user_interaction.rb190
-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.rb79
-rw-r--r--lib/rubygems/version.rb39
-rw-r--r--lib/rubygems/version_option.rb10
-rw-r--r--lib/scanf.rb4
-rw-r--r--lib/securerandom.rb97
-rw-r--r--[-rwxr-xr-x]lib/set.rb739
-rw-r--r--lib/shell.rb143
-rw-r--r--lib/shell/command-processor.rb291
-rw-r--r--lib/shell/filter.rb36
-rw-r--r--lib/shell/process-controller.rb2
-rw-r--r--lib/shell/system-command.rb2
-rw-r--r--lib/shell/version.rb2
-rw-r--r--lib/shellwords.rb128
-rw-r--r--lib/sync.rb47
-rw-r--r--lib/tempfile.rb80
-rw-r--r--lib/test/unit.rb626
-rw-r--r--lib/test/unit/assertions.rb100
-rw-r--r--lib/test/unit/parallel.rb71
-rw-r--r--lib/test/unit/test-unit.gemspec14
-rw-r--r--lib/test/unit/testcase.rb11
-rw-r--r--lib/thread.rb361
-rw-r--r--lib/thwait.rb2
-rw-r--r--lib/time.rb295
-rw-r--r--lib/timeout.rb52
-rw-r--r--lib/tmpdir.rb25
-rw-r--r--lib/tracer.rb56
-rw-r--r--lib/tsort.rb242
-rw-r--r--lib/un.rb49
-rw-r--r--lib/uri/common.rb306
-rw-r--r--lib/uri/ftp.rb17
-rw-r--r--lib/uri/generic.rb88
-rw-r--r--lib/uri/http.rb2
-rw-r--r--lib/uri/mailto.rb2
-rw-r--r--lib/weakref.rb111
-rw-r--r--lib/webrick.rb11
-rw-r--r--lib/webrick/accesslog.rb7
-rw-r--r--lib/webrick/cgi.rb52
-rw-r--r--lib/webrick/config.rb32
-rw-r--r--lib/webrick/cookie.rb71
-rw-r--r--lib/webrick/htmlutils.rb5
-rw-r--r--lib/webrick/httpauth/authenticator.rb20
-rw-r--r--lib/webrick/httpauth/basicauth.rb2
-rw-r--r--lib/webrick/httpauth/digestauth.rb24
-rw-r--r--lib/webrick/httpauth/htdigest.rb9
-rw-r--r--lib/webrick/httpauth/htpasswd.rb9
-rw-r--r--lib/webrick/httpproxy.rb46
-rw-r--r--lib/webrick/httprequest.rb148
-rw-r--r--lib/webrick/httpresponse.rb109
-rw-r--r--lib/webrick/https.rb24
-rw-r--r--lib/webrick/httpserver.rb16
-rw-r--r--lib/webrick/httpservlet/abstract.rb2
-rw-r--r--lib/webrick/httpservlet/cgihandler.rb19
-rw-r--r--lib/webrick/httpservlet/filehandler.rb118
-rw-r--r--lib/webrick/httpservlet/prochandler.rb13
-rw-r--r--lib/webrick/httpstatus.rb28
-rw-r--r--lib/webrick/httputils.rb143
-rw-r--r--lib/webrick/httpversion.rb28
-rw-r--r--lib/webrick/log.rb23
-rw-r--r--lib/webrick/server.rb165
-rw-r--r--lib/webrick/ssl.rb74
-rw-r--r--lib/webrick/utils.rb30
-rw-r--r--lib/webrick/version.rb4
-rw-r--r--lib/xmlrpc.rb301
-rw-r--r--lib/xmlrpc/README.rdoc300
-rw-r--r--lib/xmlrpc/README.txt31
-rw-r--r--lib/xmlrpc/base64.rb63
-rw-r--r--lib/xmlrpc/client.rb629
-rw-r--r--lib/xmlrpc/config.rb28
-rw-r--r--lib/xmlrpc/create.rb21
-rw-r--r--lib/xmlrpc/datetime.rb119
-rw-r--r--lib/xmlrpc/httpserver.rb45
-rw-r--r--lib/xmlrpc/marshal.rb18
-rw-r--r--lib/xmlrpc/parser.rb84
-rw-r--r--lib/xmlrpc/server.rb561
-rw-r--r--lib/xmlrpc/utils.rb44
-rw-r--r--lib/yaml.rb133
-rw-r--r--lib/yaml/dbm.rb91
-rw-r--r--lib/yaml/store.rb15
-rw-r--r--load.c592
-rw-r--r--loadpath.c92
-rw-r--r--localeinit.c65
-rw-r--r--main.c4
-rw-r--r--man/erb.110
-rw-r--r--man/goruby.110
-rw-r--r--man/irb.18
-rw-r--r--man/rake.144
-rw-r--r--man/ri.111
-rw-r--r--man/ruby.141
-rw-r--r--marshal.c552
-rw-r--r--math.c363
-rw-r--r--method.h58
-rw-r--r--miniinit.c30
-rw-r--r--misc/inf-ruby.el4
-rw-r--r--misc/rdoc-mode.el2
-rw-r--r--misc/ruby-additional.el113
-rw-r--r--misc/ruby-electric.el558
-rw-r--r--misc/ruby-mode.el162
-rw-r--r--misc/ruby-style.el1
-rw-r--r--missing/alloca.c6
-rw-r--r--missing/crt_externs.h8
-rw-r--r--missing/crypt.c2
-rw-r--r--missing/file.h2
-rw-r--r--missing/flock.c7
-rw-r--r--missing/isnan.c15
-rw-r--r--missing/setproctitle.c10
-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.c66
-rw-r--r--node.h70
-rw-r--r--numeric.c1808
-rw-r--r--object.c955
-rw-r--r--pack.c674
-rw-r--r--parse.y2747
-rw-r--r--prelude.rb16
-rw-r--r--probes.d223
-rw-r--r--probes_helper.h67
-rw-r--r--proc.c907
-rw-r--r--process.c3507
-rw-r--r--random.c630
-rw-r--r--range.c546
-rw-r--r--rational.c921
-rw-r--r--re.c199
-rw-r--r--regcomp.c597
-rw-r--r--regenc.c32
-rw-r--r--regenc.h22
-rw-r--r--regerror.c23
-rw-r--r--regexec.c853
-rw-r--r--regint.h125
-rw-r--r--regparse.c1108
-rw-r--r--regparse.h17
-rw-r--r--regsyntax.c84
-rw-r--r--ruby.c396
-rw-r--r--ruby_atomic.h33
-rw-r--r--safe.c34
-rw-r--r--sample/README2
-rw-r--r--sample/cal.rb10
-rw-r--r--sample/coverage.rb4
-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.rb (renamed from ext/curses/view.rb)2
-rw-r--r--sample/curses/view2.rb (renamed from ext/curses/view2.rb)0
-rw-r--r--sample/drb/README.ja.rdoc59
-rw-r--r--sample/drb/README.rd.ja59
-rw-r--r--sample/drb/README.rdoc (renamed from sample/drb/README.rd)6
-rw-r--r--sample/drb/dbiff.rb22
-rw-r--r--sample/drb/dchats.rb20
-rw-r--r--sample/drb/dhasenc.rb6
-rw-r--r--sample/drb/dlogd.rb4
-rw-r--r--sample/drb/gw_cu.rb2
-rw-r--r--sample/drb/http0.rb60
-rw-r--r--sample/drb/http0serv.rb106
-rw-r--r--sample/drb/old_tuplespace.rb74
-rw-r--r--sample/drb/simpletuple.rb8
-rw-r--r--sample/dualstack-fetch.rb2
-rw-r--r--sample/dualstack-httpd.rb32
-rw-r--r--sample/fib.awk8
-rw-r--r--sample/fib.pl4
-rw-r--r--sample/fib.scm4
-rw-r--r--sample/freq.rb2
-rw-r--r--sample/from.rb38
-rw-r--r--sample/logger/app.rb2
-rwxr-xr-x[-rw-r--r--]sample/mine.rb40
-rw-r--r--sample/mkproto.rb22
-rw-r--r--sample/observ.rb8
-rw-r--r--sample/occur.pl8
-rw-r--r--sample/occur.rb2
-rw-r--r--sample/occur2.rb2
-rw-r--r--sample/openssl/c_rehash.rb38
-rw-r--r--sample/openssl/certstore.rb52
-rw-r--r--sample/openssl/crlstore.rb32
-rwxr-xr-xsample/optparse/opttest.rb70
-rw-r--r--sample/pty/expect_sample.rb2
-rw-r--r--sample/rcs.awk54
-rwxr-xr-x[-rw-r--r--]sample/test.rb143
-rw-r--r--sample/trojan.rb2
-rw-r--r--signal.c376
-rw-r--r--siphash.c2
-rw-r--r--sparc.c14
-rw-r--r--spec/default.mspec8
-rw-r--r--sprintf.c334
-rw-r--r--st.c747
-rw-r--r--strftime.c168
-rw-r--r--string.c2122
-rw-r--r--struct.c639
-rw-r--r--template/Doxyfile.tmpl20
-rw-r--r--template/GNUmakefile.in6
-rw-r--r--template/encdb.h.tmpl16
-rw-r--r--[-rwxr-xr-x]template/fake.rb.in6
-rw-r--r--template/id.c.tmpl27
-rw-r--r--template/id.h.tmpl172
-rw-r--r--template/ruby.pc.in36
-rw-r--r--template/sizes.c.tmpl30
-rw-r--r--template/verconf.h.in61
-rw-r--r--template/yarvarch.ja402
-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-/iter/test_iter_break.rb12
-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.rb6
-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.rb28
-rw-r--r--test/-ext-/st/test_update.rb50
-rw-r--r--test/-ext-/string/test_cstr.rb25
-rw-r--r--test/-ext-/string/test_ellipsize.rb2
-rw-r--r--test/-ext-/string/test_enc_str_buf_cat.rb15
-rw-r--r--test/-ext-/string/test_modify_expand.rb20
-rw-r--r--test/-ext-/string/test_normalize.rb106
-rw-r--r--test/-ext-/string/test_qsort.rb19
-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-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.rb5
-rw-r--r--test/base64/test_base64.rb1
-rw-r--r--test/benchmark/test_benchmark.rb102
-rw-r--r--test/bigdecimal/test_bigdecimal.rb234
-rw-r--r--test/bigdecimal/test_bigdecimal_util.rb9
-rw-r--r--test/cgi/test_cgi_core.rb18
-rw-r--r--test/cgi/test_cgi_header.rb48
-rw-r--r--test/cgi/test_cgi_modruby.rb7
-rw-r--r--test/cgi/test_cgi_multipart.rb53
-rw-r--r--test/cgi/test_cgi_session.rb2
-rw-r--r--test/cgi/test_cgi_tag_helper.rb14
-rw-r--r--test/cgi/test_cgi_util.rb53
-rw-r--r--test/coverage/test_coverage.rb2
-rwxr-xr-xtest/csv/test_encodings.rb2
-rwxr-xr-xtest/csv/test_features.rb86
-rwxr-xr-xtest/csv/test_interface.rb6
-rwxr-xr-xtest/csv/test_row.rb33
-rwxr-xr-xtest/csv/test_serialization.rb158
-rw-r--r--test/csv/ts_all.rb1
-rw-r--r--test/date/test_date_marshal.rb12
-rw-r--r--test/date/test_date_parse.rb782
-rw-r--r--test/date/test_date_strftime.rb23
-rw-r--r--test/date/test_date_strptime.rb172
-rw-r--r--test/date/test_switch_hitter.rb89
-rw-r--r--test/dbm/test_dbm.rb61
-rwxr-xr-xtest/digest/test_digest.rb56
-rw-r--r--test/digest/test_digest_extend.rb1
-rw-r--r--test/dl/test_base.rb15
-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.rb9
-rw-r--r--test/dl/test_cfunc.rb2
-rw-r--r--test/dl/test_cparser.rb24
-rw-r--r--test/dl/test_dl2.rb43
-rw-r--r--test/dl/test_func.rb4
-rw-r--r--test/dl/test_handle.rb9
-rw-r--r--test/dl/test_import.rb9
-rw-r--r--test/drb/drbtest.rb55
-rw-r--r--test/drb/ignore_test_drb.rb16
-rw-r--r--test/drb/test_drb.rb52
-rw-r--r--test/drb/test_drbssl.rb10
-rw-r--r--test/drb/test_drbunix.rb10
-rw-r--r--test/drb/ut_array.rb2
-rw-r--r--test/drb/ut_array_drbssl.rb13
-rw-r--r--test/drb/ut_drb.rb3
-rw-r--r--test/drb/ut_drb_drbssl.rb13
-rw-r--r--test/drb/ut_eq.rb2
-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/test_erb.rb67
-rw-r--r--test/etc/test_etc.rb17
-rw-r--r--test/fiddle/helper.rb17
-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.rb4
-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.rb5
-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/fileasserts.rb102
-rw-r--r--test/fileutils/test_dryrun.rb20
-rw-r--r--test/fileutils/test_fileutils.rb199
-rw-r--r--test/fileutils/test_nowrite.rb21
-rw-r--r--test/fileutils/test_verbose.rb18
-rw-r--r--test/fileutils/visibility_tests.rb41
-rw-r--r--test/gdbm/test_gdbm.rb100
-rw-r--r--test/iconv/test_basic.rb59
-rw-r--r--test/iconv/test_option.rb43
-rw-r--r--test/iconv/test_partial.rb41
-rw-r--r--test/iconv/utils.rb29
-rw-r--r--test/io/console/test_io_console.rb75
-rw-r--r--test/io/wait/test_io_wait.rb36
-rw-r--r--test/json/fixtures/fail18.json2
-rwxr-xr-xtest/json/test_json.rb127
-rwxr-xr-xtest/json/test_json_addition.rb79
-rw-r--r--test/json/test_json_encoding.rb4
-rwxr-xr-xtest/json/test_json_fixtures.rb4
-rwxr-xr-xtest/json/test_json_generate.rb194
-rw-r--r--test/json/test_json_generic_object.rb75
-rw-r--r--test/json/test_json_string_matching.rb15
-rwxr-xr-xtest/json/test_json_unicode.rb4
-rw-r--r--test/logger/test_logger.rb107
-rw-r--r--test/matrix/test_vector.rb15
-rw-r--r--test/minitest/metametameta.rb74
-rw-r--r--test/minitest/test_minitest_benchmark.rb18
-rw-r--r--test/minitest/test_minitest_mock.rb282
-rw-r--r--test/minitest/test_minitest_spec.rb664
-rw-r--r--test/minitest/test_minitest_unit.rb1099
-rw-r--r--test/misc/test_ruby_mode.rb41
-rw-r--r--test/mkmf/base.rb26
-rw-r--r--test/mkmf/test_config.rb17
-rw-r--r--test/mkmf/test_constant.rb37
-rw-r--r--test/mkmf/test_convertible.rb2
-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.rb2
-rw-r--r--test/mkmf/test_sizeof.rb2
-rw-r--r--test/net/ftp/test_ftp.rb813
-rw-r--r--test/net/http/test_http.rb489
-rw-r--r--test/net/http/test_http_request.rb79
-rw-r--r--test/net/http/test_httpheader.rb27
-rw-r--r--test/net/http/test_httpresponse.rb226
-rw-r--r--test/net/http/test_httpresponses.rb24
-rw-r--r--test/net/http/test_https.rb36
-rw-r--r--test/net/http/test_https_proxy.rb6
-rw-r--r--test/net/http/utils.rb6
-rw-r--r--test/net/imap/test_imap.rb75
-rw-r--r--test/net/imap/test_imap_response_parser.rb136
-rw-r--r--test/net/protocol/test_protocol.rb1
-rw-r--r--test/net/smtp/test_smtp.rb25
-rw-r--r--test/objspace/test_objspace.rb216
-rw-r--r--test/open-uri/test_open-uri.rb94
-rw-r--r--test/open-uri/test_ssl.rb25
-rw-r--r--test/openssl/test_asn1.rb22
-rw-r--r--test/openssl/test_bn.rb35
-rw-r--r--test/openssl/test_buffering.rb1
-rw-r--r--test/openssl/test_cipher.rb150
-rw-r--r--test/openssl/test_config.rb31
-rw-r--r--test/openssl/test_digest.rb8
-rw-r--r--test/openssl/test_engine.rb70
-rw-r--r--test/openssl/test_fips.rb14
-rw-r--r--test/openssl/test_ns_spki.rb1
-rw-r--r--test/openssl/test_pair.rb78
-rw-r--r--test/openssl/test_pkcs12.rb6
-rw-r--r--test/openssl/test_pkcs5.rb97
-rw-r--r--test/openssl/test_pkcs7.rb2
-rw-r--r--test/openssl/test_pkey_dh.rb22
-rw-r--r--test/openssl/test_pkey_dsa.rb16
-rw-r--r--test/openssl/test_pkey_ec.rb59
-rw-r--r--test/openssl/test_pkey_rsa.rb39
-rw-r--r--test/openssl/test_ssl.rb500
-rw-r--r--test/openssl/test_ssl_session.rb52
-rw-r--r--test/openssl/test_x509cert.rb19
-rw-r--r--test/openssl/test_x509crl.rb5
-rw-r--r--test/openssl/test_x509name.rb3
-rw-r--r--test/openssl/test_x509req.rb4
-rw-r--r--test/openssl/test_x509store.rb5
-rw-r--r--test/openssl/utils.rb26
-rw-r--r--test/optparse/test_acceptable.rb195
-rw-r--r--test/optparse/test_autoconf.rb63
-rw-r--r--test/optparse/test_optparse.rb3
-rw-r--r--test/optparse/test_summary.rb8
-rw-r--r--test/ostruct/test_ostruct.rb80
-rw-r--r--test/pathname/test_pathname.rb24
-rw-r--r--test/profile_test_all.rb90
-rw-r--r--test/psych/handlers/test_recorder.rb25
-rw-r--r--test/psych/helper.rb67
-rw-r--r--test/psych/test_alias_and_anchor.rb12
-rw-r--r--test/psych/test_array.rb2
-rw-r--r--test/psych/test_boolean.rb2
-rw-r--r--test/psych/test_class.rb2
-rw-r--r--test/psych/test_coder.rb6
-rw-r--r--test/psych/test_date_time.rb10
-rw-r--r--test/psych/test_deprecated.rb8
-rw-r--r--test/psych/test_document.rb2
-rw-r--r--test/psych/test_emitter.rb2
-rw-r--r--test/psych/test_encoding.rb116
-rw-r--r--test/psych/test_engine_manager.rb12
-rw-r--r--test/psych/test_exception.rb59
-rw-r--r--test/psych/test_hash.rb2
-rw-r--r--test/psych/test_json_tree.rb2
-rw-r--r--test/psych/test_merge_keys.rb71
-rw-r--r--test/psych/test_nil.rb2
-rw-r--r--test/psych/test_null.rb2
-rw-r--r--test/psych/test_numeric.rb22
-rw-r--r--test/psych/test_object.rb2
-rw-r--r--test/psych/test_object_references.rb8
-rw-r--r--test/psych/test_omap.rb2
-rw-r--r--test/psych/test_parser.rb9
-rw-r--r--test/psych/test_psych.rb30
-rw-r--r--test/psych/test_safe_load.rb97
-rw-r--r--test/psych/test_scalar.rb2
-rw-r--r--test/psych/test_scalar_scanner.rb19
-rw-r--r--test/psych/test_serialize_subclasses.rb2
-rw-r--r--test/psych/test_set.rb2
-rw-r--r--test/psych/test_stream.rb2
-rw-r--r--test/psych/test_string.rb69
-rw-r--r--test/psych/test_struct.rb6
-rw-r--r--test/psych/test_symbol.rb2
-rw-r--r--test/psych/test_tainted.rb16
-rw-r--r--test/psych/test_to_yaml_properties.rb2
-rw-r--r--test/psych/test_tree_builder.rb2
-rw-r--r--test/psych/test_yaml.rb24
-rw-r--r--test/psych/test_yamldbm.rb197
-rw-r--r--test/psych/test_yamlstore.rb (renamed from test/syck/test_yamlstore.rb)26
-rw-r--r--test/psych/visitors/test_to_ruby.rb9
-rw-r--r--test/psych/visitors/test_yaml_tree.rb20
-rw-r--r--test/rake/helper.rb452
-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_application.rb86
-rw-r--r--test/rake/test_rake_application_options.rb198
-rw-r--r--test/rake/test_rake_backtrace.rb113
-rw-r--r--test/rake/test_rake_clean.rb46
-rw-r--r--test/rake/test_rake_definitions.rb5
-rw-r--r--test/rake/test_rake_directory_task.rb21
-rw-r--r--test/rake/test_rake_dsl.rb37
-rw-r--r--test/rake/test_rake_file_creation_task.rb4
-rw-r--r--test/rake/test_rake_file_list.rb47
-rw-r--r--test/rake/test_rake_file_task.rb32
-rw-r--r--test/rake/test_rake_file_utils.rb8
-rw-r--r--test/rake/test_rake_ftp_file.rb41
-rw-r--r--test/rake/test_rake_functional.rb70
-rw-r--r--test/rake/test_rake_invocation_chain.rb18
-rw-r--r--test/rake/test_rake_linked_list.rb84
-rw-r--r--test/rake/test_rake_makefile_loader.rb4
-rw-r--r--test/rake/test_rake_multi_task.rb9
-rw-r--r--test/rake/test_rake_name_space.rb2
-rw-r--r--test/rake/test_rake_path_map.rb35
-rw-r--r--test/rake/test_rake_rake_test_loader.rb7
-rw-r--r--test/rake/test_rake_rdoc_task.rb83
-rw-r--r--test/rake/test_rake_reduce_compat.rb26
-rw-r--r--test/rake/test_rake_rules.rb59
-rw-r--r--test/rake/test_rake_scope.rb44
-rw-r--r--test/rake/test_rake_task.rb143
-rw-r--r--test/rake/test_rake_task_arguments.rb37
-rw-r--r--test/rake/test_rake_task_manager.rb31
-rw-r--r--test/rake/test_rake_task_manager_argument_resolution.rb17
-rw-r--r--test/rake/test_rake_task_with_arguments.rb42
-rw-r--r--test/rake/test_rake_test_task.rb3
-rw-r--r--test/rake/test_rake_thread_pool.rb142
-rw-r--r--test/rake/test_rake_top_level_functions.rb42
-rw-r--r--test/rake/test_sys.rb20
-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/test.ja.largedoc3
-rw-r--r--test/rdoc/test_attribute_manager.rb66
-rw-r--r--test/rdoc/test_rdoc_any_method.rb260
-rw-r--r--test/rdoc/test_rdoc_attr.rb89
-rw-r--r--test/rdoc/test_rdoc_class_module.rb950
-rw-r--r--test/rdoc/test_rdoc_code_object.rb184
-rw-r--r--test/rdoc/test_rdoc_comment.rb504
-rw-r--r--test/rdoc/test_rdoc_constant.rb136
-rw-r--r--test/rdoc/test_rdoc_context.rb272
-rw-r--r--test/rdoc/test_rdoc_context_section.rb118
-rw-r--r--test/rdoc/test_rdoc_cross_reference.rb44
-rw-r--r--test/rdoc/test_rdoc_encoding.rb31
-rw-r--r--test/rdoc/test_rdoc_extend.rb94
-rw-r--r--test/rdoc/test_rdoc_generator_darkfish.rb188
-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.rb47
-rw-r--r--test/rdoc/test_rdoc_include.rb12
-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.rb16
-rw-r--r--test/rdoc/test_rdoc_markup_attribute_manager.rb138
-rw-r--r--test/rdoc/test_rdoc_markup_attributes.rb39
-rw-r--r--test/rdoc/test_rdoc_markup_document.rb81
-rw-r--r--test/rdoc/test_rdoc_markup_formatter.rb146
-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.rb23
-rw-r--r--test/rdoc/test_rdoc_markup_paragraph.rb23
-rw-r--r--test/rdoc/test_rdoc_markup_parser.rb390
-rw-r--r--test/rdoc/test_rdoc_markup_pre_process.rb87
-rw-r--r--test/rdoc/test_rdoc_markup_raw.rb21
-rw-r--r--test/rdoc/test_rdoc_markup_to_ansi.rb49
-rw-r--r--test/rdoc/test_rdoc_markup_to_bs.rb33
-rw-r--r--test/rdoc/test_rdoc_markup_to_html.rb384
-rw-r--r--test/rdoc/test_rdoc_markup_to_html_crossref.rb149
-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.rb48
-rw-r--r--test/rdoc/test_rdoc_markup_to_table_of_contents.rb126
-rw-r--r--test/rdoc/test_rdoc_markup_to_tt_only.rb25
-rw-r--r--test/rdoc/test_rdoc_markup_verbatim.rb29
-rw-r--r--test/rdoc/test_rdoc_method_attr.rb43
-rw-r--r--test/rdoc/test_rdoc_normal_class.rb34
-rw-r--r--test/rdoc/test_rdoc_normal_module.rb7
-rw-r--r--test/rdoc/test_rdoc_options.rb397
-rw-r--r--test/rdoc/test_rdoc_parser.rb237
-rw-r--r--test/rdoc/test_rdoc_parser_c.rb681
-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.rb1605
-rw-r--r--test/rdoc/test_rdoc_parser_simple.rb54
-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.rb313
-rw-r--r--test/rdoc/test_rdoc_ri_driver.rb583
-rw-r--r--test/rdoc/test_rdoc_ri_paths.rb150
-rw-r--r--test/rdoc/test_rdoc_ri_store.rb473
-rw-r--r--test/rdoc/test_rdoc_ruby_lex.rb397
-rw-r--r--test/rdoc/test_rdoc_ruby_token.rb19
-rw-r--r--test/rdoc/test_rdoc_rubygems_hook.rb133
-rw-r--r--test/rdoc/test_rdoc_servlet.rb535
-rw-r--r--test/rdoc/test_rdoc_stats.rb616
-rw-r--r--test/rdoc/test_rdoc_store.rb993
-rw-r--r--test/rdoc/test_rdoc_task.rb21
-rw-r--r--test/rdoc/test_rdoc_text.rb181
-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.rb245
-rw-r--r--test/rdoc/xref_test_case.rb26
-rw-r--r--test/readline/test_readline.rb285
-rw-r--r--test/readline/test_readline_history.rb43
-rw-r--r--test/resolv/test_dns.rb32
-rw-r--r--test/rexml/data/testsrc.xml128
-rw-r--r--test/rexml/data/ticket_61.xml8
-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.rb1
-rw-r--r--test/rexml/test_attributes.rb22
-rw-r--r--test/rexml/test_attributes_mixin.rb3
-rw-r--r--test/rexml/test_changing_encoding.rb1
-rw-r--r--test/rexml/test_comment.rb25
-rw-r--r--test/rexml/test_contrib.rb24
-rw-r--r--test/rexml/test_core.rb16
-rw-r--r--test/rexml/test_doctype.rb3
-rw-r--r--test/rexml/test_document.rb220
-rw-r--r--test/rexml/test_encoding.rb7
-rw-r--r--test/rexml/test_entity.rb38
-rw-r--r--test/rexml/test_jaxen.rb2
-rw-r--r--test/rexml/test_light.rb2
-rw-r--r--test/rexml/test_lightparser.rb4
-rw-r--r--test/rexml/test_listener.rb10
-rw-r--r--test/rexml/test_namespace.rb2
-rw-r--r--test/rexml/test_notationdecl_mixin.rb58
-rw-r--r--test/rexml/test_notationdecl_parsetest.rb23
-rw-r--r--test/rexml/test_order.rb9
-rw-r--r--test/rexml/test_pullparser.rb4
-rw-r--r--test/rexml/test_rexml_issuezilla.rb2
-rw-r--r--test/rexml/test_sax.rb2
-rw-r--r--test/rexml/test_stream.rb23
-rw-r--r--test/rexml/test_text.rb19
-rw-r--r--test/rexml/test_xml_declaration.rb (renamed from test/rexml/test_xml_declaration_parent_child.rb)8
-rw-r--r--test/rexml/test_xpath.rb10
-rw-r--r--test/rexml/test_xpathtext.rb2
-rw-r--r--test/rinda/test_rinda.rb227
-rw-r--r--test/ripper/dummyparser.rb2
-rw-r--r--test/ripper/test_files.rb43
-rw-r--r--test/ripper/test_parser_events.rb74
-rw-r--r--test/ripper/test_ripper.rb2
-rw-r--r--test/ripper/test_scanner_events.rb174
-rw-r--r--test/rss/rss-assertions.rb4
-rw-r--r--test/rss/rss-testcase.rb4
-rw-r--r--test/rss/test_1.0.rb56
-rw-r--r--test/rss/test_2.0.rb56
-rw-r--r--test/rss/test_accessor.rb2
-rw-r--r--test/rss/test_atom.rb26
-rw-r--r--test/rss/test_content.rb2
-rw-r--r--test/rss/test_dublincore.rb24
-rw-r--r--test/rss/test_image.rb2
-rw-r--r--test/rss/test_inherit.rb2
-rw-r--r--test/rss/test_itunes.rb2
-rw-r--r--test/rss/test_maker_0.9.rb2
-rw-r--r--test/rss/test_maker_1.0.rb2
-rw-r--r--test/rss/test_maker_2.0.rb10
-rw-r--r--test/rss/test_maker_atom_entry.rb2
-rw-r--r--test/rss/test_maker_atom_feed.rb2
-rw-r--r--test/rss/test_maker_content.rb2
-rw-r--r--test/rss/test_maker_dc.rb2
-rw-r--r--test/rss/test_maker_image.rb2
-rw-r--r--test/rss/test_maker_itunes.rb2
-rw-r--r--test/rss/test_maker_slash.rb2
-rw-r--r--test/rss/test_maker_sy.rb2
-rw-r--r--test/rss/test_maker_taxo.rb2
-rw-r--r--test/rss/test_maker_trackback.rb2
-rw-r--r--test/rss/test_maker_xml-stylesheet.rb2
-rw-r--r--test/rss/test_parser.rb12
-rw-r--r--test/rss/test_parser_1.0.rb2
-rw-r--r--test/rss/test_parser_2.0.rb2
-rw-r--r--test/rss/test_parser_atom_entry.rb2
-rw-r--r--test/rss/test_parser_atom_feed.rb2
-rw-r--r--test/rss/test_setup_maker_0.9.rb2
-rw-r--r--test/rss/test_setup_maker_1.0.rb2
-rw-r--r--test/rss/test_setup_maker_2.0.rb2
-rw-r--r--test/rss/test_setup_maker_atom_entry.rb2
-rw-r--r--test/rss/test_setup_maker_atom_feed.rb2
-rw-r--r--test/rss/test_setup_maker_itunes.rb2
-rw-r--r--test/rss/test_setup_maker_slash.rb2
-rw-r--r--test/rss/test_slash.rb2
-rw-r--r--test/rss/test_syndication.rb2
-rw-r--r--test/rss/test_taxonomy.rb2
-rw-r--r--test/rss/test_to_s.rb2
-rw-r--r--test/rss/test_trackback.rb2
-rw-r--r--test/rss/test_version.rb2
-rw-r--r--test/rss/test_xml-stylesheet.rb2
-rw-r--r--test/ruby/allpairs.rb1
-rw-r--r--test/ruby/enc/test_euc_jp.rb2
-rw-r--r--test/ruby/enc/test_shift_jis.rb2
-rw-r--r--test/ruby/enc/test_utf16.rb2
-rw-r--r--test/ruby/enc/test_utf32.rb2
-rw-r--r--test/ruby/envutil.rb324
-rw-r--r--test/ruby/lbtest.rb9
-rw-r--r--test/ruby/marshaltestlib.rb144
-rw-r--r--test/ruby/memory_status.rb40
-rw-r--r--test/ruby/test_alias.rb35
-rw-r--r--test/ruby/test_argf.rb118
-rw-r--r--test/ruby/test_arity.rb71
-rw-r--r--test/ruby/test_array.rb315
-rw-r--r--test/ruby/test_autoload.rb120
-rw-r--r--test/ruby/test_backtrace.rb165
-rw-r--r--test/ruby/test_basicinstructions.rb19
-rw-r--r--test/ruby/test_beginendblock.rb135
-rw-r--r--test/ruby/test_bignum.rb236
-rw-r--r--test/ruby/test_class.rb125
-rw-r--r--test/ruby/test_comparable.rb14
-rw-r--r--test/ruby/test_complex.rb20
-rw-r--r--test/ruby/test_const.rb10
-rw-r--r--test/ruby/test_continuation.rb19
-rw-r--r--test/ruby/test_defined.rb73
-rw-r--r--test/ruby/test_dir.rb61
-rw-r--r--test/ruby/test_dir_m17n.rb198
-rw-r--r--test/ruby/test_econv.rb47
-rw-r--r--test/ruby/test_encoding.rb14
-rw-r--r--test/ruby/test_enum.rb64
-rw-r--r--test/ruby/test_enumerator.rb235
-rw-r--r--test/ruby/test_env.rb43
-rw-r--r--test/ruby/test_eval.rb221
-rw-r--r--test/ruby/test_exception.rb308
-rw-r--r--test/ruby/test_fiber.rb155
-rw-r--r--test/ruby/test_file.rb285
-rw-r--r--test/ruby/test_file_exhaustive.rb188
-rw-r--r--test/ruby/test_fixnum.rb70
-rw-r--r--test/ruby/test_flip.rb21
-rw-r--r--test/ruby/test_float.rb120
-rw-r--r--test/ruby/test_fnmatch.rb184
-rw-r--r--test/ruby/test_gc.rb95
-rw-r--r--test/ruby/test_hash.rb439
-rw-r--r--test/ruby/test_ifunless.rb14
-rw-r--r--test/ruby/test_integer.rb79
-rw-r--r--test/ruby/test_integer_comb.rb3
-rw-r--r--test/ruby/test_io.rb1861
-rw-r--r--test/ruby/test_io_m17n.rb197
-rw-r--r--test/ruby/test_iseq.rb119
-rw-r--r--test/ruby/test_iterator.rb34
-rw-r--r--test/ruby/test_keyword.rb418
-rw-r--r--test/ruby/test_lambda.rb63
-rw-r--r--test/ruby/test_lazy_enumerator.rb493
-rw-r--r--test/ruby/test_literal.rb144
-rw-r--r--test/ruby/test_m17n.rb211
-rw-r--r--test/ruby/test_m17n_comb.rb198
-rw-r--r--test/ruby/test_marshal.rb190
-rw-r--r--test/ruby/test_math.rb3
-rw-r--r--test/ruby/test_method.rb210
-rw-r--r--test/ruby/test_module.rb782
-rw-r--r--test/ruby/test_not.rb12
-rw-r--r--test/ruby/test_notimp.rb26
-rw-r--r--test/ruby/test_numeric.rb108
-rw-r--r--test/ruby/test_object.rb391
-rw-r--r--test/ruby/test_objectspace.rb33
-rw-r--r--test/ruby/test_optimization.rb39
-rw-r--r--test/ruby/test_pack.rb97
-rw-r--r--test/ruby/test_parse.rb162
-rw-r--r--test/ruby/test_proc.rb475
-rw-r--r--test/ruby/test_process.rb536
-rw-r--r--test/ruby/test_rand.rb48
-rw-r--r--test/ruby/test_range.rb211
-rw-r--r--test/ruby/test_rational.rb36
-rw-r--r--test/ruby/test_refinement.rb1115
-rw-r--r--test/ruby/test_regexp.rb241
-rw-r--r--test/ruby/test_require.rb587
-rw-r--r--test/ruby/test_rubyoptions.rb297
-rw-r--r--test/ruby/test_settracefunc.rb722
-rw-r--r--test/ruby/test_signal.rb159
-rw-r--r--test/ruby/test_sleep.rb11
-rw-r--r--test/ruby/test_sprintf.rb50
-rw-r--r--test/ruby/test_sprintf_comb.rb46
-rw-r--r--test/ruby/test_string.rb385
-rw-r--r--test/ruby/test_stringchar.rb32
-rw-r--r--test/ruby/test_struct.rb155
-rw-r--r--test/ruby/test_super.rb233
-rw-r--r--test/ruby/test_symbol.rb70
-rw-r--r--test/ruby/test_syntax.rb379
-rw-r--r--test/ruby/test_system.rb64
-rw-r--r--test/ruby/test_thread.rb726
-rw-r--r--test/ruby/test_threadgroup.rb55
-rw-r--r--test/ruby/test_time.rb493
-rw-r--r--test/ruby/test_time_tz.rb51
-rw-r--r--test/ruby/test_transcode.rb143
-rw-r--r--test/ruby/test_unicode_escape.rb4
-rw-r--r--test/ruby/test_whileuntil.rb3
-rw-r--r--test/ruby/test_yield.rb11
-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/ca_cert.pem23
-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/null-type.gemspec.rzbin553 -> 554 bytes-rw-r--r--test/rubygems/encrypted_private_key.pem30
-rw-r--r--test/rubygems/expired_cert.pem18
-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/insure_session.rb43
-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/standarderror/rubygems_plugin.rb2
-rw-r--r--test/rubygems/private_key.pem50
-rw-r--r--test/rubygems/public_cert.pem34
-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.rb2
-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/test_bundled_ca.rb60
-rw-r--r--test/rubygems/test_config.rb10
-rw-r--r--test/rubygems/test_deprecate.rb76
-rw-r--r--test/rubygems/test_gem.rb1068
-rw-r--r--test/rubygems/test_gem_available_set.rb106
-rw-r--r--test/rubygems/test_gem_builder.rb44
-rw-r--r--test/rubygems/test_gem_command.rb10
-rw-r--r--test/rubygems/test_gem_command_manager.rb106
-rw-r--r--test/rubygems/test_gem_commands_build_command.rb32
-rw-r--r--test/rubygems/test_gem_commands_cert_command.rb634
-rw-r--r--test/rubygems/test_gem_commands_check_command.rb50
-rw-r--r--test/rubygems/test_gem_commands_cleanup_command.rb92
-rw-r--r--test/rubygems/test_gem_commands_contents_command.rb51
-rw-r--r--test/rubygems/test_gem_commands_dependency_command.rb57
-rw-r--r--test/rubygems/test_gem_commands_environment_command.rb10
-rw-r--r--test/rubygems/test_gem_commands_fetch_command.rb104
-rw-r--r--test/rubygems/test_gem_commands_generate_index_command.rb85
-rw-r--r--test/rubygems/test_gem_commands_help_command.rb15
-rw-r--r--test/rubygems/test_gem_commands_install_command.rb759
-rw-r--r--test/rubygems/test_gem_commands_list_command.rb6
-rw-r--r--test/rubygems/test_gem_commands_mirror.rb32
-rw-r--r--test/rubygems/test_gem_commands_outdated_command.rb19
-rw-r--r--test/rubygems/test_gem_commands_owner_command.rb73
-rw-r--r--test/rubygems/test_gem_commands_pristine_command.rb223
-rw-r--r--test/rubygems/test_gem_commands_push_command.rb199
-rw-r--r--test/rubygems/test_gem_commands_query_command.rb367
-rw-r--r--test/rubygems/test_gem_commands_search_command.rb17
-rw-r--r--test/rubygems/test_gem_commands_setup_command.rb129
-rw-r--r--test/rubygems/test_gem_commands_sources_command.rb122
-rw-r--r--test/rubygems/test_gem_commands_specification_command.rb103
-rw-r--r--test/rubygems/test_gem_commands_stale_command.rb4
-rw-r--r--test/rubygems/test_gem_commands_uninstall_command.rb158
-rw-r--r--test/rubygems/test_gem_commands_unpack_command.rb52
-rw-r--r--test/rubygems/test_gem_commands_update_command.rb381
-rw-r--r--test/rubygems/test_gem_commands_which_command.rb14
-rw-r--r--test/rubygems/test_gem_commands_yank_command.rb97
-rw-r--r--test/rubygems/test_gem_config_file.rb218
-rw-r--r--test/rubygems/test_gem_dependency.rb46
-rw-r--r--test/rubygems/test_gem_dependency_installer.rb464
-rw-r--r--test/rubygems/test_gem_dependency_list.rb43
-rw-r--r--test/rubygems/test_gem_dependency_resolution_error.rb28
-rw-r--r--test/rubygems/test_gem_doc_manager.rb32
-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.rb22
-rw-r--r--test/rubygems/test_gem_ext_ext_conf_builder.rb100
-rw-r--r--test/rubygems/test_gem_ext_rake_builder.rb24
-rw-r--r--test/rubygems/test_gem_format.rb88
-rw-r--r--test/rubygems/test_gem_gem_path_searcher.rb94
-rw-r--r--test/rubygems/test_gem_gem_runner.rb38
-rw-r--r--test/rubygems/test_gem_gemcutter_utilities.rb82
-rw-r--r--test/rubygems/test_gem_impossible_dependencies_error.rb45
-rw-r--r--test/rubygems/test_gem_indexer.rb302
-rw-r--r--test/rubygems/test_gem_install_update_options.rb89
-rw-r--r--test/rubygems/test_gem_installer.rb870
-rw-r--r--test/rubygems/test_gem_local_remote_options.rb10
-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_input.rb129
-rw-r--r--test/rubygems/test_gem_package_tar_output.rb101
-rw-r--r--test/rubygems/test_gem_package_tar_reader.rb41
-rw-r--r--test/rubygems/test_gem_package_tar_reader_entry.rb2
-rw-r--r--test/rubygems/test_gem_package_tar_writer.rb127
-rw-r--r--test/rubygems/test_gem_package_task.rb25
-rw-r--r--test/rubygems/test_gem_path_support.rb39
-rw-r--r--test/rubygems/test_gem_platform.rb104
-rw-r--r--test/rubygems/test_gem_rdoc.rb269
-rw-r--r--test/rubygems/test_gem_remote_fetcher.rb503
-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.rb89
-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.rb292
-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.rb177
-rw-r--r--test/rubygems/test_gem_silent_ui.rb4
-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_index.rb250
-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.rb454
-rw-r--r--test/rubygems/test_gem_specification.rb1378
-rw-r--r--test/rubygems/test_gem_stub_specification.rb143
-rw-r--r--test/rubygems/test_gem_uninstaller.rb236
-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.rb55
-rw-r--r--test/rubygems/test_gem_version.rb60
-rw-r--r--test/rubygems/test_gem_version_option.rb64
-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.rb26
-rw-r--r--test/sdbm/test_sdbm.rb67
-rw-r--r--test/shell/test_command_processor.rb69
-rw-r--r--test/socket/test_addrinfo.rb23
-rw-r--r--test/socket/test_nonblock.rb16
-rw-r--r--test/socket/test_socket.rb139
-rw-r--r--test/socket/test_sockopt.rb18
-rw-r--r--test/socket/test_tcp.rb38
-rw-r--r--test/socket/test_udp.rb33
-rw-r--r--test/socket/test_unix.rb35
-rw-r--r--test/stringio/test_stringio.rb49
-rw-r--r--test/strscan/test_stringscanner.rb26
-rw-r--r--test/syck/test_array.rb18
-rw-r--r--test/syck/test_boolean.rb37
-rw-r--r--test/syck/test_class.rb27
-rw-r--r--test/syck/test_engine_manager.rb3
-rw-r--r--test/syck/test_exception.rb46
-rw-r--r--test/syck/test_hash.rb29
-rw-r--r--test/syck/test_null.rb20
-rw-r--r--test/syck/test_omap.rb56
-rw-r--r--test/syck/test_set.rb31
-rw-r--r--test/syck/test_string.rb45
-rw-r--r--test/syck/test_struct.rb42
-rw-r--r--test/syck/test_symbol.rb22
-rw-r--r--test/syck/test_time.rb24
-rw-r--r--test/syck/test_yaml.rb1413
-rw-r--r--test/syck/test_yaml_properties.rb64
-rw-r--r--test/syslog/test_syslog_logger.rb572
-rw-r--r--test/test_abbrev.rb54
-rw-r--r--test/test_curses.rb74
-rw-r--r--test/test_delegate.rb42
-rw-r--r--test/test_find.rb34
-rw-r--r--test/test_mathn.rb110
-rw-r--r--test/test_open3.rb1
-rw-r--r--test/test_pp.rb5
-rw-r--r--test/test_prime.rb2
-rw-r--r--test/test_pstore.rb26
-rw-r--r--test/test_pty.rb20
-rw-r--r--test/test_rbconfig.rb53
-rw-r--r--test/test_securerandom.rb12
-rw-r--r--test/test_set.rb721
-rw-r--r--test/test_shellwords.rb5
-rw-r--r--test/test_tempfile.rb39
-rw-r--r--test/test_time.rb9
-rw-r--r--test/test_timeout.rb28
-rw-r--r--test/test_tmpdir.rb33
-rw-r--r--test/test_tracer.rb4
-rw-r--r--test/test_tsort.rb56
-rw-r--r--test/test_weakref.rb58
-rw-r--r--test/testunit/test4test_redefinition.rb11
-rw-r--r--test/testunit/test4test_sorting.rb15
-rw-r--r--test/testunit/test_hideskip.rb22
-rw-r--r--test/testunit/test_parallel.rb22
-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_forth.rb7
-rw-r--r--test/thread/test_cv.rb191
-rw-r--r--test/thread/test_queue.rb120
-rw-r--r--test/thread/test_sync.rb57
-rw-r--r--test/uri/test_common.rb59
-rw-r--r--test/uri/test_generic.rb114
-rw-r--r--test/uri/test_mailto.rb10
-rw-r--r--test/webrick/test_cgi.rb12
-rw-r--r--test/webrick/test_filehandler.rb6
-rw-r--r--test/webrick/test_htmlutils.rb20
-rw-r--r--test/webrick/test_httpauth.rb166
-rw-r--r--test/webrick/test_httpproxy.rb2
-rw-r--r--test/webrick/test_httpresponse.rb141
-rw-r--r--test/webrick/test_httpserver.rb72
-rw-r--r--test/webrick/test_httputils.rb4
-rw-r--r--test/webrick/test_server.rb25
-rw-r--r--test/webrick/utils.rb14
-rw-r--r--test/win32ole/test_err_in_callback.rb29
-rw-r--r--test/win32ole/test_thread.rb25
-rw-r--r--test/win32ole/test_win32ole.rb9
-rw-r--r--test/win32ole/test_win32ole_event.rb12
-rw-r--r--test/win32ole/test_win32ole_type.rb2
-rw-r--r--test/win32ole/test_win32ole_variant.rb37
-rw-r--r--test/win32ole/test_win32ole_variant_outarg.rb13
-rw-r--r--test/xmlrpc/data/blog.xml18
-rw-r--r--test/xmlrpc/test_client.rb316
-rw-r--r--test/xmlrpc/test_cookie.rb13
-rw-r--r--test/xmlrpc/test_datetime.rb2
-rw-r--r--test/xmlrpc/test_features.rb2
-rw-r--r--test/xmlrpc/test_marshal.rb2
-rw-r--r--test/xmlrpc/test_parser.rb2
-rw-r--r--test/xmlrpc/test_webrick_server.rb14
-rw-r--r--test/xmlrpc/webrick_testing.rb25
-rw-r--r--test/zlib/test_zlib.rb904
-rw-r--r--thread.c2761
-rw-r--r--thread_native.h23
-rw-r--r--thread_pthread.c668
-rw-r--r--thread_pthread.h19
-rw-r--r--thread_win32.c115
-rw-r--r--thread_win32.h11
-rw-r--r--time.c836
-rw-r--r--timev.h21
-rw-r--r--[-rwxr-xr-x]tool/asm_parse.rb0
-rwxr-xr-xtool/bisect.sh42
-rwxr-xr-xtool/change_maker.rb8
-rw-r--r--[-rwxr-xr-x]tool/compile_prelude.rb6
-rwxr-xr-xtool/config.guess1501
-rwxr-xr-xtool/config.sub1705
-rw-r--r--tool/config_files.rb8
-rwxr-xr-xtool/enc-unicode.rb90
-rw-r--r--[-rwxr-xr-x]tool/eval.rb0
-rwxr-xr-xtool/file2lastrev.rb98
-rwxr-xr-xtool/gen_dummy_probes.rb28
-rwxr-xr-xtool/gen_ruby_tapset.rb105
-rw-r--r--[-rwxr-xr-x]tool/generic_erb.rb12
-rwxr-xr-xtool/get-config_files7
-rwxr-xr-xtool/id2token.rb24
-rwxr-xr-xtool/ifchange17
-rw-r--r--tool/install-sh2
-rwxr-xr-xtool/instruction.rb104
-rwxr-xr-xtool/make-snapshot53
-rwxr-xr-xtool/merger.rb112
-rwxr-xr-xtool/mkconfig.rb50
-rwxr-xr-xtool/mkrunnable.rb116
-rw-r--r--[-rwxr-xr-x]tool/parse.rb0
-rw-r--r--tool/probes_to_wiki.rb16
-rwxr-xr-xtool/rbinstall.rb305
-rwxr-xr-xtool/rbuninstall.rb67
-rwxr-xr-xtool/rubytest.rb6
-rwxr-xr-xtool/runruby.rb12
-rw-r--r--[-rwxr-xr-x]tool/transcode-tblgen.rb108
-rwxr-xr-xtool/update-deps258
-rw-r--r--tool/vcs.rb112
-rw-r--r--tool/vpath.rb82
-rw-r--r--[-rwxr-xr-x]tool/vtlh.rb0
-rw-r--r--transcode.c249
-rw-r--r--transcode_data.h16
-rw-r--r--util.c158
-rw-r--r--variable.c832
-rw-r--r--version.c70
-rw-r--r--version.h17
-rw-r--r--vm.c1407
-rw-r--r--vm_backtrace.c1368
-rw-r--r--vm_core.h570
-rw-r--r--vm_debug.h (renamed from debug.h)10
-rw-r--r--vm_dump.c497
-rw-r--r--vm_eval.c994
-rw-r--r--vm_exec.c62
-rw-r--r--vm_exec.h33
-rw-r--r--vm_insnhelper.c2863
-rw-r--r--vm_insnhelper.h149
-rw-r--r--vm_method.c891
-rw-r--r--vm_opts.h9
-rw-r--r--vm_trace.c1495
-rw-r--r--vsnprintf.c118
-rw-r--r--win32/Makefile.sub197
-rw-r--r--win32/README.win3222
-rwxr-xr-xwin32/configure.bat63
-rw-r--r--win32/dir.h15
-rw-r--r--win32/file.c256
-rwxr-xr-xwin32/ifchange.bat24
-rwxr-xr-xwin32/mkexports.rb16
-rwxr-xr-xwin32/rm.bat4
-rw-r--r--win32/rtname.cmd18
-rw-r--r--win32/setup.mak110
-rw-r--r--win32/win32.c2289
2440 files changed, 370248 insertions, 148702 deletions
diff --git a/.document b/.document
index 8a05d61beb..9a5067bc52 100644
--- a/.document
+++ b/.document
@@ -10,13 +10,19 @@
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
-doc/*.rdoc
+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
index 2a38da8892..78ab191c40 100644
--- a/.gdbinit
+++ b/.gdbinit
@@ -1,4 +1,25 @@
+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
@@ -6,75 +27,8 @@ define rp
else
if ((VALUE)($arg0) & ~(~(VALUE)0<<RUBY_SPECIAL_SHIFT)) == RUBY_SYMBOL_FLAG
set $id = (($arg0) >> RUBY_SPECIAL_SHIFT)
- if $id == '!' || $id == '+' || $id == '-' || $id == '*' || $id == '/' || $id == '%' || $id == '<' || $id == '>' || $id == '`'
- printf "SYMBOL(:%c)\n", $id
- else
- if $id == idDot2
- echo SYMBOL(:..)\n
- else
- if $id == idDot3
- echo SYMBOL(:...)\n
- else
- if $id == idUPlus
- echo SYMBOL(:+@)\n
- else
- if $id == idUMinus
- echo SYMBOL(:-@)\n
- else
- if $id == idPow
- echo SYMBOL(:**)\n
- else
- if $id == idCmp
- echo SYMBOL(:<=>)\n
- else
- if $id == idLTLT
- echo SYMBOL(:<<)\n
- else
- if $id == idLE
- echo SYMBOL(:<=)\n
- else
- if $id == idGE
- echo SYMBOL(:>=)\n
- else
- if $id == idEq
- echo SYMBOL(:==)\n
- else
- if $id == idEqq
- echo SYMBOL(:===)\n
- else
- if $id == idNeq
- echo SYMBOL(:!=)\n
- else
- if $id == idEqTilde
- echo SYMBOL(:=~)\n
- else
- if $id == idNeqTilde
- echo SYMBOL(:!~)\n
- else
- if $id == idAREF
- echo SYMBOL(:[])\n
- else
- if $id == idASET
- echo SYMBOL(:[]=)\n
- else
- printf "SYMBOL(%ld)\n", $id
- end
- end
- end
- end
- end
- end
- end
- end
- end
- end
- end
- end
- end
- end
- end
- end
- end
+ printf "%sSYMBOL%s: ", $color_type, $color_end
+ rp_id $id
else
if ($arg0) == RUBY_Qfalse
echo false\n
@@ -89,77 +43,52 @@ define rp
echo undef\n
else
if (VALUE)($arg0) & RUBY_IMMEDIATE_MASK
- echo immediate\n
+ 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 "T_NONE: "
+ printf "%sT_NONE%s: ", $color_type, $color_end
print (struct RBasic *)($arg0)
else
if ($flags & RUBY_T_MASK) == RUBY_T_NIL
- printf "T_NIL: "
+ printf "%sT_NIL%s: ", $color_type, $color_end
print (struct RBasic *)($arg0)
else
if ($flags & RUBY_T_MASK) == RUBY_T_OBJECT
- printf "T_OBJECT: "
+ printf "%sT_OBJECT%s: ", $color_type, $color_end
print (struct RObject *)($arg0)
else
if ($flags & RUBY_T_MASK) == RUBY_T_CLASS
- printf "T_CLASS%s: ", ($flags & RUBY_FL_SINGLETON) ? "*" : ""
- print (struct RClass *)($arg0)
+ 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 "T_ICLASS: "
- print (struct RClass *)($arg0)
+ printf "%sT_ICLASS%s: ", $color_type, $color_end
+ rp_class $arg0
else
if ($flags & RUBY_T_MASK) == RUBY_T_MODULE
- printf "T_MODULE: "
- print (struct RClass *)($arg0)
+ printf "%sT_MODULE%s: ", $color_type, $color_end
+ rp_class $arg0
else
if ($flags & RUBY_T_MASK) == RUBY_T_FLOAT
- printf "T_FLOAT: %.16g ", (((struct RFloat*)($arg0))->float_value)
+ 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 "T_STRING: "
- 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)
+ 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 "T_REGEXP: "
+ printf "%sT_REGEXP%s: ", $color_type, $color_end
set print address off
output (char *)(($rsflags & RUBY_FL_USER1) ? \
((struct RString*)$regsrc)->as.heap.ptr : \
@@ -183,7 +112,7 @@ define rp
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 "T_ARRAY: len=%ld ", $len
+ printf "%sT_ARRAY%s: len=%ld ", $color_type, $color_end, $len
printf "(embed) "
if ($len == 0)
printf "{(empty)} "
@@ -193,7 +122,7 @@ define rp
end
else
set $len = ((struct RArray*)($arg0))->as.heap.len
- printf "T_ARRAY: len=%ld ", $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
@@ -211,18 +140,18 @@ define rp
print (struct RArray *)($arg0)
else
if ($flags & RUBY_T_MASK) == RUBY_T_FIXNUM
- printf "T_FIXNUM: "
+ printf "%sT_FIXNUM%s: ", $color_type, $color_end
print (struct RBasic *)($arg0)
else
if ($flags & RUBY_T_MASK) == RUBY_T_HASH
- printf "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 "T_STRUCT: len=%ld ", \
+ 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)
@@ -232,7 +161,7 @@ define rp
((struct RStruct *)($arg0))->as.heap.ptr)
else
if ($flags & RUBY_T_MASK) == RUBY_T_BIGNUM
- printf "T_BIGNUM: sign=%d len=%ld ", \
+ 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) : \
@@ -246,59 +175,59 @@ define rp
((struct RBignum*)($arg0))->as.heap.digits)
else
if ($flags & RUBY_T_MASK) == RUBY_T_RATIONAL
- printf "T_RATIONAL: "
+ printf "%sT_RATIONAL%s: ", $color_type, $color_end
print (struct RRational *)($arg0)
else
if ($flags & RUBY_T_MASK) == RUBY_T_COMPLEX
- printf "T_COMPLEX: "
+ printf "%sT_COMPLEX%s: ", $color_type, $color_end
print (struct RComplex *)($arg0)
else
if ($flags & RUBY_T_MASK) == RUBY_T_FILE
- printf "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 "T_TRUE: "
+ printf "%sT_TRUE%s: ", $color_type, $color_end
print (struct RBasic *)($arg0)
else
if ($flags & RUBY_T_MASK) == RUBY_T_FALSE
- printf "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 "T_DATA(%s): ", ((struct RTypedData *)($arg0))->type->wrap_struct_name
+ printf "%sT_DATA%s(%s): ", $color_type, $color_end, ((struct RTypedData *)($arg0))->type->wrap_struct_name
print (struct RTypedData *)($arg0)
else
- printf "T_DATA: "
+ printf "%sT_DATA%s: ", $color_type, $color_end
print (struct RData *)($arg0)
end
else
if ($flags & RUBY_T_MASK) == RUBY_T_MATCH
- printf "T_MATCH: "
+ printf "%sT_MATCH%s: ", $color_type, $color_end
print (struct RMatch *)($arg0)
else
if ($flags & RUBY_T_MASK) == RUBY_T_SYMBOL
- printf "T_SYMBOL: "
+ printf "%sT_SYMBOL%s: ", $color_type, $color_end
print (struct RBasic *)($arg0)
else
if ($flags & RUBY_T_MASK) == RUBY_T_UNDEF
- printf "T_UNDEF: "
+ printf "%sT_UNDEF%s: ", $color_type, $color_end
print (struct RBasic *)($arg0)
else
if ($flags & RUBY_T_MASK) == RUBY_T_NODE
- printf "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 "T_ZOMBIE: "
+ printf "%sT_ZOMBIE%s: ", $color_type, $color_end
print (struct RData *)($arg0)
else
- printf "unknown: "
+ printf "%sunknown%s: ", $color_type, $color_end
print (struct RBasic *)($arg0)
end
end
@@ -337,6 +266,172 @@ 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
@@ -361,257 +456,257 @@ end
# Print members of ruby node.
define nd_head
- printf "u1.node: "
+ printf "%su1.node%s: ", $color_highlite, $color_end
rp ($arg0).u1.node
end
define nd_alen
- printf "u2.argc: "
+ printf "%su2.argc%s: ", $color_highlite, $color_end
p ($arg0).u2.argc
end
define nd_next
- printf "u3.node: "
+ printf "%su3.node%s: ", $color_highlite, $color_end
rp ($arg0).u3.node
end
define nd_cond
- printf "u1.node: "
+ printf "%su1.node%s: ", $color_highlite, $color_end
rp ($arg0).u1.node
end
define nd_body
- printf "u2.node: "
+ printf "%su2.node%s: ", $color_highlite, $color_end
rp ($arg0).u2.node
end
define nd_else
- printf "u3.node: "
+ printf "%su3.node%s: ", $color_highlite, $color_end
rp ($arg0).u3.node
end
define nd_orig
- printf "u3.value: "
+ printf "%su3.value%s: ", $color_highlite, $color_end
rp ($arg0).u3.value
end
define nd_resq
- printf "u2.node: "
+ printf "%su2.node%s: ", $color_highlite, $color_end
rp ($arg0).u2.node
end
define nd_ensr
- printf "u3.node: "
+ printf "%su3.node%s: ", $color_highlite, $color_end
rp ($arg0).u3.node
end
define nd_1st
- printf "u1.node: "
+ printf "%su1.node%s: ", $color_highlite, $color_end
rp ($arg0).u1.node
end
define nd_2nd
- printf "u2.node: "
+ printf "%su2.node%s: ", $color_highlite, $color_end
rp ($arg0).u2.node
end
define nd_stts
- printf "u1.node: "
+ printf "%su1.node%s: ", $color_highlite, $color_end
rp ($arg0).u1.node
end
define nd_entry
- printf "u3.entry: "
+ printf "%su3.entry%s: ", $color_highlite, $color_end
p ($arg0).u3.entry
end
define nd_vid
- printf "u1.id: "
+ printf "%su1.id%s: ", $color_highlite, $color_end
p ($arg0).u1.id
end
define nd_cflag
- printf "u2.id: "
+ printf "%su2.id%s: ", $color_highlite, $color_end
p ($arg0).u2.id
end
define nd_cval
- printf "u3.value: "
+ printf "%su3.value%s: ", $color_highlite, $color_end
rp ($arg0).u3.value
end
define nd_cnt
- printf "u3.cnt: "
+ printf "%su3.cnt%s: ", $color_highlite, $color_end
p ($arg0).u3.cnt
end
define nd_tbl
- printf "u1.tbl: "
+ printf "%su1.tbl%s: ", $color_highlite, $color_end
p ($arg0).u1.tbl
end
define nd_var
- printf "u1.node: "
+ printf "%su1.node%s: ", $color_highlite, $color_end
rp ($arg0).u1.node
end
define nd_ibdy
- printf "u2.node: "
+ printf "%su2.node%s: ", $color_highlite, $color_end
rp ($arg0).u2.node
end
define nd_iter
- printf "u3.node: "
+ printf "%su3.node%s: ", $color_highlite, $color_end
rp ($arg0).u3.node
end
define nd_value
- printf "u2.node: "
+ printf "%su2.node%s: ", $color_highlite, $color_end
rp ($arg0).u2.node
end
define nd_aid
- printf "u3.id: "
+ printf "%su3.id%s: ", $color_highlite, $color_end
p ($arg0).u3.id
end
define nd_lit
- printf "u1.value: "
+ printf "%su1.value%s: ", $color_highlite, $color_end
rp ($arg0).u1.value
end
define nd_frml
- printf "u1.node: "
+ printf "%su1.node%s: ", $color_highlite, $color_end
rp ($arg0).u1.node
end
define nd_rest
- printf "u2.argc: "
+ printf "%su2.argc%s: ", $color_highlite, $color_end
p ($arg0).u2.argc
end
define nd_opt
- printf "u1.node: "
+ printf "%su1.node%s: ", $color_highlite, $color_end
rp ($arg0).u1.node
end
define nd_recv
- printf "u1.node: "
+ printf "%su1.node%s: ", $color_highlite, $color_end
rp ($arg0).u1.node
end
define nd_mid
- printf "u2.id: "
+ printf "%su2.id%s: ", $color_highlite, $color_end
p ($arg0).u2.id
end
define nd_args
- printf "u3.node: "
+ printf "%su3.node%s: ", $color_highlite, $color_end
rp ($arg0).u3.node
end
define nd_noex
- printf "u1.id: "
+ printf "%su1.id%s: ", $color_highlite, $color_end
p ($arg0).u1.id
end
define nd_defn
- printf "u3.node: "
+ printf "%su3.node%s: ", $color_highlite, $color_end
rp ($arg0).u3.node
end
define nd_old
- printf "u1.id: "
+ printf "%su1.id%s: ", $color_highlite, $color_end
p ($arg0).u1.id
end
define nd_new
- printf "u2.id: "
+ printf "%su2.id%s: ", $color_highlite, $color_end
p ($arg0).u2.id
end
define nd_cfnc
- printf "u1.cfunc: "
+ printf "%su1.cfunc%s: ", $color_highlite, $color_end
p ($arg0).u1.cfunc
end
define nd_argc
- printf "u2.argc: "
+ printf "%su2.argc%s: ", $color_highlite, $color_end
p ($arg0).u2.argc
end
define nd_cname
- printf "u1.id: "
+ printf "%su1.id%s: ", $color_highlite, $color_end
p ($arg0).u1.id
end
define nd_super
- printf "u3.node: "
+ printf "%su3.node%s: ", $color_highlite, $color_end
rp ($arg0).u3.node
end
define nd_modl
- printf "u1.id: "
+ printf "%su1.id%s: ", $color_highlite, $color_end
p ($arg0).u1.id
end
define nd_clss
- printf "u1.value: "
+ printf "%su1.value%s: ", $color_highlite, $color_end
rp ($arg0).u1.value
end
define nd_beg
- printf "u1.node: "
+ printf "%su1.node%s: ", $color_highlite, $color_end
rp ($arg0).u1.node
end
define nd_end
- printf "u2.node: "
+ printf "%su2.node%s: ", $color_highlite, $color_end
rp ($arg0).u2.node
end
define nd_state
- printf "u3.state: "
+ printf "%su3.state%s: ", $color_highlite, $color_end
p ($arg0).u3.state
end
define nd_rval
- printf "u2.value: "
+ printf "%su2.value%s: ", $color_highlite, $color_end
rp ($arg0).u2.value
end
define nd_nth
- printf "u2.argc: "
+ printf "%su2.argc%s: ", $color_highlite, $color_end
p ($arg0).u2.argc
end
define nd_tag
- printf "u1.id: "
+ printf "%su1.id%s: ", $color_highlite, $color_end
p ($arg0).u1.id
end
define nd_tval
- printf "u2.value: "
+ printf "%su2.value%s: ", $color_highlite, $color_end
rp ($arg0).u2.value
end
@@ -625,18 +720,18 @@ define rb_numtable_entry
set $rb_numtable_key = 0
set $rb_numtable_rec = 0
if $rb_numtable_tbl->entries_packed
- set $rb_numtable_p = $rb_numtable_tbl->bins
- while $rb_numtable_p && $rb_numtable_p < $rb_numtable_tbl->bins+$rb_numtable_tbl->num_entries
- if (st_data_t)$rb_numtable_p[0] == $rb_numtable_id
- set $rb_numtable_key = (st_data_t)$rb_numtable_p[0]
- set $rb_numtable_rec = (st_data_t)$rb_numtable_p[1]
+ 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 + 2
+ set $rb_numtable_p = $rb_numtable_p + 1
end
end
else
- set $rb_numtable_p = $rb_numtable_tbl->bins[$rb_numtable_id % $rb_numtable_tbl->num_bins]
+ 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
@@ -650,12 +745,8 @@ define rb_numtable_entry
end
define rb_id2name
- rb_numtable_entry global_symbols.id_str (ID)$arg0
- if $rb_numtable_rec
- rp $rb_numtable_rec
- else
- echo undef\n
- end
+ printf "%sID%s: ", $color_type, $color_end
+ rp_id $arg0
end
document rb_id2name
Print the name of id
@@ -684,9 +775,25 @@ document rb_method_entry
end
define rb_classname
- call classname($arg0)
- rb_p $
- print *(struct RClass*)($arg0)
+ # 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
@@ -694,7 +801,7 @@ define rb_backtrace
end
define iseq
- if dummy_gdb_enums.special_consts
+ if ruby_dummy_gdb_enums.special_consts
end
if ($arg0)->type == ISEQ_ELEMENT_NONE
echo [none]\n
@@ -731,8 +838,8 @@ define rb_ps_vm
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->bins[$ps_threads_i * 2]
- set $ps_threads_val = (st_data_t)$ps_threads->bins[$ps_threads_i * 2 + 1]
+ 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
@@ -755,3 +862,20 @@ define rb_ps_thread
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
index 57557c9c2e..9cd98beee1 100644
--- a/.gitignore
+++ b/.gitignore
@@ -2,7 +2,9 @@
*.a
*.bak
*.dSYM
+*.dmyh
*.dylib
+*.elc
*.inc
*.log
*.o
@@ -51,11 +53,10 @@ y.tab.c
/configure
/doc/capi
/enc.mk
-/enc/trans/*.c
/encdb.h
/exts.mk
/goruby
-/id.h
+/id.[ch]
/largefile.h
/lex.c
/libruby*.*
@@ -72,6 +73,7 @@ y.tab.c
/ppack
/prelude.c
/preview
+/probes.h
/rbconfig.rb
/rename2.h
/repack
@@ -80,10 +82,12 @@ y.tab.c
/rubicon
/ruby
/ruby-man.rd.gz
+/sizes.c
/test.rb
/tmp
/transdb.h
/uncommon.mk
+/verconf.h
/web
/yasmdata.rb
@@ -96,17 +100,12 @@ y.tab.c
# /ext/
/ext/extinit.c
-# /ext/dl/
-/ext/dl/*.func
-
# /ext/dl/callback/
-/ext/dl/callback/*.func
/ext/dl/callback/callback-*.c
/ext/dl/callback/callback.c
-# /ext/iconv/
-/ext/iconv/config.charset
-/ext/iconv/iconv.rb
+# /ext/rbconfig/
+/ext/rbconfig/sizeof/sizes.c
# /ext/ripper/
/ext/ripper/eventids1.c
@@ -127,5 +126,10 @@ y.tab.c
/spec/mspec
/spec/rubyspec
+# /tool/
+/tool/config.guess
+/tool/config.sub
+
# /win32/
/win32/*.ico
+/win32/.time
diff --git a/.travis.yml b/.travis.yml
index 286342c1cc..8db00587d6 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -1,8 +1,86 @@
-# no installation...
-before_script: autoconf
-script: "./configure && make all test"
+# 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
index 82725534fa..a009caefea 100644
--- a/BSDL
+++ b/BSDL
@@ -1,4 +1,4 @@
-Copyright (C) 1993-2010 Yukihiro Matsumoto. All rights reserved.
+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
diff --git a/COPYING.ja b/COPYING.ja
index 5b5b91c149..e50d01c8d1 100644
--- a/COPYING.ja
+++ b/COPYING.ja
@@ -1,51 +1,51 @@
-$BK\%W%m%0%i%`$O%U%j!<%=%U%H%&%'%"$G$9!%(B2-clause BSDL
-$B$^$?$O0J2<$K<($9>r7o$GK\%W%m%0%i%`$r:FG[I[$G$-$^$9(B
-2-clause BSDL$B$K$D$$$F$O(BBSDL$B%U%!%$%k$r;2>H$7$F2<$5$$!%(B
+本プログラムã¯ãƒ•リーソフトウェアã§ã™ï¼Ž2-clause BSDL
+ã¾ãŸã¯ä»¥ä¸‹ã«ç¤ºã™æ¡ä»¶ã§æœ¬ãƒ—ログラムをå†é…布ã§ãã¾ã™
+2-clause BSDLã«ã¤ã„ã¦ã¯BSDLファイルをå‚ç…§ã—ã¦ä¸‹ã•ã„.
- 1. $BJ#@=$O@)8B$J$/<+M3$G$9!%(B
+ 1. 複製ã¯åˆ¶é™ãªã自由ã§ã™ï¼Ž
- 2. $B0J2<$N>r7o$N$$$:$l$+$rK~$?$9;~$KK\%W%m%0%i%`$N%=!<%9$r(B
- $B<+M3$KJQ99$G$-$^$9!%(B
+ 2. ä»¥ä¸‹ã®æ¡ä»¶ã®ã„ãšã‚Œã‹ã‚’満ãŸã™æ™‚ã«æœ¬ãƒ—ログラムã®ã‚½ãƒ¼ã‚¹ã‚’
+ 自由ã«å¤‰æ›´ã§ãã¾ã™ï¼Ž
- (a) $B%M%C%H%K%e!<%:$K%]%9%H$7$?$j!$:n<T$KJQ99$rAwIU$9$k(B
- $B$J$I$NJ}K!$G!$JQ99$r8x3+$9$k!%(B
+ (a) ãƒãƒƒãƒˆãƒ‹ãƒ¥ãƒ¼ã‚ºã«ãƒã‚¹ãƒˆã—ãŸã‚Šï¼Œä½œè€…ã«å¤‰æ›´ã‚’é€ä»˜ã™ã‚‹
+ ãªã©ã®æ–¹æ³•ã§ï¼Œå¤‰æ›´ã‚’公開ã™ã‚‹ï¼Ž
- (b) $BJQ99$7$?K\%W%m%0%i%`$r<+J,$N=jB0$9$kAH?%FbIt$@$1$G(B
- $B;H$&!%(B
+ (b) 変更ã—ãŸæœ¬ãƒ—ãƒ­ã‚°ãƒ©ãƒ ã‚’è‡ªåˆ†ã®æ‰€å±žã™ã‚‹çµ„織内部ã ã‘ã§
+ 使ã†ï¼Ž
- (c) $BJQ99E@$rL@<($7$?$&$(!$%=%U%H%&%'%"$NL>A0$rJQ99$9$k!%(B
- $B$=$N%=%U%H%&%'%"$rG[I[$9$k;~$K$OJQ99A0$NK\%W%m%0%i(B
- $B%`$bF1;~$KG[I[$9$k!%$^$?$OJQ99A0$NK\%W%m%0%i%`$N%=!<(B
- $B%9$NF~<jK!$rL@<($9$k!%(B
+ (c) 変更点を明示ã—ãŸã†ãˆï¼Œã‚½ãƒ•トウェアã®åå‰ã‚’変更ã™ã‚‹ï¼Ž
+ ãã®ã‚½ãƒ•トウェアをé…布ã™ã‚‹æ™‚ã«ã¯å¤‰æ›´å‰ã®æœ¬ãƒ—ログラ
+ ãƒ ã‚‚åŒæ™‚ã«é…布ã™ã‚‹ï¼Žã¾ãŸã¯å¤‰æ›´å‰ã®æœ¬ãƒ—ログラムã®ã‚½ãƒ¼
+ スã®å…¥æ‰‹æ³•を明示ã™ã‚‹ï¼Ž
- (d) $B$=$NB>$NJQ99>r7o$r:n<T$H9g0U$9$k!%(B
+ (d) ãã®ä»–ã®å¤‰æ›´æ¡ä»¶ã‚’作者ã¨åˆæ„ã™ã‚‹ï¼Ž
- 3. $B0J2<$N>r7o$N$$$:$l$+$rK~$?$9;~$KK\%W%m%0%i%`$r%3%s%Q%$(B
- $B%k$7$?%*%V%8%'%/%H%3!<%I$d<B9T7A<0$G$bG[I[$G$-$^$9!%(B
+ 3. ä»¥ä¸‹ã®æ¡ä»¶ã®ã„ãšã‚Œã‹ã‚’満ãŸã™æ™‚ã«æœ¬ãƒ—ログラムをコンパイ
+ ルã—ãŸã‚ªãƒ–ジェクトコードや実行形å¼ã§ã‚‚é…布ã§ãã¾ã™ï¼Ž
- (a) $B%P%$%J%j$r<u$1<h$C$??M$,%=!<%9$rF~<j$G$-$k$h$&$K!$(B
- $B%=!<%9$NF~<jK!$rL@<($9$k!%(B
+ (a) ãƒã‚¤ãƒŠãƒªã‚’å—ã‘å–ã£ãŸäººãŒã‚½ãƒ¼ã‚¹ã‚’入手ã§ãるよã†ã«ï¼Œ
+ ソースã®å…¥æ‰‹æ³•を明示ã™ã‚‹ï¼Ž
- (b) $B5!3#2DFI$J%=!<%9%3!<%I$rE:IU$9$k!%(B
+ (b) 機械å¯èª­ãªã‚½ãƒ¼ã‚¹ã‚³ãƒ¼ãƒ‰ã‚’添付ã™ã‚‹ï¼Ž
- (c) $BJQ99$r9T$C$?%P%$%J%j$OL>A0$rJQ99$7$?$&$(!$%*%j%8%J(B
- $B%k$N%=!<%9%3!<%I$NF~<jK!$rL@<($9$k!%(B
+ (c) 変更を行ã£ãŸãƒã‚¤ãƒŠãƒªã¯åå‰ã‚’変更ã—ãŸã†ãˆï¼Œã‚ªãƒªã‚¸ãƒŠ
+ ルã®ã‚½ãƒ¼ã‚¹ã‚³ãƒ¼ãƒ‰ã®å…¥æ‰‹æ³•を明示ã™ã‚‹ï¼Ž
- (d) $B$=$NB>$NG[I[>r7o$r:n<T$H9g0U$9$k!%(B
+ (d) ãã®ä»–ã®é…布æ¡ä»¶ã‚’作者ã¨åˆæ„ã™ã‚‹ï¼Ž
- 4. $BB>$N%W%m%0%i%`$X$N0zMQ$O$$$+$J$kL\E*$G$"$l<+M3$G$9!%$?(B
- $B$@$7!$K\%W%m%0%i%`$K4^$^$l$kB>$N:n<T$K$h$k%3!<%I$O!$$=(B
- $B$l$>$l$N:n<T$N0U8~$K$h$k@)8B$,2C$($i$l$k>l9g$,$"$j$^$9!%(B
+ 4. ä»–ã®ãƒ—ログラムã¸ã®å¼•用ã¯ã„ã‹ãªã‚‹ç›®çš„ã§ã‚れ自由ã§ã™ï¼ŽãŸ
+ ã ã—,本プログラムã«å«ã¾ã‚Œã‚‹ä»–ã®ä½œè€…ã«ã‚ˆã‚‹ã‚³ãƒ¼ãƒ‰ã¯ï¼Œã
+ れãžã‚Œã®ä½œè€…ã®æ„å‘ã«ã‚ˆã‚‹åˆ¶é™ãŒåŠ ãˆã‚‰ã‚Œã‚‹å ´åˆãŒã‚りã¾ã™ï¼Ž
- $B$=$l$i%U%!%$%k$N0lMw$H$=$l$>$l$NG[I[>r7o$J$I$KIU$$$F$O(B
- LEGAL$B%U%!%$%k$r;2>H$7$F$/$@$5$$!%(B
+ ãれらファイルã®ä¸€è¦§ã¨ãれãžã‚Œã®é…布æ¡ä»¶ãªã©ã«ä»˜ã„ã¦ã¯
+ LEGALファイルをå‚ç…§ã—ã¦ãã ã•ã„.
- 5. $BK\%W%m%0%i%`$X$NF~NO$H$J$k%9%/%j%W%H$*$h$S!$K\%W%m%0%i(B
- $B%`$+$i$N=PNO$N8"Mx$OK\%W%m%0%i%`$N:n<T$G$O$J$/!$$=$l$>(B
- $B$l$NF~=PNO$r@8@.$7$??M$KB0$7$^$9!%$^$?!$K\%W%m%0%i%`$K(B
- $BAH$_9~$^$l$k$?$a$N3HD%%i%$%V%i%j$K$D$$$F$bF1MM$G$9!%(B
+ 5. 本プログラムã¸ã®å…¥åŠ›ã¨ãªã‚‹ã‚¹ã‚¯ãƒªãƒ—トãŠã‚ˆã³ï¼Œæœ¬ãƒ—ログラ
+ ムã‹ã‚‰ã®å‡ºåŠ›ã®æ¨©åˆ©ã¯æœ¬ãƒ—ログラムã®ä½œè€…ã§ã¯ãªã,ãれãž
+ れã®å…¥å‡ºåŠ›ã‚’ç”Ÿæˆã—ãŸäººã«å±žã—ã¾ã™ï¼Žã¾ãŸï¼Œæœ¬ãƒ—ログラムã«
+ 組ã¿è¾¼ã¾ã‚Œã‚‹ãŸã‚ã®æ‹¡å¼µãƒ©ã‚¤ãƒ–ラリã«ã¤ã„ã¦ã‚‚åŒæ§˜ã§ã™ï¼Ž
- 6. $BK\%W%m%0%i%`$OL5J]>Z$G$9!%:n<T$OK\%W%m%0%i%`$r%5%]!<%H(B
- $B$9$k0U;V$O$"$j$^$9$,!$%W%m%0%i%`<+?H$N%P%0$"$k$$$OK\%W(B
- $B%m%0%i%`$N<B9T$J$I$+$iH/@8$9$k$$$+$J$kB;32$KBP$7$F$b@U(B
- $BG$$r;}$A$^$;$s!%(B
+ 6. 本プログラムã¯ç„¡ä¿è¨¼ã§ã™ï¼Žä½œè€…ã¯æœ¬ãƒ—ログラムをサãƒãƒ¼ãƒˆ
+ ã™ã‚‹æ„å¿—ã¯ã‚りã¾ã™ãŒï¼Œãƒ—ログラム自身ã®ãƒã‚°ã‚ã‚‹ã„ã¯æœ¬ãƒ—
+ ログラムã®å®Ÿè¡Œãªã©ã‹ã‚‰ç™ºç”Ÿã™ã‚‹ã„ã‹ãªã‚‹æå®³ã«å¯¾ã—ã¦ã‚‚責
+ 任をæŒã¡ã¾ã›ã‚“.
diff --git a/ChangeLog b/ChangeLog
index 9f215a2172..2540307c53 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,16877 +1,16177 @@
-Wed Feb 6 17:39:19 2013 Eric Hodel <drbrain@segment7.net>
+Sat Nov 23 03:44:03 2013 Eric Hodel <drbrain@segment7.net>
- * lib/rdoc: Import RDoc 3.9.5.
+ * lib/rubygems: Update to RubyGems master dcce4ff. Important changes
+ in this commit:
-Wed Feb 6 14:27:25 2013 Shugo Maeda <shugo@ruby-lang.org>
+ Remove automatic detection of gem dependencies files. This prevents a
+ security hole as described in [ruby-core:58490]
- * ext/socket/raddrinfo.c (rsock_unix_sockaddr_len): return
- sizeof(sa_familiy_t) if path is empty. see "Autobind Feature" in
- unix(7) for details.
+ Fixed bugs for installing git gems.
- * ext/socket/lib/socket.rb (unix_socket_abstract_name?): treat an
- empty path as an abstract name.
-
- * test/socket/test_unix.rb: related test.
-
- * 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.
-
- * 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.
-
- * 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.
-
- * 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.
-
- * 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
-
- * 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.
-
-Wed Feb 6 14:20:12 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 Feb 6 14:19:07 2013 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 Feb 6 14:14:38 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * file.c (realpath_rec): prevent link from GC while link_names refers
- the content.
-
-Wed Feb 6 14:13:25 2013 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 Feb 6 14:05:09 2013 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 Jan 15 16:30:29 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 16:25:35 2013 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.
-
-Tue Jan 15 16:23:30 2013 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]
-
-Tue Jan 15 16:23:30 2013 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 Jan 15 16:13:47 2013 Kenta Murata <mrkn@mrkn.jp>
-
- * ext/bigdecimal/bigdecimal.c (BigDecimal_to_s): use CRuby style.
-
-Tue Jan 15 16:13:47 2013 Kenta Murata <mrkn@mrkn.jp>
-
- * ext/bigdecimal/bigdecimal.c: use `RB_TYPE_P(x, t)` instead of
- `TYPE(x) == t`.
-
-Tue Jan 15 16:13:47 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]
+ * test/rubygems: ditto.
- * ext/bigdecimal/bigdecimal.c (BigDecimal_mult): ditto.
+Fri Nov 22 22:30:00 2013 Kenta Murata <mrkn@mrkn.jp>
- * ext/bigdecimal/bigdecimal.c (BigDecimal_divide): ditto.
+ * ext/bigdecimal/bigdecimal.c (BigDecimal_power):
+ Round the result value only if the precision is given.
- * ext/bigdecimal/bigdecimal.c (BigDecimal_DoDivmod): ditto.
+Fri Nov 22 17:20:50 2013 NARUSE, Yui <naruse@ruby-lang.org>
- * ext/bigdecimal/bigdecimal.c (BigDecimal_divremain): ditto.
+ * transcode.c (str_transcode0): don't scrub invalid chars if
+ str.encode doesn't have explicit invalid: :replace.
+ workaround fix for see #8995
- * test/bigdecimal/test_bigdecimal.rb: add tests for the above fixes.
+Fri Nov 22 17:11:26 2013 Narihiro Nakamura <authornari@gmail.com>
-Tue Jan 15 16:03:30 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * include/ruby/intern.h, internal.h: Expose rb_gc_count().
- * 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 Nov 22 17:07:00 2013 Kenta Murata <mrkn@mrkn.jp>
-Tue Jan 15 15:55:09 2013 Eric Hodel <drbrain@segment7.net>
+ * ext/bigdecimal/bigdecimal.gemspec: version 1.2.2.
- * object.c (Init_Object): Added RDoc location pointers for
- Kernel#methods, Kernel#protected_methods, Kernel#private_methods and
- Kernel#public_methods. [Bug #6666]
+Fri Nov 22 17:04:00 2013 Kenta Murata <mrkn@mrkn.jp>
-Fri Jan 11 17:12:44 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * ext/bigdecimal/bigdecimal.c (BigDecimal_data_type):
+ Use RUBY_TYPED_FREE_IMMEDIATELY only if it is available.
- * 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]
+Fri Nov 22 16:49:00 2013 Kenta Murata <mrkn@mrkn.jp>
-Fri Jan 11 17:11:26 2013 NARUSE, Yui <naruse@ruby-lang.org>
+ * ext/bigdecimal/bigdecimal.c (BigDecimal_power): Round the result value.
+ [Bug #8818] [ruby-core:56802]
- * lib/mkmf.rb: add dummy clean-static target to prevent errors for the
- case real clean-static target doesn't exist.
+ * test/bigdecimal/test_bigdecimal.rb: Add a test for the above fix.
-Fri Jan 11 17:02:59 2013 Koichi Sasada <ko1@atdot.net>
+Fri Nov 22 16:25:43 2013 Koichi Sasada <ko1@atdot.net>
- * vm_exec.h (GENTRY): GENTRY should be pointer size.
- A patch by yoshidam (Yoshida Masato) [Bug #7332].
+ * gc.c (heap_set_increment): accept minimum additional page number.
-Fri Jan 11 16:57:31 2013 NAKAMURA Usaku <usa@ruby-lang.org>
+ * gc.c (gc_after_sweep): allocate pages to allocate at least
+ RUBY_HEAP_MIN_SLOTS.
+ [Bug #9137]
- * vm_trace.c (rb_threadptr_exec_event_hooks): added a parameter to pop
- a frame before JUMP_TAG() if exception occurred. This change fix bug
- of Ruby 1.9. [ruby-core:51128] [ruby-trunk - Bug #7624]
+Fri Nov 22 16:19:52 2013 Narihiro Nakamura <authornari@gmail.com>
- * vm_core.h (EXEC_EVENT_HOOK_AND_POP_FRAME): add to use
- `rb_threadptr_exec_event_hooks()' with the pop flag.
+ * include/ruby/intern.h (rb_gc_set_params): Deprecate
+ rb_gc_set_params because it's only used in ruby internal.
- * vm.c (vm_exec): use EXEC_EVENT_HOOK_AND_POP_FRAME() while exception
- handling. While exception hadnling, if an exception is raised in
- hooks, need to pop current frame and raise this raised exception by
- hook.
+ * internal.h (ruby_gc_set_params): Declare rb_gc_set_params's
+ alias function.
- * bootstraptest/test_flow.rb: add a test.
+ * gc.c: ditto.
-Mon Jan 7 15:50:25 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * ruby.c: use ruby_gc_set_params.
- * 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]
+Fri Nov 22 14:55:00 2013 Kenta Murata <mrkn@mrkn.jp>
-Tue Dec 25 23:35:09 2012 NARUSE, Yui <naruse@ruby-lang.org>
+ * ext/bigdecimal/bigdecimal.c (BigMath_s_exp): Insert rb_thread_check_ints.
- * lib/mkmf.rb: fix for if config["libdir"] is nil.
+Fri Nov 22 14:35:00 2013 Kenta Murata <mrkn@mrkn.jp>
-Tue Dec 25 20:40:47 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+ * ext/bigdecimal/bigdecimal.c (BigMath_s_exp): Fix the inserting points
+ of RB_GC_GUARDs.
- * bignum.c, include/ruby/intern.h (rb_big_eql): exported.
+Fri Nov 22 14:31:00 2013 Kenta Murata <mrkn@mrkn.jp>
- * 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]
+ * ext/bigdecimal/bigdecimal.c: Fix indentation.
-Tue Dec 25 09:54:31 2012 Hiroshi Shirosaki <h.shirosaki@gmail.com>
+Fri Nov 22 14:03:00 2013 NARUSE, Yui <naruse@ruby-lang.org>
- * gc.c (obj_id_to_ref): add a macro to treat Bignum object id.
- This follows the change r38493.
+ * ext/nkf: merge nkf 2.1.3 2a2f2c5.
- * gc.c (id2ref): fix for working fine with Bignum object id on x64
- Windows.
- * gc.c (wmap_finalize): ditto.
+Fri Nov 22 12:43:52 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Sat Dec 22 00:33:28 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+ * util.c (ruby_strtod): ignore too long fraction part, which does not
+ affect the result.
- * 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 Nov 22 12:17:14 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Sat Dec 22 00:33:28 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+ * ext/openssl/lib/openssl/buffering.rb (OpenSSL::Buffering#initialize):
+ initialize of a module should pass arguments to super.
- * gc.c (nonspecial_obj_id): VALUE is not compatible with Fixnum on
- LLP64 platform, such as 64bit Windows.
- reporeted by Heesob Park at [ruby-core:50255] [Bug #7454], and the
- fix is suggested by akr.
+Fri Nov 22 12:02:58 2013 Tanaka Akira <akr@fsij.org>
-Fri Dec 21 16:03:54 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+ * test/ruby/test_settracefunc.rb: Ignore events from other threads.
- * test/ruby/test_argf.rb (TestArgf#test_chars): since marshal data is
- binary, shouldn't pass via text mode. use base64 encoded data.
+Fri Nov 22 10:35:57 2013 Koichi Sasada <ko1@atdot.net>
-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
+ * vm.c (ruby_vm_destruct): do not use ruby_xfree() after freeing
+ objspace.
+ * gc.c (ruby_mimfree): added. It is similar to ruby_mimmalloc().
-Thu Dec 20 18:46:17 2012 Naohisa Goto <ngotogenome@gmail.com>
+ * internal.h: ditto.
- * 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.
+Fri Nov 22 09:42:35 2013 Zachary Scott <e@zzak.io>
-Thu Dec 20 18:46:17 2012 Naohisa Goto <ngotogenome@gmail.com>
+ * test/digest/test_digest.rb: Reverse order of assert_equal
+ Reported by @splattael
- * 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.
+Fri Nov 22 09:03:16 2013 NARUSE, Yui <naruse@ruby-lang.org>
-Thu Dec 20 18:46:17 2012 Naohisa Goto <ngotogenome@gmail.com>
+ * gc.c: fix build failure on FreeBSD introduced by r43763.
+ malloc_usable_size() is defined by malloc_np.h on FreeBSD.
- * 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 shoud not be ignored.
- [ruby-core:50562] [Bug #7514]
+ * configure.in: check malloc.h and malloc_np.h.
- * ext/dl/lib/dl/import.rb (DL::Importer#bind_function): should respect
- abi and name when Fiddle is used.
+Fri Nov 22 08:27:13 2013 Eric Hodel <drbrain@segment7.net>
- * test/dl/test_func.rb (test_name_with_block): test for "name" method
- with giving a block.
+ * lib/rubygems: Update to RubyGems master 50a8210. Important changes
+ in this commit:
-Thu Dec 20 18:43:00 2012 Naohisa Goto <ngotogenome@gmail.com>
+ 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/fiddle/extconf.rb, ext/fiddle/function.c
- (Fiddle::Function::STDCALL): FFI_STDCALL is not a macro, but an
- enumeration. [ruby-core:50398] [Bug #7483]
+ * test/rubygems: ditto.
-Thu Dec 20 18:40:25 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Thu Nov 21 22:33:59 2013 Koichi Sasada <ko1@atdot.net>
- * thread.c (exec_event_hooks): exceptions in event hooks should not
- propagate outside.
+ * gc.c: RGENGC_CHECK_MODE should be 0.
-Thu Dec 20 18:37:45 2012 NARUSE, Yui <naruse@ruby-lang.org>
+Thu Nov 21 21:40:00 2013 Kenta Murata <mrkn@mrkn.jp>
- * 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]
+ * ext/bigdecimal/bigdecimal.c (VpAlloc): Fix the expr to adjust the size
+ of the digit array.
-Thu Dec 20 18:37:45 2012 NARUSE, Yui <naruse@ruby-lang.org>
+Thu Nov 21 21:36:00 2013 Kenta Murata <mrkn@mrkn.jp>
- * string.c (rb_str_crypt): crypt(3) may return NULL.
- Latest glibc (2.16?) crypt(3) actually returns NULL. [Bug #7312]
+ * ext/bigdecimal/bigdecimal.c (BigDecimal_sqrt): Fix the precision of
+ the result BigDecimal of sqrt.
+ [Bug #5266] [ruby-dev:44450]
-Thu Dec 20 18:36:19 2012 Naohisa Goto <ngotogenome@gmail.com>
+ * test/bigdecimal/test_bigdecimal.rb: add tests for the above changes.
- * 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]
+Thu Nov 21 18:49:02 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * test/dl/test_func.rb (test_bind): test for the above
+ * gc.c (vm_xrealloc, vm_xfree): use malloc_usable_size() to obtain old
+ size if available.
-Thu Dec 20 18:35:36 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+Thu Nov 21 18:47:29 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * gc.h (SET_MACHINE_STACK_END): add volatile for preventing
- harmful optimization. [ruby-dev:46665] [Bug #7468]
+ * lib/delegate.rb (SimpleDelegator#__getobj__): target object must be set.
-Thu Dec 20 18:34:38 2012 Hiroshi Shirosaki <h.shirosaki@gmail.com>
+ * lib/delegate.rb (DelegateClass#__getobj__): ditto.
- * 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]
+Thu Nov 21 18:28:42 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Wed Dec 19 21:24:40 2012 NARUSE, Yui <naruse@ruby-lang.org>
+ * lib/tempfile.rb (Tempfile#initialize): use class method to get rid
+ of warnings when $VERBOSE.
- * io.c (argf_each_codepoint): add missing ARGF#codepoints [Bug #7438]
+Thu Nov 21 17:43:29 2013 Koichi Sasada <ko1@atdot.net>
-Wed Dec 19 21:20:23 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * gc.c: rename initial_xxx variables to gc_params.xxx.
+ They are not only used initial values.
- * file.c (file_expand_path): use wcscasecmp().
+ Chikanaga-san: Congratulations on RubyPrize!
-Wed Dec 19 21:15:29 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Thu Nov 21 17:16:00 2013 Koichi Sasada <ko1@atdot.net>
- * parse.y (parser_yylex): fix false usage of local variable, it cannot
- appear in fname state [ruby-core:49659] [Bug #7408]
+ * 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)
-Wed Dec 19 21:14:28 2012 Narihiro Nakamura <authornari@gmail.com>
+ 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)
- * gc.c: return true or false. Patch by Dirkjan Bussink. [Bug #6821]
+ * gc.c (initial_malloc_limit): rename to initial_malloc_limit_min.
- * test/ruby/test_gc.rb: add test-case for this bug.
+Thu Nov 21 16:51:34 2013 Zachary Scott <e@zzak.io>
-Wed Dec 19 21:12:49 2012 Shugo Maeda <shugo@ruby-lang.org>
+ * ext/digest/bubblebabble/bubblebabble.c: Teach RDoc digest/bubblebabble
- * 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]
+Thu Nov 21 16:50:16 2013 Zachary Scott <e@zzak.io>
- * test/ruby/test_marshal.rb: related test.
+ * test/digest/test_digest.rb: Add more tests for digest/bubblebabble
-Tue Dec 11 19:19:33 2012 Luis Lavena <luislavena@gmail.com>
+Thu Nov 21 16:32:47 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * 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]
+ * lib/delegate.rb (Delegator#method_missing): try private methods defined in
+ Kernel after the target. [Fixes GH-449]
-Sat Nov 17 21:45:12 Luis Lavena <luislavena@gmail.com>
+Thu Nov 21 16:25:08 2013 Akinori MUSHA <knu@iDaemons.org>
- * win32/file.c (replace_to_long_name): skip expansion for all wildcard
- characters.
- [ruby-core:49451] [Bug #7374]
+ * test/uri/test_generic.rb (URI#test_merge): Test uri + URI(path)
+ in addition to uri + path.
- * test/ruby/test_file_exhaustive.rb: add more assertions to test.
+Thu Nov 21 15:36:08 2013 Zachary Scott <e@zzak.io>
-Tue Dec 11 19:19:33 2012 Luis Lavena <luislavena@gmail.com>
+ * ext/openssl/lib/openssl/buffering.rb: [DOC] Fix HEREDOC comment for
+ OpenSSL::Buffering which breaks overview because of RDoc bug
- * win32/file.c (replace_to_long_name): skip automatic path expansion
- when wildcard character is used. [ruby-core:49451] [Bug #7374]
+Thu Nov 21 14:46:57 2013 NAKAMURA Usaku <usa@ruby-lang.org>
- * test/ruby/test_file_exhaustive.rb: add a test for above.
+ * 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.
-Tue Dec 11 19:18:12 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+ * signal.c (check_stack_overflow, CHECK_STACK_OVERFLOW): now defined on
+ Windows, too.
- * win32/mkexports.rb (each_export): skip garbages generated by VS2012's
- nmake.
- reported and patched by Yoshida Masato at [Bug #7333] [ruby-dev:46484]
+ * thread_win32.c (ruby_stack_overflowed_p): ditto.
-Tue Dec 11 19:15:51 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Thu Nov 21 14:18:24 2013 Zachary Scott <e@zzak.io>
- * parse.y (parser_here_document): flush string content between new
- line and :string_embexpr. [ruby-core:48703] [Bug #7255]
+ * 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
-Tue Dec 11 17:53:55 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Thu Nov 21 14:06:02 2013 Koichi Sasada <ko1@atdot.net>
- * 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]
+ * gc.c (gc_marks_check): do not dump all refs.
- * vm_insnhelper.c (lep_svar_get, lep_svar_set, vm_getspecial): store
- flip-flop states in an array instead of a hash.
+ * gc.c (allrefs_dump_i): fix output format.
- * iseq.c (set_relation): main iseq also can has local scope.
+Thu Nov 21 13:43:07 2013 Koichi Sasada <ko1@atdot.net>
-Tue Dec 11 17:52:30 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * 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.
- * include/ruby/backward/rubysig.h: fix visibility. [Bug #6607]
+ [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.
-Tue Dec 11 17:49:45 2012 Koichi Sasada <ko1@atdot.net>
+ [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.)
- * vm.c (rb_vm_make_env_object): make Proc object if Env is possible
- to point block. [ruby-core:41038] [ruby-trunk - Bug #5634]
+ [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".
- * vm.c (rb_vm_make_proc): No need to make Proc object here.
+ * 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.
- * bootstraptest/test_proc.rb: add tests.
+Thu Nov 21 13:40:20 2013 Zachary Scott <e@zzak.io>
-Tue Dec 11 17:47:01 2012 Narihiro Nakamura <authornari@gmail.com>
+ * lib/observer.rb: [DOC] Clarify default observer method.
+ By @edward [Fixes GH-450] https://github.com/ruby/ruby/pull/450
- * 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]
+Thu Nov 21 13:32:53 2013 Zachary Scott <e@zzak.io>
-Thu Nov 15 15:17:11 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * 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
- * gc.c (free_method_entry_i): method entry may be in
- unlinked_method_entry_list. [ruby-core:43383][Bug #6171]
+Thu Nov 21 10:45:22 2013 Zachary Scott <e@zzak.io>
-Wed Nov 14 20:20:46 2012 Naohisa Goto <ngotogenome@gmail.com>
+ * ext/openssl/lib/openssl/buffering.rb: Remove unused arguments from
+ OpenSSL::Buffering.new [Fixes GH-445]
- * ruby_atomic.h: renamed from atomic.h to avoid header file name
- conflict on Solaris 10. [ruby-dev:46414] [Bug #7287]
+Thu Nov 21 10:30:47 2013 Zachary Scott <e@zzak.io>
- * gc.c, signal.c, vm_core.h, common.mk: reflect the rename from
- atomic.h to ruby_atomic.h.
+ * test/digest/test_digest.rb: Add test for Digest::SHA256.bubblebabble
-Tue Nov 13 18:13:10 2012 Narihiro Nakamura <authornari@gmail.com>
+Wed Nov 20 20:54:01 2013 Masaya Tarui <tarui@ruby-lang.org>
- * 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]
+ * tool/instruction.rb : fix typo.
- * configure.in (GC_MARK_STACKFRAME_WORD): removed. It's used by
- checking stack overflow of marking.
+Wed Nov 20 19:45:22 2013 Tanaka Akira <akr@fsij.org>
- * win32/Makefile.sub (GC_MARK_STACKFRAME_WORD): ditto.
+ * random.c (rand_init): Make it possible to specify arbitrary array
+ for init_genrand().
- * gc.c (free_stack_chunks): it is used only when per-VM object space
- is enabled.
+Wed Nov 20 17:34:13 2013 Koichi Sasada <ko1@atdot.net>
- * gc.c (rb_objspace_call_finalizer): mark self-referencing finalizers
- before run finalizers, to fix SEGV from btest on 32bit.
+ * 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()).
- * gc.c (gc_mark_stacked_objects): extract from gc_marks().
+Wed Nov 20 11:46:38 2013 NARUSE, Yui <naruse@ruby-lang.org>
- * gc.c (rb_objspace_call_finalizer): call gc_mark_stacked_objects
- at suitable point.
+ * 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.
- * 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]
+Wed Nov 20 01:39:02 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Sat Nov 10 01:25:52 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * lib/rdoc/constant.rb (RDoc::Constant#documented?): workaround for
+ NoMethodError when the original of alias is not found.
- * file.c (append_fspath): no need to do encoding trick here.
+Tue Nov 19 23:38:49 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Sat Nov 10 00:37:02 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+ * configure.in (--with-os-version-style): option to transform target
+ OS version string.
- * siphash.h: check configure macros before include newer headers.
+Tue Nov 19 21:27:33 2013 Tanaka Akira <akr@fsij.org>
-Sat Nov 10 00:37:02 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * test/net/http/utils.rb (spawn_server): Specify zero for port to
+ avoid reusing an allocated port.
- * siphash.c (sip_init_state): use union to suppress warnings by gcc
- 4.7.
+ * test/net/http/test_http.rb: Don't specify port here.
-Sat Nov 10 00:37:02 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * test/net/http/test_https.rb: Ditto.
- * random.c (rb_memhash): use siphash.
+Tue Nov 19 18:52:10 2013 Koichi Sasada <ko1@atdot.net>
-Fri Nov 9 16:17:09 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * gc.c (heap_is_swept_object): use heap_page::before_sweep flag.
- * file.c (append_fspath): revert a part of r37562.
+Tue Nov 19 18:49:32 2013 Koichi Sasada <ko1@atdot.net>
- * file.c (rb_file_expand_path_internal): ditto.
+ * gc.c (rb_objspace_reachable_objects_from_root): do major marking.
- * file.c (rb_file_expand_path_internal): ignore the encoding of the
- given path name and use filesystem encoding, except when the result
- is 8bit range and the filesystem encoding is US-ASCII.
- [ruby-dev:39393] [Bug #2154]
+Tue Nov 19 18:45:40 2013 Koichi Sasada <ko1@atdot.net>
-Fri Nov 9 16:15:50 2012 CHIKANAGA Tomoyuki <nagachika@ruby-lang.org>
+ * 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.
- * test/csv/test_features.rb: add require for Tempfile.
- * test/csv/test_serialization.rb: ditto.
+ * string.c (rb_fstring): use rb_gc_resurrect.
-Fri Nov 9 13:47:45 2012 Luis Lavena <luislavena@gmail.com>
+ * internal.h: add decl.
- * 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]
+Tue Nov 19 09:47:02 2013 Eric Hodel <drbrain@segment7.net>
-Fri Nov 9 13:16:16 2012 Kenta Murata <mrkn@mrkn.jp>
+ * lib/rdoc: Update to RDoc master a1195ce. Changes include:
- * bignum.c (bigmul0): enable big_mul_toom3.
- [ruby-core:48552] [Bug #7242]
+ Improved accessibility of the main sidebar navigation.
- * bignum.c (bigmul1_toom3): fix incorrect calculation.
- the patch is made by Heesob Park.
- [ruby-core:48552] [Bug #7242]
+ Fixed handling of regexp options in HTML source highlighting.
-Fri Nov 9 13:16:16 2012 Kenta Murata <mrkn@mrkn.jp>
+ * test/rdoc: ditto.
- * bignum.c (bigmul0): disable big_mul_toom3 temporalily.
- [ruby-core:48552] [Bug #7242]
+Tue Nov 19 09:33:52 2013 Eric Hodel <drbrain@segment7.net>
- * test/ruby/test_bignum.rb (test_mul_large_numbers):
- add a test for bigmul1_toom3 suggested in [Bug #7242].
+ * lib/rubygems: Update to RubyGems master 6a3d9f9. Changes include:
-Thu Nov 8 17:37:54 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ Compatibly renamed Gem::DependencyResolver to Gem::Resolver.
- * file.c (append_fspath): filesystem encoding is prior to the encoding
- of argument.
+ Added support for git gems in gem.deps.rb and Gemfile.
- * file.c (rb_file_expand_path_internal, EXPAND_PATH_BUFFER): ignore
- the encoding of the given path name, use filesystem encoding always
- instead. [ruby-dev:39393] [Bug #2154]
+ Fixed resolver bugs.
- * test/ruby/test_file_exhaustive.rb: removed 2.0 spec tests.
+ * test/rubygems: ditto.
-Thu Nov 8 17:33:53 2012 Luis Lavena <luislavena@gmail.com>
+ * lib/rubygems/LICENSE.txt: Updated to license from RubyGems trunk.
+ [ruby-trunk - Bug #9086]
- * ext/zlib/extconf.rb: Recognize zlibwapi as linking library.
- Patch by Daniel Berger.
+ * lib/rubygems/commands/which_command.rb: RubyGems now indicates
+ failure when any file is missing. [ruby-trunk - Bug #9004]
- [ruby-core:44979] [Feature #6421]
+ * 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 Nov 8 16:17:54 2012 NAKAMURA Usaku <usa@ruby-lang.org>
- * test/ruby/test_dir_m17n.rb: remove a garbage.
+Tue Nov 19 07:21:56 2013 Tanaka Akira <akr@fsij.org>
-Thu Nov 8 15:22:09 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+ * configure.in (LOCALTIME_OVERFLOW_PROBLEM): Define it for cross
+ compiling.
+ [ruby-core:58391] [Bug #9119] Reported by Luis Lavena.
+ Analyzed by Heesob Park.
- * test/ruby/test_dir_m17n.rb: sorry, typo.
+Tue Nov 19 05:55:05 2013 Eric Hodel <drbrain@segment7.net>
-Thu Nov 8 14:50:02 2012 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+ * lib/rdoc/rubygems_hook.rb: Remove debugging puts committed by
+ accident.
- * test/win32ole/test_win32ole_variant.rb: setting WIN32OLE.locale
- to pass some assertion. Thanks to Hiroshi Shirosaki.
- [ruby-core:46873][Bug #6814]
+Mon Nov 18 22:47:54 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Thu Nov 8 14:46:17 2012 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+ * 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]
- * 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]
+ * vm_eval.c (rb_catch_obj): now th->tag points previous tag until
+ TH_EXEC_TAG().
+ * thread_pthread.c (ruby_init_stack): set stack_start properly by
+ get_main_stack() if possible.
-Thu Nov 8 14:43:17 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+Mon Nov 18 22:45:49 2013 Nobuyoshi Nakada <nobu@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.
+ * eval_jump.c (rb_exec_end_proc): unlink and free procs data before
+ calling for each procs. [Bug #9110]
-Thu Nov 8 14:43:17 2012 Luis Lavena <luislavena@gmail.com>
+Sun Nov 17 06:33:32 2013 Shota Fukumori <her@sorah.jp>
- * 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]
+ * configure.in: Use $LIBS for base of $SOLIBS, also in darwin.
+ By this fix, environment that libgmp is located in $LIBS can build
+ ruby.
- * test/ruby/test_dir_m17n.rb (test_filename_extutf8): use filesystem
- encoding when reading entries and comparing.
+Sun Nov 17 01:56:32 2013 Tanaka Akira <akr@fsij.org>
- * test/ruby/test_dir_m17n.rb (test_filename_utf8_raw_name): removed.
+ * thread_pthread.c (rb_thread_create_timer_thread): Show error
+ message instead of error number.
+ (thread_create_core): Ditto.
- * test/ruby/test_dir_m17n.rb (test_filename_utf8_raw_jp_name): split test.
+ * cont.c (fiber_machine_stack_alloc): Ditto.
-Thu Nov 8 14:16:53 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Sat Nov 16 18:28:08 2013 Kouhei Sutou <kou@cozmixng.org>
- * lib/mkmf.rb (MakeMakefile#timestamp_file): use .-. instead of !, a
- special character of NMAKE and BSD make. [Bug #7265]
+ * lib/rexml/parsers/ultralightparser.rb
+ (REXML::Parsers::UltraLightParser#parse): Fix wrong :start_doctype
+ position.
+ [Bug #9061] [ruby-dev:47778]
+ Patch by Ippei Obayashi. Thanks!!!
-Thu Nov 8 14:16:53 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * test/rexml/parser/test_ultra_light.rb: Add a test for this case.
- * lib/mkmf.rb (MakeMakefile#timestamp_file): use ! instead of %, a GNU
- make special character.
+Sat Nov 16 02:13:56 2013 Masaya Tarui <tarui@ruby-lang.org>
-Thu Nov 8 14:16:53 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * cont.c : Introduce ensure rollback mechanism. Please see below.
- * lib/mkmf.rb (create_makefile): use timestamp for destination
- directories to make them before making or copying files there.
- [ruby-dev:46067] [Bug #6904]
+ * internal.h (ruby_register_rollback_func_for_ensure): catch up above change.
+ Add rollback mechanism API.
-Thu Nov 8 14:13:53 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * vm_core.h (typedef struct rb_vm_struct): catch up above change.
+ Introduce ensure-rollback relation table.
- * 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]
+ * vm_core.h (typedef struct rb_thread_struct): catch up above change.
+ Introduce ensure stack.
-Thu Nov 8 14:11:49 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * eval.c (rb_ensure): catch up above change.
+ Introduce ensure stack.
- * vm.c (rb_vm_jump_tag_but_local_jump): pass through thrown objects.
- [ruby-dev:46234] [Bug #7185]
+ * hash.c : New function for rollback ensure, and register it to
+ ensure-rollback relation table. [ruby-dev:47803] [Bug #9105]
- * 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.
+ 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.
-Thu Nov 8 14:09:18 2012 Kenta Murata <mrkn@mrkn.jp>
+ Current API is unstable, and only internal use.
- * 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]
+ 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.
-Thu Nov 8 14:05:31 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+Sat Nov 16 00:18:36 2013 Masaki Matsushita <glass.saga@gmail.com>
- * win32/win32.c (has_redirection): should use shell (cmd.exe) when
- the commandline containts '&'.
- reported by Roger Pack at [ruby-core:47912] [Bug #7143], and
- patched by Heesob Park at [ruby-core:47931].
+ * eval_jump.c (rb_exec_end_proc): fix double free or corruption error
+ when reentering by callcc. [ruby-core:58329] [Bug #9110]
-Fri Oct 26 17:22:18 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+ * test/ruby/test_beginendblock.rb: test for above.
- * file.c (append_fspath): need to set the encoding to result always.
+Fri Nov 15 01:06:04 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Fri Oct 26 11:03:46 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * 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]
- * 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.
+ * test/objspace/test_objspace.rb (TestObjSpace#dump_my_heap_please):
+ remove temporary output file.
- * 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]
+Thu Nov 14 23:39:00 2013 CHIKANAGA Tomoyuki <nagachika@ruby-lang.org>
- * dir.c (check_dirname, ruby_glob0): ditto.
+ * ext/bigdecimal/lib/bigdecimal/util.rb: [DOC] remove example of
+ Rational#to_d without argument. [Bug #8958]
- * ext/pathname/pathname.c (path_sub_ext): ditto.
+Thu Nov 14 20:24:15 2013 Naohisa Goto <ngotogenome@gmail.com>
-Fri Oct 26 11:03:46 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+ * ruby_atomic.h (ATOMIC_SIZE_CAS): fix compile error on Solaris
+ since r43460.
- * util.c, include/ruby/util.h (ruby_add_suffix): remove the function.
- [Bug #5153] [ruby-core:38736]
+Thu Nov 14 19:53:00 2013 Tanaka Akira <akr@fsij.org>
- * io.c (argf_next_argv): remove the call of above function.
+ * 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.
- * ext/-test-/add_suffix, test/-ext-/test_add_suffix.rb: remove the test
- extension module because this is only for testsing ruby_add_suffix().
+Thu Nov 14 11:33:47 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * LEGAL: remove the mention about a part of util.c, because now we
- removed the part.
+ * hash.c (foreach_safe_i, hash_foreach_iter): deal with error detected
+ by ST_CHECK.
- * io.c (argf_next_argv): now the new filename is not guranteed to
- use, so should check the return value of rename(2).
+ * st.c (st_foreach_check): call with non-error argument in normal case.
- * test/ruby/test_argf.rb (TestArgf#test_inplace_rename_impossible):
- now we expect same result with other platforms on no_safe_rename
- platforms (=Windows).
+Thu Nov 14 02:37:14 2013 Zachary Scott <e@zzak.io>
-Thu Oct 25 18:16:25 2012 NARUSE, Yui <naruse@ruby-lang.org>
+ * ext/thread/thread.c: [DOC] This patch accomplishes the following:
- * 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
+ - 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 Oct 25 17:55:01 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+Thu Nov 14 01:11:54 2013 Zachary Scott <e@zzak.io>
- * test/etc/test_etc.rb (TestEtc#test_getpwuid): `s' is never set to nil.
+ * ext/bigdecimal/lib/bigdecimal/util.rb: [DOC] +precision+ is required
-Thu Oct 25 16:59:17 2012 Luis Lavena <luislavena@gmail.com>
+Wed Nov 13 19:21:36 2013 Zachary Scott <e@zzak.io>
- * test/ruby/test_file_exhaustive.rb: fix test introduced in r36811 for
- posix environments where HOME is not defined. [ruby-core:47322]
+ * ext/bigdecimal/lib/bigdecimal/util.rb: [DOC] Document the required
+ +precision+ argument for Rational#to_d [Bug #8958]
-Thu Oct 25 16:59:17 2012 Luis Lavena <luislavena@gmail.com>
+Wed Nov 13 19:02:05 2013 Zachary Scott <e@zzak.io>
- * configure.in (mingw): add shlwapi to the list of dependency
- libs for Windows.
- * win32/Makefile.sub (EXTSOLIBS): ditto.
+ * 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.
- * internal.h: declare internal functions rb_w32_init_file,
- rb_file_expand_path_internal and rb_file_expand_path_fast.
+ Patched by @stomar [Bug #9027]
- * file.c (Init_File): invoke Windows initialization rb_w32_init_file
+Wed Nov 13 18:32:12 2013 Zachary Scott <e@zzak.io>
- * win32/file.c (rb_file_load_path_internal): new function.
- Windows-specific implementation that replaces file_expand_path.
- [Bug #6836][ruby-core:46996]
+ * ext/openssl/ossl_config.c: [DOC] Document the following:
- * win32/file.c (rb_w32_init_file): new function. Initialize codepage
- cache for faster conversion encodings lookup.
+ - OpenSSL::ConfigError
+ - OpenSSL::Config::DEFAULT_CONFIG_FILE
- * file.c (file_expand_path): rename to rb_file_expand_path_internal.
- Conditionally exclude from Windows.
+ Patched by @vbatts via GH-436
+ https://github.com/ruby/ruby/pull/436
- * file.c (rb_file_expand_path_fast): new function. delegates to
- rb_file_expand_path_internal without performing a hit to the
- filesystem.
+Wed Nov 13 18:03:00 2013 Zachary Scott <e@zzak.io>
- * 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.
+ * 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.
- * load.c (rb_get_expanded_load_path): use rb_file_expand_path_fast.
- * load.c (rb_feature_provided): ditto.
+ Based on a patch by @vbatts via GH-436
+ https://github.com/ruby/ruby/pull/436
- * file.c (rb_file_expand_path): use rb_file_expand_path_internal with
- path expansion.
- * file.c (rb_file_absolute_path): ditto.
+Wed Nov 13 17:19:36 2013 Zachary Scott <e@zzak.io>
- * test/ruby/test_file_exhaustive.rb: new tests to exercise
- rb_file_expand_path_internal implementation and compliance with
- existing behaviors.
+ * ext/openssl/lib/openssl/config.rb: In #parse use +string+ for +str+
-Thu Oct 25 16:59:17 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+Wed Nov 13 17:09:45 2013 Zachary Scott <e@zzak.io>
- * win32/file.c (INVALID_FILE_ATTRIBUTES): define for old SDK.
+ * ext/openssl/lib/openssl/*.rb: [DOC] Document the following:
-Thu Oct 25 16:59:17 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ - Integer#to_bn
+ - OpenSSL::Buffering module
+ - Deprecated OpenSSL::Digest::Digest compatibility class
+ - OpenSSL::Config
- * win32/makedirs.bat: new command to make intermediate
- directories, and not to report any errors if the directory
- already exists.
+ These changes were based on a patch by @vbatts via GH-436
+ https://github.com/ruby/ruby/pull/436
- * win32/Makefile.sub (MAKEDIRS): enable command extensions.
+Wed Nov 13 10:55:43 2013 Zachary Scott <e@zzak.io>
-Thu Oct 25 16:59:17 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+ * doc/regexp.rdoc: [DOC] Fix typo in Special global variables section.
+ Reported by Alex Johnson on ruby-doc.org
- * win32/Makefile.sub (MAKEDIRS): use mkdir of cmd.exe instead of ruby.
- [Bug #6103] [ruby-core:43012]
+Wed Nov 13 10:43:19 2013 Zachary Scott <e@zzak.io>
- * win32/README.win32: added a notice about command extension of cmd.exe.
+ * hash.c: [DOC] Adds an example for Hash#store
-Thu Oct 25 16:59:17 2012 Hiroshi Shirosaki <h.shirosaki@gmail.com>
+Wed Nov 13 09:03:40 2013 Zachary Scott <e@zzak.io>
- * Makefile.in (PLATFORM_DIR): add a variable for `win32` directory.
- * Makefile.in (clean-platform): add new target.
- It cleans `win32` directory.
+ * 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
- * 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.
+Tue Nov 12 10:15:14 2013 Eric Hodel <drbrain@segment7.net>
- * configure.in: move win32.o into `win32` directory and add
- win32/file.o to MISSING.
+ * test/rubygems/insure_session.rb: Remove unused test file.
- * 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.
+Tue Nov 12 09:16:24 2013 Eric Hodel <drbrain@segment7.net>
- * 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.
+ * lib/rubygems: Update to RubyGems master b9213d7. Changes include:
- * 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.
+ Fixed tests on Windows (I hope) by forcing platform for
+ platform-dependent tests.
- Patch created with Luis Lavena.
- [ruby-core:42480] [Feature #5999]
+ Fixed File.exists? warnings.
-Fri Oct 19 13:28:29 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ Improved testing infrastructure.
- * configure.in (opt-dir): allow multiple directories separated by
- $PATH_SEPARATOR as well as dir_config in mkmf.rb. [ruby-core:47868]
- [Bug #7120]
+ * test/rubygems: ditto.
-Tue Oct 16 11:18:06 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * test/rdoc/test_rdoc_rubygems_hook.rb: Switch to util_spec like
+ RubyGems.
- * lib/mkmf.rb (dir_config, init_mkmf): use configured libdir value as
- default library path. [ruby-core:43726] [Bug #6207]
+Mon Nov 11 18:31:12 2013 Aman Gupta <ruby@tmm1.net>
-Tue Oct 16 10:56:55 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * 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.
- * file.c (rb_find_file_ext_safe, rb_find_file_safe): default to
- US-ASCII for encdb and transdb.
+Mon Nov 11 04:36:14 2013 Eric Hodel <drbrain@segment7.net>
- * load.c (search_required): keep encoding of feature name. set
- loading path to filesystem encoding. [Bug #6377][ruby-core:44750]
+ * 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.
- * ruby.c (add_modules, require_libraries): assume default external
- encoding as well as ARGV.
+Mon Nov 11 03:15:56 2013 Koichi Sasada <ko1@atdot.net>
-Tue Oct 16 10:47:43 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * 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.
- * random.c (random_s_rand): ensure default PRNG is re-initialized
- after fork. patched by Eric Wong. [ruby-core:41209][Bug #5661]
+Mon Nov 11 02:51:17 2013 Eric Hodel <drbrain@segment7.net>
-Tue Oct 16 10:21:23 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * lib/rubygems: Update to RubyGems master 4bdc4f2. Important changes
+ in this commit:
- * ruby.c (rb_f_sub, rb_f_gsub): pass the given block.
- [ruby-core:47967] [Bug #7157]
+ RubyGems now chooses the test server port reliably. Patch by akr.
-Tue Oct 16 09:47:47 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+ Partial implementation of bundler's Gemfile format.
- * 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.
+ Refactorings to improve the new resolver.
-Tue Oct 16 09:47:47 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+ Fixes bugs in the resolver.
- * test/ruby/test_regexp.rb
- (TextRegexp#test_raw_hyphen_and_tk_char_type_after_range): ignoring
- warnings are already set in setup method.
+ * test/rubygems: Tests for the above.
-Sun Oct 14 01:21:42 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+Mon Nov 11 01:02:06 2013 Zachary Scott <e@zzak.io>
- * regparse.c (parse_char_class): should match with a hyphen after a
- range in a character class.
+ * 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
- * test/ruby/test_regexp.rb (TestRegexp#test_char_class): fixed wrong
- test.
+Sun Nov 10 23:47:05 2013 Kazuki Tsujimoto <kazuki@callcc.net>
- * test/ruby/test_regexp.rb (TestRegexp#check): now can accept the
- error message.
+ * gc.c (rb_gcdebug_print_obj_condition): catch up recent changes
+ to compile on GC_DEBUG.
- * test/ruby/test_regexp.rb
- (TextRegexp#test_raw_hyphen_and_tk_char_type_after_range): renamed
- because the previous name was wrong.
+Sun Nov 10 22:16:19 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * test/ruby/test_regexp.rb
- (TextRegexp#test_raw_hyphen_and_tk_char_type_after_range): added
- more test pattern.
+ * error.c (exc_cause): captured previous exception.
-Sat Oct 13 01:41:38 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+ * eval.c (make_exception): capture previous exception automagically.
+ [Feature #8257]
- * regparse.c (parse_char_class): also need to check the type of token
- after raw hyphen in regexp class, because the charcter code area
- is union'ed with the property of TK_CHAR_TYPE.
- reported by Bushi Zhang at [ruby-core:47115] [Backport #6853].
+Sun Nov 10 08:37:20 2013 Zachary Scott <e@zzak.io>
-Sat Oct 13 01:39:46 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+ * thread.c: [DOC] Remove duplicate reference
- * test/ruby/test_regexp.rb
- (TestRegexp#test_raw_hyphen_and_type_char_after_range): added new
- test. ref [ruby-core:47115] [Backport #6853]
+Sun Nov 10 08:09:29 2013 Zachary Scott <e@zzak.io>
-Fri Oct 12 18:19:35 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * lib/drb/drb.rb: [DOC] promote better windows-safe filename regular
+ expression in DRb Logger example. Reported by Chris Pheonix
+ [Bug #9074]
- * file.c (rb_get_path_check): path name must not contain NUL bytes.
+Sun Nov 10 08:03:05 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Fri Oct 12 17:51:43 2012 Shugo Maeda <shugo@ruby-lang.org>
+ * gc.c (rb_define_finalizer, rb_undefine_finalizer): rename and export
+ finalizer functions.
- * error.c (exc_to_s, name_err_to_s, name_err_mesg_to_str): do not
- taint messages.
+Sun Nov 10 07:41:22 2013 Zachary Scott <e@zzak.io>
-Fri Oct 12 16:11:23 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * lib/weakref.rb: [DOC] fix typos by @xaviershay [Fixes GH-439]
+ https://github.com/ruby/ruby/pull/439
- * 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]
+Sun Nov 10 06:14:39 2013 Charlie Somerville <charliesome@ruby-lang.org>
- * ruby.c (ruby_init_loadpath_safe): ditto.
+ * compile.c (iseq_compile_each): emit opt_str_freeze if the #freeze
+ method is called on a static string literal with no arguments.
-Fri Oct 12 13:56:01 2012 Ayumu AIZAWA <ayumu.aizawa@gmail.com>
+ * defs/id.def (firstline): add freeze so idFreeze is available
- * test/rexml/test_encoding.rb:
- Add require 'require 'rexml/document'
+ * 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
-Fri Oct 12 13:36:32 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+ * string.c (Init_String): define String#freeze
- * numeric.c (flodivmod): must through the same pass if HAVE_FMOD or not.
- this is a bugfix of r35013.
+ * vm.c (vm_init_redefined_flag): define BOP_FREEZE on String class as
+ a basic operation
-Fri Oct 12 13:28:37 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+ * vm_insnhelper.h: ditto
- * io.c (rb_cloexec_fcntl_dupfd): get rid of compile error on windows.
- reported by Donovan Lampa at [ruby-core:43152] [Backport #6127],
- based on a patch by Hiroshi Shirosaki at [ruby-core:47917].
+ [Feature #8992] [ruby-core:57705]
-Fri Oct 12 00:30:17 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+Sun Nov 10 01:34:14 2013 Koichi Sasada <ko1@atdot.net>
- * 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.
+ * 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.
-Fri Oct 12 00:30:17 2012 NARUSE, Yui <naruse@ruby-lang.org>
+Sun Nov 10 00:39:26 2013 Koichi Sasada <ko1@atdot.net>
- * 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.
+ * benchmark/gc/gcbench.rb: output version description and GC::OPTS.
-Tue Sep 25 09:30:36 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+Sun Nov 10 00:36:42 2013 Nobuyoshi Nakada <nobu@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.
+ * gc.c (should_be_callable): allow private call since rb_eval_cmd
+ calls even private methods.
-Mon Sep 24 16:34:07 2012 Hiroshi Shirosaki <h.shirosaki@gmail.com>
+Sun Nov 10 00:33:17 2013 Zachary Scott <e@zzak.io>
- * 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]
+ * lib/racc/rdoc/grammar.en.rdoc: [DOC] fix typo by Tsuyoshi Sawada
+ [Bug #9077]
-Mon Sep 24 10:38:55 2012 Luis Lavena <luislavena@gmail.com>
+Sat Nov 9 22:35:35 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * 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]
+ * 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].
-Mon Sep 24 10:37:56 2012 NARUSE, Yui <naruse@ruby-lang.org>
+Sat Nov 9 20:56:12 2013 Narihiro Nakamura <authornari@gmail.com>
- * 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]
+ * ext/objspace/object_tracing.c: use declarations in internal.h.
-Fri Sep 21 19:53:38 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+ * ext/objspace/objspace.c: ditto
- * 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)
+Sat Nov 9 20:32:59 2013 Tanaka Akira <akr@fsij.org>
-Fri Sep 21 18:45:20 2012 Luis Lavena <luislavena@gmail.com>
+ * 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.
- * include/ruby/win32.h: undef stat to silence mingw-w64 stat
- redefinition warnings (GCC 4.6.3).
+Sat Nov 9 15:00:16 2013 Zachary Scott <e@zzak.io>
-Fri Sep 21 17:54:54 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+ * io.c: [DOC] ARGF.gets may return nil [Bug #9029] patch by znz
- * configure.in: add -Wall always.
+Sat Nov 9 14:54:52 2013 Zachary Scott <e@zzak.io>
-Thu Sep 20 10:23:37 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+ * lib/rss/*: [DOC] document various constants @steveklabnik [Bug #8812]
- * thread_pthread.c (native_cond_initialize): destroy condattr
- after using it. Patch by Stanislav Sedov. Thank you.
- [Bug #7041] [ruby-core:47619]
+Sat Nov 9 14:50:09 2013 Zachary Scott <e@zzak.io>
-Sun Sep 9 23:01:43 2012 Tanaka Akira <akr@fsij.org>
+ * lib/rss/rss.rb: [DOC] document Time#w3cdtf by @steveklabnik
+ [Bug #8821]
- * ext/zlib/extconf.rb: detect z_crc_t type which will be defined
- since zlib-1.2.7.
+Sat Nov 9 14:29:04 2013 Zachary Scott <e@zzak.io>
- * ext/zlib/zlib.c (rb_zlib_crc_table): use z_crc_t if available.
+ * ext/dl/cfunc.c: [DOC] fix typo in example [Bug #8944]
+ Patched by Heesob Park
-Sun Sep 9 02:44:21 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+Sat Nov 9 13:59:58 2013 Zachary Scott <e@zzak.io>
- * ext/zlib/extconf.rb: Use an exception instaed of bare puts.
+ * lib/test/unit/assertions.rb: [DOC] better example for assert_send()
+ Patch by Andrew Grimm [Bug #8975]
-Sun Sep 9 02:44:21 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+Sat Nov 9 12:45:00 2013 Charlie Somerville <charliesome@ruby-lang.org>
- * ext/psych/extconf.rb: Use an exception instaed of bare abort.
+ * 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.
-Sun Sep 9 02:44:21 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+ * insns.def: ditto
+ * vm_core.h: ditto
+ * vm_insnhelper.c: ditto
- * ext/fiddle/extconf.rb: Use an exception instaed of bare abort.
+Sat Nov 9 12:31:00 2013 Charlie Somerville <charliesome@ruby-lang.org>
-Sun Sep 9 02:44:21 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+ * 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.
- * ext/readline/extconf.rb: Use an exception instead of bare exit.
+ * 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
-Sun Sep 9 02:34:39 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+Sat Nov 9 09:22:29 2013 Masaya Tarui <tarui@ruby-lang.org>
- * 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.
+ * gc.c (gc_page_sweep, rgengc_rememberset_mark): Refactoring.
+ Get bitmaps directly.
-Sun Sep 9 02:30:20 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+Sat Nov 9 09:16:36 2013 Masaya Tarui <tarui@ruby-lang.org>
- * thread.c (rb_mutex_lock): stop multiple threads use
- pthread_cond_timedwait() concurrently. [Bug #6278] [ruby-core:44275]
+ * gc.c (RVALUE_PROMOTE_INFANT): Refactoring. Remove duplicated nonsense
+ code.
-Thu Aug 30 09:24:43 2012 NARUSE, Yui <naruse@ruby-lang.org>
+Sat Nov 9 09:04:48 2013 Masaya Tarui <tarui@ruby-lang.org>
- * lib/uri/ftp.rb (URI::FTP#initialize): raise InvalidURIError if "//"
- is not present [ruby-core:47344] [Bug #6945]
+ * gc.c (gc_marks_test): Bugfix. Fix a struct member name for build
+ with RGENGC_CHECK_MODE.
-Tue Aug 28 00:40:14 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+Sat Nov 9 08:58:23 2013 Masaya Tarui <tarui@ruby-lang.org>
- * test/webrick/test_cgi.rb (TestWEBrickCGI#start_cgi_server): there are
- no guarantee of existance of RbConfig::CONFIG['LIBPATHENV'].
- it only exists in Unix-like environments.
+ * 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.
- * test/webrick/test_filehandler.rb
- (WEBrick::TestFileHandler#test_script_disclosure): ditto.
+Sat Nov 9 07:41:41 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Thu Aug 23 12:08:25 2012 Hiroshi Shirosaki <h.shirosaki@gmail.com>
+ * internal.h (rb_vm_backtrace_object, rb_gc_count): make prototype
+ declarations, not old-K&R style.
- * 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.
+Sat Nov 9 06:11:14 2013 vo.x (Vit Ondruch) <vondruch@redhat.com>
- * win32/win32.c (check_valid_dir): for performance, check the path
- by FindFirstFileW only if the path contains "...".
+ * 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].
- * 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]
+Sat Nov 9 01:59:18 2013 Aman Gupta <ruby@tmm1.net>
-Thu Aug 23 11:19:51 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * 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.
- * thread_pthread.c (ruby_init_stack): STACK_GROW_DIR_DETECTION is
- necessary on platforms with unknown stack direction. [Bug #6761]
+Sat Nov 9 00:26:50 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Thu Aug 23 11:19:51 2012 NARUSE, Yui <naruse@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].
- * thread_pthread.c (get_stack): Linux is the only OS which includes
- the size of guard page into the stack size.
+Fri Nov 8 18:35:31 2013 Masaki Matsushita <glass.saga@gmail.com>
-Thu Aug 23 11:19:51 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * lib/open3.rb: receive arguments as keyword arguments.
- * gc.h (IS_STACK_DIR_UPPER): utility macro.
+Fri Nov 8 13:19:26 2013 Masaki Matsushita <glass.saga@gmail.com>
- * thread_pthread.c (get_stack): seems stack size does not include
- guard size on Mac OS X.
+ * io.c (rb_io_open_with_args): use RARRAY_CONST_PTR().
- * thread_pthread.c (ruby_init_stack): adjust stack size for offset of
- addr from the bottom.
+ * io.c (rb_scan_open_args): use const qualifier for above.
-Thu Aug 23 11:19:51 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * io.c (rb_open_file): ditto.
- * thread_pthread.c (ruby_init_stack): use stack info if possible.
+ * io.c (rb_io_open_with_args): ditto.
-Mon Aug 20 17:11:01 2012 NARUSE, Yui <naruse@ruby-lang.org>
+Fri Nov 8 11:35:06 2013 Masaki Matsushita <glass.saga@gmail.com>
- * 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.
+ * dir.c, pack.c, ruby.c, struct.c, vm_eval.c: use RARRAY_CONST_PTR().
-Thu Aug 9 22:48:58 2012 NARUSE, Yui <naruse@ruby-lang.org>
+Fri Nov 8 10:58:02 2013 Masaki Matsushita <glass.saga@gmail.com>
- * 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]
+ * compile.c (iseq_build_from_ary_exception): use RARRAY_CONST_PTR().
-Tue Jul 31 10:36:12 2012 Aaron Patterson <aaron@tenderlovemaking.com>
+ * compile.c (iseq_build_from_ary_body): ditto.
- * ext/psych/lib/psych.rb: updated to released version.
+Fri Nov 8 10:49:34 2013 Masaki Matsushita <glass.saga@gmail.com>
- * ext/psych/psych.gemspec: ditto
+ * enumerator.c (append_method): use RARRAY_CONST_PTR().
-Thu Jul 19 09:33:46 2012 Aaron Patterson <aaron@tenderlovemaking.com>
+ * enumerator.c (lazy_init_iterator): ditto.
- * ext/psych/emitter.c (initialize): allow a configuration object to be
- passed to the constructor so that mutation isn't required after
- instantiation.
+Fri Nov 8 02:44:29 2013 Koichi Sasada <ko1@atdot.net>
- * ext/psych/lib/psych/handler.rb: add configuration object
+ * 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]
- * ext/psych/lib/psych/visitors/emitter.rb: use configuration object if
- extra configuration is present.
+ This workaround introduces possibility to set malloc_limit as
+ wrong value (*1). However, this may be rare case. So I commit it.
-Tue Jul 17 03:56:34 2012 Aaron Patterson <aaron@tenderlovemaking.com>
+ *1: Without rest_sweep() here, gc_rest_sweep() can decrease
+ malloc_increase due to ruby_sized_xfree().
- * 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
+Fri Nov 8 02:50:25 2013 Zachary Scott <e@zzak.io>
-Sat Jun 16 01:27:14 2012 Aaron Patterson <aaron@tenderlovemaking.com>
+ * lib/securerandom.rb: [DOC] specify arguments passed to ::random_bytes
+ By @chastell [Fixes GH-412] https://github.com/ruby/ruby/pull/412
- * ext/psych/lib/psych.rb: bumping psych to 1.3.3
- * ext/psych/psych.gemspec: ditto
+Fri Nov 8 02:43:01 2013 Zachary Scott <e@zzak.io>
-Fri May 18 15:53:05 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+ * ext/objspace/object_tracing.c: [DOC] trace_object_allocations_stop
+ By @srawlins [Fixes GH-421] https://github.com/ruby/ruby/pull/421
- * ext/psych/extconf.rb: Use an exception instaed of bare abort.
+Fri Nov 8 02:34:20 2013 Zachary Scott <e@zzak.io>
-Fri May 18 01:28:21 2012 Aaron Patterson <aaron@tenderlovemaking.com>
+ * 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
- * ext/psych/parser.c (transcode_string): fix encoding index names.
- Thanks markizko for reporting.
+Fri Nov 8 02:14:37 2013 Zachary Scott <e@zzak.io>
-Wed May 16 05:11:29 2012 Aaron Patterson <aaron@tenderlovemaking.com>
+ * array.c: [DOC] Add note about negative indices in Array overview
+ By @ckaenzig [Fixes GH-427] https://github.com/ruby/ruby/pull/427
- * ext/psych/lib/psych/visitors/to_ruby.rb: fix a bug with string
- subclass dumping and loading.
+Fri Nov 8 02:09:12 2013 Zachary Scott <e@zzak.io>
- * test/psych/test_array.rb: pertinent tests
+ * lib/csv.rb: [DOC] Fix typo in CSV.parse_line by @funky-bibimbap
+ [Fixes GH-430] https://github.com/ruby/ruby/pull/430
- * test/psych/test_string.rb: ditto
+Fri Nov 8 01:01:54 2013 Zachary Scott <e@zzak.io>
-Wed May 16 01:31:21 2012 Aaron Patterson <aaron@tenderlovemaking.com>
+ * golf_prelude.rb: syntax formatting for whitespace [Fixes GH-425]
+ Patch by @edward https://github.com/ruby/ruby/pull/425
- * ext/psych/lib/psych/visitors/to_ruby.rb: convert omap tagged maps to
- Psych::Omap objects rather than hashes. [Bug #6425]
+Thu Nov 7 19:36:09 2013 Koichi Sasada <ko1@atdot.net>
- * test/psych/test_omap.rb: pertinent test.
+ * gc.c: modify malloc_limit strategy.
-Wed May 16 01:15:45 2012 Aaron Patterson <aaron@tenderlovemaking.com>
+ * fix default values:
+ GC_MALLOC_LIMIT_GROWTH_FACTOR
+ GC_MALLOC_LIMIT: 8MB -> 16MB
+ GC_MALLOC_LIMIT_MAX: 384MB -> 32MB
- * ext/psych/lib/psych/visitors/yaml_tree.rb: keep a reference to
- custom coders so that GC does not impact dumped yaml reference ids.
+ * 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.
-Mon Apr 30 04:43:53 2012 Aaron Patterson <aaron@tenderlovemaking.com>
+Thu Nov 7 11:06:05 2013 Masaki Matsushita <glass.saga@gmail.com>
- * ext/psych/lib/psych/json/yaml_events.rb: implicit styles should not
- be changeable for JSON events.
+ * array.c (rb_ary_shuffle_bang): use RARRAY_PTR_USE() without WB
+ because there are not new relations.
-Sun Jul 29 04:32:31 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Thu Nov 7 10:34:12 2013 Masaki Matsushita <glass.saga@gmail.com>
- * configure.in (ruby_pc): make configurable. [Bug #6051]
+ * array.c (rb_ary_sample): use rb_ary_dup().
-Sun Jul 29 04:32:06 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Thu Nov 7 09:39:41 2013 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]
+ * 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]
-Sun Jul 29 04:31:01 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+Wed Nov 6 21:30:55 2013 Masaya Tarui <tarui@ruby-lang.org>
- * bignum.c: Added #include <strings.h> for ffs(). Patch by Perry
- Smith. Thank you. [Bug #6748]
+ * gc.c (gc_before_sweep): Change algorithm of malloc_limit to
+ conservative for closing to memory consumption of ruby 2.0.
-Sat Jul 28 04:04:01 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+ * gc.c (GC_MALLOC_LIMIT, GC_MALLOC_LIMIT_GROWTH_FACTOR):
+ Adjust parameters for new algorithm.
- * include/ruby/intern.h (rb_num_zerodiv): Added NORETURN.
- Patched by Xi Wang. [Bug #6736]
+Wed Nov 6 21:16:51 2013 Masaki Matsushita <glass.saga@gmail.com>
-Wed Jul 4 19:36:17 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+ * array.c (rb_ary_shift_m): use RARRAY_PTR_USE() without WB because
+ there are not new relations.
- * 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)
+Wed Nov 6 21:05:20 2013 Masaki Matsushita <glass.saga@gmail.com>
-Tue Jul 3 19:37:52 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * array.c (rb_ary_reverse): use RARRAY_PTR_USE().
- * file.c (rmext): no extension to strip if empty string.
+Wed Nov 6 19:30:44 2013 Masaya Tarui <tarui@ruby-lang.org>
- * proc.c (rb_vm_rewrite_dfp_in_errinfo): Fix `unexpected return'
- occurs when a proc is called in ensure. [Backport #6460]
+ * common.mk (help): add texts about gcbench.
-Tue Jul 3 11:44:23 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Wed Nov 6 16:32:32 2013 Martin Duerst <duerst@it.aoyama.ac.jp>
- * 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.
+ * lib/open3.rb: tweaked grammar in comments
- * 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]
+Wed Nov 6 11:46:36 2013 Masaki Matsushita <glass.saga@gmail.com>
- * dir.c (check_dirname, ruby_glob0): ditto.
+ * array.c (rb_ary_sample): use RARRAY_AREF() and RARRAY_PTR_USE()
+ instead of RARRAY_PTR().
- * ext/pathname/pathname.c (path_sub_ext): ditto.
+Wed Nov 6 10:37:07 2013 Masaki Matsushita <glass.saga@gmail.com>
-Tue Jul 3 11:43:46 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * array.c (rb_ary_and): defer hash creation and some refactoring.
- * dir.c (dir_chdir, check_dirname): get rid of optimization-out.
+Wed Nov 6 09:14:31 2013 Koichi Sasada <ko1@atdot.net>
-Thu Jun 28 17:57:49 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+ * benchmark/bm_vm1_gc_short_lived.rb: added.
+ These GC benchmarks do not reflect practical applications.
+ They are only for tuning.
- * win32/win32.c (is_socket, is_console): add prototypes to fix compile
- problem with gcc introduced at r32549.
+ * benchmark/bm_vm1_gc_short_with_complex_long.rb: added.
-Wed Jun 27 08:31:50 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * benchmark/bm_vm1_gc_short_with_long.rb: added.
- * insns.def (splatarray): make new array if flag is set.
+ * benchmark/bm_vm1_gc_short_with_symbol.rb: added.
- * compile.c (iseq_compile_each): make new array with
- splat. [ruby-core:21901][Feature #1125]
+ * benchmark/bm_vm1_gc_wb_ary.rb: added.
-Wed Jun 27 04:23:26 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * benchmark/bm_vm1_gc_wb_obj.rb: added.
- * 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]
+ * benchmark/bm_vm_thread_queue.rb: added.
+ This benchmark is added to know how fast C version of thread.so.
-Wed Jun 27 04:20:41 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Wed Nov 6 09:13:32 2013 Koichi Sasada <ko1@atdot.net>
- * bignum.c (rb_big_pow): estimate result bit size more precisely.
- [ruby-core:30735][Feature #3429]
+ * gc.c: define RGENGC_ESTIMATE_OLDSPACE == 0 if USE_RGENGC is 0.
-Tue Jun 26 20:36:53 2012 Tanaka Akira <akr@fsij.org>
+Wed Nov 6 07:13:18 2013 Koichi Sasada <ko1@atdot.net>
- * 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]
+ * gc.c (Init_GC): add GC::OPTS to show options.
-Tue Jun 26 20:35:59 2012 Eric Hodel <drbrain@segment7.net>
+Wed Nov 6 07:12:17 2013 Koichi Sasada <ko1@atdot.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]
+ * benchmark/gc/gcbench.rb: add some options to make quiet.
-Thu Jun 21 13:42:57 2012 NARUSE, Yui <naruse@ruby-lang.org>
+Wed Nov 6 04:14:25 2013 Aaron Patterson <aaron@tenderlovemaking.com>
- * 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.
+ * 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
-Mon Jun 11 19:56:22 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+Tue Nov 5 21:21:47 2013 Tanaka Akira <akr@fsij.org>
- * test/webrick/test_cgi.rb (class TestWEBrickCGI): respect
- RbConfig::CONFIG["LIBPATHENV"]. [Bug #5135] [ruby-core:38653]
- * test/webrick/test_filehandler.rb (class WEBrick): ditto.
+ * test/ruby/test_thread.rb (test_thread_join_in_trap):
+ Run the test in a different process.
-Tue Jun 5 14:03:53 2012 Akinori MUSHA <knu@iDaemons.org>
+Tue Nov 5 20:14:32 2013 Masaya Tarui <tarui@ruby-lang.org>
- * lib/ipaddr.rb: Inhibit zero-filled octets in an IPv4 address in
- all platforms. [ruby-dev:45671]
+ * gc.c (is_live_object): A hidden object may be a live object.
+ [ruby-dev:47788] [Bug #9072]
- * 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.
+Tue Nov 5 13:37:19 2013 Koichi Sasada <ko1@atdot.net>
- * lib/ipaddr.rb: Stop exposing IPSocket.valid*? methods which were
- only usable on non-IPv6-ready platforms.
+ * 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.
-Sat Jun 2 18:49:39 2012 NARUSE, Yui <naruse@ruby-lang.org>
+ 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'.
- * 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]
+ To implement this feature, move memsize_of() function from
+ ext/objspace/objspace.c and expose rb_obj_memsize_of().
-Wed May 30 17:19:56 2012 Eric Hodel <drbrain@segment7.net>
+ 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.
- * ext/zlib/zlib.c (do_inflate): Inflate more data if buffered data
- exists. Allows Zlib::Inflate#set_dictionary to work.
- [ruby-trunk - Bug #5929]
+ The macro RGENGC_ESTIMATE_OLDSPACE enables/disables this feature,
+ and turned off as default.
-Mon May 28 11:40:19 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ We need to compare 3gen GC and this feature carefully.
+ (it is possible to enable both feature)
+ We need a help to compare them.
- * io.c (rb_io_extract_modeenc): fail only if conflicting
- text/binary modes given explicitly. [ruby-dev:45268][Bug #6055]
+ * internal.h: expose rb_obj_memsize_of().
-Fri May 25 17:18:06 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * ext/objspace/objspace.c: use rb_obj_memsize_of() function.
- * 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]
+ * cont.c (fiber_memsize): fix to check NULL.
-Fri May 25 10:40:31 2012 Hiroshi Shirosaki <h.shirosaki@gmail.com>
+ * variable.c (autoload_memsize): ditto.
- * include/ruby/win32.h (FD_SET): change function to macro.
- To avoid buffer overflow when smaller FD_SETSISE is used in ext
- libraries.
+ * vm.c (vm_memsize): ditto.
- * win32/win32.c (rb_w32_fdset): this function is not used anymore.
- But we leave this for compatibility.
+Tue Nov 5 04:03:07 2013 Koichi Sasada <ko1@atdot.net>
- * win32/win32.c (rb_w32_select_with_thread): fix SEGV when smaller
- FD_SETSISE is used in ext libraries. Dereference of fd_set pointer
- causes SEGV.
+ * gc.c (GC_MALLOC_LIMIT_MAX): fix default value 512MB -> 384MB.
+ 512MB is huge.
- * 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.
+Tue Nov 5 03:31:23 2013 Koichi Sasada <ko1@atdot.net>
- [ruby-core:44588] [Bug #6352]
+ * gc.c: add 3gen GC patch, but disabled as default.
-Fri May 25 10:38:06 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ 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.
- * io.c (io_strip_bom): check EOF. [Bug #6487][ruby-core:45203]
+ 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.
-Fri May 25 10:36:38 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ 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.
- * 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]
+ To solve this problem, generational GC with more generations
+ technique is known. This patch implements three generations gen GC.
-Mon May 21 16:24:40 2012 Akinori MUSHA <knu@iDaemons.org>
+ 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.
- * ext/syslog/syslog.c (mSyslog_inspect): Use rb_sprintf().
+ Representation of generations:
+ * Infant: !FL_PROMOTED and !oldgen_bitmap [00]
+ * Young : FL_PROMOTED and !oldgen_bitmap [10]
+ * Old : FL_PROMOTED and oldgen_bitmap [11]
- * ext/syslog/syslog.c (mSyslog_inspect): Make sure self is a
- module before calling rb_class2name().
+ 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.
-Sat May 19 14:42:37 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+ To evaluate this feature on more applications, I commit this patch.
+ Reports are very welcome.
- * test/drb/drbtest.rb ({DRbCore,DRbAry}#teardown}: cannot pass SIGTERM
- to another process on Windows, so use SIGINT instead.
+ This patch includes some refactoring (renaming names, etc).
-Sat May 19 14:42:20 2012 Tanaka Akira <akr@fsij.org>
+ * include/ruby/ruby.h: catch up 3gen GC.
- * 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]
+ * .gdbinit: fix to show a prompt "[PROMOTED]" for promoted objects.
-Sat May 19 14:41:45 2012 Tanaka Akira <akr@fsij.org>
+Tue Nov 5 00:05:51 2013 Koichi Sasada <ko1@atdot.net>
- * test/drb/drbtest.rb: rescue Errno::ESRCH for Process.kill.
- reported by NARUSE, Yui. [ruby-dev:45551]
+ * node.h: catch up comments for last commit.
-Sat May 19 14:41:09 2012 Tanaka Akira <akr@fsij.org>
+Tue Nov 5 00:02:00 2013 Koichi Sasada <ko1@atdot.net>
- * lib/drb/extservm.rb (DRb::ExtServManager): don't use /bin/sh to
- invoke service subprocess. mark detach threads for clean up.
+ * include/ruby/ruby.h: rename FL_OLDGEN to FL_PROMOTED.
+ This flag represents that "this object is promoted at least once."
- * test/drb/drbtest.rb: clean up the service subprocess in teardown.
+ * gc.c, debug.c, object.c: catch up this change.
- * test/drb/test_drb.rb: set @service_name for teardown.
+Mon Nov 4 22:20:16 2013 Tanaka Akira <akr@fsij.org>
- * test/drb/test_drbunix.rb: ditto.
+ * test/xmlrpc: Don't use fixed ports: 8070 and 8071.
- * test/drb/test_drbssl.rb: ditto.
+Mon Nov 4 15:25:52 2013 Tanaka Akira <akr@fsij.org>
-Sat May 19 14:40:49 2012 Tanaka Akira <akr@fsij.org>
+ * test/xmlrpc/webrick_testing.rb (start_server): Initialize the server
+ at main thread to fail early.
- * lib/drb/ssl.rb: close accepted TCP socket if SSL accept is failed.
- [ruby-dev:45541]
+Mon Nov 4 10:08:17 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Sat May 19 14:39:50 2012 Tanaka Akira <akr@fsij.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
- * lib/webrick/utils.rb: fix fcntl call.
+Sun Nov 3 23:06:51 2013 Tanaka Akira <akr@fsij.org>
- * lib/drb/unix.rb: ditto.
+ * sample/test.rb: Make temporary file names unique.
-Fri May 18 18:13:44 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Sun Nov 3 20:41:17 2013 Tanaka Akira <akr@fsij.org>
- * lib/mkmf.rb (MakeMakefile#configuration): keep space at end of
- OUTFLAG and COUTFLAG. [ruby-dev:45650]
+ * test/xmlrpc: Wrap definitions by TestXMLRPC module.
-Fri May 18 00:04:53 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Sun Nov 3 20:23:38 2013 Tanaka Akira <akr@fsij.org>
- * win32/win32.c (rb_w32_fstat, rb_w32_fstati64): convert FILETIME
- to time_t directly, not to be affected by TZ unnecessarily.
+ * test/xmlrpc/webrick_testing.rb (stop_server): Don't try to shutdown
+ the server if the server is not started.
- * win32/win32.c (unixtime_to_filetime): convert time_t to FILETIME
- simply.
+Sun Nov 3 09:35:47 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Wed May 16 01:07:46 2012 Aaron Patterson <aaron@tenderlovemaking.com>
+ * load.c (rb_feature_p): deal with default loadable suffixes.
- * ext/digest/md5/extconf.rb: use pkg_config for openssl so that
- customized ssl paths are used for linking. Backports fixes for
- [ruby-core:44755].
- * ext/digest/rmd160/extconf.rb: ditto
- * ext/digest/sha1/extconf.rb: ditto
- * ext/digest/sha2/extconf.rb: ditto
+ * load.c (load_lock): initialize statically linked extensions.
-Mon May 14 17:14:10 2012 CHIKANAGA Tomoyuki <nagachika@ruby-lang.org>
+ * load.c (search_required, rb_require_safe): deal with statically
+ linked extensions.
- * 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]
+ * load.c (ruby_init_ext): defer initialization of statically linked
+ extensions until required actually. [Bug #8883]
-Mon May 14 17:14:10 2012 CHIKANAGA Tomoyuki <nagachika@ruby-lang.org>
+Sat Nov 2 15:14:33 2013 Nobuyoshi Nakada <nobu@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]
+ * lib/logger.rb (Logger::LogDevice::LogDeviceMutex#lock_shift_log):
+ open file can't be removed or renamed on Windows. [ruby-dev:47790]
+ [Bug #9046]
-Mon May 14 13:18:56 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * test/logger/test_logger.rb (TestLogDevice#run_children): don't use
+ fork.
- * parse.y (parser_tokadd_string): insert a backslash only if
- quoted by single quotes. [ruby-dev:45281] [Bug #6069]
+Sat Nov 2 07:08:43 2013 NARUSE, Yui <naruse@ruby-lang.org>
-Mon May 14 13:17:57 2012 Luis Lavena <luislavena@gmail.com>
+ * 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]
- * 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]
+Fri Nov 1 23:24:31 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Fri May 11 14:09:48 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * gc.c (wmap_mark_map): mark live objects only, but delete zombies.
+ [ruby-dev:47787] [Bug #9069]
- * 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 Nov 1 22:45:54 2013 Masaya Tarui <tarui@ruby-lang.org>
-Fri May 11 01:04:54 2012 Hiroshi Shirosaki <h.shirosaki@gmail.com>
+ * gc.c (struct heap_page, gc_page_sweep, gc_sweep): Refactoring for
+ performance. Add before_sweep condition to heap_page structure.
- * 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]
+ * gc.c (rb_gc_force_recycle): Use before_sweep member.
- * test/ruby/test_io_m17n.rb (TestIO_M17N#test_pos_with_buffer_end_cr):
- add a test for above.
+ * gc.c (heap_is_before_sweep, is_before_sweep): Remove. They have not
+ already been used.
-Wed May 9 15:59:17 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Fri Nov 1 22:20:28 2013 Masaya Tarui <tarui@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]
+ * gc.c (make_deferred): Refactoring. Collect codes which should be
+ atomic.
-Mon May 7 20:23:29 2012 Tanaka Akira <akr@fsij.org>
+ * gc.c (make_io_deferred, obj_free, rb_objspace_call_finalizer,
+ gc_page_sweep): Correspond to the above.
- * lib/securerandom.rb (random_bytes): call to_int method for the
- argument at first.
+Fri Nov 1 21:40:35 2013 Masaya Tarui <tarui@ruby-lang.org>
-Mon May 7 20:23:29 2012 Tanaka Akira <akr@fsij.org>
+ * gc.c (typedef struct rb_objspace): Refactoring. Move some members
+ into profile member.
- * lib/securerandom.rb: show actual read length in an error message.
+ * gc.c (newobj_of): Correspond to the above.
-Mon May 7 11:09:20 2012 NARUSE, Yui <naruse@ruby-lang.org>
+ * gc.c (finalize_list): Ditto.
- * ext/bigdecimal/bigdecimal.c (Init_bigdecimal): define IDs before
- they are used. [ruby-core:44900] [Bug #6406]
+ * gc.c (objspace_live_num): Ditto.
-Fri Apr 27 11:02:33 2012 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
+ * gc.c (gc_page_sweep): Ditto.
- * test/rinda/test_rinda.rb (test_core_03_notify): Fixed test failures
- [ruby-dev:44430] [Ruby 1.9 - Bug #372]
+ * gc.c (rb_gc_force_recycle): Ditto.
-Fri Apr 27 08:29:51 2012 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
+ * gc.c (garbage_collect_body): Ditto.
- * test/rinda/test_rinda.rb: fix sticks on some testsf problem
- [Bug #6272]
+ * gc.c (rb_gc_count): Ditto.
-Wed Apr 25 05:56:56 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * gc.c (gc_stat): Ditto.
- * lib/optparse.rb (OptionParser#to_a): split for each lines.
- [ruby-dev:45568][Bug #6348]
+ * gc.c (gc_prof_set_heap_info): Ditto.
-Tue Apr 24 21:20:39 2012 NARUSE, Yui <naruse@ruby-lang.org>
+ * gc.c (gc_profile_dump_on): Ditto.
- * 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]
+Fri Nov 1 20:53:56 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Tue Apr 24 14:55:41 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * string.c (rb_str_scrub): fix typo, should yield invalid byte
+ sequence to be scrubbed. reported by znz at IRC.
- * lib/optparse.rb (OptionParser#to_a): String#to_a is no longer
- defined. [ruby-dev:45568][Bug #6348]
+Fri Nov 1 17:25:30 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Sat Apr 21 07:16:16 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * gc.c (is_live_object): finalizer may not run because of lazy-sweep.
+ [ruby-dev:47786] [Bug #9069]
- * strftime.c (rb_strftime_with_timespec): fix padding of time zone
- offset. [ruby-dev:43287][Bug #4458]
+Fri Nov 1 16:55:52 2013 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.
+ * string.c (rb_str_scrub): export with fixed length arguments, and
+ allow nil as replacement string instead of omitting.
- * 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]
+Fri Nov 1 06:20:44 2013 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-Fri Apr 20 12:30:06 2012 Eric Hodel <drbrain@segment7.net>
+ * 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]
- * 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 Nov 1 01:08:33 2013 Koichi Sasada <ko1@atdot.net>
-Fri Apr 20 08:30:55 2012 Eric Hodel <drbrain@segment7.net>
+ * benchmark/gc/gcbench.rb: print HWM (high water mark) if possible.
- * lib/rubygems: Update to RubyGems 1.8.23 which contains security
- fixes:
+Thu Oct 31 21:48:31 2013 Kouhei Sutou <kou@cozmixng.org>
- RubyGems now disallows redirection from HTTPS to HTTP.
+ * lib/rexml/parsers/streamparser.rb: Add dependency file require.
+ [Bug #9062] [ruby-dev:47779]
+ Reported by Ippei Obayashi. Thanks!!!
- RubyGems now verifies SSL connections.
+Thu Oct 31 14:09:32 2013 Koichi Sasada <ko1@atdot.net>
- See https://github.com/rubygems/rubygems/blob/1.8/History.txt for
- changes since 1.8.22.
- * test/rubygems: ditto.
+ * vm_method.c (rb_method_entry_make): fix to pass an ISeq value.
+ OBJ_WRITTEN() accepts only VALUE.
-Fri Apr 20 07:39:50 2012 Eric Hodel <drbrain@segment7.net>
+Wed Oct 30 19:07:57 2013 Akinori MUSHA <knu@iDaemons.org>
- * lib/rubygems: Update to RubyGems 1.8.22 plus r33517 and r35337 which
- were ported to the rubygems git repository.
+ * 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]
- See https://github.com/rubygems/rubygems/blob/1.8/History.txt for
- changes since 1.8.11.
+Wed Oct 30 12:44:28 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * test/rubygems: ditto.
+ * win32/Makefile.sub (config.status): add missing variables,
+ PLATFORM_DIR and THREAD_MODEL.
- * lib/rubygems/version.rb: Fixed init_with warning by calling into
- yaml_initialize (for syck) from psych's init_with
+Wed Oct 30 12:20:32 2013 Tanaka Akira <akr@fsij.org>
-Thu Apr 19 12:55:31 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * time.c (v2w): Normalize a rational value to an integer if possible.
+ [ruby-core:58070] [Bug #9059] reported by Isaac Schwabacher.
- * ext/-test-/win32/dln/extconf.rb: need import library for ordinal
- entry even on mingw. [ruby-core:44441][Bug #6320]
+Wed Oct 30 12:08:41 2013 Masaki Matsushita <glass.saga@gmail.com>
-Wed Apr 18 23:08:58 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * array.c (rb_ary_uniq_bang): use rb_ary_modify_check() instead of
+ rb_ary_modify() because the array will be unshared soon.
- * configure.in (DOT, DOXYGEN): use AC_CHECK_PROGS instead of
- AC_CHECK_PROG which needs the third argument. [ruby-core:44433]
- [Bug #6316]
+Wed Oct 30 03:25:10 2013 Aaron Patterson <aaron@tenderlovemaking.com>
- * configure.in (PKG_CONFIG): fix condition to skip older version
- of pkg-config. continue in backticks does not affect outside.
+ * ext/psych/lib/psych/visitors/yaml_tree.rb: make less garbage when
+ testing if a string is binary.
-Tue Apr 17 21:35:47 2012 Kouhei Sutou <kou@cozmixng.org>
+Wed Oct 30 03:08:24 2013 Aaron Patterson <aaron@tenderlovemaking.com>
- * 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!!!
+ * 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
-Mon Apr 17 14:27:22 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * test/psych/test_string.rb: test for fix
- * 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]
+Tue Oct 29 23:01:18 2013 Masaki Matsushita <glass.saga@gmail.com>
-Sun Apr 15 14:57:00 2012 Tanaka Akira <akr@fsij.org>
+ * array.c (rb_ary_zip): some refactoring.
- * test/test_pty.rb (test_pty_check_default): call PTY.check until
- "cat" command is finished.
+Tue Oct 29 22:11:37 2013 Masaki Matsushita <glass.saga@gmail.com>
-Sun Apr 15 14:54:16 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+ * array.c (rb_ary_uniq_bang): use st_foreach() instead of for loop.
- * test/ruby/test_process.rb (TestProcess#windows?): new method.
+Tue Oct 29 20:01:58 2013 Koichi Sasada <ko1@atdot.net>
- * test/ruby/test_process.rb (TestProcess#*): use above method.
+ * add RUBY_TYPED_FREE_IMMEDIATELY to data types which only use
+ safe functions during garbage collection such as xfree().
- * test/ruby/test_process.rb (TestProcess#test_execopts_redirect):
- windows doesn't support FD_CLOEXEC.
+ 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.
-Sun Apr 15 06:40:28 2012 Hiroshi Shirosaki <h.shirosaki@gmail.com>
+ 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.
- * include/ruby/win32.h (rb_w32_aspawn_flags): add the declaration of
- new function.
+ * cont.c: ditto.
- * process.c (enum): add EXEC_OPTION_PGROUP and move the position
- above for the usage in proc_spawn_n().
+ * dir.c: ditto.
- * 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.
+ * encoding.c: ditto.
- * process.c (rb_exec_arg_addopt): ditto.
+ * enumerator.c: ditto.
- * process.c (rb_spawn_process): ditto.
+ * error.c: 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]
-
-Sun Apr 15 06:40:28 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]
+ * file.c: ditto.
-Sun Apr 15 04:35:48 2012 Hiroshi Shirosaki <h.shirosaki@gmail.com>
+ * gc.c: ditto.
- * 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]
+ * io.c: ditto.
- * test/ruby/test_io_m17n.rb (TestIO_M17N#test_read_crlf_and_eof):
- test for above.
+ * iseq.c: ditto.
-Sun Apr 15 03:00:54 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+ * marshal.c: ditto.
- * io.c (io_unread): fixed memory leak. report by nagachika via IRC.
+ * parse.y: ditto.
-Sun Apr 15 03:00:54 2012 Hiroshi Shirosaki <h.shirosaki@gmail.com>
+ * proc.c: ditto.
- * io.c (static int io_fflush): add the definition.
- Use it in set_binary_mode_with_seek_cur().
+ * process.c: ditto.
- * io.c (set_binary_mode_with_seek_cur): refactoring to split the
- content into io_unread(). Fix the possibility of buffer overflow.
+ * random.c: ditto.
- * 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.
+ * thread.c: ditto.
- * 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]
+ * time.c: ditto.
-Sun Apr 15 03:00:54 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+ * transcode.c: ditto.
- * test/ruby/test_io.rb (TestIO#test_pos_with_getc): updated.
- see [ruby-core:43550]
+ * variable.c: ditto.
-Sun Apr 15 03:00:54 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+ * vm.c: ditto.
- * test/ruby/test_io.rb (TestIO#test_pos_with_getc): added.
- see [Bug #6179][ruby-core:43518]
+ * vm_backtrace.c: ditto.
-Wed Apr 11 16:22:16 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * vm_trace.c: ditto.
- * ext/-test-/add_suffix/bug.c (ruby_add_suffix): no static
- declaration. [ruby-core:44277][Bug #6279]
+ * ext/bigdecimal/bigdecimal.c: ditto.
-Sun Apr 8 06:53:55 2012 NARUSE, Yui <naruse@ruby-lang.org>
+ * ext/objspace/objspace.c: ditto.
- * io.c (io_unread): cast as long the value for extra_max.
- [ruby-core:44137] [Bug #6257]
+ * ext/stringio/stringio.c: ditto.
-Sat Apr 7 10:28:40 2012 Aaron Patterson <aaron@tenderlovemaking.com>
+ * ext/strscan/strscan.c: ditto.
- * ext/psych/lib/psych.rb: bumping up psych version to match release.
- * ext/psych/psych.gemspec: ditto
+Tue Oct 29 19:48:33 2013 Koichi Sasada <ko1@atdot.net>
-Sat Apr 7 02:07:00 2012 Aaron Patterson <aaron@tenderlovemaking.com>
+ * include/ruby/ruby.h: fix typo (FL_WB_PROTECT -> FL_WB_PROTECTED).
- * 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
+Tue Oct 29 18:45:08 2013 Koichi Sasada <ko1@atdot.net>
-Wed Apr 4 18:29:15 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+ * vm_trace.c (tp_free): removed because empty free function.
+ Use RUBY_TYPED_NEVER_FREE instead.
- * test/ruby/test_sleep.rb (TestSleep#test_sleep_5sec): syntax error.
+Tue Oct 29 18:37:33 2013 Koichi Sasada <ko1@atdot.net>
- * test/ruby/test_sleep.rb (TestSleep#test_sleep_5sec): call uname
- only on linux because it's a workaround for linux only.
+ * 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).
-Wed Apr 4 11:32:09 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * gc.c (obj_free): support RUBY_TYPED_FREE_IMMEDIATELY.
- * ext/-test-/add_suffix/bug.c: make all functions in util.c static
- to get rid of multiple definitions. reported at
- https://trac.macports.org/ticket/33814
+Tue Oct 29 16:49:03 2013 Koichi Sasada <ko1@atdot.net>
-Tue Apr 3 18:34:33 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * gc.c (vm_malloc_increase): decrease it more carefully.
- * process.c (setreuid, setregid): suppress warnings.
- [ruby-core:43374][Bug #6169]
+Tue Oct 29 16:24:52 2013 Koichi Sasada <ko1@atdot.net>
-Sat Mar 31 12:11:21 2012 Martin Bosslet <Martin.Bosslet@googlemail.com>
+ * gc.c (heap_page_resurrect): return a page in tomb heap even if
+ freelist is NULL.
- * ext/openssl/ossl_x509cert.c: Fix doc typo.
+Tue Oct 29 15:46:30 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Fri Mar 30 14:17:17 2012 Martin Bosslet <Martin.Bosslet@googlemail.com>
+ * ruby_atomic.h (ATOMIC_SIZE_CAS): new macro, compare and swap size_t.
- * 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]
+Tue Oct 29 12:08:05 2013 Tanaka Akira <akr@fsij.org>
-Fri Mar 30 14:17:17 2012 Martin Bosslet <Martin.Bosslet@googlemail.com>
+ * ext/readline/readline.c (readline_getc): Consider
+ NULL as input.
- * 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]
+Tue Oct 29 11:10:08 2013 Aman Gupta <ruby@tmm1.net>
-Fri Mar 30 14:15:40 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * 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.
- * string.c (str_new_empty): should copy also the encoding as an
- empty substring. [ruby-dev:45441][Bug #6206]
+Tue Oct 29 09:53:00 2013 Charlie Somerville <charliesome@ruby-lang.org>
-Fri Mar 30 14:14:36 2012 Tadayoshi Funaba <tadf@dotrb.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.
- * ext/date/date_core.c (datetime_s_now): [ruby-core:43256].
+ * 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
-Fri Mar 30 14:12:53 2012 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+ * class.c, include/ruby/intern.h, variable.c, vm_method.c: add
+ rb_clear_constant_cache
- * numeric.c: fix flodivmod for cornercases [Bug #6044]
- add ruby_float_mod
+ * compile.c, vm_core.h, vm_insnhelper.c: rename vmstat field in
+ rb_call_info_struct to method_state
- * insns.def (opt_mod): use ruby_float_mod
+ * vm_method.c: rename vmstat field in struct cache_entry to method_state
- * internal.h: declare ruby_float_mod
+Mon Oct 28 23:26:04 2013 Tanaka Akira <akr@fsij.org>
- * test/ruby/test_float.rb: tests for above
+ * test/readline/test_readline.rb (teardown): Clear Readline.input and
+ Readline.output.
- * test/ruby/envutil.rb: create helper assert_is_minus_zero
+Mon Oct 28 21:35:31 2013 Tanaka Akira <akr@fsij.org>
-Wed Mar 28 08:44:24 2012 Aaron Patterson <aaron@tenderlovemaking.com>
+ * ext/-test-/file/depend, ext/-test-/postponed_job/depend,
+ ext/-test-/tracepoint/depend: New files for dependencies.
- * 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
+Mon Oct 28 15:32:18 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Mon Jul 18 13:36:47 2011 Aaron Patterson <aaron@tenderlovemaking.com>
+ * ext/openssl/depend (ossl.o): work around of dependency of
+ thread_native.h, which depends on headers by THREAD_MODEL.
+ [ruby-dev:47777]
- * ext/psych/lib/psych.rb: define a new BadAlias error class.
+ * ext/openssl/extconf.rb: need THREAD_MODEL.
- * ext/psych/lib/psych/visitors/to_ruby.rb: raise an exception when
- deserializing an alias that does not exist.
+Mon Oct 28 14:57:01 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * test/psych/test_merge_keys.rb: corresponding test.
+ * load.c (ruby_init_ext): share feature names between frame name and
+ provided features.
-Fri Mar 9 06:29:22 2012 Aaron Patterson <aaron@tenderlovemaking.com>
+Mon Oct 28 14:41:27 2013 Akinori MUSHA <knu@iDaemons.org>
- * ext/psych/lib/psych.rb (load, parse): stop parsing or loading after
- the first document has been parsed.
+ * misc/ruby-electric.el: Import ruby-electric.el 2.1 from
+ https://github.com/knu/ruby-electric.el.
- * test/psych/test_stream.rb: pertinent tests.
+ * Hitting the newline-and-indent key within a comment fires
+ comment-indent-new-line.
-Fri Mar 9 06:17:05 2012 Aaron Patterson <aaron@tenderlovemaking.com>
+ * Introduce a new feature
+ `ruby-electric-autoindent-on-closing-char`.
- * 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]
+ * Fix fallback behavior of ruby-electric-space/return that
+ caused error with auto-complete.
- * ext/psych/lib/psych/handlers/document_stream.rb: add a handler that
- yields documents as they are parsed
+Mon Oct 28 13:17:17 2013 Or Cohen <orc@fewbytes.com>
- * test/psych/test_stream.rb: corresponding tests.
+ * error.c (name_err_to_s): remove no longer needed overriding, since
+ r30455 which made exc_to_s almost same. Fixes [GH-413].
-Tue Mar 6 02:31:20 2012 Aaron Patterson <aaron@tenderlovemaking.com>
+Mon Oct 28 12:42:11 2013 Tanaka Akira <akr@fsij.org>
- * ext/psych/lib/psych/core_ext.rb: only extend Kernel if IRB is loaded
- in order to stop method pollution.
+ * common.mk, ext/objspace/depend, ext/coverage/depend,
+ ext/-test-/debug/depend, ext/date/depend: Update dependencies.
-Tue Feb 28 10:28:51 2012 Aaron Patterson <aaron@tenderlovemaking.com>
+Mon Oct 28 09:29:00 2013 Charlie Somerville <charliesome@ruby-lang.org>
- * ext/psych/lib/psych.rb: default open YAML files with utf8 external
- encoding. [ruby-core:42967]
- * test/psych/test_tainted.rb: ditto
+ * vm.c: vm_clear_all_cache is not necessary now we use a 64 bit counter
+ for global state version.
-Fri Feb 24 13:54:33 2012 Aaron Patterson <aaron@tenderlovemaking.com>
+ * vm_insnhelper.h: ruby_vm_global_state_version overflow is unnecessary
- * ext/psych/parser.c: prevent a memory leak by protecting calls to
- handler callbacks.
- * test/psych/test_parser.rb: test to demonstrate leak.
+Mon Oct 28 07:47:32 2013 Aman Gupta <ruby@tmm1.net>
-Fri Feb 24 08:08:38 2012 Aaron Patterson <aaron@tenderlovemaking.com>
+ * vm_backtrace.c (rb_profile_frame_classpath): do not use rb_inspect
+ directly, since it might have a custom implementation or show ivars.
- * 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
+Mon Oct 28 04:10:41 2013 Aman Gupta <ruby@tmm1.net>
-Fri Feb 10 03:41:31 2012 Aaron Patterson <aaron@tenderlovemaking.com>
+ * 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.
- * 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
+Mon Oct 28 00:52:36 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Wed Jan 18 12:49:15 2012 Aaron Patterson <aaron@tenderlovemaking.com>
+ * struct.c (new_struct): fix warning message, class name and encoding.
- * 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
+Sun Oct 27 20:53:08 2013 Tanaka Akira <akr@fsij.org>
-Wed Jan 18 10:39:47 2012 Aaron Patterson <aaron@tenderlovemaking.com>
+ * 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.
- * 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
+ [ruby-dev:47033] [Bug #8749] reported by Nobuhiro IMAI.
+ [ruby-core:57951] [Bug #9040] reported by Eamonn Webster.
-Wed Dec 21 02:25:36 2011 Aaron Patterson <aaron@tenderlovemaking.com>
+Sat Oct 26 19:31:28 2013 Kazuki Tsujimoto <kazuki@callcc.net>
- * ext/psych/emitter.c: fixing clang warnings. Thanks Joey!
+ * gc.c: catch up recent changes to compile on GC_DEBUG,
+ RGENGC_CHECK_MODE.
-Sun Dec 18 12:42:48 2011 Aaron Patterson <aaron@tenderlovemaking.com>
+Sat Oct 26 19:08:00 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * 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
+ * range.c (range_initialize_copy): disallow to modify after
+ initialized.
-Sun Dec 18 12:03:13 2011 Aaron Patterson <aaron@tenderlovemaking.com>
+Sat Oct 26 17:48:54 2013 Tanaka Akira <akr@fsij.org>
- * ext/psych/lib/psych/scalar_scanner.rb: Strings that look like dates
- should be treated as strings and not dates.
+ * lib/open-uri.rb (meta_add_field): : Re-implemented.
+ [ruby-core:58017] [Bug #9051] patch by Eamonn Webster.
- * test/psych/test_scalar_scanner.rb: corresponding tests.
+Sat Oct 26 14:35:09 2013 Koichi Sasada <ko1@atdot.net>
-Wed Dec 7 08:04:31 2011 Aaron Patterson <aaron@tenderlovemaking.com>
+ * gc.c (gc_profile_dump_on): use "Page" terminology.
- * 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.
+Sat Oct 26 13:25:45 2013 Koichi Sasada <ko1@atdot.net>
-Wed Nov 30 09:09:37 2011 Aaron Patterson <aaron@tenderlovemaking.com>
+ * gc.c (gc_sweep, gc_heap_lazy_sweep): fix measurement code.
+ We only need one sweep time measurement without lazy sweep.
- * 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.
+Sat Oct 26 11:59:13 2013 Tanaka Akira <akr@fsij.org>
-Tue Nov 22 04:46:22 2011 Aaron Patterson <aaron@tenderlovemaking.com>
+ * 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).
- * ext/psych/lib/psych.rb: remove autoload from psych
- * ext/psych/lib/psych/json.rb: ditto
+Sat Oct 26 11:35:22 2013 Koichi Sasada <ko1@atdot.net>
-Wed Nov 9 04:52:16 2011 Aaron Patterson <aaron@tenderlovemaking.com>
+ * gc.c: tuning parameters.
- * 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
+ * gc.c (GC_MALLOC_LIMIT): change default value to 16MB.
-Mon Nov 7 20:31:52 2011 Aaron Patterson <aaron@tenderlovemaking.com>
+ * gc.c (GC_MALLOC_LIMIT_GROWTH_FACTOR): change default value to 2.0.
- * 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.
+ * gc.c (gc_before_sweep): change decrease ratio of `malloc_limit'
+ from 1/4 to 1/10.
-Thu Oct 27 08:47:38 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
+Sat Oct 26 11:30:07 2013 Koichi Sasada <ko1@atdot.net>
- * ext/psych/parser.c: remove unused variable.
+ * 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.
-Wed Oct 5 02:50:27 2011 Aaron Patterson <aaron@tenderlovemaking.com>
+Sat Oct 26 06:35:41 2013 Masaya Tarui <tarui@ruby-lang.org>
- * 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.
+ * gc.c (gc_before_heap_sweep): Restructure code to mean clearly.
+ heap->freelist is connected to end of list.
-Wed Oct 5 01:52:16 2011 Aaron Patterson <aaron@tenderlovemaking.com>
+Sat Oct 26 04:01:35 2013 Koichi Sasada <ko1@atdot.net>
- * ext/psych/parser.c (parse): Use context_mark for indicating error
- line and column.
+ * 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.
-Wed Oct 5 01:22:08 2011 Aaron Patterson <aaron@tenderlovemaking.com>
+Thu Oct 24 21:57:24 2013 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
- * ext/psych/lib/psych/scalar_scanner.rb: use normal begin / rescue
- since postfix rescue cannot receive the exception class. Thanks
- nagachika!
+ * parse.y: Remove +(binary) and -(binary) special cases
+ [Feature #9048]
-Tue Mar 27 22:22:50 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Thu Oct 24 12:45:53 2013 Zachary Scott <e@zzak.io>
- * 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]
+ * object.c: [DOC] Document first argument also takes string for:
-Mon Mar 26 09:57:12 2012 NARUSE, Yui <naruse@ruby-lang.org>
+ rb_mod_const_get, rb_mod_const_set, rb_mod_const_defined
- * parse.y (parser_nextc): set encoding for the buffer of ripper.
+ Also added note about NameError exception for invalid constant name
-Sun Mar 18 13:23:28 2012 NARUSE, Yui <naruse@ruby-lang.org>
+Thu Oct 24 12:23:58 2013 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
- * encoding.c (rb_enc_compatible): return ASCII-8BIT even if 2nd string
- is ascii only string. [ruby-core:42354] [Bug #5968]
+ * thread.c (rb_thread_terminate_all): add a comment why we need
+ state check and call terminate_i again.
-Tue Mar 6 18:55:37 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Thu Oct 24 12:15:02 2013 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
- * lib/test/unit/assertions.rb (assert_send, assert_not_send):
- parenthesize non-empty arguments.
+ * thread.c (rb_thread_terminate_all): add a comment why infinite
+ sleep is safe.
-Tue Mar 6 18:55:37 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Thu Oct 24 07:41:42 2013 Aman Gupta <ruby@tmm1.net>
- * lib/test/unit/assertions.rb (assert_send): make arguments in
- the default message clearer.
+ * 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.
-Tue Mar 6 12:48:08 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Thu Oct 24 01:34:12 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * ext/io/console/console.c (set_rawmode): clear ECHOE and ECHOK
- bits too.
+ * include/ruby/win32.h (rb_infinity_float): suppress overflow in
+ constant arithmetic warnings. [ruby-core:57981] [Bug #9044]
- * ext/io/console/console.c (echo_p): ignore ECHOE and ECHOK bits.
- [ruby-dev:45309] [Bug #6116]
+Thu Oct 24 00:11:24 2013 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
- * ext/io/console/console.c (console_raw): fix rdoc.
+ * 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]
- * ext/io/console/console.c (console_set_echo): mentioned about
- platform dependency.
+ * test/ostruct/test_ostruct.rb: Added tests for above.
-Tue Mar 6 12:40:08 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Thu Oct 24 00:10:22 2013 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
- * ext/io/console/console.c (console_raw, console_set_raw)
- (console_getch): optional parameters. [EXPERIMENTAL]
+ * array.c: Add Array#to_h [Feature #7292]
-Tue Mar 6 12:39:27 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * enum.c: Add Enumerable#to_h
- * ext/io/console/console.c (console_cooked, console_set_cooked):
- new methods to reset cooked mode. [EXPERIMENTAL]
+Wed Oct 23 23:48:28 2013 Aman Gupta <ruby@tmm1.net>
-Tue Mar 6 12:31:47 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * 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--
- * ext/io/console/console.c (io_getch): default delegating method
- for StringIO. https://github.com/nobu/io-console/issues/4
+Wed Oct 23 22:51:03 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * ext/stringio/stringio.c: moved some methods to hidden modules.
+ * win32/Makefile.sub (config.h): VC 2013 supports C99 mathematics
+ functions. [ruby-core:57981] [Bug #9044]
-Tue Mar 6 12:29:34 2012 Eric Hodel <drbrain@segment7.net>
+Wed Oct 23 19:13:18 2013 Koichi Sasada <ko1@atdot.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
+ * gc.c: move increment from heap to heap_pages.
+ Share `increment' information with heaps.
-Tue Mar 6 11:42:52 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * gc.c: change ratio of heap_pages_free_min_page
+ to 0.80.
+ This change means slow down page freeing speed.
- * 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
+Wed Oct 23 17:52:03 2013 Koichi Sasada <ko1@atdot.net>
-Fri Mar 2 22:09:03 2012 Hiroshi Nakamura <nahi@ruby-lang.org>
+ * gc.c (heap_pages_free_unused_pages): cast to (int) for size_t
+ variable `i'.
- * .travis.yml: Backport TravisCI configuration from trunk.
+Wed Oct 23 17:39:35 2013 Koichi Sasada <ko1@atdot.net>
-Thu Mar 1 18:39:44 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * 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.
- * file.c (rb_file_join): honor input encodings than ASCII-8BIT.
- [ruby-core:40338] [Bug #5483]
+ 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)
-Tue Feb 28 11:56:52 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ To introduce this patch, there are several tuning of GC parameters.
- * configure.in (debugflags): check if -ggdb is accepted.
- [ruby-core:42875][Bug #6080]
+Wed Oct 23 14:20:56 2013 Koichi Sasada <ko1@atdot.net>
-Mon Feb 27 17:25:40 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * gc.c (gc_prof_sweep_timer_stop): catch up recent changes
+ to compile on GC_PROFILE_MORE_DETAIL=1.
- * 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]
+Wed Oct 23 11:43:27 2013 Zachary Scott <e@zzak.io>
-Mon Feb 27 02:28:17 2012 NARUSE, Yui <naruse@ruby-lang.org>
+ * file.c: [DOC] fix rdoc format of File#expand_path from r43386
- * regparse.c (add_code_range_to_buf0): wrong condition of duplicated
- warnings.
+Tue Oct 22 21:58:28 2013 URABE Shyouhei <shyouhei@ruby-lang.org>
-Sun Feb 26 12:26:26 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * vm_core.h (enum): avoid syntax error.
- * 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]
+ * method.h: ditto.
- * insns.def (send): no special deal for FCALL. self should be put
- on TOS instead.
+ * internal.h: ditto.
-Sat Feb 25 23:47:49 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Tue Oct 22 19:53:16 2013 Koichi Sasada <ko1@atdot.net>
- * file.c (utime_internal): fix a variable missed to replace.
- [ruby-core:42864] [Bug #6077]
+ * gc.c (Init_heap): move logics from heap_pages_init() and remove
+ heap_pages_init().
-Sat Feb 25 21:29:09 2012 URABE Shyouhei <shyouhei@ruby-lang.org>
+Tue Oct 22 19:19:05 2013 Koichi Sasada <ko1@atdot.net>
- * test/ruby/test_literal.rb (TestRubyLiteral#test_special_const):
- test for https://bugs.php.net/bug.php?id=61095
+ * 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.
-Sat Feb 25 21:29:09 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * 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.
- * dir.c, file.c, io.c (rb_sys_fail_path): use rb_sys_fail_str.
+ 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.
- * error.c: new functions to deal exceptions with string instances.
+ Now, there is only one heap called `eden', which is a space for all
+ new generated objects.
- * dir.c, file.c, io.c: use rb_sys_fail_path.
+Tue Oct 22 18:26:12 2013 Tanaka Akira <akr@fsij.org>
-Sat Feb 25 21:18:12 2012 Nobuyoshi Nakada <nobu@ruby-lang.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.
- * dir.c (dir_inspect), io.c (rb_io_inspect): keep encoding of path.
- [Bug #6072]
+Tue Oct 22 16:57:48 2013 Benoit Daloze <eregontp@gmail.com>
-Sat Feb 25 21:18:12 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * file.c (File#expand_path): [DOC] improve documentation of File#expand_path.
+ Based on patch by Prathamesh Sonpatki. [ruby-core:57734] [Bug #9002]
- * dir.c (dir_initialize): keep path in original encoding.
+Tue Oct 22 15:59:51 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * error.c (syserr_initialize): prefer the encoding of message over
- locale. [ruby-dev:45279][Bug #6071]
+ * dir.c (glob_helper): don't skip current directories if FNM_DOTMATCH
+ is given. [ruby-core:53108] [Bug #8006]
-Sat Feb 25 17:10:51 2012 NARUSE, Yui <naruse@ruby-lang.org>
+Tue Oct 22 14:53:11 2013 Koichi Sasada <ko1@atdot.net>
- * lib/fileutils.rb: use chomp(?/) instead of sub to optimize and avoid
- to regexping invalid string.
+ * 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.
-Sat Feb 25 16:39:13 2012 NARUSE, Yui <naruse@ruby-lang.org>
+ * 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.
- * complex.c (nucomp_marshal_load): raise error on invalid data.
- reported by John Firebaugh [ruby-core:42860] [Bug #6076]
+ * vm_trace.c (rb_postponed_job_register_one): check interrupt
+ carefully.
-Fri Feb 24 23:49:05 2012 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+ * vm_trace.c (rb_postponed_job_register_one): use additional space
+ to avoid buffer full.
- * lib/ostruct.rb (delete_field): Bug fix so previous value is
- returned. Patch by Nick Recobra [Bug #6063]
+ * gc.c (gc_finalize_deferred_register): check failure.
-Fri Feb 24 08:53:28 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * thread.c (rb_threadptr_execute_interrupts): check
+ `postponed_job_interrupt' immediately. There is a possibility
+ to miss this flag.
- * parse.y (parser_tokadd_string, parser_yylex): insert a backslash
- if the next character is non-ascii. [ruby-dev:45278] [Bug #6069]
+Tue Oct 22 12:11:16 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Thu Feb 23 14:44:36 2012 NARUSE, Yui <naruse@ruby-lang.org>
+ * configure.in: check if the given CFLAGS and LDFLAGS are working, and
+ bail out early if not.
- * lib/uri/common.rb (URI::Parser#initialize_regexp):
- use \A \z instead of ^ $. [Bug #5843]
+Tue Oct 22 00:06:57 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Thu Feb 23 08:08:23 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+ * file.c (rb_file_exists_p): warn deprecated name. [Bug #9041]
- * win32/win32.c (rb_w32_uchmod): typo. [Bug#5671] [ruby-dev:44898]
+Mon Oct 21 23:57:53 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * test/ruby/test_file.rb (TestFile#test_chmod_m17n): test of above bug.
+ * encoding.c (load_encoding): should preserve outer errinfo, so that
+ expected exception may not be lost. [ruby-core:57949] [Bug #9038]
-Wed Feb 22 23:27:52 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Sun Oct 20 15:41:22 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * test/iconv/test_option.rb: enabled. [ruby-core:42802][Bug #6061]
+ * 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]
-Wed Feb 22 22:04:15 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Sun Oct 20 15:29:05 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * io.c (rb_io_s_foreach): argument check before making Enumerator.
- [ruby-dev:31525]
+ * error.c (rb_syserr_fail_path_in): new function split from
+ rb_sys_fail_path_in to raise SystemCallError without errno.
-Wed Feb 22 22:04:15 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * internal.h (rb_syserr_fail_path): like rb_sys_fail_path but without
+ errno.
- * io.c (rb_io_s_foreach): return enumerator including kerword
- arguments. [ruby-dev:45267][Bug #6054]
+Sun Oct 20 13:58:47 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Wed Feb 22 21:42:16 2012 NARUSE, Yui <naruse@ruby-lang.org>
+ * include/ruby/ruby.h (rb_obj_wb_unprotect, rb_obj_written),
+ (rb_obj_write): suppress unused-parameter warnings.
- * configure.in: remove workaround replacement from gcc to gcc-4.2.
- [Backport #6043]
+Sun Oct 20 10:32:48 2013 Eric Hodel <drbrain@segment7.net>
-Wed Feb 22 08:11:06 2012 Narihiro Nakamura <authornari@gmail.com>
+ * lib/rubygems: Update RubyGems to master 0886307. This commit
+ improves documentation and should bring ruby above 75% documented on
+ rubyci.
- * 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]
+Sun Oct 20 09:30:56 2013 Eric Hodel <drbrain@segment7.net>
-Sun Feb 19 12:27:24 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * lib/rubygems: Update to RubyGems master 3de7e0f. Changes:
- * configure.in: ignore all warnings from an arbitrary
- header in /usr/local/include.
+ Only attempt to build extensions for newly-installed gems. This
+ prevents compilation attempts at gem activation time for gems that
+ already have extensions built.
-Fri Feb 17 12:51:25 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ Fix crash in the dependency resolver for dependencies that cannot be
+ resolved.
- * lib/mkmf.rb (create_header): log the content of header.
+ * test/rubygems: ditto.
-Fri Feb 17 12:26:15 2012 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
+Sun Oct 20 05:24:29 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * test/readline/test_readline.rb (test_completion_proc_empty_result):
- ensure clearance of Readline's line_buffer after the test.
+ * variable.c (rb_class2name): should return real class name, not
+ singleton class or iclass.
-Fri Feb 17 11:46:39 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Sun Oct 20 04:18:48 2013 Aman Gupta <ruby@tmm1.net>
- * 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]
+ * variable.c (rb_class2name): call rb_tmp_class_path() directly to
+ avoid extra rb_str_dup() from rb_class_name().
-Fri Feb 17 10:15:54 2012 Tanaka Akira <akr@fsij.org>
+Sat Oct 19 19:59:02 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * ext/dbm/extconf.rb: check _DB_H_ macro unavailable except
- Berkeley DB library.
+ * win32/file.c (code_page): use simple array instead of st_table.
-Fri Feb 17 10:14:47 2012 Tanaka Akira <akr@fsij.org>
+ * encoding.c (rb_locale_encindex): defer initialization of win32 code
+ page table until encoding db loaded.
- * 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]
+Sat Oct 19 08:25:05 2013 Koichi Sasada <ko1@atdot.net>
-Fri Feb 17 09:53:46 2012 NARUSE, Yui <naruse@ruby-lang.org>
+ * 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.
- * tool/transcode-tblgen.rb (import_ucm): don't use \h because the
- script should work with ruby 1.8.
+Sat Oct 19 07:14:40 2013 Eric Hodel <drbrain@segment7.net>
- * tool/enc-unicode.rb: ditto.
+ * lib/rubygems: Update to RubyGems master 42543b6. Changes:
-Thu Feb 16 17:54:14 2012 NARUSE, Yui <naruse@ruby-lang.org>
+ Fix `gem update` for gems with multiple platforms.
- * ext/dbm/extconf.rb: merge trunk's ext/dbm/extconf.rb and
- related functions of lib/mkmf.rb. [Backport #6021]
+ * test/rubygems: ditto.
-Thu Feb 16 09:25:52 2012 NARUSE, Yui <naruse@ruby-lang.org>
+Sat Oct 19 06:55:52 2013 Eric Hodel <drbrain@segment7.net>
- * configure.in (enable_pthread): use -pthread on OpenBSD without
- explicit option. patched by Jeremy Evans. [ruby-core:38572]
+ * lib/rubygems: Update to RubyGems master 0a3814b. Changes:
-Thu Feb 16 07:34:34 2012 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
+ Fixed extension directory in Gem::Specification#require_paths.
- * cont.c (rb_fiber_reset_root_local_storage): add a new function to
- restore rb_thread_t::local_storage.
+ Allow installation of gems when $HOME is nonexistent or unwritable.
- * cont.c (rb_obj_is_fiber): add a new function to tell finalizer to
- prevent fibers from destroy.
+ Use proper API in InstallCommand.
- * gc.c (rb_objspace_call_finalizer): don't sweep fibers at finalizing
- objspace.
+ Improve support for path option in gem dependency files.
- * internal.h (rb_fiber_reset_root_local_storage, rb_obj_is_fiber):
- add prototypes.
+ Remove warnings.
- * 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/rubygems: ditto.
- * test/ruby/test_fiber.rb (test_fork_from_fiber): add test for fork
- from fiber.
+Fri Oct 18 15:23:34 2013 Koichi Sasada <ko1@atdot.net>
-Thu Feb 16 06:30:37 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * 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").
- * ext/fiddle/closure.c (callback): deal with unsinged integers.
- [ruby-core:42458][Bug #5991][Bug #6022]
+ See https://bugs.ruby-lang.org/attachments/4008/data-heap_structure.png.
- * ext/fiddle/conversions.c (value_to_generic, generic_to_value):
- ditto.
+Fri Oct 18 09:40:43 2013 Eric Hodel <drbrain@segment7.net>
- * ext/fiddle/closure.c (callback): same as r34506.
+ * lib/rubygems: Update to RubyGems master cee6788. Changes:
-Wed Feb 15 10:35:43 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ Fix test failure on vc10-x64 Server on rubyci.org due to attempting
+ to File.chmod where it is not supported.
- * include/ruby/ruby.h (FIXNUM_P): simple flag should be int.
+ Continuing work on improved gem dependencies file (Gemfile) support.
-Wed Feb 15 10:33:41 2012 Eric Hodel <drbrain@segment7.net>
+ * test: ditto.
- * vm_eval.c (check_funcall): Call respond_to? with matching arity for
- legacy single-argument implementations. [ruby-trunk - Bug #6000]
+Fri Oct 18 06:02:49 2013 Eric Hodel <drbrain@segment7.net>
-Wed Feb 15 10:25:22 2012 Naohisa Goto <ngotogenome@gmail.com>
+ * lib/rubygems: Update to RubyGems master f738c67. Changes:
- * 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.
+ Fixed test bug for ruby with ENABLE_SHARED = no
-Wed Feb 15 10:25:22 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * test/rubygems: ditto.
- * test/ruby/test_object.rb: tests that respond_to? returns false.
+Fri Oct 18 00:57:07 2013 Tanaka Akira <akr@fsij.org>
-Wed Feb 15 10:25:22 2012 Nobuyoshi Nakada <nobu@ruby-lang.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.
- * vm_eval.c (check_funcall): try respond_to? first if redefined.
- [Bug #5158]
+Thu Oct 17 18:50:08 2013 Koichi Sasada <ko1@atdot.net>
-Wed Feb 15 07:15:50 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * 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.
- * compile.c (defined_expr): guard the whole expression.
- [ruby-dev:45021][Bug#5786]
+Thu Oct 17 18:45:41 2013 Koichi Sasada <ko1@atdot.net>
-Wed Feb 15 05:08:25 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * string.c (STR_HEAP_SIZE): includes TERM_LEN(str).
- * ext/dl/cptr.c (rb_dlptr_s_to_ptr): use rb_check_funcall.
+ * string.c (rb_str_memsize): use STR_HEAP_SIZE().
- * 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 Oct 17 17:43:00 2013 Shugo Maeda <shugo@ruby-lang.org>
-Wed Feb 15 05:04:47 2012 Nobuyoshi Nakada <nobu@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.
- * ext/dl/cptr.c (rb_dlptr_aref, rb_dlptr_aset): check NULL pointer
- dereference.
+ * vm_method.c (rb_method_entry_without_refinements): return 0 when
+ the original method of a refined method is undef to avoid SEGV.
- * test/rinda/test_rinda.rb: decrease the code that depends on timing.
- [Bug #372] [Bug #4160]
+ * test/ruby/test_refinement.rb: related test.
-Wed Feb 15 05:03:41 2012 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
+Thu Oct 17 17:38:36 2013 Koichi Sasada <ko1@atdot.net>
- * test/rinda/test_rinda.rb (test_remote_array_and_hash):
- add local variables to protect objects from GC. [ruby-dev:44253]
- [Bug #5104]
+ * gc.c, internal.h: rename ruby_xsizefree/realloc to
+ rb_sized_free/realloc.
-Wed Feb 15 05:02:43 2012 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+ * array.c: catch up these changes.
- * test/win32ole/test_err_in_callback.rb (test_err_in_callback):
- skip test if ADODB.connection is not available.
+ * string.c: ditto.
-Wed Feb 15 04:49:23 2012 Yusuke Endoh <mame@tsg.ne.jp>
+Thu Oct 17 17:32:51 2013 Koichi Sasada <ko1@atdot.net>
- * parse.y (debug_lines, coverage): set file path encoding for coverage
- result. [ruby-dev:44950]
+ * array.c, string.c: use ruby_xsizedfree() and ruby_xsizedrealloc().
-Tue Feb 14 16:57:11 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+ * internal.h (SIZED_REALLOC_N): define a macro as REALLOC_N().
- * 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
+Thu Oct 17 17:11:17 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Tue Feb 14 16:52:17 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+ * win32/win32.c (console_emulator_p): check by comparison between
+ module handle of WriteConsoleW and kernel32.dll.
- * lib/rdoc/encoding.rb (RDoc::Encoding.read_file): fixup newline chars
- on Windows.
- see https://github.com/rdoc/rdoc/issues/87
+ * configure.in, win32/Makefile.sub, win32/setup.mak: no longer need
+ psapi.lib.
- * test/rdoc/test_rdoc_markup_pre_process.rb
- (TestRDocMarkupPreProcess#test_include_file,
- TestRDocMarkupPreProcess#test_include_file_encoding_incompatible):
- follow above change.
+Thu Oct 17 16:53:30 2013 Koichi Sasada <ko1@atdot.net>
-Tue Feb 14 16:34:11 2012 Shota Fukumori <sorah@tubusu.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]
- * 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].
+Thu Oct 17 14:21:34 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Tue Feb 14 15:58:31 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * win32/file.c (rb_file_expand_path_internal): fix memory leaks at
+ a non-absolute home exception.
- * gc.c (initial_params): pack in a struct.
+Thu Oct 17 14:06:39 2013 Koichi Sasada <ko1@atdot.net>
- * gc.c (rb_gc_set_params): set parameters always.
- [ruby-dev:44648] [Bug #5467]
+ * 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.
-Tue Feb 14 15:44:42 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+Thu Oct 17 12:30:16 2013 Tanaka Akira <akr@fsij.org>
- * test/irb/test_completion.rb: skip if cannot load irb/completion
- (maybe readline does not exist).
+ * lib/tsort.rb (TSort.each_strongly_connected_component_from):
+ Extracted from TSort#each_strongly_connected_component_from.
-Tue Feb 14 15:07:23 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Thu Oct 17 11:07:06 2013 Eric Hodel <drbrain@segment7.net>
- * lib/test/unit/assertions.rb (build_message): skip escaped
- question marks.
+ * lib/rubygems: Update to RubyGems master 941c21a. Changes:
-Mon Feb 13 12:06:29 2012 Loren Segal <lsegal@soen.ca>
+ Restored method bundler wants to remove for compatibility.
- * io.c (Init_IO): use directive hack to make ARGF documentable
- in other tools. [ruby-core:42515][Bug #6007]
+ Improvements to Gemfile compatibility.
-Sun Feb 12 16:57:56 2012 Akinori MUSHA <knu@iDaemons.org>
+ * test/rubygems: ditto.
- * misc/rdoc-mode.el (rdoc-imenu-create-index): Add imenu support
- to rdoc-mode.
+Thu Oct 17 08:08:11 2013 Koichi Sasada <ko1@atdot.net>
- * misc/rdoc-mode.el (rdoc-mode): Fix regexp patterns containing
- "\s " where CR/LF is not supposed to match.
+ * ext/objspace/object_tracing.c (newobj_i): add workaround.
+ some bugs hits this check.
-Sun Feb 12 16:56:23 2012 Akinori MUSHA <knu@iDaemons.org>
+ * ext/objspace/object_tracing.c (object_allocations_reporter_i): cast as pointer.
- * misc/rdoc-mode.el (rdoc-mode): Add provide so that requiring
- this library succeeds.
+Thu Oct 17 07:36:53 2013 Eric Hodel <drbrain@segment7.net>
-Sun Feb 12 16:53:18 2012 Akinori MUSHA <knu@iDaemons.org>
+ * lib/rubygems: Update to RubyGems master 2abce58. Changes:
- * 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.
+ Fixed documentation generation when sdoc and json are installed as
+ gems.
- * lib/tempfile.rb (Tempfile#unlink, Tempfile::Remover#call): My
- comment about thread safeness is obsolete.
+ Added some missing documentation.
-Sun Feb 12 16:50:28 2012 Akinori MUSHA <knu@iDaemons.org>
+Thu Oct 17 07:10:26 2013 Zachary Scott <e@zzak.io>
- * lib/shellwords.rb: Fix rdoc markups.
+ * ext/curses/curses.c: [DOC] Cleaned up formatting consistency of rdoc
+ comments for Curses, including period spacing and column width.
-Sun Feb 12 16:50:28 2012 Akinori MUSHA <knu@iDaemons.org>
+ This patch also fixed some typos. Thanks to @postmodern for the patch!
+ [Fixes GH-420] https://github.com/ruby/ruby/pull/420
- * lib/shellwords.rb (Shellwords#shellsplit): Fix a bug where
- consecutive backslashes in double quotes are all removed except
- the one at the tail.
+Thu Oct 17 06:58:42 2013 Zachary Scott <e@zzak.io>
-Sun Feb 12 16:38:13 2012 Akinori MUSHA <knu@iDaemons.org>
+ * 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
- * lib/shellwords.rb (Shellwords#shellescape): Drop the //n flag
- that only causes warnings with no real effect. [Bug #5637]
+Thu Oct 17 05:52:31 2013 Zachary Scott <e@zzak.io>
-Sun Feb 12 16:34:55 2012 Akinori MUSHA <knu@iDaemons.org>
+ * 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
- * tool/merger.rb (#default_merge_branch): Add support for
- Subversion 1.7 which adopted a whole new working directory
- structure.
+Thu Oct 17 05:40:33 2013 Koichi Sasada <ko1@atdot.net>
-Sun Feb 12 09:38:46 2012 Yukihiro Matsumoto <matz@ruby-lang.org>
+ * gc.c (objspace_each_objects): do not skip empty RVALUEs.
- * vm_method.c (rb_add_method): should not call method_added hook
- for undef operation. [Bug #5015]
+Thu Oct 17 05:31:31 2013 Koichi Sasada <ko1@atdot.net>
-Sun Feb 12 09:29:28 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * error.c (rb_bug_reporter_add): return simply 0 if failed.
+ Please check return value.
- * regint.h (PLATFORM_UNALIGNED_WORD_ACCESS): Power PC does not
- allow unaligned word access.
+Thu Oct 17 05:17:33 2013 Koichi Sasada <ko1@atdot.net>
- * st.c (UNALIGNED_WORD_ACCESS): x86_64 allows unaligned word
- access as well as i386.
+ * 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.
-Sat Feb 11 08:06:12 2012 Tanaka Akira <akr@fsij.org>
+Wed Oct 16 22:35:27 2013 Zachary Scott <e@zzak.io>
- * test/openssl/test_ssl.rb (test_multibyte_read_write): start server
- for each length to avoid race condition.
+ * ext/io/nonblock/nonblock.c: use rb_cIO instead of VALUE
-Sat Feb 11 06:13:07 2012 NARUSE, Yui <naruse@ruby-lang.org>
+Wed Oct 16 17:45:13 2013 Koichi Sasada <ko1@atdot.net>
- * dir.c (fnmatch): The * needs to be escaped to avoid formatting in
- fnmatch comment.
- patched by @dalton. https://github.com/ruby/ruby/pull/91
+ * bootstraptest/runner.rb: check nil before calling `signal?'
+ for a process status.
-Sat Feb 11 03:38:48 2012 Hiroshi Shirosaki <h.shirosaki@gmail.com>
+Wed Oct 16 17:37:17 2013 Koichi Sasada <ko1@atdot.net>
- * io.c (rb_sys_fail_path): move the definition.
- Move above for using it in set_binary_mode_with_seek_cur().
+ * 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.
- * 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.
+ * ext/-test-/bug_reporter/bug_reporter.c: add a test for this C-API.
- And cleanups as below.
- Remove unnecessary parentheses of `fptr`.
- Use return value of setmode().
+ * ext/-test-/bug_reporter/extconf.rb: ditto.
- * test/ruby/test_io_m17n.rb
- (TestIO_M17N#test_seek_with_setting_binmode): add a test for abobe.
- [ruby-core:41671] [Bug #5714]
+ * test/-ext-/bug_reporter/test_bug_reporter.rb: ditto.
-Sat Feb 11 03:38:48 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+Wed Oct 16 15:14:21 2013 Koichi Sasada <ko1@atdot.net>
- * test/ruby/test_io_m17n.rb
- (TestIO_M17N#test_{read_with_binmode_and_get[cs]}): only for Windows.
+ * NEWS: add a line into NEWS for last commit.
-Sat Feb 11 03:38:48 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+Wed Oct 16 15:09:14 2013 Koichi Sasada <ko1@atdot.net>
- * win32/win32.c, include/ruby/win32.h (rb_w32_fd_is_text): new function.
+ * 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.
- * win32/win32.c (init_stdhandle): set default mode of stdin as binmode.
+ * test/objspace/test_objspace.rb: add a test.
- * 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.
+Wed Oct 16 15:00:21 2013 Eric Hodel <drbrain@segment7.net>
- * io.c (do_writeconv): set text mode when needed.
+ * lib/rubygems: Update to RubyGems master b955554. Changes:
- * 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.
+ Fixed NameError for Gem::Ext due to re-entering file lookup in
+ RubyGems' overridden require. Bug by Koichi Sasada.
- * 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.
+ Fixed possible circular require warning in tests.
- all patches are written by Hiroshi Shirosaki. [ruby-core:41496]
- [Feature #5714]
+ Used existing constant for `gem install -g` dependency file list.
-Sat Feb 11 03:37:56 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+ * test/rubygems: ditto.
- * test/rexml/test_order.rb (OrderTester#test_more_ordering): use
- GZip::GzReader.open instead of GZip::GzReader.new with File.new.
- fixed a test error on Windows introduced at r33946.
+Wed Oct 16 09:42:42 2013 Eric Hodel <drbrain@segment7.net>
-Sat Feb 11 03:37:34 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+ * lib/rubygems: Update to RubyGems master 278d00d. Changes:
- * 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
- fixed test errors on Windows introduced at r33953.
- the maintainer of this library should judge it.
- 2nd, usually Zlib::GzReader.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.
+ Fixes building extensions without a "clean" make rule
- fixed test errors on Windows introduced at r33947.
-Sat Feb 11 03:23:58 2012 Luis Lavena <luislavena@gmail.com>
+ Adds gem dependency file autodetection to "gem install -g"
- * ext/zlib/zlib.c (rb_gzreader_initialize): use binary mode by default
- under Windows. Patch by Hiroshi Shirosaki. [ruby-core:40706]
- [Feature #5562]
+ * test/rubygems: Tests for the above.
- * include/ruby/encoding.h (void rb_econv_binmode): define NEWLINE
- decorator.
+Wed Oct 16 09:12:23 2013 Eric Hodel <drbrain@segment7.net>
- * 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.
+ * lib/rubygems: Update to RubyGems master commit 2a74263. This fixes
+ several bugs in RubyGems 2.2.0.preview.1.
- * test/ruby/test_io_m17n.rb (EOT): add test for pipe and stdin in
- binary mode.
+ * test/rubygems: ditto.
- * win32/win32.c (init_stdhandle): remove O_BINARY from stdhandle
- initialization.
- * win32/win32.c (rb_w32_write): use FTEXT mode accordingly.
+Wed Oct 16 07:25:02 2013 Aman Gupta <ruby@tmm1.net>
-Sat Feb 11 03:20:22 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+ * gc.c (gc_mark_roots): rename roots to be categories
+ instead of function names.
- * io.c (argf_next_argv): wrong timing of setting ecflags.
- fixed the failure of TestArgf#test_textmode introduced at r33662.
+Tue Oct 15 19:18:13 2013 Koichi Sasada <ko1@atdot.net>
-Sat Feb 11 03:19:45 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+ * 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.
- * test/ruby/test_io_m17n.rb
- (TestIO_M17N#test_default_stdout_stderr_mode): new test for
- r33627-33629. see [backport #5565]
-Sat Feb 11 03:20:22 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+ * gc.c (gc_mark_roots): separate from gc_marks_body().
- * include/ruby/encoding.h (ECONV_NEWLINE_DECORATOR_READ_MASK,
- ECONV_NEWLINE_DECORATOR_WRITE_MASK): new macro.
+Tue Oct 15 17:47:59 2013 Tanaka Akira <akr@fsij.org>
- * 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.
+ * process.c: Fix a typo. MacOS X doesn't have ENOTSUPP.
- * io.c (make_writeconv): drop decorators for reading.
+Mon Oct 14 12:32:52 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * io.c (make_readconv): drop decorators for writing.
+ * ruby.c (process_options): load statically linked extensions before
+ rubygems, because of ext/thread.
- * io.c (do_writeconv): existing writeconv is not the condition to raise
- ArgumentError. should check textmode or not.
+ * ruby.c (process_options): use gem_prelude instead of requiring
+ rubygems directly when --enable=gems is given.
- * test/ruby/test_io_m17n.rb
- (TestIO_M17N#test_{cr,lf,crlf}_decorator_on_stdout): test above
- changes.
+ * 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>
-Sat Feb 11 03:19:45 2012 NAKAMURA Usaku <usa@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.
- * 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.
+ * lib/mkmf.rb (create_makefile): ranlib on static library, not DLLIB.
-Sat Feb 11 03:17:41 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+Sun Oct 13 23:53:40 2013 Andrew Grimm <andrew.j.grimm@gmail.com>
- * 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].
+ * vsnprintf.c: Fix spelling from compliment to complement.
+ Patch by @agrimm.
-Sat Feb 11 03:13:27 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * include/ruby/ruby.h: ditto
- * transcode.c: enabled econv newline option.
+Sun Oct 13 20:59:27 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Sat Feb 11 02:39:09 2012 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
+ * vm.c (Init_BareVM): initialize defined_module_hash here,
+ Init_top_self() is too late to register core classes/modules.
- * variable.c (set_const_visibility): clear inine-cache when constant's
- visibility is modified. [ruby-dev:44929]
+ * compile.c (compile_array_): no hash to merge if it is empty.
- * test/ruby/test_module.rb (test_private_constants_clear_inlinecache):
- add test for it.
+ * vm.c (m_core_hash_merge_kwd): just check keys if only one argument
+ is given, without merging.
-Sat Feb 11 02:39:09 2012 Yusuke Endoh <mame@tsg.ne.jp>
+Sat Oct 12 06:35:01 2013-10-11 Eric Hodel <drbrain@segment7.net>
- * variable.c (set_const_visibility): print a warning when no argument
- is passwd to Module#private_constant. [ruby-list:48558]
+ * lib/rake: Update to rake 10.1.0
+ * bin/rake: ditto.
+ * test/rake: ditto.
- * vm_method.c (set_method_visibility): ditto for
- Module#private_class_method.
+ * NEWS: Update NEWS to include rake 10.1.0 and links to release notes.
-Sat Feb 11 02:39:09 2012 Yusuke Endoh <mame@tsg.ne.jp>
+Sat Oct 12 03:26:04 2013 Koichi Sasada <ko1@atdot.net>
- * 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]
+ * class.c, variable.c, gc.c (rb_class_tbl): removed.
- * test/ruby/test_module.rb: add a test for above.
+ * 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.
-Sat Feb 11 02:39:09 2012 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
+ * gc.c (RGENGC_PRINT_TICK): disable (revert).
- * variable.c (set_const_visibility): clear inine-cache when constant's
- visibility is modified. [ruby-dev:44929]
+Sat Oct 12 03:24:49 2013 Koichi Sasada <ko1@atdot.net>
- * test/ruby/test_module.rb (test_private_constants_clear_inlinecache):
- add test for it.
+ * vm_method.c (rb_gc_mark_unlinked_live_method_entries):
+ revert last commit to introduce debug prints.
-Sat Feb 11 02:39:09 2012 Yusuke Endoh <mame@tsg.ne.jp>
+Fri Oct 11 21:05:19 2013 Koichi Sasada <ko1@atdot.net>
- * variable.c (set_const_visibility): print a warning when no argument
- is passwd to Module#private_constant. [ruby-list:48558]
+ * internal.h, parse.y: use `full_mark' instead of `full_marking'.
- * vm_method.c (set_method_visibility): ditto for
- Module#private_class_method.
+Fri Oct 11 20:58:16 2013 Koichi Sasada <ko1@atdot.net>
-Sat Feb 11 02:39:09 2012 Yusuke Endoh <mame@tsg.ne.jp>
+ * gc.c: use terminology `full_mark' instead of `minor_gc'
+ in mark functions.
- * 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]
+Fri Oct 11 20:46:09 2013 Koichi Sasada <ko1@atdot.net>
- * test/ruby/test_module.rb: add a test for above.
+ * gc.c: use __GNUC__ instead of __GCC__.
-Sat Feb 11 02:26:51 2012 Martin Bosslet <Martin.Bosslet@googlemail.com>
+Fri Oct 11 20:35:59 2013 Koichi Sasada <ko1@atdot.net>
- * lib/openssl/buffering.rb: Force multi-byte strings to be treated as
- binary data.
- * test/openssl/test_ssl.rb: Add test for it.
+ * 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.
- Thanks to Niklas Baumstark for reporting the issue!
+ * internal.h: change prototype of rb_gc_mark_symbols().
- [Ruby 1.9 - Bug #5233] [ruby-core:39120]
+Fri Oct 11 19:27:22 2013 Akinori MUSHA <knu@iDaemons.org>
-Fri Feb 10 17:25:28 2012 Tanaka Akira <akr@fsij.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.
- * 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]
+ * ruby-forward-sexp is inappropriate here because it moves the
+ cursor past the keyword.
-Fri Feb 10 17:02:12 2012 okkez <okkez000@gmail.com>
+ * Fix a reversed looking-back check in
+ ruby-electric--block-beg-keyword-at-point-p.
- * thread_pthread.c (rb_thread_create_timer_thread): fix memory
- leak. [ruby-dev:44904] [Bug #5688]
+ * Do not add end again if space or return is hit repeatedly
+ after a block beginning keyword.
-Fri Feb 10 05:22:32 2012 NARUSE, Yui <naruse@ruby-lang.org>
+Fri Oct 11 18:12:47 2013 Koichi Sasada <ko1@atdot.net>
- * cont.c (fiber_setcontext): Use longjmp() instead of swapcontext() on
- FreeBSD 9. [ruby-dev:41316] [Bug #3295] [Bug #5526]
+ * ext/objspace/gc_hook.c: prohibit reentrant.
-Fri Feb 10 05:13:12 2012 Ayumu AIZAWA <ayumu.aizawa@gmail.com>
+Fri Oct 11 18:11:34 2013 Koichi Sasada <ko1@atdot.net>
- * object.c: Added examples for Object#is_a? and
- Object#instance_of? patcheed from Manoj Kumar.
- [Bug #5880] [ruby-core:42057]
+ * vm_trace.c (rb_postponed_job_flush): fix bit operation.
-Fri Feb 10 05:11:43 2012 NARUSE, Yui <naruse@ruby-lang.org>
+Fri Oct 11 17:33:24 2013 Akinori MUSHA <knu@iDaemons.org>
- * io.c (argf_next_argv): reset ARGF.next_p on ARGV.replace.
- r34409 breaks replacing ARGV.
- [ruby-dev:45160] [Bug #5952]
+ * 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.
-Fri Feb 10 05:11:43 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * 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.
- * io.c (argf_close): skip stdin, which should be readable again.
- [ruby-dev:45160] [Bug #5952]
+ * Add ruby-electric-mode-hook.
- * io.c (argf_readlines): reinitialize after all read to be
- readable again.
+ * Use a remap in binding ruby-electric-delete-backward-char.
-Fri Feb 9 01:36:19 2012 Martin Bosslet <Martin.Bosslet@googlemail.com>
+ * 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
- * backport r34482 from trunk
+ * block-mid keywords (then, else, elsif, when, rescue and
+ ensure) also become electric with automatic reindentation.
- * ext/openssl/ossl_ssl.c: Add SSL constants and allow to unset SSL
- option to prevent BEAST attack. See [Bug #5353].
+ * Add standardized comments for ELPA integration.
- In OpenSSL, OP_DONT_INSERT_EMPTY_FRAGMENTS is used to prevent
- TLS-CBC-IV vulunerability 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)
+ * Fix interaction with smartparens-mode by disabling its end
+ keyword completion, since ruby-electric has become more clever
+ at it.
- 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.
+ * The custom variable `ruby-electric-keywords` is changed to
+ `ruby-electric-keywords-alist`, allowing user to fine-grained
+ configuration.
- 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.
+Fri Oct 11 16:53:28 2013 Koichi Sasada <ko1@atdot.net>
- Following is an example to enable 0/n split for BEAST prevention.
+ * vm_trace.c (rb_postponed_job_flush): simplify.
- ctx.options = OP_ALL & ~OP_DONT_INSERT_EMPTY_FRAGMENTS
+Fri Oct 11 03:36:49 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * test/openssl/test_ssl.rb: Test above option exists.
+ * thread.c (rb_threadptr_execute_interrupts): flush postponed job only
+ once at last.
-Thu Feb 9 17:08:20 2012 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
+ * 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]
- * cont.c (cont_mark): mark original Thread object from saved_thread.
- [ruby-dev:44567] [Bug #5386]
+Thu Oct 10 23:04:00 2013 Masaki Matsushita <glass.saga@gmail.com>
-Thu Feb 9 17:05:07 2012 NARUSE, Yui <naruse@ruby-lang.org>
+ * array.c (rb_ary_or): remove unused variables.
- * cont.c (HAVE_GETCONTEXT): see getcontext(3) because DragonFly BSD
- x64 port doesn't have it.
+Thu Oct 10 23:01:16 2013 Masaki Matsushita <glass.saga@gmail.com>
-Thu Feb 9 16:19:04 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+ * array.c (rb_ary_or): use rb_hash_keys().
- * test/ruby/memory_status.rb (Memory::Win32): 64bit support.
+Thu Oct 10 21:36:16 2013 Masaki Matsushita <glass.saga@gmail.com>
-Thu Feb 9 16:19:04 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+ * array.c (rb_ary_compact_bang): use ary_resize_smaller().
- * ext/dl/lib/value.rb (DL::ValueUtil.{unsigned_value,signed_value}):
- currenly pack/unpack does not accept "q!" and "Q!".
+Thu Oct 10 17:25:28 2013 Koichi Sasada <ko1@atdot.net>
-Thu Feb 9 16:19:04 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+ * vm.c (vm_exec): support :b_return event for "lambda{return}.call".
+ [Bug #8622]
- * ext/fiddle/conversions.c (value_to_generic): src is not guranteed as
- a Bignum if the type is LONG_LONG. it may be a Fixnum if the value
- is small.
+ * test/ruby/test_settracefunc.rb: add a test.
-Thu Feb 9 16:19:04 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+Thu Oct 10 13:52:37 2013 Koichi Sasada <ko1@atdot.net>
- * ext/dl/lib/types.rb: Win64 support.
+ * 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.
-Thu Feb 9 11:11:15 2012 Hiroshi Shirosaki <h.shirosaki@gmail.com>
+ * vm_core.h: change data structure.
- * 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]
+Thu Oct 10 11:11:33 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Thu Feb 9 11:11:15 2012 Tanaka Akira <akr@fsij.org>
+ * vm.c (Init_VM): hide also the singleton class of frozen-core, not
+ only frozen-core itself.
- * 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]
+Thu Oct 10 06:02:08 2013 Koichi Sasada <ko1@atdot.net>
-Thu Feb 9 11:11:15 2012 Tanaka Akira <akr@fsij.org>
+ * test/ruby/test_rand.rb: fix r43224. local variable `e' is
+ no longer available.
- * ext/dbm/extconf.rb: detect gdbm_version in libgdbm.
+Thu Oct 10 00:02:35 2013 Yusuke Endoh <mame@tsg.ne.jp>
- * ext/dbm/dbm.c: make DBM::VERSION more informative for gdbm, qdbm and
- Berkeley DB 1.x. [ruby-dev:44944]
+ * 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.
-Thu Feb 9 07:32:40 2012 NARUSE, Yui <naruse@ruby-lang.org>
+Wed Oct 9 23:57:02 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * numeric.c (rb_enc_uint_char): raise RangeError when added codepoint
- is invalid. [Feature #5855] [Bug #5863] [Bug #5864]
+ * object.c (id_for_attr): avoid inadvertent symbol creation.
- * string.c (rb_str_concat): ditto.
+Wed Oct 9 18:03:01 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * 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.
+ * vm_method.c (rb_attr): preserve encoding of the attribute ID in
+ error message.
- * regenc.c (onigenc_mb2_code_to_mbclen): rearrange error code.
+Wed Oct 9 17:40:16 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * enc/euc_jp.c (code_to_mbclen): ditto.
+ * 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]
- * enc/shift_jis.c (code_to_mbclen): ditto.
+Wed Oct 9 13:53:14 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Thu Feb 9 07:28:43 2012 NARUSE, Yui <naruse@ruby-lang.org>
+ * compar.c (cmp_eq): fail if recursion. [ruby-core:57736] [Bug #9003]
- * test/pathname/test_pathname.rb: not read but binread.
- patched by Benoit Daloze, [ruby-core:42440] [Bug #5984]
+ * thread.c (rb_exec_recursive_paired_outer): new function which is
+ combination of paired and outer variants.
-Wed Feb 8 22:29:59 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Wed Oct 9 09:18:14 2013 Koichi Sasada <ko1@atdot.net>
- * string.c (rb_str_modify_expand): fix memory leak.
+ * 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().
-Wed Feb 8 10:58:45 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * ext/-test-/debug/profile_frames.c,
+ test/-ext-/debug/test_profile_frames.rb: fix a test for this change.
- * ext/readline/readline.c (readline_attempted_completion_function):
- respect encodings. [Bug #5941]
-Wed Feb 8 10:56:00 2012 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+Wed Oct 9 00:55:51 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * ext/readline/readline.c (readline_attempted_completion_function):
- fix compile error.
+ * load.c (load_lock): display backtrace to $stderr at circular
+ require.
-Wed Feb 8 10:56:00 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * vm_backtrace.c (rb_backtrace_print_to): new function to print
+ backtrace to the given output.
- * ext/readline/readline.c (readline_attempted_completion_function):
- empty completion result does not mean memory error.
+Tue Oct 8 21:03:35 2013 Koichi Sasada <ko1@atdot.net>
-Wed Feb 8 10:54:49 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * 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)
- * 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]
+ * iseq.c (rb_iseq_klass), internal.h: add new internal function
+ rb_iseq_method_name().
-Wed Feb 8 10:52:51 2012 NARUSE, Yui <naruse@ruby-lang.org>
+ * ext/-test-/debug/profile_frames.c (profile_frames),
+ test/-ext-/debug/test_profile_frames.rb: add a test.
- * 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.
+Tue Oct 8 16:11:11 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * ext/readline/readline.c (hist_set): use history_replace_offset_func.
+ * array.c (rb_ary_uniq): use rb_hash_values(), as well as the case no
+ block is given.
-Wed Feb 8 10:52:36 2012 NARUSE, Yui <naruse@ruby-lang.org>
+ * internal.h: define rb_hash_values() as internal API.
- * ext/readline/readline.c (Init_readline): fix wrong condition.
+Tue Oct 8 13:53:21 2013 Masaki Matsushita <glass.saga@gmail.com>
-Wed Feb 8 10:50:11 2012 Naohisa Goto <ngotogenome@gmail.com>
+ * array.c (rb_ary_uniq): use rb_hash_keys().
- * 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]
+ * internal.h: define rb_hash_keys() as internal API.
-Wed Feb 8 10:38:36 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * hash.c (rb_hash_keys): ditto.
- * Makefile.in (CFLAGS): append ARCH_FLAG.
+Tue Oct 8 10:56:39 2013 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
- * configure.in (ARCH_FLAG): exclude from CFLAGS.
+ * 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]
-Wed Feb 08 09:19:00 2012 Martin Bosslet <Martin.Bosslet@googlemail.com>
+Tue Oct 8 05:58:12 2013 Tanaka Akira <akr@fsij.org>
- * ext/openssl/ossl_cipher.c: Add warning about key as IV.
+ * lib/time.rb (Time.strptime): Time.strptime('0', '%s') returns local
+ time Time object as Ruby 2.0 and before.
-Wed Feb 8 10:37:31 2012 Martin Bosslet <Martin.Bosslet@googlemail.com>
+Tue Oct 8 05:40:37 2013 Eric Hodel <drbrain@segment7.net>
- * ext/openssl/ossl_cipher.c: Update and complete documentation.
+ * .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
-Wed Feb 08 09:57:33 2012 Martin Bosslet <Martin.Bosslet@googlemail.com>
+Tue Oct 8 04:28:25 2013 Akinori MUSHA <knu@iDaemons.org>
- * 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]
+ * 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.
-Wed Feb 8 10:34:59 2012 TAKAO Kouji <kouji@takao7.net>
+Tue Oct 8 04:12:45 2013 Akinori MUSHA <knu@iDaemons.org>
- * 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]
+ * misc/ruby-additional.el (ruby-mode-set-encoding): Add a missing
+ else clause to unbreak with `cp932`, etc.
-Wed Feb 8 09:47:52 2012 Tanaka Akira <akr@fsij.org>
+ * misc/ruby-mode.el (ruby-mode-set-encoding): Ditto.
- * test/ruby/test_sleep.rb (test_sleep_5sec): 0.1sec tolerance is too
- small for busy environment.
+Tue Oct 8 03:57:34 2013 Akinori MUSHA <knu@iDaemons.org>
-Wed Feb 8 09:45:23 2012 Tanaka Akira <akr@fsij.org>
+ * misc/ruby-additional.el (ruby-mode-set-encoding): Use
+ `default-buffer-file-coding-system` if the :prefer-utf-8
+ property is not available.
- * test/dbm/test_dbm.rb: split tests for read only database.
+ * misc/ruby-mode.el (ruby-mode-set-encoding): Ditto.
- * test/gdbm/test_gdbm.rb: ditto.
+ * misc/ruby-additional.el (ruby-encoding-map): Override the
+ default value.
-Wed Feb 8 09:43:48 2012 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
+Tue Oct 8 03:19:19 2013 Akinori MUSHA <knu@iDaemons.org>
- * error.c (name_err_mesg_to_str): clear rb_thread_t::errinfo when
- ignore exception under rb_protect(). [ruby-core:41612] [Bug #5755]
+ * misc/ruby-additional.el (ruby-mode-set-encoding): Add support
+ for `prefer-utf-8` which was introduced in Emacs trunk.
- * test/ruby/test_exception.rb (test_exception_in_name_error_to_str):
- add a corresponding test.
+ * 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.
-Wed Feb 8 09:36:42 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * misc/ruby-additional.el (ruby-mode-set-encoding): Add support
+ for encodings mapped to nil in `ruby-encoding-map`.
- * encoding.c (require_enc): reject only loading from untrusted
- load paths. [ruby-dev:44541] [Bug #5279]
+ * 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.
- * transcode.c (load_transcoder_entry): ditto.
+ * misc/ruby-additional.el (ruby-encoding-map): Add type
+ declaration for better customize UI.
-Wed Feb 8 09:36:42 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * misc/ruby-mode.el: Ditto for the above.
- * encoding.c (load_encoding): predefined encoding names are safe.
- [ruby-dev:44469] [Bug #5279]
+Tue Oct 8 00:14:53 2013 Akinori MUSHA <knu@iDaemons.org>
- * transcode.c (load_transcoder_entry): ditto.
+ * misc/ruby-additional.el: Add a standard header and footer,
+ including (provide 'ruby-additional).
-Tue Feb 7 14:29:16 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Mon Oct 7 22:52:45 2013 Akinori MUSHA <knu@iDaemons.org>
- * st.c (st_foreach): should not yield same pair when checking
- after unpacking.
+ * 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.
-Tue Feb 7 14:03:45 2012 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
+ * misc/ruby-electric.el (ruby-electric-keywords): New custom
+ variable to replace `ruby-electric-simple-keywords-re` with.
- * lib/tempfile.rb (Tempfile#_close): clear @tempfile and @data[1] even
- when exception is raised at @tempfile.close. [ruby-dev:45113]
+Mon Oct 7 22:52:16 2013 Akinori MUSHA <knu@iDaemons.org>
- * lib/tempfile.rb (Tempfile#unlink): fix a typo.
+ * 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.
-Tue Feb 7 14:02:32 2012 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
+Mon Oct 7 22:45:20 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * 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]
+ * cont.c (FIBER_USE_NATIVE): split long conditions.
-Tue Feb 7 13:59:26 2012 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
+Mon Oct 7 20:29:31 2013 Zachary Scott <e@zzak.io>
- * gc.c (run_finalizer): clear rb_thread_t::errinfo when ignore
- an exception under rb_protect(). [ruby-dev:45113]
+ * lib/time.rb: [DOC] typo in Time.rb overview by @srt32 [Fixes GH-416]
+ https://github.com/ruby/ruby/pull/416
-Mon Feb 6 15:34:47 2012 Tanaka Akira <akr@fsij.org>
+Mon Oct 7 20:07:20 2013 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]
+ * lib/time.rb (Time.strptime): Use :offset.
+ Patch by Felipe Contreras. [ruby-core:57694]
-Mon Feb 6 15:34:47 2012 Tanaka Akira <akr@fsij.org>
+Mon Oct 7 16:47:27 2013 Koichi Sasada <ko1@atdot.net>
- * ruby.c (fill_standard_fds): new function to open closed standard
- file descriptors.
- (ruby_sysinit): call fill_standard_fds.
+ * test/-ext-/debug/test_profile_frames.rb: rename class C to
+ something long name because one test depends on absence of
+ class ::C.
-Mon Feb 6 15:19:17 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+Mon Oct 7 16:33:10 2013 Koichi Sasada <ko1@atdot.net>
- * 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]
+ * ext/-test-/debug/profile_frames.c:
+ test/-ext-/debug/test_profile_frames.rb: add a test for new C-APIs.
-Mon Feb 6 15:01:55 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Mon Oct 7 16:12:36 2013 Koichi Sasada <ko1@atdot.net>
- * vm_eval.c (vm_call0): should pass block to enumerators. patched
- by Kazuki Tsujimoto. [ruby-dev:44961][Bug #5731]
+ * 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.
- * vm_eval.c (method_missing), vm_insnhelper.c (vm_call_method):
- ditto. patched by satoshi shiba.
+ * 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.
-Mon Feb 6 21:52:20 2012 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+ 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.
- * 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.
+ * vm_backtrace.c: implement above APIs.
- Reported by Rainer Orth <ro AT cebitec.uni-bielefeld.de>,
- patch by George Koehler <xkernigh AT netscape.net>.
+ * iseq.c (rb_iseq_klass): return local_iseq's class.
-Mon Feb 6 21:21:46 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+Mon Oct 7 14:26:01 2013 Koichi Sasada <ko1@atdot.net>
- * test/unit/assertions.rb (MINI_DIR): quick dirty hack to get rid of
- warnings when using assert/assert_respond_to.
+ * proc.c: catch up last commit.
+ Type of return value of rb_iseq_first_lineno() is now VALUE.
-Mon Feb 6 20:38:19 2012 NARUSE, Yui <naruse@ruby-lang.org>
+ * vm_insnhelper.c (argument_error): ditto.
- * file.c (file_expand_path): reset coderange after expanding path.
+ * vm_method.c (rb_method_entry_make): ditto.
-Mon Feb 6 20:32:17 2012 Tadayoshi Funaba <tadf@dotrb.org>
+Mon Oct 7 14:07:45 2013 Koichi Sasada <ko1@atdot.net>
- * ext/date/date_strptime.c: moved detector of leftover.
+ * 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);
-Mon Feb 6 20:32:17 2012 Tadayoshi Funaba <tadf@dotrb.org>
+ * 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.
- * ext/date/date_parse.c: [ruby-core:42173].
+ * proc.c. vm_insnhelper.c, vm_method.c: catch up this change.
-Mon Feb 6 20:31:35 2012 Tadayoshi Funaba <tadf@dotrb.org>
+Sun Oct 6 08:37:39 2013 Zachary Scott <e@zzak.io>
- * ext/date/date_core.c: uses to_integer instead.
- * test/date/test_switch_hitter.rb: added a test.
+ * lib/webrick.rb: [DOC] fix grammar in WEBrick overview [Fixes GH-413]
+ Based on patch by @chastell https://github.com/ruby/ruby/pull/413
-Mon Feb 6 20:31:35 2012 NARUSE, Yui <naruse@ruby-lang.org>
+Sat Oct 5 11:21:01 2013 Aaron Pfeifer <aaron.pfeifer@gmail.com>
- * ext/date/date_core.c (wholenum): fix the type of the return value.
+ * thread.c (terminate_atfork_i): fix locking mutexes not unlocked in
+ forks when not tracked in thread. [ruby-core:55102] [Bug #8433]
-Mon Feb 6 20:31:35 2012 Tadayoshi Funaba <tadf@dotrb.org>
+Fri Oct 4 19:54:09 2013 Zachary Scott <e@zzak.io>
- * ext/date/date_core.c: [ruby-dev:45008].
+ * ext/dbm/dbm.c: [DOC] Fix wrong constant name in DBM by @edward
+ [Fixes GH-409] https://github.com/ruby/ruby/pull/409
-Mon Feb 6 16:38:56 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+Fri Oct 4 19:49:42 2013 Aman Gupta <ruby@tmm1.net>
- * win32/win32.c (unixtime_to_filetime): should check the return value
- of localtime(). reported by snowjail at gmail.com.
- [ruby-dev:44838] [Bug #5596]
+ * gc.c: rename heap.free_num as heap.swept_num to clarify meaning and
+ avoid confusion with objspace_free_num().
-Mon Feb 6 16:36:25 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Fri Oct 4 19:02:01 2013 Aman Gupta <ruby@tmm1.net>
- * 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
+ * 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.
-Mon Feb 6 16:31:16 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+Fri Oct 4 18:53:42 2013 Aman Gupta <ruby@tmm1.net>
- * 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.
+ * gc.c: add rb_objspace.limit to keep accurate count of total heap
+ slots [ruby-core:57633] [Bug #8983]
-Mon Feb 6 16:21:57 2012 NARUSE, Yui <naruse@ruby-lang.org>
+Fri Oct 4 09:32:33 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * file.c (file_expand_path): reset coderange after expanding path.
+ * lib/csv.rb (CSV.foreach): support enumerator. based on a patch by
+ Hanmac (Hans Mackowiak) at [ruby-core:57643]. [ruby-core:57283]
+ [Feature #8929]
-Mon Feb 6 00:06:39 2012 NARUSE, Yui <naruse@ruby-lang.org>
+Thu Oct 3 18:20:47 2013 Nobuyoshi Nakada <nobu@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
+ * win32/win32.c (console_emulator_p, constat_handle): disable built-in
+ console colorizing when console-emulator-like DLL is injected.
+ [Feature #8201]
-Fri Feb 3 16:16:10 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Thu Oct 3 18:01:44 2013 Koichi Sasada <ko1@atdot.net>
- * test/ruby/envutil.rb (EnvUtil.invoke_ruby): yield also child pid
- in block form.
+ * gc.c: define gc_profile_record::allocated_size if
+ CALC_EXACT_MALLOC_SIZE is true.
-Fri Feb 3 16:16:10 2012 Hiroshi Shirosaki <h.shirosaki@gmail.com>
+Thu Oct 3 13:42:51 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * test/ruby/test_thread.rb
- (TestThreadGroup#test_thread_timer_and_interrupt): skip exit status
- assertion because we cannot get signal status on Windows.
+ * common.mk (yes-test-sample): use RUNRUBY instead of MINIRUBY to set
+ runtime library path and run the built ruby. [Bug #8971]
- * win32/win32.c (CreateChild): create process group to receive the
- signal by GenerateConsoleCtrlEvent().
+Thu Oct 3 00:17:15 2013 Akinori MUSHA <knu@iDaemons.org>
- * 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]
+ * misc/ruby-additional.el: Properly quote the body. An unquoted
+ body given to eval-after-load is evaluated immediately!
-Fri Feb 3 16:16:10 2012 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
+Wed Oct 2 21:38:30 2013 Yusuke Endoh <mame@tsg.ne.jp>
- * test/ruby/envutil.rb (invoke_ruby): remove :timeout option before
- pass it to Kernel#spawn.
+ * 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.
-Fri Feb 3 10:10:02 2012 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
+Wed Oct 2 21:37:04 2013 Yusuke Endoh <mame@tsg.ne.jp>
- * 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().
+ * random.c (make_seed_value): a local array declaration was accessed
+ out of scope. Coverity Scan found this bug.
-Fri Feb 3 10:10:02 2012 NARUSE, Yui <naruse@ruby-lang.org>
+Wed Oct 2 18:52:40 2013 Koichi Sasada <ko1@atdot.net>
- * 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.
+ * gc.c: relax GC condition due to malloc_limit.
-Wed Feb 1 09:50:10 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * gc.c (GC_MALLOC_LIMIT_MAX): change default value
+ (256MB -> 512MB) and permit zero to ignore max value.
- * doc/re.rdoc (Repetition): fix typo. reported by Ori Avtalion
- and patched by Zachary Scott. [Bug #5947]
+ * gc.c (vm_malloc_increase, vm_xrealloc): do not cause GC on realloc.
-Tue Jan 24 11:38:05 2012 NARUSE, Yui <naruse@ruby-lang.org>
+ * gc.c (gc_before_sweep): change debug messages.
- * lib/uri/common.rb (URI.encode_www_form_component): initialize on
- requiring to support JRuby, which runs parallel multithreads.
- [ruby-core:42222] [Bug #5925]
+Wed Oct 2 16:26:49 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * lib/uri/common.rb (URI.decode_www_form_component): initialize on
+ * io.c (rb_io_close_read): duplex IO should wait its child process
+ even after close_read.
-Sat Jan 28 05:53:34 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Wed Oct 2 15:39:13 2013 NARUSE, Yui <naruse@ruby-lang.org>
- * lib/irb/completion.rb (IRB::InputCompletor::CompletionProc):
- ignore non-string name modules. [ruby-core:42244][Bug #5938]
+ * 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
-Mon Jan 23 18:18:58 2012 NARUSE, Yui <naruse@ruby-lang.org>
+Wed Oct 2 14:19:57 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * encoding.c (rb_enc_compatible): fix segv on symbols.
- [ruby-core:42204] [Bug #5921]
+ * io.c (rb_io_close_write): detach tied IO for writing before closing
+ to get rid of race condition. [ruby-list:49598]
-Tue Jan 17 17:18:41 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * 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.
- * configure.in (SPT_TYPE): enable as SPT_REUSEARGV on Darwin.
+Tue Oct 1 23:44:00 2013 Charlie Somerville <charliesome@ruby-lang.org>
- * missing/setproctitle.c (ruby_init_setproctitle): changed prefix.
+ * 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.
-Mon Jan 16 16:41:53 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Tue Oct 1 22:03:48 2013 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
+ * lib/tempfile.rb (Tempfile#unlink): finalizer is no longer needed
+ after unlinking. patched by by normalperson (Eric Wong) at
+ [ruby-core:56521] [Bug #8768]
-Fri Jan 13 15:22:43 2012 Tanaka Akira <akr@fsij.org>
+Tue Oct 1 20:54:33 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * time.c (TIME_COPY_GMT): copy vtm.utc_offset and vtm.zone too.
- patch by Tomoyuki Chikanaga.
- [ruby-dev:44827] [Bug #5586]
+ * file.c (stat_new_0): constify.
-Thu Jan 12 13:52:13 2012 NARUSE, Yui <naruse@ruby-lang.org>
+ * file.c (rb_stat_new): constify and export. based on a patch by
+ Hanmac (Hans Mackowiak) at [ruby-core:53225]. [Feature #8050]
- * 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.
+Tue Oct 1 16:03:42 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * cont.c (cont_restore_1): revert workaround introduced in r32201.
+ * include/ruby/ruby.h (ruby_safe_level_4_warning): needed by extension
+ libraries which check safe level 4. [ruby-dev:47517] [Bug #8652]
-Thu Jan 12 01:40:33 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+Mon Sep 30 23:14:36 2013 Zachary Scott <e@zzak.io>
- * test/ruby/test_io.rb (TestIO#test_autoclose): Tempfile.new doesn't
- accept the block argument.
+ * ext/objspace/objspace.c: [DOC] Cleaned up many rdoc formatting
+ issues and several duplicate grammar bugs.
-Sat Jan 7 22:46:36 2012 Kouhei Sutou <kou@cozmixng.org>
+Mon Sep 30 23:01:01 2013 Zachary Scott <e@zzak.io>
- * lib/rexml/parsers/baseparser.rb: use private instead of _xxx
- method name. This is Ruby code not Python code.
- refs #5696
+ * ext/objspace/object_tracing.c: [DOC] Adjust rdoc formatting and fix
+ small grammar typo
-Tue Jan 03 23:57:37 2012 Ayumu AIZAWA <ayumu.aizawa@gmail.com>
+Mon Sep 30 17:28:39 2013 Koichi Sasada <ko1@atdot.net>
- * lib/rexml/parsers/baseparser.rb: rexml BaseParser uses
- instance_eval unnecessarily on listener add.
- patch from Charles Nutter. [Bug #5696] [ruby-core:41437]
+ * ext/objspace/object_tracing.c: [DOC] add some notes for
+ ObjectSpace::trace_object_allocations.
-Tue Jan 03 19:13:05 2012 Ayumu AIZAWA <ayumu.aizawa@gmail.com>
+Mon Sep 30 16:46:58 2013 Koichi Sasada <ko1@atdot.net>
- * test/rexml/test_sax.rb: add require 'rexml/document'.
- [Backport #5834] [ruby-dev:45079]
+ * 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.
-Tue Jan 3 19:05:42 2012 Naohisa Goto <ngotogenome@gmail.com>
+ * test/objspace/test_objspace.rb: add a test for new methods.
- * include/ruby/defines.h (FLUSH_REGISTER_WINDOWS): move sparc asm code
- to a separete 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.
+ * NEWS: add a description for new methods.
-Mon Jan 2 23:52:20 2012 TAKAO Kouji <kouji@takao7.net>
+Mon Sep 30 11:18:04 2013 Koichi Sasada <ko1@atdot.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]
+ * 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 Jan 2 23:47:58 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Mon Sep 30 10:40:20 2013 Shugo Maeda <shugo@ruby-lang.org>
- * tool/rbinstall.rb (install_recursive, bin-comm): split mere
- string not path name. [ruby-core:40462] [Bug #5492]
+ * vm_method.c (rb_undef): raise a NameError if the original method
+ of a refined method is not defined.
-Mon Jan 2 23:41:57 2012 Tajima Akil <artonx@yahoo.co.jp>
+ * vm_insnhelper.c (rb_method_entry_eq): added NULL check to avoid SEGV.
- * win32/Makefile.sub (CONFIG_H): have stdint.h if VC2010.
- [Bug #5243]
+ * test/ruby/test_refinement.rb: related test.
-Mon Jan 2 21:40:45 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+Sun Sep 29 23:45:42 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * tool/merger.rb (#version_up): version.h date should be Japanese
- locale date.
+ * parse.y (rb_id_attrset, intern_str): allow junk attrset ID for
+ Struct.
-Mon Jan 2 21:36:56 2012 Luis Lavena <luislavena@gmail.com>
+ * 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.
- * configure.in: check -fno-omit-frame-pointer acceptance and usage
- under MinGW. [ruby-core:39957] [Bug #5407]
+Sun Sep 29 18:45:05 2013 Kazuki Tsujimoto <kazuki@callcc.net>
-Mon Jan 2 20:05:10 2012 NARUSE, Yui <naruse@ruby-lang.org>
+ * 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]
- * include/ruby/ruby.h (SIZE_MAX): define SIZE_MAX if not defined.
- patched by The Written Word Inc. [ruby-core:40422] [Bug #5489]
+ * test/ruby/test_keyword.rb: tests for the above.
-Mon Jan 2 20:00:01 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Sat Sep 28 23:25:56 2013 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]
+ * math.c (math_log, math_log2, math_log10): fix for Bignum argument.
+ numbits should be add only when right shifted.
-Mon Jan 2 19:27:18 2012 Yusuke Endoh <mame@tsg.ne.jp>
+Sat Sep 28 14:30:29 2013 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
- * 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/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.
- * test/coverage/test_coverage.rb: add a test for above.
+Sat Sep 28 00:19:41 2013 Shugo Maeda <shugo@ruby-lang.org>
-Mon Jan 2 19:08:54 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+ * ext/curses/extconf.rb: check the size of chtype.
- * thread_pthread.c (gvl_yield): don't prevent concurrent sched_yield().
- [Bug #5130] [ruby-core:38647]
+ * ext/curses/curses.c (NUM2CH, CH2NUM): use proper macros for
+ the size of chtype.
-Mon Jan 2 18:54:52 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+ [ruby-core:56090] [Bug #8659]
- * win32/configure.bat: disable delayed expansion of enironment variable.
- [Bug #5517] [ruby-core:40531]
+Fri Sep 27 18:33:23 2013 Koichi Sasada <ko1@atdot.net>
-Wed Dec 28 11:22:45 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * gc.c: add two GC tuning environment variables.
+ RUBY_GC_MALLOC_LIMIT_MAX and RUBY_GC_MALLOC_LIMIT_GROWTH_FACTOR.
+ See r43067 for details.
- * lib/fileutils.rb (FileUtils::Entry_#entries): use utility method
- instead of typoed regexp. [ruby-core:41829] [Bug #5817]
+ * gc.c (rb_gc_set_params): refactoring. And change verbose notation.
+ Mostly duplicated functions get_envparam_int/double is not cool.
+ Please rewrite it.
-Thu Dec 15 10:44:54 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * test/ruby/test_gc.rb: fix a test for this change.
- * 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]
+Fri Sep 27 17:44:41 2013 Koichi Sasada <ko1@atdot.net>
-Wed Dec 14 15:28:31 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * gc.c (GC_MALLOC_LIMIT): 8,000,000 -> 8 * 1,024 * 1,024.
- * transcode.c (str_encode): about the extension of :fallback
- option since 1.9.3.
+Fri Sep 27 17:19:39 2013 Koichi Sasada <ko1@atdot.net>
-Tue Oct 4 06:43:47 2011 Aaron Patterson <aaron@tenderlovemaking.com>
+ * gc.c (gc_before_sweep): cast to size_t to suppress warnings.
- * ext/psych/lib/psych.rb: update psych version.
- * ext/psych/psych.gemspec: generate new gemspec for new version.
+Fri Sep 27 17:07:55 2013 Koichi Sasada <ko1@atdot.net>
-Tue Oct 4 06:29:55 2011 Aaron Patterson <aaron@tenderlovemaking.com>
+ * 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.
- * 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
+Fri Sep 27 16:32:27 2013 Koichi Sasada <ko1@atdot.net>
-Tue Oct 4 06:20:19 2011 Aaron Patterson <aaron@tenderlovemaking.com>
+ * 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.
- * ext/psych/lib/psych/scalar_scanner.rb: Match values against the
- floating point spec defined in YAML to avoid erronious parses.
- * test/psych/test_numeric.rb: corresponding test.
+ * 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.
-Tue Oct 4 05:59:24 2011 Aaron Patterson <aaron@tenderlovemaking.com>
+ * gc.c (ruby_gc_params_t): add initial_malloc_limit_factor and
+ initial_malloc_limit_max.
- * 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.
+ * gc.c (vm_malloc_prepare, vm_xrealloc): use vm_malloc_increase to
+ add and check malloc_increase.
-Tue Oct 4 05:47:23 2011 Aaron Patterson <aaron@tenderlovemaking.com>
+Fri Sep 27 01:05:00 2013 Zachary Scott <e@zzak.io>
- * 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.
+ * re.c: [DOC] arguments of Regexp::union receive #to_regexp [Bug #8205]
-Fri Sep 2 04:05:25 2011 Aaron Patterson <aaron@tenderlovemaking.com>
+Fri Sep 27 00:39:27 2013 Zachary Scott <e@zzak.io>
- * 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.
+ * struct.c: [DOC] grammar of ArgumentError in Struct.new [Bug #8936]
+ Patch by Prathamesh Sonpatki
-Wed Dec 7 19:04:22 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Thu Sep 26 22:11:56 2013 Zachary Scott <e@zzak.io>
- * configure.in (rpath): fix typo in the help string. a patch from
- Yuji Yamano <yyamano AT kt.rim.or.jp> in [ruby-list:48568].
+ * 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
-Wed Nov 30 18:22:10 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Thu Sep 26 22:08:11 2013 Zachary Scott <e@zzak.io>
- * complex.c (nucomp_rationalize): fix function. [ruby-core:40667]
- [Bug #5546]
+ * lib/observer.rb: [DOC] syntax improvement in example by @chastell
+ [Fixes GH-400] https://github.com/ruby/ruby/pull/400
-Thu Nov 17 10:36:46 2011 Aaron Patterson <aaron@tenderlovemaking.com>
+Thu Sep 26 22:03:15 2013 Zachary Scott <e@zzak.io>
- * ext/psych/lib/psych.rb (load_file): make sure opened yaml files are
- also closed. [ruby-core:41088]
+ * ext/digest/digest.c: [DOC] typo in overview by @chastell
+ [Fixes GH-399] https://github.com/ruby/ruby/pull/399
-Wed Nov 30 02:58:46 2011 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+Thu Sep 26 22:00:42 2013 Zachary Scott <e@zzak.io>
- * numeric.c (dbl2ival): Fix Float#divmod and #round for 32 bit
- platform. part 1 of [bug #5276]
+ * ext/openssl/ossl.c: [DOC] typo in example by @zoranzaric
+ [Fixes GH-401] https://github.com/ruby/ruby/pull/401
-Wed Nov 30 02:58:46 2011 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+Thu Sep 26 21:07:49 2013 Akinori MUSHA <knu@iDaemons.org>
- * numeric.c (flo_round): Fix criteria for 32 bits platform
- part 2 of [bug #5276]
+ * misc/ruby-electric.el (ruby-electric-delete-backward-char): Add
+ support for smartparens-mode.
-Wed Nov 30 02:37:32 2011 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+ * 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.
- * numeric.c (flo_round): Make Float#round round big values [bug
- #5272]
+Thu Sep 26 16:51:00 2013 Shota Fukumori <her@sorah.jp>
-Wed Nov 30 02:37:32 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * insns.def (opt_regexpmatch2): Check String#=~ hasn't overridden
+ before calling rb_reg_match().
- * numeric.c (flo_round): substitute machine dependent magic number.
+ * test/ruby/test_string.rb: Test for above.
-Wed Nov 30 02:28:22 2011 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+ * vm.c (vm_init_redefined_flag): Add BOP flag for String#=~
- * numeric.c (int_round): Integer#round always returns an Integer [Bug
- #5271]
+ [ruby-core:57385] [Bug #8953]
-Fri Nov 4 01:56:30 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+Thu Sep 26 16:43:42 2013 Akinori MUSHA <knu@iDaemons.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.
+ * 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.
-Mon Nov 7 23:39:23 2011 Tajima Akio <artonx@yahoo.co.jp>
+Thu Sep 26 16:24:00 2013 Charlie Somerville <charliesome@ruby-lang.org>
- * io.c (io_fflush): remove fsync().
- * io.c (rb_io_flush, rb_io_rewind): fsync() here.
- These pathces are backports of trunk r33651 for [Bug #5585]
+ * insns.def (opt_regexpmatch1): check Regexp#=~ is not defined before
+ calling rb_reg_match()
-Mon Oct 10 22:33:12 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+ * test/ruby/test_regexp.rb: add test
- * 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]
+ * vm.c (ruby_vm_redefined_flag): change type to short[]
-Tue Oct 4 16:17:50 2011 NARUSE, Yui <naruse@ruby-lang.org>
+ * vm.c (vm_redefinition_check_flag): return REGEXP_REDEFINED_OP_FLAG if
+ klass == rb_cRegexp
- * lib/time.rb (Time.strptime): use Time.at if d[:seconds] is set.
- Reported by Christopher Eberz. [ruby-core:39903] Bug #5399
+ * vm.c (vm_init_redefined_flag): setup BOP flag for Regexp#=~
-Tue Oct 4 11:44:10 2011 NARUSE, Yui <naruse@ruby-lang.org>
+ * vm_insnhelper.h: add REGEXP_REDEFINED_OP_FLAG
- * gc.c (rb_gc_set_params): ruby_verbose can be Qnil, so use RTEST.
+ [ruby-core:57385] [Bug #8953]
-Mon Oct 3 23:56:39 2011 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
+Thu Sep 26 14:46:49 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * 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]
+ * gc.c (mark_locations_array): disable AddressSanitizer. based on a
+ patch by halfie (Ruby Guy) at [ruby-core:57372].
+ [ruby-core:56155] [Bug #8680]
- * test/ruby/test_gc.rb (test_gc_parameter): add test for it.
+Wed Sep 25 17:41:29 2013 Koichi Sasada <ko1@atdot.net>
-Wed Sep 28 09:14:16 2011 Nobuyoshi Nakada <>
+ * 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]
- * 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 25 17:12:08 2013 Koichi Sasada <ko1@atdot.net>
-Tue Sep 13 15:02:48 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * 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).
- * lib/pstore.rb (PStore): always open in binary mode even if
- default encodings are set. [Bug #5311] [ruby-core:39503]
+ * 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.
-Sat Oct 8 07:31:42 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Wed Sep 25 16:58:33 2013 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]
+ * internal.h (rb_float_value, rb_float_new): move inline functions
+ from ruby/ruby.h.
-Sat Oct 8 06:51:46 2011 Eric Hodel <drbrain@segment7.net>
+ * numeric.c (rb_float_value, rb_float_new): define external functions
+ for extension libraries.
- * lib/rubygems: Update to RubyGems 1.8.11. Move Deprecate into the
- Gem namespace.
+Wed Sep 25 15:37:02 2013 Koichi Sasada <ko1@atdot.net>
-Sat Oct 8 06:37:08 2011 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
+ * test/rdoc/test_rdoc_generator_darkfish.rb: add a guard for windows.
- * 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]
+Wed Sep 25 09:53:11 2013 Eric Hodel <drbrain@segment7.net>
- * test/ruby/test_gc.rb (test_gc_parameter): add test for it.
+ * lib/rubygems: Fix CVE-2013-4363. Miscellaneous minor improvements.
-Sat Oct 8 06:26:24 2011 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
+ * test/rubygems: Tests for the above.
- * 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]
+Tue Sep 24 17:38:56 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * test/ruby/test_gc.rb (test_gc_parameter): add test for it.
+ * string.c (rb_str_inspect): get rid of out-of-bound access.
- * test/ruby/envutil.rb (assert_normal_exit): add :child_env option to
- enable pass environemnt variables to child process.
+ * string.c (rb_str_inspect): when a UTF-16/32 string doesn't have a
+ BOM, inspect as a dummy encoding string.
-Sat Oct 8 05:45:28 2011 Eric Hodel <drbrain@segment7.net>
+Tue Sep 24 17:15:10 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * proc.c (proc_call): Update documentation to match argument handling
- of proc/Proc.new/lambda/->()
+ * enc/encdb.c (ENC_DUMMY_UNICODE): make BOM-encodings dummy.
-Sat Oct 8 05:38:29 2011 Eric Hodel <drbrain@segment7.net>
+ * encoding.c (enc_autoload): keep dummy encodings dummy.
- * proc.c (proc_call): Fix documentation of Proc#call vs Proc#===.
- [Ruby 1.9 - Bug #5349]
+Tue Sep 24 16:41:15 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Tue Sep 27 13:05:39 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
+ * ext/win32/lib/win32/registry.rb (Win32::Registry#write): data size
+ is in bytes, not chars. terminators should be placed automatically.
- * 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.
+Tue Sep 24 16:39:36 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- Thanks to Hiroshi Yoshida for reporting this bug.
- [Bug #5363] [ruby-dev:44542]
+ * ext/win32/lib/win32/registry.rb (Win32::Registry#each_value): encode
+ name.
-Sat Sep 17 23:34:10 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * ext/win32/lib/win32/registry.rb (Win32::Registry#each_key): ditto.
- * parse.y (parser_data_type): inherit the core type in ripper so
- that checks in core would work. [ruby-core:39591] [Bug #5331]
+ * ext/win32/lib/win32/registry.rb (Win32::Registry#export_string):
+ encode to locale encoding if default internal is not set.
-Fri Sep 23 14:15:01 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
+Tue Sep 24 16:35:09 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * ext/openssl/ossl_asn1.c
- ext/openssl/ossl_pkey.c: Remove unused variables.
+ * ext/win32/lib/win32/registry.rb (Win32::Registry::API#EnumKey):
+ size of the name is in WCHARs, not in bytes.
-Fri Sep 23 06:54:44 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
+Tue Sep 24 14:07:00 2013 Charlie Somerville <charliesome@ruby-lang.org>
- * backport r33315 from trunk.
+ * gc.c (free_method_cache_entry_i): unused function
- * 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]
+ * gc.c (rb_free_mc_table): ditto
-Fri Sep 23 12:18:52 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
+ * internal.h (method_cache_entry_t): unused struct
- * backport r33311 from trunk.
+ * vm_method.c (verify_method_cache): remove unused variable
- * 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]
+ * vm_method.c (rb_method_entry): ditto
-Thu Sep 22 19:45:22 2011 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
+Tue Sep 24 14:01:00 2013 Charlie Somerville <charliesome@ruby-lang.org>
- * 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.
+ * class.c (class_alloc): remove mc_tbl
-Wed Sep 21 16:57:03 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+ * gc.c (obj_free): ditto
- * test/io/wait/test_io_wait.rb (TestIOWait#setup): of course, the
- behavior of mingw is just same with mswin.
+ * internal.h (struct rb_classext_struct): ditto
-Sat Sep 17 22:21:26 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * method.h (rb_method_entry): remove ent param
- * vm.c (rb_vm_make_env_object, rb_vm_get_sourceline): export as a
- workaround for ruby-debug19 for the time being.
- [ruby-core:38972] [Bug #5193]
+ * vm_method.c: restore the global method cache. Per class cache tables
+ turned out to be far too slow.
-Fri Sep 16 01:08:19 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+ [ruby-core:57289] [Bug #8930]
- * NEWS: cosmetic changes.
+Tue Sep 24 12:51:07 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Wed Sep 14 12:39:00 2011 Kenta Murata <mrkn@mrkn.jp>
+ * ext/win32/lib/win32/registry.rb (Win32::Registry::API): need
+ Constants.
- * configure.in: do not use gcc-4.2 as the default compiler.
+ * ext/win32/lib/win32/registry.rb (Win32::Registry::API#EnumValue):
+ size of the name is in WCHARs, not in bytes.
- * NEWS: describe the issue about Xcode.
+Mon Sep 23 22:16:09 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Wed Sep 14 11:46:30 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+ * 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]
- * thread.c (rb_fd_rcopy): added an argument guard.
- Patch by NAKAMURA Usaku. [Bug #5306] [ruby-core:39435]
+Mon Sep 23 12:11:26 2013 Masaki Matsushita <glass.saga@gmail.com>
-Tue Sep 13 09:28:58 2011 Koichi Sasada <ko1@atdot.net>
+ * hash.c (env_each_pair): do not call rb_assoc_new() if
+ it isn't needed.
- * NEWS: wrote about rb_reserved_fd_p() and objspace.
+Mon Sep 23 10:42:30 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Mon Sep 12 20:47:52 2011 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].
- * thread.c (rb_thread_select): fix a typo to initialize efds
- properly. [Bug #5299] [ruby-core:39380]
+Mon Sep 23 05:07:49 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Mon Sep 12 20:41:20 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+ * include/ruby/intern.h (rb_ary_cat): move from internal.h, since it
+ is described in README.EXT.
- * 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.
+Sun Sep 22 20:55:20 2013 Kazuki Tsujimoto <kazuki@callcc.net>
- * test/-ext-/old_thread_select/test_old_thread_select.rb
- (test_old_select_false_positive): test for bug5306.
+ * vm_insnhelper.c (vm_make_proc_with_iseq): fix bug message.
+ This is follow up to changes in r42637.
- * 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.
+Sun Sep 22 20:35:38 2013 Kazuki Tsujimoto <kazuki@callcc.net>
-Tue Sep 6 13:15:44 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * ext/-test-/tracepoint/tracepoint.c (Init_tracepoint): prevent from GC.
- * encoding.c (load_encoding): predefined encoding names are safe.
- [ruby-dev:44469] [Bug #5279]
+Sun Sep 22 19:00:28 2013 Benoit Daloze <eregontp@gmail.com>
- * transcode.c (load_transcoder_entry): ditto.
+ * 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.
-Fri Sep 9 16:02:04 2011 NARUSE, Yui <naruse@ruby-lang.org>
+Sat Sep 21 20:11:06 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * insns.def (concatstrings): don't use initial ASCII-8BIT string.
- [ruby-core:38635] [Bug #5126]
+ * 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]
-Thu Sep 8 21:17:36 2011 NARUSE, Yui <naruse@ruby-lang.org>
+Sat Sep 21 01:04:25 2013 Zachary Scott <e@zzak.io>
- * ext/nkf/nkf-utf8/nkf.c: import nkf 2.1.2 (be9c280)
- Bump version number/release date only.
+ * lib/benchmark.rb: [DOC] grammar of Benchmark#bm [Bug #8888]
+ Patch by Prathamesh Sonpatki
-Wed Sep 7 23:42:45 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Sat Sep 21 00:50:02 2013 Zachary Scott <e@zzak.io>
- * io.c (argf_next_argv): open in default text mode.
- [ruby-core:39234] [Bug #5268]
+ * enumerator.c: [DOC] Enumerator#each arguments documentation [GH-388]
+ Patch by @kachick https://github.com/ruby/ruby/pull/388
-Mon Sep 5 15:06:55 2011 NARUSE, Yui <naruse@ruby-lang.org>
+Sat Sep 21 00:49:16 2013 Zachary Scott <e@zzak.io>
- * test/rubygems/test_gem_security.rb
- (test_class_build_self_signed_cert): reset opt[:trust_dir] to apply
- temporary Gem.user_home.
+ * enum.c: [DOC] Enumerable#to_a accepts arguments [GH-388]
+ Patch by @kachick https://github.com/ruby/ruby/pull/388
-Sun Sep 4 00:56:58 2011 Kazuki Tsujimoto <kazuki@callcc.net>
+Sat Sep 21 00:47:44 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * backport r33177 from trunk.
+ * string.c (rb_str_conv_enc_opts): make sure to scan coderange to get
+ rid of unnecessary conversion.
- * 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).
+Sat Sep 21 00:21:08 2013 Zachary Scott <e@zzak.io>
-Fri Sep 2 21:11:16 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * ext/openssl/lib/openssl/ssl.rb: [DOC] Document OpenSSL::SSLServer
+ Based on a patch by Rafal Lisowski [Bug #8758]
- * io.c (validate_enc_binmode, prep_stdio): default to text mode on
- dosish platforms. [ruby-core:38822] [Bug #5164]
+Fri Sep 20 23:54:03 2013 Zachary Scott <e@zzak.io>
- * transcode.c (rb_econv_prepare_options): keep default ecflags
- unchanged if no options.
+ * lib/gserver.rb: [DOC] correct gserver.rb license [Bug #8913]
-Fri Sep 2 14:36:47 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Fri Sep 20 23:48:34 2013 Zachary Scott <e@zzak.io>
- * vm_insnhelper.c (vm_search_const_defined_class): search
- ancestors only when global scope. [ruby-core:39227] [Bug #5264]
+ * ext/psych/yaml/yaml.h: [DOC] merge upstream typo fix by @GreenGeorge
+ https://github.com/tenderlove/psych/pull/161
-Fri Sep 2 09:58:08 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Fri Sep 20 23:37:40 2013 Zachary Scott <e@zzak.io>
- * 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]
+ * lib/securerandom.rb: [DOC] SecureRandom.hex length argument
+ [Fixes GH-394] Patch by @avdi https://github.com/ruby/ruby/pull/394
-Thu Sep 1 17:31:22 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Fri Sep 20 23:34:48 2013 Zachary Scott <e@zzak.io>
- * 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]
+ * benchmark/bm_app_answer.rb: removed duplicate code [Fixes GH-393]
+ Patch by @gouravtiwari https://github.com/ruby/ruby/pull/393
-Thu Sep 1 14:11:16 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+Fri Sep 20 23:24:08 2013 Nobuyoshi Nakada <nobu@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.
+ * common.mk (btest, btest-ruby, test-knownbug): add $(RUN_OPTS) to
+ ruby to be run, so that tests are runnable before making exts.
-Wed Aug 31 16:02:45 2011 NARUSE, Yui <naruse@ruby-lang.org>
+ * common.mk (test-sample): ditto, and use $(MINIRUBY) as rubytest.rb
+ does not need extension libraries.
- * ext/json: Merge json gem v1.5.4 (3dab4c5a6a97fac03dac).
+ * tool/rubytest.rb: pass $(RUN_OPTS) to testing ruby using --run-opt.
-Wed Aug 31 13:19:31 2011 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+Fri Sep 20 15:01:46 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * numeric.c (flo_round): Avoid overflow by optimizing for trivial
- cases
- [Bug #5227]
+ * parse.y (intern_str): sigil only names are junk, at least one
+ identifier character is needed. [ruby-dev:47723] [Bug #8928]
-Wed Aug 31 06:45:32 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+ * parse.y (rb_enc_symname_type): fix out of bound access.
- * configure.in: fix r32835. $withval can't be used outer AC_ARG_WITH().
+Fri Sep 20 14:14:32 2013 Tanaka Akira <akr@fsij.org>
-Wed Aug 31 05:29:03 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+ * ext/-test-/printf/printf.c (printf_test_call): Fix an end of buffer
+ argument.
- * win32/win32.c (rb_w32_select_with_thread): and my typo. we all must
- be more careful.
+Thu Sep 19 16:59:02 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Wed Aug 31 05:28:45 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+ * parse.y (lambda): adjust position to the beginning of the block.
- * thread.c (rb_thread_select): critical typo in r33117.
+Thu Sep 19 16:25:06 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Wed Aug 31 05:28:26 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+ * vsnprintf.c (BSD_vfprintf): initialize cp so that size is 0 in the
+ commented case. fix an accidental bug at r16716.
- * 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.
+Thu Sep 19 14:33:14 2013 Koichi Sasada <ko1@atdot.net>
-Wed Aug 31 05:27:59 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+ * NEWS: add a news for r42974.
- * ext/-test-/old_thread_select/old_thread_select.c (old_thread_select):
- typo.
+Thu Sep 19 14:12:02 2013 Koichi Sasada <ko1@atdot.net>
- * 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.
+ * include/ruby/ruby.h: make Symbol objects frozen.
+ [Feature #8906]
+ I want to freeze this good day, too.
-Wed Aug 31 05:26:30 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+ * test/ruby/test_eval.rb: catch up this change.
- * 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 #5229] [ruby-core:39102]
+ * test/ruby/test_symbol.rb: add a test to check frozen symbols.
- * 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.
+Thu Sep 19 09:11:33 2013 Eric Hodel <drbrain@segment7.net>
-Tue Aug 30 11:25:21 2011 NARUSE, Yui <naruse@ruby-lang.org>
+ * NEWS: Update for RDoc 4.1.0.preview.1 and RubyGems 2.2.0.preview.1
- * ext/json: Merge json gem 1.5.4+ (2149f4185c598fb97db1).
- [Bug #5173] [ruby-core:38866]
+Thu Sep 19 08:59:41 2013 Eric Hodel <drbrain@segment7.net>
-Tue Aug 30 09:53:59 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+ * lib/rdoc/markdown/literals_1_9.rb: Fix trailing whitespace.
- * 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]
+ Previously kpeg (which generates this file) added trailing
+ whitespace, but this bug is now fixed.
-Tue Aug 30 09:52:29 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+ * lib/rdoc/markdown.rb: ditto.
- * backport r33117 from trunk.
+Thu Sep 19 08:33:14 2013 Eric Hodel <drbrain@segment7.net>
- * 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]
+ * lib/rdoc: Update to RDoc 4.1.0.preview.1
- * 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.
+ RDoc 4.1.0 contains a number of enhancements including a new default
+ style and accessibility support. You can see the changelog here:
-Tue Aug 30 09:16:17 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+ https://github.com/rdoc/rdoc/blob/v4.1.0.preview.1/History.rdoc
- * 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]
+ * test/rdoc: ditto.
-Sun Aug 28 15:38:17 2011 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
+Thu Sep 19 07:16:26 2013 Aaron Patterson <aaron@tenderlovemaking.com>
- * backport r33106 from trunk.
+ * ext/psych/lib/psych.rb: updating Psych version
- * ext/date/date_parse.c (date_zone_to_diff): keep a temporary string
- stored in variable while the contents buffer is beeing used.
+ * ext/psych/psych.gemspec: ditto
- * ext/date/date_parse.c (date_zone_to_diff): get rid of out of bounds
- memory read. [ruby-dev:44409] [Bug #5213]
+Thu Sep 19 06:39:40 2013 Eric Hodel <drbrain@segment7.net>
-Sun Aug 28 05:29:50 2011 Ryan Davis <ryand-ruby@zenspider.com>
+ * lib/rubygems/dependency_resolver.rb: Switch the iterative resolver
+ algorithm from recursive to iterative to avoid possible
+ SystemStackError.
- * backport r33102 from trunk.
+Thu Sep 19 06:29:30 2013 Eric Hodel <drbrain@segment7.net>
- * lib/minitest/*: Imported minitest 2.5.1 (r6596)
- * test/minitest/*: ditto
+ * lib/rubygems: Update to RubyGems 2.2.0.preview.1
-Sat Aug 27 20:54:54 2011 Kazuki Tsujimoto <kazuki@callcc.net>
+ This brings several new features to RubyGems summarized here:
- * backport r33099 from trunk.
+ https://github.com/rubygems/rubygems/blob/v2.2.0.preview.1/History.txt
- * vm.c (rb_vm_rewrite_dfp_in_errinfo): change return type
- to suppress a warning.
+ * test/rubygems: ditto.
- * vm_core.h: ditto.
+Wed Sep 18 23:14:58 2013 Masaki Matsushita <glass.saga@gmail.com>
-Sat Aug 27 19:03:44 2011 Kazuki Tsujimoto <kazuki@callcc.net>
+ * 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]
- * backport r33096 from trunk.
+ * 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.
- * proc.c (proc_new): force to rewrite errinfo when calling Proc.new in ensure.
- [Bug #5234] [ruby-core:39125]
+Wed Sep 18 16:32:15 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * vm.c (rb_vm_rewrite_dfp_in_errinfo): new function.
+ * proc.c (mnew_from_me): allocate structs after allocated wrapper
+ object successfully, to get rid of potential memory leak.
- * vm.c (vm_make_env_each): changed accordingly.
+Tue Sep 17 15:54:03 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * vm_core.h: ditto.
+ * 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]
- * bootstraptest/test_flow.rb: add tests for above.
+ * lib/test/unit/assertions.rb (Test::Unit::Assertions#assert_throw):
+ assertion for throw. MiniTest::Assertions#assert_throws discards
+ the caught value.
-Sat Aug 27 08:59:12 2011 Eric Hodel <drbrain@segment7.net>
+ * lib/test/unit/assertions.rb (Test::Unit::Assertions#assert_nothing_thrown):
+ returns the result of the given block.
- * NEWS: Update version of rake to 0.9.2.2.
+Tue Sep 17 12:55:58 2013 Eric Hodel <drbrain@segment7.net>
-Sat Aug 27 08:44:58 2011 Eric Hodel <drbrain@segment7.net>
+ * doc/regexp.rdoc: [DOC] Replace paragraphs in verbatim sections with
+ plain paragraphs to improve readability as ri and HTML.
- * backport r33087 from trunk
+Mon Sep 16 07:32:35 2013 Tadayoshi Funaba <tadf@dotrb.org>
- * lib/rdoc: Import RDoc 3.9.4. Typo and grammar fixes by Luke Gruber.
- [Ruby 1.9 - Bug #5203]
+ * complex.c: removed meaningless lines.
+ * rational.c: ditto.
-Sat Aug 27 07:53:34 2011 Eric Hodel <drbrain@segment7.net>
+Mon Sep 16 00:44:23 2013 Masaki Matsushita <glass.saga@gmail.com>
- * backport r33087 from trunk.
+ * ext/socket/mkconstants.rb: define MSG_FASTOPEN.
+ [ruby-core:57138] [Feature #8897]
- * lib/open-uri.rb: Fix indentation of OpenURI::OpenRead#open. Use ++
- instead of `' for method arguments in open-uri.rb
+Sun Sep 15 13:31:23 2013 Tadayoshi Funaba <tadf@dotrb.org>
-Sat Aug 27 07:22:07 2011 Eric Hodel <drbrain@segment7.net>
+ * 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.
- * backport r33086 from trunk.
+Sat Sep 14 06:08:10 2013 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
+ * dir.c (dir_s_glob): [DOC] Improve wording and layout.
-Fri Aug 26 10:10:37 2011 Eric Hodel <drbrain@segment7.net>
+ * dir.c (file_s_fnmatch): ditto.
- * backport r33074 from trunk.
+ * dir.c (Init_Dir): [DOC] Document File::Constants::FNM_XXX
+ constants. (These won't show up in RDoc until a new RDoc is
+ imported.)
- * 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.
+Thu Sep 12 14:58:58 2013 NARUSE, Yui <naruse@ruby-lang.org>
-Wed Aug 24 09:49:10 2011 Koichi Sasada <ko1@atdot.net>
+ * lib/uri/generic.rb (URI::Generic.find_proxy): return nil if
+ http_proxy environment variable is empty string.
+ [ruby-core:57140] [Bug #8898]
- * backport r33045 from trunk.
+Fri Sep 13 10:40:28 2013 Eric Hodel <drbrain@segment7.net>
- * insns.def (defined): fix to checking class variable.
- A patch by Magnus Holm <judofyr@gmail.com>. Thanks!
+ * lib/rubygems: Update to RubyGems 2.1.3
-Fri Aug 26 08:21:10 2011 Aaron Patterson <aaron@tenderlovemaking.com>
+ Fixed installing platform gems
- * test/ruby/test_variable.rb: add a test for above.
+ Restored concurrent requires
-Thu Aug 25 09:43:16 2011 Eric Hodel <drbrain@segment7.net>
+ Fixed installing gems with extensions with --install-dir
- * backport r33066 from trunk.
+ Fixed `gem fetch -v` to install the latest version
- * ext/openssl/lib/openssl/bn.rb: Hide copyright info from RDoc.
- * ext/openssl/lib/openssl/digest.rb: ditto
- * ext/openssl/lib/openssl/cipher.rb: ditto
+ Fixed installing gems with "./" in their files entries
-Thu Aug 25 09:25:48 2011 Eric Hodel <drbrain@segment7.net>
+ * test/rubygems/test_gem_package.rb: Tests for the above.
- * backport r33065 from trunk.
+ * NEWS: Updated for RubyGems 2.1.3
- * 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 Sep 12 22:40:03 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Thu Aug 25 08:19:43 2011 Koichi Sasada <ko1@atdot.net>
+ * configure.in (RUBY_CHECK_SIGNEDNESS): macro to check signedness of a
+ type.
- * 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).
+ * configure.in (size_t): must be unsigned.
+ [ruby-core:57149] [Feature #8890]
- * bootstraptest/test_flow.rb: add a test for above.
+Thu Sep 12 22:37:08 2013 Anton Ovchinnikov <revolver112@gmail.com>
-Thu Aug 25 08:04:08 2011 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+ * 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]
- * numeric.c (int_round): Fix Integer#round [ruby-core:39096]
+Thu Sep 12 21:35:46 2013 Naohisa Goto <ngotogenome@gmail.com>
-Thu Aug 25 06:51:08 2011 Aaron Patterson <aaron@tenderlovemaking.com>
+ * Makefile.in (libruby-static.a): change LDFLAGS order. LDFLAGS may
+ include library path that should be specified before LIBS.
+ [ruby-dev:47707] [Bug #8901]
- * ext/psych/lib/psych.rb: Fixing psych version number.
+Thu Sep 12 20:07:29 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Thu Aug 25 06:11:35 2011 Aaron Patterson <aaron@tenderlovemaking.com>
+ * vsnprintf.c (MAXEXP, MAXFRACT): calculate depending on constants in
+ float.h.
- * ext/psych/lib/psych/nodes/node.rb: default `to_yaml` encoding to be
- UTF-8.
- * test/psych/test_encoding.rb: test yaml dump encoding.
+ * vsnprintf.c (BSD_vfprintf): limit length for cvt() to get rid of
+ buffer overflow. [ruby-core:57023] [Bug #8864]
-Wed Aug 24 08:53:06 2011 Eric Hodel <drbrain@segment7.net>
+ * vsnprintf.c (exponent): make expbuf size more precise.
- * backport r33043 from trunk.
+Wed Sep 11 17:30:45 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * 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.
+ * 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]
-Wed Aug 24 07:57:43 2011 Eric Hodel <drbrain@segment7.net>
+Wed Sep 11 07:55:17 2013 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
- * backport r33040 from trunk.
+ * thread.c (rb_mutex_unlock): Mutex#unlock no longer raise
+ an exception even if uses on trap. [Bug #8891]
- * lib/rubygems: Update to RubyGems 1.8.9. Fixes uninstalling multiple
- gems and gem cleanup.
+Tue Sep 10 14:37:01 2013 Shota Fukumori <sorah@tubusu.net>
-Wed Aug 24 06:45:20 2011 Ryan Davis <ryand-ruby@zenspider.com>
+ * vm_backtrace.c (vm_backtrace_to_ary): Ignore the second argument if
+ it is nil. [Bug #8884] [ruby-core:57094]
- * backport r33036 from trunk.
+ * test/ruby/test_backtrace.rb (test_caller_with_nil_length):
+ Test for above.
- * lib/minitest/*: Imported minitest 2.5.0 (r6557)
- * test/minitest/*: ditto
+Tue Sep 10 12:39:17 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Tue Aug 23 15:23:56 2011 Eric Hodel <drbrain@segment7.net>
+ * class.c (method_entry_i): should exclude refined methods from
+ instance method list. [ruby-core:57080] [Bug #8881]
- * backport r33027 from trunk.
+Tue Sep 10 12:05:04 2013 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
- * load.c (rb_f_require): Improve documentation of Kernel#require.
- [Ruby 1.9 - Bug #5210]
+ * io.c (rb_f_printf): [DOC] add missing parenthesis in rdoc.
-Tue Aug 23 15:11:48 2011 Hiroshi Nakamura <nahi@ruby-lang.org>
+Tue Sep 10 10:08:00 2013 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
- * backport r33023 from trunk.
+ * NEWS: Update RubyGems note.
- * ext/zlib/zlib.c (gzfile_read_header): Ensure that each section of
- gzip header is readable to avoid SEGV.
+Tue Sep 10 09:51:22 2013 Eric Hodel <drbrain@segment7.net>
- * test/zlib/test_zlib.rb (test_corrupted_header): Test it.
+ * lib/rubygems: Update to RubyGems 2.1.0. Fixes CVE-2013-4287.
-Mon Aug 22 23:43:33 2011 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
+ See http://rubygems.rubyforge.org/rubygems-update/CVE-2013-4287_txt.html
+ for CVE information.
- * backport r33021 from trunk.
+ See http://rubygems.rubyforge.org/rubygems-update/History_txt.html#label-2.1.0+%2F+2013-09-09
+ for release notes.
- * sprintf.c (rb_str_format): add RB_GC_GUARD to prevent temporary
- strings from GC.
+ * test/rubygems: Tests for the above.
-Sun Aug 21 17:58:38 2011 Kazuki Tsujimoto <kazuki@callcc.net>
+Mon Sep 9 21:31:45 2013 Tanaka Akira <akr@fsij.org>
- * backport r33019 from trunk.
+ * 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/
- * iseq.c (iseq_s_disasm): remove variable which is no longer used
- since r33013.
+ * time.c: Ditto.
-Sun Aug 21 14:20:58 2011 Naohisa Goto <ngotogenome@gmail.com>
+ * ext/socket/ancdata.c: Ditto.
- * configure.in: use LD_LIBRARY_PATH_64 on 64-bit Solaris.
+Mon Sep 9 16:55:59 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Sun Aug 21 11:13:54 2011 Naohisa Goto <ngotogenome@gmail.com>
+ * 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]
- * backport r32895 from trunk.
+Mon Sep 9 09:14:58 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * 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]
+ * tool/rbinstall.rb (Gem::Specification#initialize): default date to
+ RUBY_RELEASE_DATE. [ruby-core:57072] [Bug #8878]
- * ext/fiddle/closure.c (callback): ditto
+ * tool/rbinstall.rb (Gem::Specification#to_ruby): add date.
- * ext/fiddle/conversions.h (fiddle_generic): ditto
+Sun Sep 8 16:01:54 2013 Tanaka Akira <akr@fsij.org>
- * ext/fiddle/conversions.c (value_to_generic): char, short and int
- are strictly distinguished on big-endian CPU, e.g. sparc64.
+ * rational.c (f_gcd): Relax the condition to use GMP.
-Sat Aug 20 13:28:32 2011 Kazuki Tsujimoto <kazuki@callcc.net>
+Sun Sep 8 13:56:38 2013 Masaki Suketa <masaki.suketa@nifty.ne.jp>
- * backport r33013 from trunk.
+ * ext/win32ole/win32ole.c (folevariant_initialize): check type of
+ element of array.
- * iseq.c (iseq_s_disasm): fix a bug that may cause SEGV.
+ * test/win32ole/test_win32ole_variant.rb (test_s_new_ary): ditto.
- * test/ruby/test_method.rb (test_body): add a test for the above change.
+Sat Sep 7 21:33:10 2013 Tanaka Akira <akr@fsij.org>
-Sat Aug 20 10:43:24 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * math.c (math_log): Test the sign for bignums.
+ (math_log2): Ditto.
+ (math_log10): Ditto.
- * 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.
+Sat Sep 7 20:25:47 2013 Tanaka Akira <akr@fsij.org>
-Fri Aug 19 14:25:51 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * math.c (math_log): Support bignums bigger than 2**1024.
+ (math_log2): Ditto.
+ (math_log10): Ditto.
- * process.c (proc_spawn_v, proc_spawn): should not wait the
- spawned process.
+Sat Sep 7 15:36:00 2013 Charlie Somerville <charliesome@ruby-lang.org>
- * process.c (proc_spawn_v): fix missing argument, and try with
- /bin/sh only if failed with ENOEXEC.
+ * vm_eval.c (vm_call0): fix prototype, the id parameter should be of
+ type ID, not VALUE
-Fri Aug 19 14:12:57 2011 Shugo Maeda <shugo@ruby-lang.org>
+ * 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]
- * backport r33007 from trunk.
+ * test/ruby/test_refinement.rb: add test
- * 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]
+Sat Sep 7 13:49:40 2013 Kazuki Tsujimoto <kazuki@callcc.net>
-Fri Aug 19 11:28:58 2011 Shugo Maeda <shugo@ruby-lang.org>
+ * variable.c (classname): the name of class that has
+ non class id should not be nil. This bug was introduced
+ in r36577.
- * backport r33001 from trunk.
+ * test/thread/test_cv.rb: test for change.
- * lib/net/imap.rb (msg_att): accepts extra space before ')'.
- based on the patch by art lussos. [Bug #5163] [ruby-core:38820]
+Sat Sep 7 13:29:22 2013 Kazuki Tsujimoto <kazuki@callcc.net>
-Wed Aug 17 15:27:00 2011 Kenta Murata <mrkn@mrkn.jp>
+ * lib/find.rb (Find.find): respect the encodings of arguments.
+ [ruby-dev:47530] [Feature #8657]
- * backport r32996 from trunk.
+ * test/test_find.rb: add tests.
- * 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]
+Sat Sep 7 10:40:32 2013 Tanaka Akira <akr@fsij.org>
- * ext/bigdecimal/bigdecimal.c (BigDecimalValueWithPrec): use
- cannot_be_coerced_into_BigDecimal function.
+ * ext/socket/mkconstants.rb (TCP_FASTOPEN): Defined for TCP fast open.
+ [ruby-core:57048] [Feature #8871] patch by Masaki Matsushita.
- * ext/bigdecimal/bigdecimal.c (BigMath_s_exp): ditto.
+Fri Sep 6 23:53:31 2013 Masaki Matsushita <glass.saga@gmail.com>
- * ext/bigdecimal/bigdecimal.c (BigMath_s_log): ditto.
+ * common.mk: use RUNRUBY instead of MINIRUBY because MINIRUBY can't
+ require extension libraries. The patch is from nobu
+ (Nobuyoshi Nakada).
- * test/bigdecimal/test_bigdecimal.rb: test for the avobe changes.
+ * ext/thread/extconf.rb: for build ext/thread/thread.c.
- * test/bigdecimal/testbase.rb (under_gc_stress): add a new utility
- method to run tests under the condition of GC.stress = true.
+ * include/ruby/intern.h: ditto.
-Wed Aug 17 10:16:00 2011 Kenta Murata <mrkn@mrkn.jp>
+ * thread.c: ditto.
- * backport r32994 from trunk.
+ * lib/thread.rb: removed and replaced by ext/thread/thread.c.
- * 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]
+ * 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]
- * test/ruby/test_rational.rb (test_coerce): test for the above change.
+ * 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]
-Wed Aug 17 06:33:19 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
+Fri Sep 6 22:47:12 2013 Tanaka Akira <akr@fsij.org>
- * backport r32992 from trunk.
+ * configure.in: Define ac_cv_func_clock_getres to yes for mingw*.
- * ext/openssl/ossl_x509cert.c: Add class documentation for
- OpenSSL::X509::Certificate.
+Fri Sep 6 21:04:10 2013 Tanaka Akira <akr@fsij.org>
-Wed Aug 17 05:02:25 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
+ * 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.
- * backport r32987 from trunk.
+ * internal.h (rb_gcd_normal): Declared.
+ (rb_gcd_gmp): Ditto.
- * ext/openssl/ossl_pkey.c: corrected docs, OpenSSL::PKey::DH does
- *not* support #sign/verify.
+ * ext/-test-/rational: New directory.
-Tue Aug 16 18:56:54 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * test/-ext-/rational: New directory.
- * vm.c (ruby_threadptr_data_type): rename to hide.
- [ruby-core:38972]
+Fri Sep 6 14:23:22 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Tue Aug 16 18:52:08 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * win32/win32.c (clock_getres): required as well as clock_gettime().
+ [ruby-dev:47699] [Bug #8869]
- * win32/mkexports.rb (Exports::Mswin#each_export): exclude Init_
- and _threadptr_ functions, as well as mingw.
+Fri Sep 6 11:45:27 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Tue Aug 16 09:38:37 2011 Eric Hodel <drbrain@segment7.net>
+ * transcode.c (rb_econv_append): new function to append a string data
+ with converting its encoding. split from rb_econv_substr_append.
- * backport r32981 and r32982 from trunk.
+Fri Sep 6 02:37:22 2013 Aaron Patterson <aaron@tenderlovemaking.com>
- * ext/dl: Add documentation. Patch by Vincent Batts.
- [Ruby 1.9 - Bug #5192]
+ * ext/psych/lib/psych/visitors/yaml_tree.rb: use double quotes when
+ strings start with special characters.
+ https://github.com/tenderlove/psych/issues/157
- * ext/.document (fiddle): Remove duplicate entry
+ * test/psych/test_string.rb: test for change.
- * ext/fiddle: Complete documentation of Fiddle. Patch by Vincent
- Batts. [#5192]
+Fri Sep 6 00:05:14 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Tue Aug 16 08:00:15 2011 Eric Hodel <drbrain@segment7.net>
+ * class.c (rewrite_cref_stack): remove recursion.
- * backport r32977 from trunk
+Thu Sep 5 18:05:00 2013 Charlie Somerville <charliesome@ruby-lang.org>
- * ext/socket: Make Socket documentation appear. Add documentation for
- Socket, TCPServer, SOCKSSocket. Patch by Sylvain Daubert.
- [Ruby 1.9 - Feature #5182]
+ * string.c (fstring_cmp): take string encoding into account when
+ comparing fstrings [ruby-core:57037] [Bug #8866]
-Mon Aug 15 10:16:55 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
- * backport r32973 from trunk.
+ * test/ruby/test_string.rb: add test
- * ext/openssl/ossl_ssl.c: Support disabling OpenSSL compression.
+Thu Sep 5 17:25:49 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * 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]
+ * string.c (rb_fstring, rb_str_free): use st_data_t instead of VALUE.
-Sat Aug 13 22:17:27 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * string.c (rb_fstring): get rid of duplicating already frozen object.
- * tool/mkconfig.rb: do not make the entries related to sitedir and
- verdordir if disabled by --without options. [ruby-core:38922]
- [Bug #5187]
+Thu Sep 5 14:01:22 2013 Eric Hodel <drbrain@segment7.net>
-Sat Aug 13 17:06:57 2011 Tadayoshi Funaba <tadf@dotrb.org>
+ * lib/optparse.rb: The Integer acceptable now allows binary and
+ hexadecimal numbers per the documentation. [ruby-trunk - Bug #8865]
- * ext/date/date_core.c: [ruby-core:38861]
+ DecimalInteger, OctalInteger, DecimalNumeric now validate their input
+ before converting to a number. [ruby-trunk - Bug #8865]
-Sat Aug 13 16:59:51 2011 Tadayoshi Funaba <tadf@dotrb.org>
+ * test/optparse/test_acceptable.rb: Tests for the above, tests for all
+ numeric acceptables for existing behavior.
- * test/date/test_*.rb: added tests.
+Thu Sep 5 13:49:00 2013 Charlie Somerville <charliesome@ruby-lang.org>
-Sat Aug 13 09:36:19 2011 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
+ * include/ruby/ruby.h: add RSTRING_FSTR flag
- * ext/date/date_parse.c (parse_ddd_cb): fix r32896. RB_GC_GUARD
- insertion position was mistaken. [ruby-dev:44337] [Bug #5152]
+ * internal.h: add rb_fstring() prototype
-Sat Aug 13 09:26:24 2011 Aaron Patterson <aaron@tenderlovemaking.com>
+ * string.c (rb_fstring): deduplicate frozen string literals
- * ext/psych/lib/psych/core_ext.rb: Make Kernel#y private.
- [ruby-core:38913]
+ * string.c (rb_str_free): delete fstrings from frozen_strings table when
+ they are GC'd
- * test/psych/test_yaml.rb: corresponding test.
+ * string.c (Init_String): initialize frozen_strings table
-Sat Aug 13 09:15:16 2011 Tadayoshi Funaba <tadf@dotrb.org>
+Thu Sep 5 12:48:00 2013 Kenta Murata <mrkn@cookpad.com>
- * ext/date/date_core.c (date_strftime_alloc): followed the change
- of r32885.
+ * configure.in (with_gmp): set with_gmp no if it is empty.
- * NEWS: followed the above change.
+Thu Sep 5 10:41:00 2013 Charlie Somerville <charliesome@ruby-lang.org>
-Sat Aug 13 08:49:05 2011 Tadayoshi Funaba <tadf@dotrb.org>
+ * vm_insnhelper.c (vm_getivar): use class sequence to check class
+ identity, instead of pointer + vm state
- * ext/date/date_core.c: [ruby-core:38855].
+ * vm_insnhelper.c (vm_setivar): ditto
-Sat Aug 13 03:41:37 2011 Eric Hodel <drbrain@segment7.net>
+Thu Sep 5 08:20:58 2013 Tanaka Akira <akr@fsij.org>
- * backport r32953 from trunk.
+ * 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.
- * lib/uri/common.rb: Fix documentation of URI::Parser.new. Patch by
- Steve Klabnik. [Ruby 1.9 - Bug #5177]
+ * internal.h (rb_big_divrem_gmp): Declared.
-Sat Aug 13 02:19:57 2011 Eric Hodel <drbrain@segment7.net>
+Thu Sep 5 06:22:42 2013 Tanaka Akira <akr@fsij.org>
- * backport r32950 from trunk.
+ * bignum.c (bary_divmod_normal): Reduce temporary array allocations.
- * ext/digest/digest.c: Add documentation for the Digest module. Patch
- by Sylvain Daubert. [Ruby 1.9 - Bug #5167]
+Thu Sep 5 02:17:06 2013 Tanaka Akira <akr@fsij.org>
-Fri Aug 5 13:32:43 2011 Shugo Maeda <shugo@ruby-lang.org>
+ * bignum.c (rb_big_divrem_normal): Add GC guards.
- * backport r32856 from trunk.
+Thu Sep 5 00:38:32 2013 Tanaka Akira <akr@fsij.org>
- * lib/xmlrpc/client.rb, lib/xmlrpc/server.rb: should use
- String#bytesize instead of String#size.
+ * bignum.c (rb_big_divrem_normal): New function.
-Fri Aug 12 13:53:03 2011 Narihiro Nakamura <narihiro@netlab.jp>
+ * internal.h (rb_big_divrem_normal): Declared.
- * backport r32894 from trunk.
+ * ext/-test-/bignum/div.c: New file.
- * 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]
+ * test/-ext-/bignum/test_div.rb: New file.
- * gc.c (gc_clear_mark_on_sweep_slots): if a sweeping was
- interrupted, we expand the heap if at all possible.
+Thu Sep 5 00:08:44 2013 Tanaka Akira <akr@fsij.org>
-Fri Aug 12 12:28:17 2011 Eric Hodel <drbrain@segment7.net>
+ * bignum.c (bigdivrem_normal): Removed.
+ (bary_divmod_normal): New function.
+ (bary_divmod): Use bary_divmod_normal.
+ (bigdivrem): Use bary_divmod_normal.
- * lib/rake: Update to Rake 0.9.2.2. Prevent pollution of toplevel
- namespace by Commands. Remove unused variable and debugging
- statement in tests.
+Wed Sep 4 23:02:12 2013 Tanaka Akira <akr@fsij.org>
-Fri Aug 12 09:00:24 2011 Eric Hodel <drbrain@segment7.net>
+ * bignum.c (bigdivrem): Useless declaration removed.
- * backport r32941 from trunk
+Wed Sep 4 22:56:49 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * lib/rubygems: Import RubyGems 1.8.8. Fixes encoding of YAML gemspec
- from gems. Github Issue #149
+ * numeric.c (NUM_STEP_GET_INF): split from NUM_STEP_SCAN_ARGS(), since
+ inf is not used in num_step_size().
-Fri Aug 12 03:24:35 2011 Eric Hodel <drbrain@segment7.net>
+Wed Sep 4 20:22:43 2013 Tanaka Akira <akr@fsij.org>
- * backport r32935 from trunk
+ * bignum.c (bigdivrem_normal): Add assertions.
- * lib/rdoc: Import RDoc 3.9.2. Fixes TIDYLINK for HTML output.
+Wed Sep 4 19:18:40 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Tue Aug 2 22:04:46 2011 NARUSE, Yui <naruse@ruby-lang.org>
+ * internal.h (vm_state_version_t): prefer LONG_LONG to uint64_t.
- * backport r32815 from trunk.
+Wed Sep 4 16:28:14 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * gc.c (init_heap): allocate sigaltstack after heaps are allocated.
- [ruby-dev:44315] [Bug #5139]
+ * internal.h (vm_state_version_t): use uint64_t when it is larger than
+ LONG_LONG, and fallback to unsigned long.
- * vm.c (thread_free): use free because objspace is not ready.
+Wed Sep 4 15:37:05 2013 NARUSE, Yui <naruse@ruby-lang.org>
- * vm.c (th_init): use malloc because objspace is not ready.
+ * enc/trans/utf8_mac-tbl.rb: fix r42789.
+ Fix conversion table and logic. [ruby-dev:47680]
-Thu Aug 11 19:04:38 2011 Hiroshi Nakamura <nahi@ruby-lang.org>
+Wed Sep 4 14:08:00 2013 Charlie Somerville <charliesome@ruby-lang.org>
- * backport r32931 from trunk.
+ * 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.
- * 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.
+ [ruby-core:55053] [Feature #8426] [GH-387]
-Thu Aug 11 15:07:36 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Wed Sep 4 11:13:40 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * lib/mkmf.rb (link_command): use LIBRUBYARG in rbconfig for
- unbundled extensions. [ruby-core:38802] [Bug #5147]
+ * 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]
- * lib/mkmf.rb (init_mkmf): revert r32902. [ruby-core:38903]
+Wed Sep 4 11:11:37 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Wed Aug 10 19:30:00 2011 Kenta Murata <mrkn@mrkn.jp>
+ * configure.in (SOLIBS): LIBRUBY_SO also needs linking with gmp, to
+ run worker processes in test-all on non-ELF platforms.
- * backport r32903 from trunk.
+Tue Sep 3 23:01:41 2013 Kouhei Sutou <kou@cozmixng.org>
- * 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/rexml/parser/test_tree.rb
+ (TestTreeParser::TestInvalid#test_unmatched_close_tag):
+ Compute expected value from test value.
- * test/ruby/test_complex.rb (test_rationalize): add a test for the
- above change.
+Tue Sep 3 22:59:58 2013 Kouhei Sutou <kou@cozmixng.org>
- * complex.c (nucomp_to_r): fix RDoc comment. The patch is made by
- Marc-Andre Lafortune.
+ * 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.
-Wed Aug 10 14:11:07 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Tue Sep 3 22:57:57 2013 Kouhei Sutou <kou@cozmixng.org>
- * lib/mkmf.rb (init_mkmf): set $LIBRUBYARG regardless of shared
- option. [ruby-core:38802] [Bug #5147]
+ * test/rexml/parser/test_tree.rb: Fix test name to describe test
+ content.
-Wed Aug 10 02:57:01 2011 NARUSE, Yui <naruse@ruby-lang.org>
+Tue Sep 3 22:54:46 2013 Kouhei Sutou <kou@cozmixng.org>
- * lib/net/http.rb: come back autoload. OpenSSL constant is used
- some places, so it leads mistakes like HTTP.start.
+ * 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 Aug 9 22:57:45 2011 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
+Tue Sep 3 22:03:49 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * ext/date/date_parse.c (date_zone_to_diff): add RB_GC_GUARD.
- [ruby-dev:44337] [Bug #5152]
+ * string.c (rb_enc_str_new_cstr): new function to create a string from
+ the C-string pointer with the specified encoding.
- * ext/date/data_parse.c (parse_ddd_cb): ditto.
+Tue Sep 3 21:41:37 2013 Akira Matsuda <ronnie@dio.jp>
-Tue Aug 9 12:20:33 2011 Naohisa Goto <ngotogenome@gmail.com>
+ * eval.c (Init_eval): Make Module#include and Module#prepend public
+ [Feature #8846]
- * test/fiddle/helper.rb (libc_so, libm_so): Solaris support added.
- [ruby-core:38853] [Bug #5168]
+ * test/ruby/test_module.rb (class TestModule): Test for above
- * test/dl/test_base.rb (libc_so, libm_so): on Solaris, remove libc
- and libm version numbers for detecting default libc and libm.
+Tue Sep 3 21:35:19 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Tue Aug 9 10:49:52 2011 Igor Zubkov <igor.zubkov@gmail.com>
+ * thread_pthread.c (sys/dyntune.h): for gettune().
- * array.c: Fix typo. https://github.com/ruby/ruby/pull/36
+ * thread_pthread.c (hpux_attr_getstackaddr): fix missing *.
+ [ruby-core:56983] [Feature #8793]
-Mon Aug 8 00:10:45 2011 Akinori MUSHA <knu@iDaemons.org>
+Tue Sep 3 20:12:46 2013 Tanaka Akira <akr@fsij.org>
- * test/test_syslog.rb (TestSyslog#test_log): Do not be too
- specific about the log line format. Fixes #5081.
+ * 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.
-Sun Aug 7 23:39:44 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+ * internal.h (rb_str2big_gmp): Declared.
- * time.c (rb_strftime_alloc): raise ERANGE if width is too large.
- Patch by Nobuyoshi Nakada. [Bug #4457] [ruby-dev:43285]
+Tue Sep 3 19:44:40 2013 NAKAMURA Usaku <usa@ruby-lang.org>
- * test/ruby/test_time.rb (class TestTime): add a test for the
- above change.
+ * ext/win32/lib/win32/registry.rb (Win32::Registry#values): added.
+ [Feature #7763] [ruby-core:51783]
-Sun Aug 7 14:15:10 2011 Kazuki Tsujimoto <kazuki@callcc.net>
+Tue Sep 3 18:26:00 2013 Akinori MUSHA <knu@iDaemons.org>
- * backport r32876 from trunk.
+ * misc/inf-ruby.el (inf-ruby-keys, run-ruby): Add magic autoload
+ comments.
- * ext/objspace/objspace.c: fix typos in a document.
+ * misc/rdoc-mode.el (rdoc-mode): Ditto.
-Sun Aug 7 04:42:36 2011 Eric Hodel <drbrain@segment7.net>
+ * misc/ruby-electric.el (ruby-electric-mode): Ditto.
- * marshal.c (w_object): Fix exception message when _dump_data
- is not defined on a T_DATA object.
+ * misc/ruby-style.el (ruby-style-c-mode): Ditto.
-Sat Aug 6 06:14:20 2011 Eric Hodel <drbrain@segment7.net>
+Tue Sep 3 17:06:15 2013 NAKAMURA Usaku <usa@ruby-lang.org>
- * lib/rdoc: Update to 3.9.1. Fixes === lines in verbatim sections.
- Fixes :nodoc: on class aliases. Fixes :stopdoc: creating references
- to Object. Fixes spacing when class comments are merged in ri.
- Fixes `ri []` crash. Fixes bug report URL when rdoc crashes. Adds
- :doc: and :nodoc: to allow hiding of implementation details in ruby.
- Makes `rdoc` and `ri` gem-aware.
+ * test/ruby/test_rubyoptions.rb
+ (TestRubyOptions::SEGVTest::ExpectedStderr): the URL was changed at
+ r42800.
-Sat Aug 6 03:19:45 2011 Eric Hodel <drbrain@segment7.net>
+Tue Sep 3 14:48:25 2013 Zachary Scott <e@zzak.io>
- * lib/rubygems: Import RubyGems 1.8.7:
- Added missing require for `gem uninstall --format-executable`.
+ * lib/thread.rb: [DOC] CV#wait typo by @avdi [Fixes GH-386]
+ https://github.com/ruby/ruby/pull/386
- The correct name of the executable being uninstalled is now displayed
- with --format-executable.
+Tue Sep 3 14:37:53 2013 Zachary Scott <e@zzak.io>
- Fixed `gem unpack uninstalled_gem` default version picker.
+ * error.c: [DOC] Update bug tracker url by @ScotterC [Fixes GH-390]
+ https://github.com/ruby/ruby/pull/390
- RubyGems no longer claims a nonexistent gem can be uninstalled.
+Tue Sep 3 12:45:23 2013 Tanaka Akira <akr@fsij.org>
- `gem which` no longer claims directories are requirable files.
+ * bignum.c (rb_str2big_poweroftwo): New function.
+ (rb_str2big_normal): Ditto.
+ (rb_str2big_karatsuba): Ditto.
- `gem cleanup` continues cleaning up gems if one can't be uninstalled
- due to permissions. Issue #82.
+ * internal.h (rb_str2big_poweroftwo): Declared.
+ (rb_str2big_normal): Ditto.
+ (rb_str2big_karatsuba): Ditto.
- Gem repository directories are no longer created world-writable.
- Patch by Sakuro OZAWA. [Ruby 1.9 - Bug #4930]
+ * ext/-test-/bignum/str2big.c: New file.
-Fri Aug 5 23:08:39 2011 Naohisa Goto <ngotogenome@gmail.com>
+ * test/-ext-/bignum/test_str2big.rb: New file.
- * backport r32845 from trunk.
+ * ext/-test-/bignum/depend: Add the dependency for str2big.c.
- * configure.in: when Solaris cc, use $(CC) to link shared libs.
+Tue Sep 3 12:09:08 2013 Tanaka Akira <akr@fsij.org>
-Fri Aug 5 22:16:20 2011 Naohisa Goto <ngotogenome@gmail.com>
+ * process.c (rb_clock_gettime): Support times() based monotonic clock.
+ (rb_clock_getres): Ditto.
- * numeric.c (rb_infinity, rb_nan): use WORDS_BIGENDIAN to get endian.
- fix [Bug #5160] [ruby-dev:44356]
+Tue Sep 3 12:03:02 2013 Tanaka Akira <akr@fsij.org>
-Fri Aug 5 15:57:10 2011 Naohisa Goto <ngotogenome@gmail.com>
+ * bignum.c (str2big_scan_digits): Extracted from rb_cstr_to_inum.
- * complex.c (f_signbit): fix compile error in gcc4 on Solaris with
- CFLAGS="-std=gnu99". [ruby-dev:44355] fix [Bug #5159]
+Tue Sep 3 11:23:57 2013 NAKAMURA Usaku <usa@ruby-lang.org>
- * math.c: ditto.
+ * 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.
-Thu Aug 5 10:09:00 2011 Kenta Murata <mrkn@mrkn.jp>
+Tue Sep 3 11:00:28 2013 NAKAMURA Usaku <usa@ruby-lang.org>
- * backport r32846 from trunk.
+ * win32/win32.c (do_select): constify timeout.
- * 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].
+ * win32/win32.c (rb_w32_select_with_thread): constify 10ms wait and
+ 0ms wait structs.
- * thread_pthread.c (native_cond_broadcast): ditto.
+Tue Sep 3 10:03:42 2013 NAKAMURA Usaku <usa@ruby-lang.org>
- * thread_pthread.c (struct cached_thread_entry): stop using
- pthread_cond_t and its functions directly.
+ * 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".
- * thread_pthread.c (register_cached_thread_and_wait): ditto.
+Tue Sep 3 08:20:46 2013 NARUSE, Yui <naruse@ruby-lang.org>
- * thread_pthread.c (use_cached_thread): ditto.
+ * 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]
-Fri Aug 5 07:35:00 2011 Luis Lavena <luislavena@gmail.com>
+Tue Sep 3 07:49:25 2013 Akinori MUSHA <knu@iDaemons.org>
- * lib/rubygems/installer.rb (class Gem): Correct path check on Windows
- Possible fix for [Ruby 1.9 - Bug #5111]
+ * 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/rubygems/test_gem_installer.rb (load Gem): ditto
- Backported from trunk r32804
+ * test/ruby/test_float.rb (TestFloat#test_num2dbl): Revert.
-Fri Aug 5 07:00:31 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * test/ruby/test_numeric.rb (TestNumeric#test_step): Fix test
+ cases for the above change.
- * 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]
+Tue Sep 3 07:39:58 2013 Tanaka Akira <akr@fsij.org>
-Wed Aug 4 02:35:00 2011 Kenta Murata <mrkn@mrkn.jp>
+ * bignum.c (bytes_2comp): Define it only for little endian
+ environment.
- * configure.in: use build_os variable for checking C and C++ compilers
- matching.
+Tue Sep 3 07:31:29 2013 Akinori MUSHA <knu@iDaemons.org>
- * configure.in: use clang++ if clang is used.
+ * numeric.c (NUM_STEP_SCAN_ARGS): Numeric#step should raise
+ TypeError if a non-numeric parameter is given.
-Thu Aug 4 02:21:10 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * test/ruby/test_float.rb (TestFloat#test_num2dbl): Allow nil as
+ step, as with the keyword argument.
- * lib/mkmf.rb (link_command): use static library only for bundled
- extensions. [Bug #5147]
+ * test/ruby/test_numeric.rb (TestNumeric#test_step): Add tests for
+ nil as step or limit.
-Wed Aug 3 00:11:08 2011 Tanaka Akira <akr@fsij.org>
+Tue Sep 3 07:28:49 2013 Tanaka Akira <akr@fsij.org>
- * lib/prettyprint.rb: update document. [ruby-core:36776]
+ * 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>
-Tue Aug 2 20:10:16 2011 Shota Fukumori <sorah@tubusu.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/testunit/test_parallel.rb: pass "--ruby" option to
- test/testunit/tests_for_parallel/runner.rb. [Bug #5132] [ruby-dev:44303]
- Backported from trunk r32812.
+ * test/ruby/test_super.rb: add a test for above.
-Tue Aug 2 12:03:16 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Mon Sep 2 23:46:29 2013 Akinori MUSHA <knu@iDaemons.org>
- * hash.c (recursive_hash): hash value of emptied hash should be
- equal to an empty hash. [ruby-core:38650]
+ * 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]
-Tue Aug 2 11:42:15 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * numeric.c (num_step): Optimize for infinite loop.
- * parse.y (rb_enc_symname2_p): :! is valid symbol. [Bug #5136]
+Mon Sep 2 22:55:59 2013 Tanaka Akira <akr@fsij.org>
-Tue Aug 2 03:26:02 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+ * bignum.c (ISDIGIT): Unused macro removed.
- * test/rake/test_rake_directory_task.rb (TestRakeDirectoryTask#
- test_directory_win32): fixed wrong test.
- backported r32670 from trunk.
+Mon Sep 2 22:49:15 2013 Tanaka Akira <akr@fsij.org>
-Mon Aug 1 15:45:23 2011 Eric Hodel <drbrain@segment7.net>
+ * bignum.c (str2big_poweroftwo): Extracted from rb_cstr_to_inum.
+ (str2big_normal): Ditto.
+ (str2big_karatsuba): Ditto.
- * 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 Sep 2 14:39:29 2013 Akinori MUSHA <knu@iDaemons.org>
-Mon Aug 1 05:21:42 2011 TAKANO Mitsuhiro (takano32) <tak@no32.tk>
+ * ruby.c (Process#setproctitle): [DOC] Fix and improve rdoc.
- * cont.c (cont_save_thread): fix missing semicolon.
+ * ruby.c (Process#argv0): [DOC] Improve rdoc.
-Sun Jul 31 22:57:16 2011 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+Mon Sep 2 14:15:00 2013 Kenta Murata <mrkn@cookpad.com>
- * 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.
+ * NEWS: fix description of number literal suffixes.
-Sun Jul 31 22:44:08 2011 Kazuki Tsujimoto <kazuki@callcc.net>
+Mon Sep 2 14:01:00 2013 Charlie Somerville <charliesome@ruby-lang.org>
- * configure.in: fix typos.
+ * test/rake/test_rake_rules.rb: add space after string literal to
+ prevent conflict with string options syntax "foo"opts
-Sun Jul 31 21:19:51 2011 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+ * test/rss/rss-assertions.rb: ditto
- * 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.
+Mon Sep 2 12:28:38 2013 Tanaka Akira <akr@fsij.org>
-Sun Jul 31 21:16:02 2011 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+ * test/ruby/test_bignum.rb (test_interrupt_during_to_s): Disable it
+ when GMP is used.
- * complex.c (f_signbit): gcc4 on Solaris DOES have signbit but does
- not have it on header.
+Mon Sep 2 07:02:10 2013 Tanaka Akira <akr@fsij.org>
- * math.c: ditto.
+ * bignum.c (Init_Bignum): Define Bignum::GMP_VERSION when GMP is used.
-Sun Jul 31 21:09:04 2011 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+Mon Sep 2 01:46:14 2013 Tanaka Akira <akr@fsij.org>
- * common.mk (node_name.inc): Use $(Q) for consistency.
+ * bignum.c (big2str_generic): Reduce arguments.
+ (big2str_gmp): Ditto.
+ (rb_big2str1): Follow the above change.
- * Makefile.in (INSNS): ditto.
+Mon Sep 2 00:08:08 2013 Tanaka Akira <akr@fsij.org>
-Sun Jul 31 20:39:12 2011 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+ * 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.
- * common.mk (ECHO1): nmake does not allow parenthesis in make variable
- replacement.
+Sun Sep 1 23:30:47 2013 Tanaka Akira <akr@fsij.org>
-Sun Jul 31 20:21:36 2011 "Yuki Sonoda (Yugui)" <yugui@yugui.jp>
+ * bignum.c (GMP_BIG2STR_DIGITS): New constant.
+ (big2str_gmp): New function.
+ (rb_big2str1): Use big2str_gmp for big bignums.
- * common.mk (ECHO1): ":" in a make variable replacement cause a syntax
- error with /usr/ccs/bin/make on Solaris. Uses $(NULLCMD) instead.
+ * internal.h (rb_big2str_gmp): Declared.
- * configure.in (NULLCMD): new check.
+ * ext/-test-/bignum/big2str.c (big2str_gmp): New method.
- * Makefile.in (NULLCMD): Reflects checking in configure.
+Sun Sep 1 22:37:51 2013 Tanaka Akira <akr@fsij.org>
- * win32/Makefile.sub (NULLCMD): new assignment.
+ * 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 Jul 31 11:31:07 2011 Kazuki Tsujimoto <kazuki@callcc.net>
+Sun Sep 1 21:17:54 2013 Tanaka Akira <akr@fsij.org>
- * backport r32768 from trunk.
+ * test/net/http/test_http.rb (test_bind_to_local_port): Choose an open
+ port more reliably.
- * vm.c: check if cfp is valid. [Bug #5083] [ruby-dev:44208]
+Sun Sep 1 20:32:40 2013 Tanaka Akira <akr@fsij.org>
-Sat Jul 31 01:23:45 2011 Kenta Murata <mrkn@mrkn.jp>
+ * 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.
- * backport r32762 from trunk.
+ * internal.h (rb_big2str_poweroftwo): Declared.
+ (rb_big2str_generic): Ditto.
- * test/bigdecimal/test_bigdecimal.rb (test_version): removed.
+ * ext/-test-/bignum/big2str.c: New file.
-Sat Jul 30 23:51:44 2011 Tadayoshi Funaba <tadf@dotrb.org>
+ * test/-ext-/bignum/test_big2str.rb: New file.
- * lib/cmath.rb (cbrt): should return a real number if possible.
+Sun Sep 1 15:21:21 2013 Tanaka Akira <akr@fsij.org>
-Sat Jul 30 23:48:04 2011 Tadayoshi Funaba <tadf@dotrb.org>
+ * bignum.c (big2str_2bdigits): Renamed from big2str_orig.
- * ext/date/date_core.c: an issue that is same as [ruby-dev:44071].
+Sun Sep 1 13:02:24 2013 Tanaka Akira <akr@fsij.org>
- * ext/date/date_strftime.c: identical to [ruby-dev:44112].
+ * bignum.c: Remove BITSPERDIG >= INT_MAX test. The static assertion,
+ SIZEOF_BDIGITS <= sizeof(BDIGIT) is enough.
-Sat Jul 30 23:19:09 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Sun Sep 1 11:38:26 2013 Tanaka Akira <akr@fsij.org>
- * defs/default_gems: separate from tool/rbinstall.rb.
+ * bignum.c (maxpow_in_bdigit): Removed.
-Sat Jul 30 23:14:44 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Sun Sep 1 10:30:42 2013 Tanaka Akira <akr@fsij.org>
- * io.c (rb_io_each_byte): rbuf can be refreshed during yield.
- [Bug #5119]
+ * numeric.c (rb_fix_bit_length): Moved from bignum.c.
-Sat Jul 30 22:35:50 2011 Naohisa Goto <ngotogenome@gmail.com>
+Sun Sep 1 09:55:45 2013 Tanaka Akira <akr@fsij.org>
- * strftime.c (NEEDS): avoid SEGV due to integer overflow in
- sparc-solaris2.10 and i686-linux. fix [Bug #4456] [ruby-dev:43284]
+ * internal.h (bit_length): Moved from bignum.c.
+ (nlz_int): Ditto.
+ (nlz_long): Ditto.
+ (nlz_long_long): Ditto.
+ (nlz_int128): Ditto.
-Sat Jul 30 14:27:00 2011 Kenta Murata <mrkn@mrkn.jp>
+Sun Sep 1 03:32:22 2013 Tanaka Akira <akr@fsij.org>
- * backport r32754 from trunk.
+ * bignum.c (bit_length): Renamed from bitsize.
- * ext/bigdecimal/bigdecimal.c (BigDecimal_version): version 1.1.0.
+Sun Sep 1 00:07:09 2013 Tanaka Akira <akr@fsij.org>
- * ext/bigdecimal/bigdecimal.gemspec: turn into a default gem.
+ * bignum.c (rb_big_bit_length): New method.
+ (rb_fix_bit_length): Ditto.
+ [ruby-core:56247] [Feature #8700]
- * tool/rbinstall.rb: ditto.
+Sat Aug 31 22:18:29 2013 Tanaka Akira <akr@fsij.org>
-Sat Jul 30 13:52:00 2011 Kenta Murata <mrkn@mrkn.jp>
+ * process.c (rb_clock_getres): New method.
+ (timetick2dblnum_reciprocal): New function.
- * ext/bigdecimal/lib/bigdecimal/util.rb (Rational#to_d):
- revive zero and implicit precision support as a deprecated feature.
+ * configure.in: Check clock_getres.
- * test/bigdecimal/test_bigdecimal_util.rb: modify a test for the above
- change.
+ [ruby-core:56780] [Feature #8809] accepted as a CRuby feature at
+ DevelopersMeeting20130831Japan
+ https://bugs.ruby-lang.org/projects/ruby/wiki/DevelopersMeeting20130831Japan
- * NEWS: describes the above change.
+Sat Aug 31 21:02:07 2013 Tanaka Akira <akr@fsij.org>
-Sat Jul 30 10:58:10 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+ * 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.
- * 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].
+ * configure.in: Detect GMP.
- * signal.c (rb_register_sigaltstack): ditto.
+ [ruby-core:56658] [Feature #8796]
- * vm_core.h: moved ALT_STACK_SIZE definition from signal.c.
+Sat Aug 31 15:03:00 2013 Charlie Somerville <charliesome@ruby-lang.org>
- * vm.c (thread_free): use xfree() instead of free().
+ * compile.c (NODE_MATCH3): pass CALL_INFO to opt_regexpmatch2
-Sat Jul 30 07:20:49 2011 Tanaka Akira <akr@fsij.org>
+ * insns.def (opt_regexpmatch2): use CALL_SIMPLE_METHOD to call =~ if
+ the receiver is not a T_STRING [Bug #8847] [ruby-core:56916]
- * ext/socket/lib/socket.rb (udp_server_sockets): unused variable
- removed.
- patch by Jeremy Evans. [ruby-core:38600]
+Sat Aug 31 14:07:11 2013 Tanaka Akira <akr@fsij.org>
-Fri Jul 29 23:56:32 2011 Tanaka Akira <akr@fsij.org>
+ * lib/securerandom.rb (random_bytes): Use Process.clock_gettime.
- * lib/securerandom.rb: call OpenSSL::Random.seed at the
- SecureRandom.random_bytes call.
- based on the patch by Masahiro Tomita. [ruby-dev:44270]
+Sat Aug 31 00:25:15 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Fri Jul 29 20:48:39 2011 Tanaka Akira <akr@fsij.org>
+ * include/ruby/encoding.h (rb_{ascii8bit,utf8,usascii}_encindex): get
+ rid of conflict with macros defined in internal.h.
- * ext/socket/mkconstants.rb: fix typos.
+Fri Aug 30 22:37:57 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Fri Jul 29 20:28:56 2011 Tanaka Akira <akr@fsij.org>
+ * thread_pthread.c (native_thread_init_stack): wait the creator thread
+ to fill machine stack info, if get_stack_of() is available.
- * ext/socket/mkconstants.rb: use whitespaces as a separator.
+ * thread_pthread.c (native_thread_create): fill the created thread
+ stack info after starting, if get_stack_of() is available.
-Fri Jul 29 18:59:07 2011 Tanaka Akira <akr@fsij.org>
+ * thread_pthread.c (native_thread_create): define attr only if it is
+ used, and merge pthread_create() calls.
- * ext/socket/mkconstants.rb: add documents for constants.
- patch by Eric Hodel. [ruby-core:37853] [Bug #4989]
+ * thread_pthread.c (get_main_stack): separate function to get stack of
+ main thread.
-Mon Jul 25 23:51:01 2011 Yusuke Endoh <mame@tsg.ne.jp>
+Thu Aug 29 18:05:33 2013 Koichi Sasada <ko1@atdot.net>
- * backport r32671 from trunk.
+ * struct.c (rb_struct_define_without_accessor_under): added.
+ This function is similar to rb_define_class_under() against
+ rb_define_class().
- * 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]
+ * include/ruby/intern.h: add a declaration of this function.
-Mon Jul 25 22:36:11 2011 Yusuke Endoh <mame@tsg.ne.jp>
+Thu Aug 29 17:03:10 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * backport r32669 from trunk.
+ * 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]
- * 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]
+Thu Aug 29 05:35:58 2013 Eric Hodel <drbrain@segment7.net>
-Thu Jul 28 23:36:28 2011 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
+ * 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.
- * 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 Aug 29 02:40:45 2013 Aaron Patterson <aaron@tenderlovemaking.com>
-Thu Jul 28 22:51:27 2011 Hiroshi Nakamura <nahi@ruby-lang.org>
+ * ext/psych/lib/psych/scalar_scanner.rb: invalid floats should be
+ treated as strings.
+ https://github.com/tenderlove/psych/issues/156
- * backport r32723 from trunk.
+ * test/psych/test_string.rb: test for change
- * 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.
+Wed Aug 28 17:20:07 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- 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.
+ * 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]
- * test/openssl/test_cipher.rb: test it.
+Wed Aug 28 11:24:20 2013 Michal Rokos <michal@rokos.cz>
-Thu Jul 28 04:53:31 2011 Eric Hodel <drbrain@segment7.net>
+ * configure.in (sys/pstat.h): fix missing header check for
+ missing/setproctitle.c on HP-UX. [ruby-core:56644] [Bug #8792]
- * lib/delegate.rb: Move file-level documentation to the appropriate
- classes.
+Wed Aug 28 04:54:33 2013 Eric Hodel <drbrain@segment7.net>
-Thu Jul 28 00:33:47 2011 NARUSE, Yui <naruse@ruby-lang.org>
+ * ext/openssl/ossl_ssl.c (ossl_ssl_read): Replace duplicate
+ wait_writable with wait_readable.
- * test/fileutils/test_fileutils.rb: add OpenBSD case.
- patched by Jeremy Evans [ruby-core:38530] see #5097
+Tue Aug 27 17:18:40 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * test/ruby/test_process.rb: ditto.
+ * lib/timeout.rb (Timeout#timeout): skip rescue clause only when no
+ exception class is given.
-Wed Jul 27 17:59:46 2011 NARUSE, Yui <naruse@ruby-lang.org>
+Tue Aug 27 17:02:58 2013 Nobuyoshi Nakada <nobu@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.
+ * 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]
-Wed Jul 27 15:39:14 2011 Eric Hodel <drbrain@segment7.net>
+Tue Aug 27 17:02:33 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * object.c: Add usage documentation for BasicObject. Based on patch
- by Thomas Sawyer. [Ruby 1.9 - Bug #5067]
+ * io.c (copy_stream_body): move common open flags.
-Wed Jul 27 12:24:17 2011 Eric Hodel <drbrain@segment7.net>
+Tue Aug 27 16:56:50 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * lib/rubygems/uninstaller.rb: Add missing require and update
- messaging to avoid confusion with uninstall --format-executable.
- [Ruby 1.9 - Bug #4062]
+ * enumerator.c (enumerator_size): use rb_check_funcall() instead of
+ respond_to? and call.
-Wed Jul 27 10:47:57 2011 Eric Hodel <drbrain@segment7.net>
+ * enumerator.c (enumerator_each): ensure that argument array size
+ does not overflow at appending.
- * lib/rubygems: Update to RubyGems 1.8.6.1.
+Tue Aug 27 16:46:05 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Wed Jul 27 10:04:06 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
+ * array.c (rb_ary_index, rb_ary_rindex): use optimized equality to
+ improve performance. [Feature #8820]
- * backport r32690 from trunk.
+ * vm_insnhelper.c (rb_equal_opt): optimized equality function.
- * test/openssl/test_pkcs12.rb: Add test and intermediate certificates.
- [ Ruby 1.9 - Feature #3793 ] [ruby-core:32088]
+Tue Aug 27 16:11:05 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Sat Jul 27 01:26:00 2011 Kenta Murata <mrkn@mrkn.jp>
+ * vm_insnhelper.c (opt_eq_func): use RBASIC_CLASS() instead of HEAP_CLASS_OF().
- * NEWS: add changes of bigdecimal and bigdecimal/util.
+ * 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.
-Wed Jul 27 01:13:00 2011 Kenta Murata <mrkn@mrkn.jp>
+Tue Aug 27 16:08:26 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * ext/bigdecimal/lib/bigdecimal/util.rb (Rational#to_d):
- zero or negative precision is error. fixes #5098.
- [ruby-dev:44210]
+ * vm_eval.c (rb_check_funcall, rb_check_funcall_with_hook): constify
+ argv.
- * ext/bigdecimal/lib/bigdecimal/util.rb (Float#to_d): modified for
- specifying precision. fixes #5098. [ruby-dev:44210]
+Tue Aug 27 13:03:33 2013 Koichi Sasada <ko1@atdot.net>
- * ext/bigdecimal/lib/bigdecimal/util.rb (Integer#to_d): added
- for symmetry to BigDecimal() function with an Integer.
- fixes #5098. [ruby-dev:44210]
+ * ext/stringio/stringio.c (strio_read_nonblock): declare local
+ variables at the first of function.
- * ext/bigdecimal/lib/bigdecimal/util.rb (BigDecimal#to_d): added
- for adapting other Numeric subclasses. [ruby-dev:44245]
+Tue Aug 27 11:51:37 2013 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
- * test/bigdecimal/test_bigdecimal_util.rb: add tests for the above
- changes.
+ * enumerator.c: Allow Enumerator size argument to be any callable.
+ Patch by Avdi Grimm. [bug #8641] [ruby-core:56032] [fix GH-362]
-Wed Jul 27 00:54:38 2011 Kenta Murata <mrkn@mrkn.jp>
+ * test/ruby/test_enumerator.rb: Test for above
- * bigdecimal/bigdecimal.c (VpDup) a new function for duplicating
- a BigDecimal.
+Tue Aug 27 11:46:31 2013 Koichi Sasada <ko1@atdot.net>
- * bigdecimal/bigdecimal.c (BigDecimal_new): support generating a new
- BigDecimal from another BigDecimal using BigDecimal global function
- or constructor. [ruby-dev:44245]
+ * gc.c (gc_profile_clear): do rest_sweep() before clearing
+ profile.current_record.
-Mon Jul 25 22:24:09 2011 Hiroshi Nakamura <nahi@ruby-lang.org>
+Tue Aug 27 07:35:05 2013 Aaron Patterson <aaron@tenderlovemaking.com>
- * backport r32666 from trunk.
+ * 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
- * 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.
+Tue Aug 27 05:24:34 2013 Eric Hodel <drbrain@segment7.net>
- * test/xmlrpc/test_webrick_server.rb: test it.
+ * lib/rubygems: Import RubyGems 2.1.0 Release Candidate
+ * test/rubygems: ditto.
-Mon Jul 25 15:36:07 2011 Hiroshi Nakamura <nahi@ruby-lang.org>
+Mon Aug 26 16:24:58 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * ext/openssl/lib/openssl/{x509.rb,ssl.rb}: Add deprecation warning
- for openssl/{x509,ssl} usage. Users should require "openssl" instead
- of "openssl/ssl" and "openssl/x509". Start of transition period
- introduced by [ruby-dev:38018].
+ * parse.y (parser_nextc): warn carriage return in middle of line.
+ [ruby-core:56240] [Feature #8699]
-Mon Jul 25 13:50:33 2011 Hiroshi Nakamura <nahi@ruby-lang.org>
+Mon Aug 26 15:27:39 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * backport r32662 from trunk.
+ * lib/timeout.rb (Timeout#timeout): should not be caught by rescue
+ clause. [Bug #8730]
- * ext/openssl/lib/openssl/x509.rb: Cosmetic change: move definition
- introduced in r30152 to x509-internal.rb.
+Mon Aug 26 14:44:26 2013 Koichi Sasada <ko1@atdot.net>
-Mon Jul 25 13:35:20 2011 Hiroshi Nakamura <nahi@ruby-lang.org>
+ * array.c (rb_ary_splice): use RARRAY_PTR_USE() without WB because
+ there are not new relations.
- * backport r32658 from trunk.
+ * enum.c (enum_sort_by): ditto.
- * 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.
+ * struct.c (setup_struct): use RARRAY_RAWPTR().
- By design, we're ignoring any error at SSL_shutdown() so we clear
- global error stack after SSL_shutdown is called. See #5039.
+ * vm_eval.c (yield_under): ditto.
-Sun Jul 24 20:29:53 2011 Tanaka Akira <akr@fsij.org>
+ * ext/pathname/pathname.c (path_entries): use RARRAY_AREF().
- * ext/socket/extconf.rb: refine the recvmsg test.
+ * ext/pathname/pathname.c (path_s_glob): ditto.
-Sun Jul 24 20:02:31 2011 Tanaka Akira <akr@fsij.org>
+Mon Aug 26 13:11:10 2013 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
- * ext/socket/extconf.rb: fix the recvmsg test.
+ * array.c (ary_ensure_room_for_push): fix typo in r42658.
-Sun Jul 24 08:42:51 2011 Tanaka Akira <akr@fsij.org>
+Mon Aug 26 12:37:10 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * ext/socket/extconf.rb: test recvmsg allocates file descriptors for
- fd passing even with MSG_PEEK.
+ * template/sizes.c.tmpl: generate automatically by extracting
+ RUBY_CHECK_SIZEOF from configure.in.
- * ext/socket/ancdata.c: use the above test result.
+Mon Aug 26 10:16:59 2013 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
-Sun Jul 24 01:24:31 2011 Eric Hodel <drbrain@segment7.net>
+ * process.c (gcd_timetick_int): Renamed from gcd_timtick_int.
- * lib/rubygems/specification.rb: Restore behavior of
- Gem::Specification#loaded. [Ruby 1.9 - Bug #5032]
+Sun Aug 25 21:02:15 2013 Tanaka Akira <akr@fsij.org>
-Sun Jul 24 01:14:49 2011 NARUSE, Yui <naruse@ruby-lang.org>
+ * sizes.c (Init_sizes): Define the size of clock_t.
- * 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.
+Sun Aug 25 01:47:47 2013 Tanaka Akira <akr@fsij.org>
- * test/rake/test_rake_rake_test_loader.rb: ditto.
+ * bignum.c (BARY_SHORT_MUL): Renamed from BARY_MUL1.
+ (bary_short_mul): Renamed from bary_mul1.
- * test/rake/test_rake_task_argument_parsing.rb
- (test_terminal_width_using_hardcoded_80): hardcoded 80 is used
- when app.unix? is false.
+Sat Aug 24 10:35:09 2013 Tanaka Akira <akr@fsij.org>
-Sun Jul 24 00:42:00 2011 Kenta Murata <mrkn@mrkn.jp>
+ * process.c (rb_clock_gettime): The emulated clock names changed.
- * configure.in: change the default compiler to gcc-4.2 if target os
- is OS X 10.7 (Lion).
+Fri Aug 23 22:22:07 2013 Tanaka Akira <akr@fsij.org>
-Sat Jul 23 17:06:25 2011 Tanaka Akira <akr@fsij.org>
+ * process.c (rb_clock_gettime): Add a cast to fix compile error by
+ -Werror,-Wshorten-64-to-32.
- * io.c (rb_update_max_fd): validate fd.
+Fri Aug 23 22:12:13 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * ext/socket/rubysocket.h (rsock_discard_cmsg_resource): add
- msg_peek_p argument for the declaration.
+ * process.c (rb_intern): no symbol cache while initialization.
- * 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.
+Fri Aug 23 22:07:45 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * ext/socket/unixsocket.c (unix_recv_io): call
- rsock_discard_cmsg_resource with msg_peek_p argument.
+ * configure.in (clock_t): needs time.h.
-Sat Jul 23 14:38:28 2011 Eric Hodel <drbrain@segment7.net>
+Fri Aug 23 21:37:28 2013 Tanaka Akira <akr@fsij.org>
- * test/rake*: Remove dependencies on flexmock and session gems.
- [Ruby 1.9 - Bug #4987]
+ * process.c (reduce_factors): New function.
+ (timetick2dblnum): Use reduce_factors.
+ (timetick2integer): Ditto.
+ (make_clock_result): Follow the above change.
+ (rb_clock_gettime): Ditto.
-Fri Jul 22 21:46:54 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+Fri Aug 23 21:00:55 2013 Tanaka Akira <akr@fsij.org>
- * 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 #5076] [ruby-dev:44185]
+ * 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 Jul 22 21:50:16 2011 NARUSE, Yui <naruse@ruby-lang.org>
+Fri Aug 23 20:50:40 2013 Tanaka Akira <akr@fsij.org>
- * lib/uri/generic.rb (WFKV_): unroll the loop of regexp.
+ * 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.
- * lib/uri/generic.rb (URI.decode_www_form_component): ditto.
+Fri Aug 23 18:39:04 2013 Koichi Sasada <ko1@atdot.net>
-Fri Jul 22 21:49:48 2011 NARUSE, Yui <naruse@ruby-lang.org>
+ * array.c (ary_make_shared): shared ary as shady. Need more effort to
+ make it normal object.
- * 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
+ * array.c (rb_ary_modify): use RARRAY_PTR_USE() without WB because
+ there are not new relations.
-Fri Jul 22 21:49:28 2011 NARUSE, Yui <naruse@ruby-lang.org>
+ * array.c (ary_ensure_room_for_unshift): use RARRAY_RAWPTR() because
+ there are not new relations.
- * 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]
+Fri Aug 23 11:25:57 2013 Koichi Sasada <ko1@atdot.net>
-Fri Jul 22 21:45:21 2011 NARUSE, Yui <naruse@ruby-lang.org>
+ * array.c: introduce ARY_SHARED_OCCUPIED(shared).
- * ext/dl/handle.c (dlhandle_sym): clear previous error with dlerror()
- before calling dlsym(). [ruby-dev:44091] [Bug #5021]
+Fri Aug 23 11:07:08 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Fri Jul 22 19:05:47 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * win32/Makefile.sub (config.h): now SIZEOF_CLOCK_T is needed for
+ unsigned_clock_t.
- * parse.y (rb_enc_symname2_p): get rid of potential out-of-bound
- access.
+Thu Aug 22 22:01:04 2013 Tanaka Akira <akr@fsij.org>
-Fri Jul 22 13:55:59 2011 Eric Hodel <drbrain@segment7.net>
+ * process.c (rb_clock_gettime): Strip "s" from unit names.
- * lib/net/http.rb: Net::HTTP#finish is used to manually close
- connections. [Ruby 1.9 - Bug #5045]
+Thu Aug 22 20:14:59 2013 Tanaka Akira <akr@fsij.org>
-Fri Jul 22 13:51:29 2011 Eric Hodel <drbrain@segment7.net>
+ * process.c (unsigned_clock_t): Defined.
+ (rb_clock_gettime): Consider clock_t overflow for
+ ISO_C_CLOCK_BASED_CLOCK_PROCESS_CPUTIME_ID.
- * ext/readline/readline.c: Add examples for Readline.completion_proc=.
- [Ruby 1.9 - Bug #5057]
+ * configure.in: Check the size of clock_t.
-Fri Jul 22 13:20:33 2011 Eric Hodel <drbrain@segment7.net>
+Thu Aug 22 16:22:48 2013 Koichi Sasada <ko1@atdot.net>
- * tool/rbinstall.rb (default gems): Install executables into the fake
- gem dir for Gem.bin_path. [Ruby 1.9 - Bug #4485]
+ * compile.c (build_postexe_iseq): fix to setup the local table.
-Fri Jul 22 13:03:12 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
+Thu Aug 22 15:42:43 2013 Koichi Sasada <ko1@atdot.net>
- * backport r32609 from trunk.
+ * compile.c (rb_iseq_compile_node): accept NODE_IFUNC to support
+ custom compilation.
- * ext/openssl/ossl_hmac.c: Revert checking return type of
- HMAC_Init_ex as it is not compatible with OpenSSL < 1.0.0.
+ * compile.c (NODE_POSTEXE): compile to
+ "ONCE{ VMFrozenCore::core#set_postexe{...} }" with a new custom
+ compiler `build_postexe_iseq()'.
-Fri Jul 22 11:22:20 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
+ * vm.c (m_core_set_postexe): remove parameters (passed by a block).
- * backport r32606 from trunk.
+Thu Aug 22 06:54:15 2013 Tanaka Akira <akr@fsij.org>
- * 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]
+ * process.c (rb_clock_gettime): Change emulation symbols for
+ Process.clock_gettime.
-Fri Jul 22 09:17:43 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
+Thu Aug 22 06:24:54 2013 Tanaka Akira <akr@fsij.org>
- * backport r32604 from trunk.
+ * process.c (make_clock_result): Extracted from rb_clock_gettime.
- * 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]
+Wed Aug 21 22:30:51 2013 Tanaka Akira <akr@fsij.org>
-Fri Jul 22 06:39:34 2011 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+ * process.c (rb_clock_gettime): clock() based CLOCK_PROCESS_CPUTIME_ID
+ emulation implemented.
- * lib/csv.rb: Do not modify CSV.generate's argument [ruby-core:38356]
+Wed Aug 21 21:02:37 2013 Tanaka Akira <akr@fsij.org>
-Thu Jul 21 20:02:11 2011 Yusuke Endoh <mame@tsg.ne.jp>
+ * process.c (rb_proc_times): Use RB_GC_GUARD to guard objects from GC.
- * 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]
+Wed Aug 21 20:33:01 2013 Tanaka Akira <akr@fsij.org>
- * test/ruby/test_continuation.rb (class TestContinuation): add a test
- for above. a patch from James M. Lawrence.
+ * process.c (get_clk_tck): Extracted from rb_proc_times.
+ (rb_clock_gettime): times() based CLOCK_PROCESS_CPUTIME_ID emulation
+ is implemented.
-Thu Jul 21 20:59:59 2011 Tanaka Akira <akr@fsij.org>
+Wed Aug 21 19:31:48 2013 Tanaka Akira <akr@fsij.org>
- * ext/socket/ancdata.c (discard_cmsg): workaround for MacOS X Lion.
+ * 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>
-Thu Jul 21 07:07:57 2011 Tanaka Akira <akr@fsij.org>
+ * process.c (rb_clock_gettime): CLOCK_PROCESS_CPUTIME_ID emulation
+ using getrusage is implemented.
- * backport r32579, r32581, r32587 by akr and r32588 by kazu.
+Wed Aug 21 17:34:27 2013 Tanaka Akira <akr@fsij.org>
- r32579:
+ * gc.c (getrusage_time): Fallback clock_gettime to getrusage when
+ clock_gettime fails.
+ Reported by Eric Saxby. [ruby-core:56762] [Bug #8805]
- * io.c (rb_update_max_fd): new function.
+Wed Aug 21 02:32:32 2013 Koichi Sasada <ko1@atdot.net>
- * internal.h (rb_update_max_fd): declare rb_update_max_fd.
+ * insns.def: fix regexp's once option behavior.
+ fix [ruby-trunk - Bug #6701]
- * thread_pthread.c (rb_thread_create_timer_thread): update max fd when
- timer thread pipe is created.
+ * insns.def: remove `onceinlinecache' and introduce `once' instruction.
+ `once' doesn't use `setinlinecache' insn any more.
- r32581:
+ * vm_core.h: `union iseq_inline_storage_entry' to store once data.
- * io.c (UPDATE_MAXFD): removed.
+ * compile.c: catch up above changes.
- r32587:
+ * iseq.c: ditto.
- * include/ruby/intern.h (rb_update_max_fd): declaration moved from
- internal.h.
+ * vm.c, vm_insnhelper.c: ditto. fix `m_core_set_postexe()' which
+ is depend on `onceinlinecache' insn.
- * file.c: ditto.
+ * test/ruby/test_regexp.rb: add tests.
- * io.c: call rb_update_max_fd for each new fds.
+ * iseq.c: ISEQ_MINOR_VERSION to 1 (should increment major?)
- * process.c: ditto.
+Wed Aug 21 02:30:15 2013 Koichi Sasada <ko1@atdot.net>
- * random.c: ditto.
+ * gc.c (rb_gcdebug_print_obj_condition): add printing information.
- * ruby.c: ditto.
+Tue Aug 20 13:38:00 2013 Naohisa Goto <ngotogenome@gmail.com>
- * ext/io/console/console.c: ditto.
+ * 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]
- * ext/openssl/ossl_bio.c: ditto.
+Tue Aug 20 02:32:52 2013 Zachary Scott <e@zzak.io>
- * ext/pty/pty.c: ditto.
+ * 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.
- * ext/socket/init.c: ditto.
+ This patch was based on a patch submitted by Steve Klabnik.
+ [ruby-core:56694] [Bug #8778]
- * ext/socket/socket.c: ditto.
+Tue Aug 20 02:10:19 2013 Zachary Scott <e@zzak.io>
- * ext/socket/ancdata.c: ditto.
+ * lib/rss/rss.rb: [DOC] Document for constants by Steve Klabnik
+ [ruby-core:56705] [Bug #8798]
- * ext/socket/unixsocket.c: ditto.
+Tue Aug 20 02:01:10 2013 Zachary Scott <e@zzak.io>
- r32588:
+ * lib/rss/xmlparser.rb: [DOC] Hide legacy constant from rdoc
+ Patch by Steve Klabnik [ruby-core:56708] [Bug #8799]
- * io.c (rb_update_max_fd): remove parentheses. they are not in
- macro.
+Tue Aug 20 01:52:05 2013 Zachary Scott <e@zzak.io>
-Sun Jul 17 08:07:31 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
+ * 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]
- * backport r32563 from trunk
+Tue Aug 20 01:19:22 2013 Tanaka Akira <akr@fsij.org>
- * 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]
+ * configure.in: Define ac_cv_func_clock_gettime to yes for mingw*.
-Sat Jul 16 17:29:20 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Mon Aug 19 21:31:35 2013 Tanaka Akira <akr@fsij.org>
- * configure.in (RUBY_UNIVERSAL_ARCH): restore arch flag.
- Bug #4977
+ * 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.
-Sat Jul 16 11:18:26 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+Mon Aug 19 20:55:12 2013 Koichi Sasada <ko1@atdot.net>
- * win32/setup.mak: support to build x64-mswin64 on Windows7 (and Vista,
- perhaps).
- backported r32521 from trunk
+ * gc.c: fix around GC_DEBUG.
-Sat Jul 16 06:31:23 2011 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+ * gc.c (RVALUE::line): should be VALUE. On some environment
+ (such as mswin64), `int' introduces alignment mismatch.
- * lib/uri/common.rb (module): Remove optional parser argument to
- Kernel#URI
- [ruby-core:38061]
+ * gc.c (newobj_of): add an assertion to check VALUE alignment.
- * lib/uri/generic.rb (module): ditto
+ * gc.c (aligned_malloc): `&' is low priority than `=='.
-Sat Jul 16 01:15:53 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+ * gc.c: define GC_DEBUG everytime and use it as value 0 or 1.
- * time.c (time_dup): used rb_obj_class() instead of CLASS_OF().
- The patch is made by Kazuki Tsujimoto. [Bug #5012] [ruby-dev:44071]
+Mon Aug 19 17:43:44 2013 Koichi Sasada <ko1@atdot.net>
- * test/ruby/test_time.rb (TestTime#test_getlocal_dont_share_eigenclass):
- added a new test for eigenclass of time object.
+ * test/ruby/test_fiber.rb: collect garbage fibers immediately.
-Fri Jul 15 19:11:00 2011 Kenta Murata <mrkn@mrkn.jp>
+Mon Aug 19 17:41:49 2013 Koichi Sasada <ko1@atdot.net>
- * bignum.c (bigsub_int): add RB_GC_GUARD. This patch is made by
- Makoto Kishimoto. fixes #4223 [ruby-dev:42907]
+ * test/profile_test_all.rb: add `failed?' information.
- * bignum.c (bigadd_int): ditto.
+Mon Aug 19 17:00:53 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Fri Jul 15 09:59:12 2011 Hiroshi Nakamura <nahi@ruby-lang.org>
+ * process.c (retry_fork): retry with GC if ENOMEM occurred, to free
+ swap/kernel space.
- * backport r32546 from trunk.
+Mon Aug 19 13:28:47 2013 NAKAMURA Usaku <usa@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.
+ * include/ruby/win32.h (CLOCK_MONOTONIC): typo.
- * test/digest/test_digest.rb: add test for unalignment access.
+ * win32/win32.c: removed duplicated declarations.
+Mon Aug 19 13:03:08 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Thu Jul 14 12:40:07 2011 Hiroshi Nakamura <nahi@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.
- * backport r32537 from trunk.
+Mon Aug 19 12:56:49 2013 Tanaka Akira <akr@fsij.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.
+ * process.c (Init_process): Add constants: CLOCK_REALTIME_ALARM and
+ CLOCK_BOOTTIME_ALARM.
- * test/openssl/test_ssl.rb
- (test_exception_in_verify_callback_is_ignored): test it.
+Sun Aug 18 20:17:41 2013 Kazuki Tsujimoto <kazuki@callcc.net>
-Wed Jul 13 08:20:08 2011 Shota Fukumori <sorah@tubusu.net>
+ * variable.c, vm_method.c: remove dead code.
- * lib/test/unit.rb(Test::Unit::Options#process_args): Fix bug.
- Fix process_args didn't return `@option` after r30939. Backported
- r32526 from trunk.
+ * test/ruby/test_fiber.rb, test/ruby/test_thread.rb:
+ change accordingly.
-Mon Jul 11 23:50:39 2011 Yutaka Kanemoto <kanemoto@ruby-lang.org>
+Sun Aug 18 19:32:26 2013 Kazuki Tsujimoto <kazuki@callcc.net>
- * time.c: can't compile time.c on AIX due to missing declaration for
- ffs(). It is declared in strings.h on AIX. backported r32518 from
- trunk.
+ * error.c, file.c, gc.c, hash.c, thread.c, variable.c, vm_eval.c, bin/erb:
+ $SAFE=4 is obsolete.
-Mon Jul 11 23:47:00 2011 Yutaka Kanemoto <kanemoto@ruby-lang.org>
+Sun Aug 18 14:30:47 2013 Tanaka Akira <akr@fsij.org>
- * thread_pthread.c (get_stack): need to adjust stack addr for
- [Bug #1813] on AIX. backported r32511 from trunk.
+ * process.c (rb_clock_gettime): Rename POSIX_TIME_CLOCK_REALTIME to
+ ISO_C_TIME_CLOCK_REALTIME.
-Mon Jul 11 15:17:03 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+Sun Aug 18 14:22:45 2013 Tanaka Akira <akr@fsij.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.
- backported r32512 from trunk.
+ * configure.in: Revert r42604. It causes linking librt on systems
+ with newer glibc uselessly.
-Sun Jul 10 23:58:55 2011 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+Sun Aug 18 13:18:38 2013 Tanaka Akira <akr@fsij.org>
- * version.h: 1.9.3 is no longer trunk.
+ * process.c (Init_process): Add constants: CLOCK_REALTIME_COARSE,
+ CLOCK_MONOTONIC_COARSE and CLOCK_BOOTTIME.
-Sun Jul 10 23:24:29 2011 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+Sun Aug 18 12:41:50 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * class.c (rb_mix_module): reverted r31873.
- (check_mix_method_i, do_mix_method_i) reverted r31917.
+ * 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.
- * test/ruby/test_module.rb (TestModule#test_mix_const): reverted
- r31918.
+Sun Aug 18 10:05:12 2013 Tanaka Akira <akr@fsij.org>
-Sun Jul 10 22:50:00 2011 Kenta Murata <mrkn@mrkn.jp>
+ * bignum.c (rb_big2str1): Make an expression more explicit.
- * ext/bigdecimal/bigdecimal.c (rmpd_power_by_big_decimal): fix
- precision treatment errors.
+Sun Aug 18 03:18:45 2013 Tanaka Akira <akr@fsij.org>
- * test/bigdecimal/test_bigdecimal.rb: add tests for the above change.
- fix precision treatment errors.
+ * bignum.c (rb_big2str1): Use power_level instead of bitsize(xn).
- * ext/bigdecimal/bigdecimal.c (BigDecimal_power): precision argument
- should be optional for its compatibility.
+Sun Aug 18 00:44:58 2013 Tanaka Akira <akr@fsij.org>
-Sun Jul 10 22:38:09 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * bignum.c (BIGDIVREM_EXTRA_WORDS): Redefine to 1.
+ (bigdivrem_num_extra_words): Removed.
+ (bigdivrem_normal): Simplified.
+ (big2str_karatsuba): Ditto.
- * 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
+Sat Aug 17 23:25:19 2013 Benoit Daloze <eregontp@gmail.com>
-Sun Jul 10 21:51:29 2011 Koichi Sasada <ko1@atdot.net>
+ * test/ruby/test_time.rb: use the in_timezone() helper
+ and define it at the top with other helpers.
- * internal.h: add comments (cautions).
+Sat Aug 17 22:20:47 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Sun Jul 10 20:59:38 2011 Shota Fukumori <sorah@tubusu.net>
+ * time.c (time_mload): ignore auxiliary data, offset and zone, if
+ invalid. [ruby-core:56648] [Bug #8795]
- * lib/test/unit.rb: Add new class variable `@@testfile_prefix`.
- This is for changing test name prefix. (For testing)
+Sat Aug 17 20:11:49 2013 Benoit Daloze <eregontp@gmail.com>
- * test/testunit/tests_for_parallel/ptest_first.rb: Renamed from
- test_first.rb
+ * 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
- * test/testunit/tests_for_parallel/ptest_second.rb: Renamed from
- test_second.rb
+Fri Aug 16 18:12:05 2013 Koichi Sasada <ko1@atdot.net>
- * test/testunit/tests_for_parallel/ptest_third.rb: Renamed from
- test_third.rb
+ * test/profile_test_all.rb: fix typo.
- * test/testunit/tests_for_parallel/ptest_forth.rb: Renamed from
- test_forth.rb
+Fri Aug 16 18:09:20 2013 Koichi Sasada <ko1@atdot.net>
- * test/testunit/tests_for_parallel/runner.rb: Remove misc.rb
+ * test/profile_test_all.rb: remove space characters from test names.
- * test/testunit/tests_for_parallel/ptest_first.rb: ditto.
+Fri Aug 16 17:32:02 2013 Koichi Sasada <ko1@atdot.net>
- * test/testunit/tests_for_parallel/ptest_second.rb: ditto.
+ * test/profile_test_all.rb: refactoring memory profiling tool for
+ test-all.
+ Add profiling targets /proc/meminfo and /proc/self/status.
- * test/testunit/tests_for_parallel/ptest_third.rb: ditto.
+ * test/runner.rb: accept other than 'true'.
- * test/testunit/tests_for_parallel/ptest_forth.rb: ditto.
+Fri Aug 16 11:23:35 2013 NAKAMURA Usaku <usa@ruby-lang.org>
- * test/testunit/tests_for_parallel/misc.rb: Removed because no longer
- needed.
+ * file.c (rb_file_size, rb_file_flock): improve performance of Windows.
- * test/testunit/test_parallel.rb: Fix assertions for above.
+ * file.c (rb_file_truncate): removed unnecessary #ifdef.
-Sun Jul 10 16:57:08 2011 Koichi Sasada <ko1@atdot.net>
+ * test/test_file.rb (TestFile#test_truncate_size): added an assertion
+ for File#size.
- * vm_insnhelper.c (vm_throw): check a class frame.
- Fixes Bug #4648.
- The patch is contributed by Kazuki Tsujimoto.
+Fri Aug 16 10:07:59 2013 Tanaka Akira <akr@fsij.org>
- * bootstraptest/test_proc.rb: add tests for above.
+ * 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.
-Sun Jul 10 17:28:01 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+Fri Aug 16 09:17:00 2013 Tanaka Akira <akr@fsij.org>
- * thread_pthread.c (mutex_debug): use exit(EXIT_FAILURE) instad of
- exit(1).
- * thread_pthread.c (add_signal_thread_list): ditto.
- * thread.c (rb_thread_call_with_gvl): ditto.
- * util.c (Bug): ditto.
+ * bignum.c (bary_small_rshift): Specify the higher BDIGIT instead of
+ sign bit.
+ (big_shift3): Follow the above change.
-Sun Jul 10 15:58:12 2011 NARUSE, Yui <naruse@ruby-lang.org>
+Fri Aug 16 02:20:39 2013 Tanaka Akira <akr@fsij.org>
- * ext/json: Merge json gem 1.5.4+ (f7f78896607b6f6226cd).
- [Bug #4700]
+ * bignum.c (bary_mul_toom3): Reduce a branch.
-Sun Jul 10 16:41:32 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+Fri Aug 16 02:14:09 2013 NARUSE, Yui <naruse@ruby-lang.org>
- * 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]
+ * process.c (rb_clock_gettime): add CLOCK_MONOTONIC support on OS X.
+ http://developer.apple.com/library/mac/qa/qa1398/_index.html
+ [Feature #8658]
- * bootstraptest/test_objectspace.rb: new test for this fix.
+Fri Aug 16 01:37:43 2013 Tanaka Akira <akr@fsij.org>
-Sun Jul 10 16:06:16 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+ * bignum.c (bigdivrem_single): Use shift when y is a power of two.
- * signal.c (sigsegv): use abort() instead of exit() when nested
- SEGV was happen. Because unnested SEGV use abort().
- [Bug #5013][ruby-dev:44078]
+Fri Aug 16 01:09:33 2013 Tanaka Akira <akr@fsij.org>
-Sun Jul 10 15:30:00 2011 Kenta Murata <mrkn@mrkn.jp>
+ * bignum.c (bigdivrem_restoring): Use bigdivrem_single if non-topmost
+ BDIGITs of y are zero.
- * load.c (rb_f_autoload): prevent to autoload for singleton
- classes. fixes [Bug #4886] [ruby-dev:43816]
+Fri Aug 16 00:33:12 2013 Tanaka Akira <akr@fsij.org>
- * bootstraptest/test_autoload.rb: add tests for the above change.
+ * bignum.c (rb_big2str1): Truncate topmost zeros of x.
-Sun Jul 10 15:09:17 2011 Shota Fukumori <sorah@tubusu.net>
+Fri Aug 16 00:00:57 2013 Tanaka Akira <akr@fsij.org>
- * lib/test/unit/assertions.rb: Import documentation patch by Justin
- Collins. [ruby-core:37225] [Feature #4903]
+ * bignum.c (bary_divmod): Simplify an expression.
-Sun Jul 10 14:57:36 2011 Tadayoshi Funaba <tadf@dotrb.org>
+Thu Aug 15 23:26:12 2013 Tanaka Akira <akr@fsij.org>
- * ext/date/date_core.c: canonicalizes nth and sf.
+ * bignum.c (bigdivrem_normal): Remove a local variable.
-Sun Jul 10 14:13:50 2011 Koichi Sasada <ko1@atdot.net>
+Thu Aug 15 23:08:32 2013 Tanaka Akira <akr@fsij.org>
- * internal.h (rb_thread_call_with_gvl, rb_thread_call_without_gvl):
- make them visible as experimental C APIs. fixes Feature #4328.
+ * bignum.c (big2str_karatsuba): Use bigdivrem_restoring directly to
+ reduce working buffer and memory copy.
+ (rb_big2str1): Allocate working buffer for big2str_karatsuba here.
-Sun Jul 10 12:18:00 2011 Kenta Murata <mrkn@mrkn.jp>
+Thu Aug 15 20:51:29 2013 NAKAMURA Usaku <usa@ruby-lang.org>
- * ext/bigdecimal/bigdecimal.c (BigDecimal_power): support non-integral
- exponent. fixes [Bug #3271]
+ * io.c, internal.h (rb_io_flush_raw): new function to select calling
+ fsync() (on Windows).
- * ext/bigdecimal/bigdecimal.c (rmpd_power_by_big_decimal): ditto.
+ * io.c (rb_io_flush_raw): use above function.
- * ext/bigdecimal/bigdecimal.c (BigDecimal_power_op): add a function to
- only use for "**" operator.
+ * file.c (rb_file_truncate): use above function.
- * test/bigdecimal/test_bigdecimal.rb: add a bunch of tests for the
+ * test/ruby/test_file.rb (TestFile#test_truncate_size): test for
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>
+Thu Aug 15 18:39:31 2013 NAKAMURA Usaku <usa@ruby-lang.org>
- * 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].
+ * win32/win32.c (clock_gettime): improve precision when freq is less
+ than and nearly equals 10**9.
-Sun Jul 10 09:46:14 2011 Masaya Tarui <tarui@ruby-lnag.org>
+Thu Aug 15 17:43:15 2013 Koichi Sasada <ko1@atdot.net>
- * range.c (range_max): fix behavior with excluded end value.
- [Bug #4591]
+ * gc.c (gc_lazy_sweep): remove heap_increment() here because heap_inc
+ may be 0.
-Sun Jul 10 09:13:18 2011 Eric Hodel <drbrain@segment7.net>
+Thu Aug 15 16:59:56 2013 NAKAMURA Usaku <usa@ruby-lang.org>
- * NEWS: Fix RubyGems version. [Ruby 1.9 - Bug #5004]
+ * io.c (rb_io_rewind): remove fsync() for Windows to improve the
+ performance.
-Sat Jul 9 20:01:59 2011 Tadayoshi Funaba <tadf@dotrb.org>
+Thu Aug 15 16:30:23 2013 NAKAMURA Usaku <usa@ruby-lang.org>
- * internal.h: rb_rational_reciprocal is defined in rational.c.
+ * test/fileutils/test_fileutils.rb (TestFileUtils#test_rmdir):
+ FileUtils.rmdir ignores Errno::ENOTEMPTY, so, in such cases, this
+ assertion is nonsense.
-Sat Jul 9 19:48:31 2011 Tadayoshi Funaba <tadf@dotrb.org>
+Thu Aug 15 15:49:35 2013 Tanaka Akira <akr@fsij.org>
- * internal.h: added declarations.
- * complex.c: followed the above change.
+ * process.c (rb_clock_gettime): [DOC] FreeBSD 7.1 supports
+ CLOCK_THREAD_CPUTIME_ID.
+ http://www.freebsd.org/releases/7.1R/relnotes.html
-Sat Jul 9 17:24:41 2011 Tadayoshi Funaba <tadf@dotrb.org>
+Thu Aug 15 14:30:23 2013 NAKAMURA Usaku <usa@ruby-lang.org>
- * NEWS: bigdecimal is not a builtin.
+ * include/ruby/win32.h, win32/Makefile.sub, win32/win32.c
+ (clock_gettime): [experimental] emulates clock_gettime(2) of posix.
-Sat Jul 9 17:17:53 2011 Tadayoshi Funaba <tadf@dotrb.org>
+Thu Aug 15 02:32:40 2013 Zachary Scott <e@zzak.io>
- * ext/date/date_core.c: some improvements for performance.
+ * hash.c (rb_hash_aset): [DOC] Document key dup patch by @kachick
+ [Fixes GH-382] https://github.com/ruby/ruby/pull/382
-Sat Jul 9 16:56:01 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Wed Aug 14 14:28:39 2013 NAKAMURA Usaku <usa@ruby-lang.org>
- * atomic.h (ATOMIC_OR): _InterlockedOr is unavailable in VC6.
+ * 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]
- * numeric.c (ULLONG_MAX): fallback definition.
+ * NEWS: documents about above change and def-expr (see r42337).
-Sat Jul 9 15:59:19 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * test/ruby/test_module.rb: tests about above change.
- * win32/win32.c (rb_w32_{read,write}): should be signed.
- Bug #5001
+Wed Aug 14 00:51:14 2013 Tanaka Akira <akr@fsij.org>
-Sat Jul 9 14:02:20 2011 Takeyuki FUJIOKA <xibbar@ruby-lang.org>
+ * bignum.c (bigdivrem_restoring): xn argument removed.
+ (bigdivrem_normal): Follow the above change.
- * lib/cgi/core.rb: fix multipart form parsing bug. [Bug #3866]
+Wed Aug 14 00:18:39 2013 Tanaka Akira <akr@fsij.org>
-Sat Jul 9 11:41:03 2011 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+ * bignum.c (big_div_struct): Remove xn and j field. Add zn field.
+ (bigdivrem1): Follow the above change.
+ (bigdivrem_restoring): Ditto.
- * lib/matrix.rb: Add Vector#normalize [ruby-dev:43829]
+Tue Aug 13 23:38:17 2013 Tanaka Akira <akr@fsij.org>
-Sat Jul 9 09:25:06 2011 Eric Hodel <drbrain@segment7.net>
+ * bignum.c (big_div_struct): ynzero field removed.
+ (bigdivrem1): Follow the above change.
+ (bigdivrem_restoring): Ditto.
- * enumerator.c: Remove "enumeration sequenced by".
- [Ruby 1.9 - Bug #4757]
+Tue Aug 13 23:01:16 2013 Tanaka Akira <akr@fsij.org>
-Sat Jul 9 09:14:56 2011 Eric Hodel <drbrain@segment7.net>
+ * bignum.c (bigdivrem_restoring): Extracted from bigdivrem_normal.
- * io.c: Note that methods other than IO#gets may increase IO#lineno.
- [Ruby 1.9 - Bug #4902]
+Tue Aug 13 22:12:59 2013 Kenichi Kamiya <kachick1@gmail.com>
-Sat Jul 9 08:39:39 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * random.c (rb_random_ulong_limited): coerce before check negative.
+ [Fixes GH-379]
- * common.mk (RUN_OPT): disable gems.
+Tue Aug 13 21:52:15 2013 Kenichi Kamiya <kachick1@gmail.com>
-Sat Jul 9 08:37:05 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * object.c (Init_Object): undef Module#prepend_features on Class, as
+ well as Module#append_features. [Fixes GH-376]
- * 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
+ * test_class.rb: Added test for above. And ensure type checking
+ on similar methods as module_function.
-Fri Jul 8 21:20:39 2011 NARUSE, Yui <naruse@ruby-lang.org>
+Tue Aug 13 08:52:18 2013 Zachary Scott <e@zzak.io>
- * 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]
+ * doc/syntax/literals.rdoc: [DOC] String literal concat by @cknadler
+ [Fixes GH-380] https://github.com/ruby/ruby/pull/380
- * addr2line.h: ditto.
+Mon Aug 12 23:07:21 2013 Masaya Tarui <tarui@ruby-lang.org>
- * vm_dump.c: ditto.
+ * gc.c (gc_marks_test): inhibit gc for st's operation.
-Fri Jul 8 16:40:38 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Mon Aug 12 15:59:50 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * ext/json/parser/parser.rl (convert_encoding): should not modify
- the argument.
+ * parse.y (parser_whole_match_p): treat CR in middle of a line as a
+ mere whitespace.
- * ext/json/parser/parser.rl (convert_encoding): no needs to use
- force_encoding.
+Mon Aug 12 15:16:58 2013 Koichi Sasada <ko1@atdot.net>
-Fri Jul 8 15:53:31 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * 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.
- * error.c (rb_bug): get rid of segfault after all threads
- disposed.
+ * test/ruby/test_module.rb: add a test for WB miss.
-Fri Jul 8 15:01:06 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+Mon Aug 12 13:47:54 2013 Zachary Scott <e@zzak.io>
- * ext/openssl/ossl.h: include openssl/e_os2.h before checking the
- definition of OPENSSL_SYS_WIN32.
+ * process.c: [DOC] RDoc formatting of Process.clock_gettime
-Fri Jul 8 14:40:39 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+Mon Aug 12 13:29:09 2013 Zachary Scott <e@zzak.io>
- * win32/win32.c (wunlink): reverted a part of r32426. it was mistakenly
- mixed.
+ * lib/yaml/dbm.rb: [DOC] Document call-seq for YAML::DBM
-Fri Jul 8 14:29:47 2011 Narihiro Nakamura <authornari@gmail.com>
+Mon Aug 12 12:57:26 2013 Zachary Scott <e@zzak.io>
- * configure.in: can't subtract void *.
+ * 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.
-Fri Jul 8 14:33:26 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+Mon Aug 12 12:53:39 2013 Zachary Scott <e@zzak.io>
- * 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.
+ * ext/dbm/dbm.c: [DOC] Reformat headings of DBM class
-Fri Jul 8 13:47:39 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+Mon Aug 12 12:46:31 2013 Zachary Scott <e@zzak.io>
- * thread.c (rb_mutex_unlock_all): folded into
- rb_threadptr_unlock_all_locking_mutexes.
- * thread.c (rb_threadptr_unlock_all_locking_mutexes) ditto.
+ * 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.
-Fri Jul 8 13:36:02 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+Mon Aug 12 02:51:32 2013 NARUSE, Yui <naruse@ruby-lang.org>
- * 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.
+ * 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.
- * eval.c (ruby_cleanup): call rb_threadptr_unlock_all_locking_mutexes
- again after finalizer. [Bug #4988] [ruby-dev:44049]
+ * ext/readline/readline.c (readline_s_set_output): ditto.
-Fri Jul 8 13:06:09 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+Sun Aug 11 23:27:00 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * cont.c (FIBER_MACHINE_STACK_ALLOCATION_SIZE): Fiber stack size
- don't need to keep multiple number of sizeof(VALUE).
+ * file.c (rb_str_encode_ospath): OS path encoding on Mac OS X is also
+ fixed.
-Fri Jul 8 11:39:12 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Sun Aug 11 22:57:24 2013 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.
+ * 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]
- * parse.y (rb_intern3), ruby.c (process_options, ruby_script):
- defer freezing after associating encodings.
+Sun Aug 11 19:11:45 2013 Kouhei Sutou <kou@cozmixng.org>
-Thu Jul 7 15:16:51 2011 NARUSE, Yui <naruse@ruby-lang.org>
+ * test/rexml/parser/test_sax2.rb: Expand abbreviated class name.
- * numeric.c (rb_num2ull): use own switch sentence.
- Current implementation can't convert 18446744073709551615.
+Sun Aug 11 19:06:03 2013 Kouhei Sutou <kou@cozmixng.org>
-Thu Jul 7 06:56:15 2011 NARUSE, Yui <naruse@ruby-lang.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.
- * cont.c (FIBER_STACK_FLAGS): workaround fix for r32420 on FreeBSD.
+Sun Aug 11 18:44:04 2013 Kouhei Sutou <kou@cozmixng.org>
-Thu Jul 7 06:46:12 2011 Eric Hodel <drbrain@segment7.net>
+ * lib/rexml/sax2listener.rb (REXML::SAX2Listener#elementdecl): Fix wrong
+ examples. [Bug #8731] [ruby-dev:47582]
+ Reported by Ippei Obayashi.
- * benchmark/driver.rb: Add difference column to report that averages
- across all runs of a benchmark. [Ruby 1.9 - Feature #4982]
+Sun Aug 11 18:42:13 2013 Kouhei Sutou <kou@cozmixng.org>
-Thu Jul 7 06:19:38 2011 Eric Hodel <drbrain@segment7.net>
+ * lib/rexml/parsers/sax2parser.rb
+ (REXML::Parsers::SAX2Parser#handle_entitydecl): Extract.
- * lib/rubygems.rb: Reduce requires to improve `make benchmark`.
- [#4962]
- * lib/rubygems/specification.rb: Delay initialization of rubygems
- until require is called.
+Sun Aug 11 18:40:25 2013 Kouhei Sutou <kou@cozmixng.org>
-Thu Jul 7 04:31:26 2011 Nobuyoshi Nakada <nobu@ruby-lang.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.
- * 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.
+Sun Aug 11 18:08:40 2013 Kouhei Sutou <kou@cozmixng.org>
-Thu Jul 7 00:40:16 2011 NAKAMURA Usaku <usa@ruby-lang.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.
- * win32/win32.c (kill): check that the process exited or not before
- terminating it. [Bug #4943]
+Sun Aug 11 18:07:39 2013 Kouhei Sutou <kou@cozmixng.org>
-Wed Jul 6 23:13:19 2011 Yukihiro Matsumoto <matz@ruby-lang.org>
+ * lib/rexml/parsers/baseparser.rb
+ (REXML::Parsers::BaseParser#pull_event): Support optional NDATA
+ in external ID entity declaration.
- * parse.y (opt_call_args): allow trailing comma after assoc
- argument e.g. 'foo(bar:1,)'. fixed #3456
+Sun Aug 11 17:54:07 2013 Kouhei Sutou <kou@cozmixng.org>
-Wed Jul 6 22:11:12 2011 Shota Fukumori <sorah@tubusu.net>
+ * 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.
- * test/cgi/test_cgi_header.rb(test_cgi_header_nph): Validate date in
- "Date:" header
+Sun Aug 11 17:41:41 2013 Kouhei Sutou <kou@cozmixng.org>
-Wed Jul 6 21:29:33 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+ * test/rexml/parser/test_sax2.rb: Add SAX2 API test.
- * 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.
+Sun Aug 11 15:10:40 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Wed Jul 6 21:24:53 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+ * parse.y (rb_enc_symname_type): allow ID_ATTRSET for ID_INSTANCE,
+ ID_GLOBAL, ID_CLASS, ID_JUNK too. [Bug #8756]
- * 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]
+Sun Aug 11 13:17:00 2013 Charlie Somerville <charliesome@ruby-lang.org>
-Wed Jul 6 21:23:38 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+ * include/ruby/encoding.h: Reduce ENCODING_INLINE_MAX to 127 as this
+ should be sufficient to represent all the encodings Ruby supports.
- * cont.c (fiber_machine_stack_alloc): use MAP_STACK if it's provided.
+Sun Aug 11 11:54:38 2013 Tanaka Akira <akr@fsij.org>
-Wed Jul 6 21:22:16 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+ * 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]
- * cont.c (fiber_machine_stack_alloc): use MAP_FAILED instead of -1.
+Sun Aug 11 10:40:48 2013 Zachary Scott <e@zzak.io>
-Wed Jul 6 21:21:05 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+ * lib/time.rb: [DOC] Correcting rdoc visibility of time.rb constants
+ Reported by Tanaka Akira [ruby-core:56517]
- * cont.c (fiber_machine_stack_alloc): remove unnecessary cast.
+Sun Aug 11 04:48:14 2013 NARUSE, Yui <naruse@ruby-lang.org>
-Wed Jul 6 18:10:13 2011 Shota Fukumori <sorah@tubusu.net>
+ * 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.
- * test/cgi/test_cgi_header.rb(test_cgi_header_nph): Adding space after
- comma.
+Sun Aug 11 03:26:07 2013 Tanaka Akira <akr@fsij.org>
- * test/cgi/test_cgi_header.rb(test_cgi_header_nph): Remove variable
- `now`. Suppress warning.
+ * bignum.c (bitsize): Fix a conditional expression.
-Wed Jul 6 12:18:09 2011 Shota Fukumori <sorah@tubusu.net>
+Sun Aug 11 02:44:03 2013 Zachary Scott <e@zzak.io>
- * 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
+ * lib/time.rb: [DOC] Document constants by @markijbema [Fixes GH-377]
+ https://github.com/ruby/ruby/pull/377
-Tue Jul 5 15:28:04 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Sun Aug 11 01:28:52 2013 Tanaka Akira <akr@fsij.org>
- * parse.y (parser_here_document): should dispatch heredoc_end
- scanner event on an empty here document. fixed Bug#4543.
+ * 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
-Tue Jul 5 13:49:26 2011 Yusuke Endoh <mame@tsg.ne.jp>
+Sat Aug 10 13:53:22 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * addr2line.c: fix r32407 to check HAVE_ALLOCA_H.
+ * parse.y (rb_id_attrset): allow other than ID_ATTRSET.
-Tue Jul 5 14:05:43 2011 NARUSE, Yui <naruse@ruby-lang.org>
+ * parse.y (intern_str): ditto. try stem ID for ID_INSTANCE,
+ ID_GLOBAL, ID_CLASS, ID_JUNK too. [Bug #8756]
- * 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]
+Sat Aug 10 12:49:50 2013 Kouhei Sutou <kou@cozmixng.org>
- * lib/webrick/httpauth/digestauth.rb (initialize):
- Because of above, opera_hack is useless and removed.
+ * 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?)
-Tue Jul 5 01:30:01 2011 Yusuke Endoh <mame@tsg.ne.jp>
+Sat Aug 10 12:47:19 2013 Kouhei Sutou <kou@cozmixng.org>
- * 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.
+ * 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.
-Tue Jul 5 01:24:26 2011 Yusuke Endoh <mame@tsg.ne.jp>
+Sat Aug 10 12:43:15 2013 Kouhei Sutou <kou@cozmixng.org>
- * 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.
+ * 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.
-Tue Jul 5 01:22:46 2011 Yusuke Endoh <mame@tsg.ne.jp>
+Sat Aug 10 12:39:00 2013 Kouhei Sutou <kou@cozmixng.org>
- * addr2line.c: include <alloca.h> to fix a build issue on Solaris.
+ * test/rexml/parse/test_document_type_declaration.rb: Add tests for
+ parsing document type declaration.
-Tue Jul 5 00:49:05 2011 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
+Sat Aug 10 12:00:45 2013 Kouhei Sutou <kou@cozmixng.org>
- * ext/coverage/coverage.c: resurrect r32071 + add GC guard for
- rb_coverages. [ruby-core:37352] [Bug #4927]
- [ruby-core:36539] [Feature #4796]
+ * 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!!!
- * test/coverage/test_coverage.rb resurrect r32071.
+Sat Aug 10 11:58:24 2013 Kouhei Sutou <kou@cozmixng.org>
-Mon Jul 4 22:24:46 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+ * test/rexml/parse/test_notation_declaration.rb (#test_system_public):
+ Add a test for PUBLIC notation and SYSTEM notation order case.
- * thread_pthread.c (get_stack): For NetBSD/FreeBSD, use
- pthread_attr_getstack() if possible. and, remove an assumption
- of stack growing direction.
+Sat Aug 10 11:31:35 2013 Kouhei Sutou <kou@cozmixng.org>
-Mon Jul 4 20:42:31 2011 Yusuke Endoh <mame@tsg.ne.jp>
+ * 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.
- * 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]
+Sat Aug 10 09:20:21 2013 Zachary Scott <e@zzak.io>
- * test/coverage/test_coverage.rb: ditto.
+ * NEWS: [DOC] typo in example reported by @moretea
+ https://github.com/ruby/ruby/commit/a39e724#commitcomment-3831489
-Mon Jul 4 07:14:12 2011 NARUSE, Yui <naruse@ruby-lang.org>
+Sat Aug 10 09:19:04 2013 Zachary Scott <e@zzak.io>
- * thread_pthread.c (get_stack): the return address of get_stack
- must be the highest address of the current thread's stack.
+ * proc.c: [DOC] rdoc code formatting
-Mon Jul 4 06:37:22 2011 Koichi Sasada <ko1@atdot.net>
+Sat Aug 10 09:12:01 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * 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]
+ * parse.y (rb_id_attrset): check if the argument is valid type as an
+ attribute.
- * thread_win32.c (rb_reserved_fd_p): added (return 0 for any fds).
+Sat Aug 10 05:44:08 2013 Zachary Scott <e@zzak.io>
- * io.c (rb_io_initialize): raise ArgumentError if given fd is reserved by Ruby.
+ * lib/rss/trackback.rb: [DOC] Hide RSS::Trackback from rdoc
+ Patch by Steve Klabnik [Bug #8755] [ruby-core:56456]
-Sun Jul 3 23:43:56 2011 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+Sat Aug 10 04:52:21 2013 Tanaka Akira <akr@fsij.org>
- * ext/extmk.rb (extmake): suppresses outputs from extconf.rb.
- (extmake) warns a failure in extconf.rb.
+ * bignum.c (big_div_struct): Use size_t.
+ (bigdivrem1): Ditto.
+ (bigdivrem_num_extra_words): Ditto.
+ (bigdivrem_single): Ditto.
+ (bigdivrem_normal): Ditto.
+ (bary_divmod): Ditto.
-Sun Jul 3 13:44:51 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Fri Aug 9 23:47:15 2013 Kouhei Sutou <kou@cozmixng.org>
- * array.c (ary_reject_bang): should not remove elements which are
- not yielded. [Bug #2545]
+ * 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!!!
-Sun Jul 3 06:10:26 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+Fri Aug 9 22:51:10 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * 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]
+ * configure.in (XLDFLAGS, LIBRUBYARG_STATIC): CoreFoundation framework
+ option is now needed always, regardless enable-shared.
+ [ruby-core:56467] [Bug #8759]
-Sun Jul 3 04:50:08 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+Fri Aug 9 22:20:51 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * 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.
+ * ruby.c (load_file_internal): use rb_parser_compile_string_path and
+ rb_parser_compile_file_path, String path name versions. [Bug #8753]
-Sat Jul 02 08:59:20 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
+Fri Aug 9 07:16:00 2013 Charlie Somerville <charliesome@ruby-lang.org>
- * 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]
+ * 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.
-Sat Jul 2 07:17:45 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Fri Aug 9 19:13:54 2013 Koichi Sasada <ko1@atdot.net>
- * array.c (rb_ary_reject_bang, rb_ary_delete_if): rejected
- elements should be removed. fixed [Bug #2545]
+ * NEWS: update about new methods for Binding.
-Sat Jul 2 01:57:00 2011 Kenta Murata <mrkn@mrkn.jp>
+Fri Aug 9 18:48:09 2013 Koichi Sasada <ko1@atdot.net>
- * NEWS: remove a description of Kernel#respond_to? because it has
- been reverted at revision 28564.
+ * proc.c: add Binding#local_variable_get/set/defined?
+ to access local variables which a binding contains.
+ Most part of implementation by nobu.
-Sat Jul 2 00:58:00 2011 Kenta Murata <mrkn@mrkn.jp>
+ * test/ruby/test_proc.rb: add a tests for above.
- * NEWS: describe a change of multiplication of Bignum.
+ * 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 Jul 1 18:52:31 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+Fri Aug 9 14:02:01 2013 SHIBATA Hiroshi <shibata.hiroshi@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.
+ * tool/make-snapshot: Fix order of priority for option parameter.
- * benchmark/bm_io_file_create.rb: ditto.
- * benchmark/bm_io_file_read.rb: ditto.
- * benchmark/bm_io_file_write.rb: ditto.
+Fri Aug 9 12:06:49 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * 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.
+ * file.c (rb_str_normalize_ospath): normalize to Normalization Form C
+ using CFString.
- * benchmark/bm_vm_thread_mutex1.rb: ditto.
- * benchmark/bm_vm_thread_mutex2.rb: ditto.
- * benchmark/bm_vm_thread_mutex3.rb: ditto.
+Fri Aug 9 10:53:57 2013 Kazuki Tsujimoto <kazuki@callcc.net>
- * 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.
+ * time.c (get_timeval, get_new_timeval): use rb_obj_class()
+ instead of CLASS_OF() because CLASS_OF() may return
+ a singleton class.
- * 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.
+Fri Aug 9 10:42:11 2013 Kazuki Tsujimoto <kazuki@callcc.net>
- * benchmark/bm_vm_thread_alive_check1.rb: cleanup.
+ * vm_insnhelper.c (vm_invoke_block): returning from lambda proc
+ now always exits from the Proc. [ruby-core:56193] [Feature #8693]
-Fri Jul 1 15:23:00 2011 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+ * NEWS, test/ruby/test_lambda.rb: ditto. Patch by nobu.
- * lib/matrix: Add LUP decomposition
+Fri Aug 9 00:10:32 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Fri Jul 1 15:21:14 2011 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+ * enumerator.c (lazy_zip_func): fix non-single argument. fix
+ out-of-bound access and pack multiple yielded values.
+ [ruby-core:56383] [Bug #8735]
- * 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.
+Thu Aug 8 23:01:20 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Fri Jul 1 08:03:15 2011 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]
- * error.c, thread_pthread.c (WRITE_CONST): suppress warnings
- `ignoring return value'.
+Thu Aug 8 21:56:44 2013 Tanaka Akira <akr@fsij.org>
-Fri Jul 1 06:41:36 2011 Koichi Sasada <ko1@atdot.net>
+ * time.c (time_overflow_p): Avoid signed integer overflow.
+ (rb_time_new): Fix overflow condition.
- * thread.c (rb_threadptr_check_signal): only wake up main thread.
+Thu Aug 8 19:58:02 2013 Koichi Sasada <ko1@atdot.net>
- * thread.c (rb_threadptr_execute_interrupts_common): check signal
- delivery if it is main thread.
- fixes [ruby-dev:44005] [Ruby 1.9 - Bug #4950]
+ * thread.c (rb_threadptr_pending_interrupt_check_mask):
+ use RARRAY_RAWPTR() instead of RARRAY_PTR() because
+ there is no new reference.
- * bootstraptest/test_fork.rb: add a test for above.
+Thu Aug 8 19:56:52 2013 Koichi Sasada <ko1@atdot.net>
- * signal.c (rb_get_next_signal): skip if signal_buff is empty.
- (check signal_buff.size first)
+ * string.c (rb_str_format_m): use RARRAY_RAWPTR() instead of
+ RARRAY_PTR() because there is no new reference.
- * vm_core.h: remove unused variable rb_thread_t::exec_signal.
+Thu Aug 8 19:55:51 2013 Koichi Sasada <ko1@atdot.net>
- * thread.c (rb_thread_check_trap_pending): check
- rb_signal_buff_size() because rb_thread_t::exec_signal
- is no longer available.
+ * include/ruby/ruby.h: define USE_RGENGC_LOGGING_WB_UNPROTECT.
-Fri Jul 1 03:28:25 2011 Yukihiro Matsumoto <matz@ruby-lang.org>
+Thu Aug 8 16:44:25 2013 Koichi Sasada <ko1@atdot.net>
- * class.c (Init_class_hierarchy): should name BasicObject
- explicitly.
+ * 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.
- * variable.c (rb_const_defined_0): should not check for
- superclasses as const_get.
+Thu Aug 8 15:37:53 2013 NAKAMURA Usaku <usa@ruby-lang.org>
-Fri Jul 1 03:24:03 2011 Tadayoshi Funaba <tadf@dotrb.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.
- * ext/date/date_core.c: mathn is still alive (should die soon).
+Thu Aug 8 14:54:18 2013 Shugo Maeda <shugo@ruby-lang.org>
-Thu Jun 30 23:50:00 2011 Kenta Murata <mrkn@mrkn.jp>
+ * NEWS: add description of incompatibility introduced by r42396.
+ [ruby-core:56329] [Bug #8722]
- * misc/ruby-mode.el (ruby-indent-beg-re): Fix broken regular
- expression. Fixes #4546
+Thu Aug 8 14:50:36 2013 NARUSE, Yui <naruse@ruby-lang.org>
-Thu Jun 30 23:43:30 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
+ * common.mk (mini): portable target to build miniruby
- * 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]
+ * common.mk (bisect): run git-bisect with miniruby
-Thu Jun 30 22:38:58 2011 Koichi Sasada <ko1@atdot.net>
+ * common.mk (bisect-ruby): run git-bisect with ruby
- * benchmark/bm_vm2_defined_method.rb: added to measure performance of
- bmethod (method defined by define_method()).
+ * tool/bisect.sh: script for git-bisect
-Thu Jun 30 22:17:04 2011 Koichi Sasada <ko1@atdot.net>
+Thu Aug 8 12:11:43 2013 NAKAMURA Usaku <usa@ruby-lang.org>
- * vm_insnhelper.c (vm_call_bmethod): fix to hook call/return event
- for methods defined by define_method(). fixes Bug #4613.
+ * 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.
- * 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.
+Thu Aug 8 10:27:18 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * test/ruby/test_settracefunc.rb: add a test for above.
+ * range.c (range_last): revert r42400. [Bug #8739]
-Thu Jun 30 21:18:35 2011 Yutaka Kanemoto <kanemoto@ruby-lang.org>
+Thu Aug 8 10:26:25 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * configure.in: Add warnflags for XL/C on AIX during configure
- to avoid [Bug #3971]. See [ruby-core:32859]
+ * file.c (rb_str_normalize_ospath): extract and move from dir.c.
-Thu Jun 30 21:16:04 2011 Tadayoshi Funaba <tadf@dotrb.org>
+Thu Aug 8 05:59:00 2013 Charlie Somerville <charliesome@ruby-lang.org>
- * ext/date/date_core.c (m_ajd): refers a constant.
+ * test/openssl/test_ssl.rb: Fix test for CVE-2013-4073.
+ Patch by Antonio Terceiro. [Bug #8750] [ruby-core:56437]
-Thu Jun 30 20:54:25 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Thu Aug 8 03:37:38 2013 Eric Hodel <drbrain@segment7.net>
- * ext/io/console/io-console.gemspec: spin-off gem for 1.9.2.
+ * 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.
-Thu Jun 30 20:36:23 2011 Tadayoshi Funaba <tadf@dotrb.org>
+Wed Aug 7 23:06:26 2013 Akinori MUSHA <knu@iDaemons.org>
- * ext/date/date_core.c: trivial changes.
+ * ruby.c (Process.argv0): New method to return the original value
+ of $0. [Feature #8696]
-Thu Jun 30 20:12:36 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Wed Aug 7 23:05:55 2013 Akinori MUSHA <knu@iDaemons.org>
- * test/ruby/test_module.rb: tests for [Bug #3422] and [Bug #3423].
+ * ruby.c (Process.setproctitle): New method to change the title of
+ the running process that is shown in ps(1). [Feature #8696]
-Thu Jun 30 20:03:39 2011 Tadayoshi Funaba <tadf@dotrb.org>
+Wed Aug 7 20:05:38 2013 Tanaka Akira <akr@fsij.org>
- * ext/date/date_core.c: modified doc.
+ * bignum.c (rb_big_odd_p): Check the bignum length.
+ (rb_big_even_p): Ditto.
-Thu Jun 30 19:09:19 2011 Koichi Sasada <ko1@atdot.net>
+Wed Aug 7 19:29:26 2013 Tanaka Akira <akr@fsij.org>
- * thread_pthread.c (thread_timer): ignore unknown errno.
- (we observed that select(2) was canceled by errno=514 on
- boron == Linux/Xen environment)
+ * bignum.c (dbl2big): A condition simplified.
-Thu Jun 30 17:33:25 2011 Koichi Sasada <ko1@atdot.net>
+Wed Aug 7 16:34:30 2013 NAKAMURA Usaku <usa@ruby-lang.org>
- * ext/objspace/objspace.c (ObjectSpace.count_tdata_objects):
- Fix rdoc. Fixes Bug #3892.
+ * test/webrick/test_cgi.rb (TestWEBrickCGI#{start_cgi_server,test_cgi}):
+ mswin is not only mswin32 but also mswin64. [Bug #8746]
- * 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.
+Wed Aug 7 16:19:12 2013 Koichi Sasada <ko1@atdot.net>
- * internal.h: export rb_objspace_data_type_name().
+ * cont.c (rb_fiber_start): use RARRAY_RAWPTR() instead of
+ RARRAY_PTR() because there is no new reference.
-Thu Jun 30 17:25:08 2011 Koichi Sasada <ko1@atdot.net>
+ * proc.c (curry): ditto.
- * thread_pthread.c (ping_signal_thread_list, thread_timer):
- fix to keep polling state if there are any ping-tasks.
+ * proc.c (rb_proc_call): remove line break.
-Thu Jun 30 12:25:34 2011 Koichi Sasada <ko1@atdot.net>
+Wed Aug 7 13:20:12 2013 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).
+ * random.c (random_load): use RARRAY_RAWPTR() instead of
+ RARRAY_PTR() because there is no new reference.
-Thu Jun 30 09:36:37 2011 Eric Hodel <drbrain@segment7.net>
+Wed Aug 7 12:58:23 2013 Koichi Sasada <ko1@atdot.net>
- * lib/weakref.rb: Attach documentation to WeakRef and add missing
- documentation
+ * thread.c (thread_start_func_2): use RARRAY_RAWPTR() instead of
+ RARRAY_PTR() because there is no new reference.
-Thu Jun 30 09:30:14 2011 Eric Hodel <drbrain@segment7.net>
+Wed Aug 7 09:00:24 2013 Zachary Scott <e@zzak.io>
- * lib/yaml.rb: Document toplevel YAML and YAML::ENGINE to describe
- Psych vs Syck engines.
+ * string.c: [DOC] Description of rb_str_equal [Fixes GH-375]
+ Based on a patch by @markijbema
+ https://github.com/ruby/ruby/pull/375
-Thu Jun 30 09:21:52 2011 Eric Hodel <drbrain@segment7.net>
+Wed Aug 7 08:30:38 2013 Zachary Scott <e@zzak.io>
- * lib/cmath.rb: Hide handle_no_method_error from RDoc.
- * error.c: Document or hide undocumented error classes.
+ * 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
-Thu Jun 30 07:49:04 2011 Eric Hodel <drbrain@segment7.net>
+Wed Aug 7 07:46:23 2013 Zachary Scott <e@zzak.io>
- * hash.c: Document ENV
+ * lib/rss/utils.rb: [DOC] RSS::Utils by Steve Klabnik [Bug #8745]
-Thu Jun 30 06:37:43 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Wed Aug 7 07:38:39 2013 Tanaka Akira <akr@fsij.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.
+ * 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.
-Thu Jun 30 06:32:21 2011 Eric Hodel <drbrain@segment7.net>
+Tue Aug 6 22:38:15 2013 Zachary Scott <e@zzak.io>
- * lib/drb/drb.rb: Hide deprecated toplevel DRb constants.
+ * time.c: [DOC] Typo in Time overview by @sparr [Fixes GH-374]
+ https://github.com/ruby/ruby/pull/374
-Thu Jun 30 06:17:02 2011 NARUSE, Yui <naruse@ruby-lang.org>
+Tue Aug 6 22:35:32 2013 Zachary Scott <e@zzak.io>
- * lib/cmath.rb (CMath.log): second argument: b can be nil.
+ * lib/rss/1.0.rb: [DOC] Document RSS10 by Steve Klabnik [Bug #8740]
-Thu Jun 30 06:23:28 2011 Eric Hodel <drbrain@segment7.net>
+Tue Aug 6 22:14:11 2013 Kouji Takao <kouji.takao@gmail.com>
- * thread.c (ruby_thread_s_pass): Fix typo.
+ * ext/readline/readline.c (readline_s_delete_text): remove
+ checking "$SAFE == 4".
-Thu Jun 30 06:16:53 2011 Eric Hodel <drbrain@segment7.net>
+ * ext/readline/readline.c: fix rdoc, remove "Raises SecurityError"
+ and add "Raises NotImplementedError".
- * 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.
+Tue Aug 6 22:04:38 2013 Kouji Takao <kouji.takao@gmail.com>
-Wed Jun 29 23:17:57 2011 WATANABE Hirofumi <eban@ruby-lang.org>
+ * ext/readline/readline.c, test/readline/test_readline.rb: fix
+ indent.
- * ext/openssl/ossl.h (OPENSSL_SYS_WIN32): support for mingw(msys).
+Tue Aug 6 21:59:56 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Wed Jun 29 23:09:14 2011 WATANABE Hirofumi <eban@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]
- * ext/tk/extconf.rb (intptr_t, uintptr_t): support for the latest ActiveTcl with mingw.
+Tue Aug 6 21:48:31 2013 Kouji Takao <kouji.takao@gmail.com>
-Wed Jun 29 22:49:10 2011 Keiju Ishitsuka <keiju@ishitsuka.com>
+ * ext/readline/readline.c (readline_s_set_point, Init_readline):
+ add Readline.point=(pos). Patched by naruse. [ruby-dev:47535]
+ [Feature #8675]
- * lib/irb/cmd/help.rb: support RDoc 3.7. fix [Bug #3760].
+Tue Aug 6 21:14:11 2013 Kouji Takao <kouji.takao@gmail.com>
-Wed Jun 29 22:04:14 2011 CHIKANAGA Tomoyuki <nagachika00@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]
- * 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.
+Tue Aug 6 17:56:40 2013 Koichi Sasada <ko1@atdot.net>
-Wed Jun 29 13:55:36 2011 Yukihiro Matsumoto <matz@ruby-lang.org>
+ * vm_insnhelper.c (vm_push_frame): change type of stack_max to size_t.
- * 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]
+Tue Aug 6 17:42:47 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Wed Jun 29 12:07:27 2011 Eric Hodel <drbrain@segment7.net>
+ * range.c (range_last): exclude the last number of the exclusive range
+ if the end is Numeric. [ruby-dev:47587] [Bug #8739]
- * 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.
+Tue Aug 6 17:42:21 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
-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>
+ * win32/win32.c (rb_w32_conv_from_wchar): converted string to CP_UTF8
+ should have UTF-8 encoding. otherwise no conversion takes place
+ later.
- * ext/date/date_parse.c: should use ALLOCA_N.
+Tue Aug 6 17:21:38 2013 Koichi Sasada <ko1@atdot.net>
-Mon Jun 27 01:34:18 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * 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.
- * 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
+ * vm_core.h (CHECK_VM_STACK_OVERFLOW0): add to share the stack overflow
+ checking code.
-Mon Jun 27 00:44:53 2011 NARUSE, Yui <naruse@ruby-lang.org>
+ * insns.def: catch up this change.
- * parse.y (rb_parser_end_seen_p): fix documentation about return
- value. patched by Sho Hashimoto. [Bug #4511]
+ * vm.c, vm_eval.c: ditto.
-Mon Jun 27 00:40:47 2011 NARUSE, Yui <naruse@ruby-lang.org>
+ * test/ruby/test_exception.rb: add a stack overflow test.
+ This code is reported by nobu.
- * hash.c (rb_hash_reject): add documentation that Hash#reject
- without block returns enumerator.
- patched by Michael Edgar [Bug #4847] [ruby-core:36800]
+Tue Aug 6 17:02:17 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Sun Jun 26 23:49:21 2011 Tadayoshi Funaba <tadf@dotrb.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.
- * test/date/test_switch_hitter.rb: added a test.
+Tue Aug 6 16:14:32 2013 Shugo Maeda <shugo@ruby-lang.org>
- Sun Jun 26 22:21:23 2011 Tadayoshi Funaba <tadf@dotrb.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]
- * ext/date/date_core.c: refactoring.
+ * test/ruby/test_refinement.rb: related test.
-Sun Jun 26 18:03:30 2011 URABE Shyouhei <shyouhei@ruby-lang.org>
+Tue Aug 6 12:23:12 2013 Tanaka Akira <akr@fsij.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).
+ * bignum.c (rb_big_realloc): Use VALGRIND_MAKE_MEM_UNDEFINED to
+ declare undefined memory area.
+ (bignew_1): Ditto.
-Sun Jun 26 13:35:35 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+ * internal.h (VALGRIND_MAKE_MEM_DEFINED): Moved from gc.c
+ (VALGRIND_MAKE_MEM_UNDEFINED): Ditto.
- * 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.
+Tue Aug 6 01:40:37 2013 Zachary Scott <e@zzak.io>
- <before>
- -- See Crash Report log file under ~/Library/Logs/CrashReporter or ---------
- -- /Library/Logs/CrashReporter, for the more detail of ---------------------
- -- C level backtrace information -------------------------------------------
+ * process.c: [DOC] Document caveats of command form of Process.spawn
+ with regard to the shell and OS. Patched by Steve Klabnik [Bug #8550]
- <after>
- -- C level backtrace information -------------------------------------------
+Tue Aug 6 01:28:35 2013 Zachary Scott <e@zzak.io>
- See Crash Report log file under ~/Library/Logs/CrashReporter or
- /Library/Logs/CrashReporter, for the more detail of.
+ * lib/rss/0.9.rb: [DOC] Typo in example [Bug #8732]
-Sun Jun 26 10:08:28 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
+Tue Aug 6 01:22:37 2013 Zachary Scott <e@zzak.io>
- * ext/openssl/extconf.rb
- * ext/openssl/ossl_missing.h/.c: add ASN1_put_eoc if missing.
+ * lib/rss/2.0.rb: [DOC] Document RSS::Rss by Steve Klabnik #8740
+ * lib/rss/atom.rb: [DOC] Typo in rdoc by Steve Klabnik
- * 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]
+Mon Aug 5 23:47:59 2013 Tanaka Akira <akr@fsij.org>
-Sun Jun 26 01:00:15 2011 Tadayoshi Funaba <tadf@dotrb.org>
+ * bignum.c: Rename local variables.
- * ext/date/date_core.c (date_strftime_internal): removed meaningless braces.
- * ext/date/date_core.c (gengo): the value should be int.
+Mon Aug 5 22:23:59 2013 Zachary Scott <e@zzak.io>
-Sat Jun 25 23:45:30 2011 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
+ * 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
- * 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.
+Mon Aug 5 17:38:15 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Sat Jun 25 23:23:14 2011 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
+ * 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]
- * thread.c (sleep_forever): now Kernel#sleep don't wakeup by
- signal handler execution. [Bug #4072]
+ * 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.
-Sat Jun 25 23:14:47 2011 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
+Mon Aug 5 11:51:00 2013 Charlie Somerville <charliesome@ruby-lang.org>
- * 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
+ * include/ruby/encoding.h: document which user flags are used by
+ ENCODING_MASK for better greppability
-Fri Jun 24 19:57:30 2011 Hiroshi Nakamura <nahi@ruby-lang.org>
+Mon Aug 5 10:01:00 2013 Charlie Somerville <charliesome@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.
+ * object.c (rb_class_inherited_p): allow iclasses to be tested for
+ inheritance. [Bug #8686] [ruby-core:56174]
- * test/webrick/test_httprequest.rb (test_forwarded): Test it.
+ * test/ruby/test_method.rb: add test
-Fri Jun 24 17:06:33 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Mon Aug 5 06:13:48 2013 Zachary Scott <e@zzak.io>
- * process.c (proc_daemon): should not start timer thread
- twice. fixed Bug#4920.
+ * enumerator.c: [DOC] Remove reference to Enumerator::Lazy#cycle
+ Patch by @kachick [Fixes GH-372]
+ https://github.com/ruby/ruby/pull/372
-Fri Jun 24 15:54:14 2011 Hiroshi Nakamura <nahi@ruby-lang.org>
+Mon Aug 5 03:57:16 2013 Zachary Scott <e@zzak.io>
- * 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.
+ * lib/rss/0.9.rb: [DOC] Document RSS09 by Steve Klabnik [Bug #8732]
-Fri Jun 24 07:24:37 2011 Eric Hodel <drbrain@segment7.net>
+Mon Aug 5 03:35:11 2013 Zachary Scott <e@zzak.io>
- * 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`
+ * lib/rexml/attribute.rb: [DOC] Update example for #namespace
+ Patch by Ippei Obayashi [Bug #8685] [ruby-core:56173]
-Fri Jun 24 07:11:37 2011 Eric Hodel <drbrain@segment7.net>
+Sun Aug 4 21:08:29 2013 Masaki Matsushita <glass.saga@gmail.com>
- * lib/rake: Import Rake 0.9.2
+ * array.c (rb_ary_zip): performance implement by using
+ ALLOCA_N() to allocate tmp buffer.
-Fri Jun 24 00:44:15 2011 Tadayoshi Funaba <tadf@dotrb.org>
+Sun Aug 4 07:14:49 2013 Tanaka Akira <akr@fsij.org>
- * ext/date/date_core.c (c_valid_{julian,gregorian}_p): fixed the range of month.
+ * README.EXT, README.EXT.ja: Mention rb_integer_pack and
+ rb_integer_unpack.
-Fri Jun 24 00:14:23 2011 Tadayoshi Funaba <tadf@dotrb.org>
+Sun Aug 4 01:54:45 2013 Tanaka Akira <akr@fsij.org>
- * ext/date/date_core.c: trivial changes on text.
+ * 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.
-Thu Jun 23 22:46:57 2011 Hiroshi Nakamura <nahi@ruby-lang.org>
+Sun Aug 4 00:57:58 2013 Tanaka Akira <akr@fsij.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
+ * bignum.c (big2str_karatsuba): Don't allocate new temporary buffer
+ if the buffer is enough for current invocation.
- * test/openssl/test_x509name.rb (test_hash): Make test pass with
- OpenSSL 1.0.0.
+Sun Aug 4 00:22:34 2013 Tanaka Akira <akr@fsij.org>
- * NEWS: Add it.
+ * 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.
-Thu Jun 23 19:30:53 2011 Hiroshi Nakamura <nahi@ruby-lang.org>
+Sat Aug 3 22:47:11 2013 Tanaka Akira <akr@fsij.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.
+ * 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.
- * ext/openssl/ossl_ssl_session.c (ossl_ssl_session_set_timeout): Check
- type with NUM2LONG. Time as an arg is not allowed. See #4919.
+Sat Aug 3 22:23:31 2013 Tanaka Akira <akr@fsij.org>
- * test/openssl/test_ssl_session.rb (test_session_time,
- test_session_timeout): Test it.
+ * 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.
-Wed Jun 23 13:30:30 2011 Shota Fukumori <sorah@tubusu.net>
+Sat Aug 3 13:30:04 2013 Tanaka Akira <akr@fsij.org>
- * signal.c(ruby_atomic_exchange): Fix definition style.
+ * 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.
-Wed Jun 22 22:34:05 2011 Hiroshi Nakamura <nahi@ruby-lang.org>
+Sat Aug 3 10:33:52 2013 Nobuyoshi Nakada <nobu@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.
+ * parse.y (parser_set_integer_literal): use rb_rational_raw1() for
+ integral rational because no reduction is needed with 1.
- * test/openssl/test_ssl_session.rb (test_ctx_server_session_cb): Test
- it.
+Sat Aug 3 09:46:07 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Wed Jun 22 22:21:17 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
+ * ext/etc/etc.c (setup_passwd, setup_group): set proper encodings to
+ string members.
- * ext/openssl/ossl_ssl_session.c: Respect T_BIGNUM time values. Patch by
- Tomoyuki Chikanaga.
- [ Ruby 1.9 - Bug #4919 ] [ruby-dev:43869]
+Sat Aug 3 09:30:57 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Wed Jun 22 21:29:25 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+ * struct.c (rb_struct_define_under): new function to define Struct
+ under the given namespace, not under Struct. [Feature #8264]
- * ext/socket/depend (SOCK_HEADERS): use $(top_srcdir) instead of
- $(topdir). sorry!
+ * ext/etc/etc.c: use rb_struct_define_under.
-Wed Jun 22 19:47:03 2011 NARUSE, Yui <naruse@ruby-lang.org>
+Sat Aug 3 06:55:29 2013 NAKAMURA Usaku <usa@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.
+ * 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]
- * cont.c (cont_capture): use for-loop.
+Sat Aug 3 04:23:48 2013 Eric Hodel <drbrain@segment7.net>
- * array.c (rb_ary_each): add volatile and use it.
+ * doc/syntax/refinements.rdoc: Remove mention of instance_eval and
+ module_eval from scope section per:
+ http://twitter.com/shugomaeda/status/363219951336693761
- * vm_insnhelper.c (vm_call_cfunc): ditto.
+Sat Aug 3 02:22:05 2013 Tanaka Akira <akr@fsij.org>
-Wed Jun 22 18:20:46 2011 Hiroshi Nakamura <nahi@ruby-lang.org>
+ * bignum.c (big2str_orig): Refactored.
- * 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.
+Sat Aug 3 01:20:19 2013 Tanaka Akira <akr@fsij.org>
- * test/openssl/test_ssl_session.rb (class OpenSSL): Test it.
+ * bignum.c (bigadd_core): Removed.
+ (bigadd): Use bary_add instead of bigadd_core.
-Wed Jun 22 17:37:49 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
+Sat Aug 3 00:52:43 2013 Tanaka Akira <akr@fsij.org>
- * ext/openssl/ossl.h: Introduced OSSL_BIO_reset macro for PEM/DER
- fallback scenarios.
+ * bignum.c (rb_big2str1): Simplify power_level calculation.
- * 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.
+Sat Aug 3 00:34:20 2013 Masaki Matsushita <glass.saga@gmail.com>
- * 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.
+ * array.c (rb_ary_zip): use rb_ary_new2() to create buffer
+ if rb_block_arity() > 1.
- * ext/openssl/ossl_pkcs7.c: Raise error if DER fallback for parsing
- fails.
+Sat Aug 3 00:12:00 2013 Masaki Matsushita <glass.saga@gmail.com>
- * 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.
+ * NEWS: Add the description that IO#seek supports SEEK_DATA
+ and SEEK_HOLE.
- * test/openssl/test_pkey_rsa.rb: Remove initial OpenSSL.errors call in
- test_new.
- [ Ruby 1.9 - Bug #4885 ] [ruby-core:37134]
+Fri Aug 2 23:57:57 2013 NAKAMURA Usaku <usa@ruby-lang.org>
-Wed Jun 22 15:01:24 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
+ * 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]
- * 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/ruby/test_syntax.rb (TestSyntax#test_value_of_def): test for
+ above changes.
- * test/openssl/test_buffering.rb
- * test/openssl/test_pkcs12.rb: Inherit from Test::Unit::TestCase
- instead of MiniTest::Unit::TestCase. [ruby-core:37275]
+Fri Aug 2 23:54:11 2013 Masaki Matsushita <glass.saga@gmail.com>
-Wed Jun 22 12:41:03 2011 Hiroshi Nakamura <nahi@ruby-lang.org>
+ * array.c (rb_ary_zip): performance improvement by avoiding
+ array creation if rb_block_arity() > 1.
- * ext/openssl/ossl_ssl_session.c (ossl_ssl_session_to_der):
- OpenSSL::SSL::Session#to_der was broken. Fix buffer handling.
+Fri Aug 2 23:50:53 2013 Tanaka Akira <akr@fsij.org>
- * test/openssl/test_ssl_session.rb (test_session): Test it.
+ * bignum.c (power_cache_get_power): Apply bigtrunc to the result of
+ bigsq.
+ (big2str_karatsuba): Fix number of leading zero characters.
-Wed Jun 22 12:38:52 2011 Hiroshi Nakamura <nahi@ruby-lang.org>
+Fri Aug 2 23:48:36 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * test/openssl/test_ssl_session.rb: Split out SSL::Session related
- tests from test_ssl.rb
+ * parse.y (parser_yylex): calculate denominator directly as powers of
+ ten, not parsing string.
-Wed Jun 22 03:20:52 2011 Aaron Patterson <aaron@tenderlovemaking.com>
+ * parse.y (parser_number_literal_suffix): return bit set of found
+ suffixes.
- * 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.
+ * parse.y (parser_set_number_literal, parser_set_integer_literal):
+ split from parser_number_literal_suffix to set yylval.
-Wed Jun 22 02:39:54 2011 Hiroshi Nakamura <nahi@ruby-lang.org>
+ * parse.y (parser_yylex): parse rational number literal with decimal
+ point precisely.
- * lib/net/http.rb (Net::HTTP.post_form): Do not ignore query part of
- the given URI to post. See #655.
+ * parse.y (simple_numeric): integrate numeric literals and simplify
+ numeric rules.
- * test/net/http/test_http.rb, test/net/http/utils.rb: Test it.
+ * ext/ripper/eventids2.c (ripper_init_eventids2): ripper support for
+ new literals, tRATIONAL and tIMAGINARY.
-Wed Jun 22 01:28:13 2011 Hiroshi Nakamura <nahi@ruby-lang.org>
+Fri Aug 2 18:33:28 2013 Tanaka Akira <akr@fsij.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.
+ * bignum.c (big2str_karatsuba): Reduce power_level more than one at
+ recursion, if possible.
+ (rb_big2str1): Follow the above change.
-Tue Jun 21 21:50:37 2011 Hiroshi Nakamura <nahi@ruby-lang.org>
+Fri Aug 2 12:25:15 2013 Tanaka Akira <akr@fsij.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.
+ * 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.
- * test/webrick/test_httpserver.rb: Test it.
+Fri Aug 2 10:39:00 2013 Charlie Somerville <charliesome@ruby-lang.org>
-Tue Jun 21 21:27:34 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+ * 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]
- * 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.
+ * bootstraptest/test_literal_suffix.rb (assert_equal): add test
- * ext/socket/rubysocket.h: include internal.h.
- * ext/socket/depend: add internal.h dependency.
- * ext/socket/extconf.rb: add $INCFLAGS to topdir.
+Fri Aug 2 09:14:47 2013 Eric Hodel <drbrain@segment7.net>
-Tue Jun 21 20:38:47 2011 Tadayoshi Funaba <tadf@dotrb.org>
+ * doc/syntax/refinements.rdoc: Improve description of where you may
+ activate refinements.
- * ext/date/date_core.c (datetime_s_*): canonicalize 24 o'clock.
+Fri Aug 2 07:45:55 2013 Tanaka Akira <akr@fsij.org>
-Tue Jun 21 19:46:23 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+ * bignum.c (big2str_orig): Remove len argument.
+ (big2str_karatsuba): Ditto.
+ (rb_big2str1): Follow above change.
- * test/ruby/test_thread.rb (TestThread#test_priority): enable
- this test again. Current GVL respect thread priority rather
- than past.
+Thu Aug 2 02:32:00 2013 Kenta Murata <mrkn@mrkn.jp>
-Tue Jun 21 13:25:35 2011 TAKAO Kouji <kouji@takao7.net>
+ * NEWS: Add the description of number literal suffixes.
- * ext/readline/readline.c (readline_getc): applied a patch in
- #3827 by by Akio Tajima <artonx AT yahoo.co.jp>. (see #3827)
+Thu Aug 2 00:02:00 2013 Kenta Murata <mrkn@mrkn.jp>
-Tue Jun 21 13:16:31 2011 TAKAO Kouji <kouji@takao7.net>
+ * bootstraptest/test_literal_suffix.rb: add two test cases to
+ examine that "1if true" and "1rescue nil" are recognized as 1.
- * 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)
+Thu Aug 1 23:45:00 2013 Kenta Murata <mrkn@mrkn.jp>
-Mon Jun 20 22:52:07 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+ * rational.c (rb_flt_rationalize_with_prec): new public C function
+ to rationalize a Float instance with a precision.
- * process.c (before_exec): use sig_do_nothing instead of SIG_DFL
- for avoiding a race.
- * process.c (sig_do_nothing): new function.
+ * rational.c (rb_flt_rationalize): new public C function to
+ rationalize a Float instance. A precision is calculated from
+ the given float number.
-Mon Jun 20 21:31:03 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+ * include/ruby/intern.h: Add rb_flt_rationalize_with_prec and
+ rb_flt_rationalize.
- * thread_pthread.c (thread_timer): rename timeout_10ms to
- time_quantum. it's no longer 10ms.
+ * parse.y: implement number literal suffixes, 'r' and 'i'.
+ [ruby-core:55096] [Feature #8430]
-Mon Jun 20 18:46:02 2011 Hiroshi Nakamura <nahi@ruby-lang.org>
+ * bootstraptest/test_literal_suffix.rb: add tests for parser to scan
+ number literals with the above tsuffixes.
- * ext/openssl/ossl_cipher.c, ext/openssl/lib/openssl/cipher.rb:
- Documentation fix by Ippei Obayashi. See #4419.
+Thu Aug 1 23:55:08 2013 Tanaka Akira <akr@fsij.org>
-Mon Jun 20 15:41:33 2011 Hiroshi Nakamura <nahi@ruby-lang.org>
+ * bignum.c (rb_big2str1): Remove a local variable.
- * 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.
+Thu Aug 1 23:33:01 2013 Tanaka Akira <akr@fsij.org>
- * test/webrick/test_cookie.rb: Test it.
+ * bignum.c (rb_cstr_to_inum): Use power_cache_get_power.
-Sun Jun 19 13:31:26 2011 Shota Fukumori <sorah@tubusu.net>
+Thu Aug 1 21:02:48 2013 Tanaka Akira <akr@fsij.org>
- * NEWS: Introduce --hide-skip on test/unit.
+ * bignum.c (rb_big2str1): Raise an error for too big number.
-Sun Jun 19 10:05:16 2011 Shota Fukumori <sorah@tubusu.net>
+Thu Aug 1 20:46:29 2013 Tanaka Akira <akr@fsij.org>
- * lib/test/unit/parallel.rb: Override Test::Unit::TestCase#on_parallel_worker?
- only when $0 == __FILE__.
+ * bignum.c (power_cache_get_power): Hide cached Bignum objects.
- * lib/test/unit/parallel.rb: Run Test::Unit::Worker.run only when
- $0 == __FILE__.
+Thu Aug 1 19:15:05 2013 Tanaka Akira <akr@fsij.org>
-Sat Jun 18 23:59:24 2011 Nobuyoshi Nakada <nobu@ruby-lang.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.
- * 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
+Thu Aug 1 12:37:58 2013 Tanaka Akira <akr@fsij.org>
-Sat Jun 18 21:36:29 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+ * 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.
- * thread_pthread.c: remove GVL_DEBUG
+Thu Aug 1 07:36:27 2013 Tanaka Akira <akr@fsij.org>
-Sat Jun 18 21:32:02 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+ * bignum.c (big2str_orig): Use temporary buffer when trim mode.
- * vm.c, vm_core.h (rb_vm_stack_to_heap): remove const.
- It makes compilations warnings.
+Thu Aug 1 06:28:48 2013 Tanaka Akira <akr@fsij.org>
-Sat Jun 18 18:54:15 2011 Koichi Sasada <ko1@atdot.net>
+ * bignum.c (big2str_orig): Simplified because RBIGNUM_LEN(x) <= 2 now.
+ (big2str_struct): Two fields added: hbase2, hbase2_numdigits.
+ (rb_big2str1): Initialize above fields.
- * vm.c, vm_core.h (rb_vm_stack_to_heap): fix "const" place.
+Thu Aug 1 04:06:17 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Sat Jun 18 17:23:38 2011 Tanaka Akira <akr@fsij.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]
- * eval.c, hash.c, load.c, proc.c, range.c, thread.c, time.c: don't
- declare internal functions.
+ * test/test_rdoc_markup_pre_process.rb (TestRDocMarkupPreProcess#setup):
+ fix input_file_name, as the test script is not pre-processed.
- * internal.h, vm_core.h: declare internal functions.
+Thu Aug 1 01:45:18 2013 Tanaka Akira <akr@fsij.org>
- * array.c: include internal.h.
+ * bignum.c (big2str_karatsuba): Fix a condition of power_level.
- * common.mk: update dependency for array.o.
+Thu Aug 1 01:09:02 2013 Tanaka Akira <akr@fsij.org>
-Sat Jun 18 13:39:33 2011 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.
- * internal.h: declarations declared in include/ruby/*.h removed.
+Wed Jul 31 23:59:28 2013 Tanaka Akira <akr@fsij.org>
-Sat Jun 18 12:42:17 2011 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.
- * method.h, internal.h iseq.h: declare internal functions.
+Wed Jul 31 23:19:06 2013 Tanaka Akira <akr@fsij.org>
- * 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.
+ * 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.
- 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.
+Wed Jul 31 22:59:47 2013 Kouhei Sutou <kou@cozmixng.org>
- * object.c (rb_mod_module_exec): don't declare functions declared in
- include/ruby/intern.h.
+ * test/rexml/parse/test_notation_declaration.rb: Change class
+ name to follow file name change.
-Sat Jun 18 12:05:08 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Wed Jul 31 22:57:50 2013 Kouhei Sutou <kou@cozmixng.org>
- * include/ruby/backward/classext.h: for evil gems. fixed #4803
+ * test/rexml/test_notationdecl_parsetest.rb: Rename to ...
+ * test/rexml/parse/test_notation_declaration.rb: ... this.
-Sat Jun 18 11:12:13 2011 Tanaka Akira <akr@fsij.org>
+Wed Jul 31 22:54:39 2013 Kouhei Sutou <kou@cozmixng.org>
- * common.mk: update dependencies.
+ * test/rexml/test_notationdecl_mixin.rb: Remove duplicated tests.
-Sat Jun 18 11:09:03 2011 Tanaka Akira <akr@fsij.org>
+Wed Jul 31 22:52:55 2013 Kouhei Sutou <kou@cozmixng.org>
- * io.c: suppress warnings.
+ * test/rexml/test_notationdecl_parsetest.rb: Fix typos in expected
+ value.
+ pubilc ->
+ public
+ ^^
-Sat Jun 18 10:22:39 2011 Tanaka Akira <akr@fsij.org>
+Wed Jul 31 22:50:51 2013 Kouhei Sutou <kou@cozmixng.org>
- * internal.h: declare more internal functions.
+ * test/rexml/test_notationdecl_parsetest.rb: Add tests that focus
+ system literal in external ID system notation declaration.
- * iseq.h (rb_method_get_iseq): declared.
+Wed Jul 31 22:36:21 2013 Tanaka Akira <akr@fsij.org>
- * 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.
+ * 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.
- * eval.c, parse.y, thread_pthread.c: non-existing function declarations
- removed.
+Wed Jul 31 22:04:36 2013 Kouhei Sutou <kou@cozmixng.org>
-Sat Jun 18 08:12:54 2011 Tanaka Akira <akr@fsij.org>
+ * test/rexml/test_notationdecl_parsetest.rb: Fix a typo.
+ Extern ID ->
+ ExternalID
+ ^^
- * common.mk: dependencies updated.
+Wed Jul 31 22:01:36 2013 Kouhei Sutou <kou@cozmixng.org>
- * tool/update-deps: new file to assist update dependencies in
- common.mk.
+ * test/rexml/test_notationdecl_parsetest.rb: Add tests that focus
+ public ID in external ID notation declaration.
-Sat Jun 18 07:27:27 2011 Tanaka Akira <akr@fsij.org>
+Wed Jul 31 22:01:24 2013 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
- * internal.h: declare internal functions here.
+ * parse.y: fix build error with bison-3.0.
- * node.h: declare NODE dependent internal functions here.
+Wed Jul 31 21:58:53 2013 Kouhei Sutou <kou@cozmixng.org>
- * iseq.h: declare rb_iseq_t dependent internal functions here.
+ * test/rexml/test_notationdecl_parsetest.rb: Split test patterns.
- * vm_core.h: declare rb_thread_t dependent internal functions here.
+Wed Jul 31 21:42:33 2013 Kouhei Sutou <kou@cozmixng.org>
- * 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.
+ * test/rexml/test_notationdecl_parsetest.rb: Group tests.
- 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.
+Wed Jul 31 21:37:51 2013 Kouhei Sutou <kou@cozmixng.org>
-Sat Jun 18 02:36:00 2011 Kenta Murata <mrkn@mrkn.jp>
+ * test/rexml/test_notationdecl_mixin.rb (TestNotationDecl#test_name):
+ Move to ...
+ * test/rexml/test_notationdecl_parsetest.rb
+ (TestNotationDecl#test_name): ... here.
- * ext/bigdecimal/bigdecimal.c (VpNewRbClass): fix type of the 2nd
- argument.
+Wed Jul 31 21:37:47 2013 Kouhei Sutou <kou@cozmixng.org>
- * ext/bigdecimal/bigdecimal.h: ditto.
+Wed Jul 31 21:31:49 2013 Kouhei Sutou <kou@cozmixng.org>
-Sat Jun 18 02:30:00 2011 Kenta Murata <mrkn@mrkn.jp>
+ * test/rexml/test_notationdecl_parsetest.rb: Remove setup because it
+ doesn't share anything with other tests.
- * ext/bigdecimal/bigdecimal.c (BigMath_s_exp): move BigMath.exp from
- bigdecimal/math.rb.
+Wed Jul 31 21:24:55 2013 Kouhei Sutou <kou@cozmixng.org>
- * ext/bigdecimal/lib/bigdecimal/math.rb: ditto.
+ * 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.
- * test/bigdecimal/test_bigdecimal.rb: move test for BigMath.exp from
- test/bigdecimal/test_bigmath.rb.
+Wed Jul 31 21:20:08 2013 Kouhei Sutou <kou@cozmixng.org>
- * test/bigdecimal/test_bigmath.rb: ditto.
+ * test/rexml/test_notationdecl_parsetest.rb: remove a needless shebang.
-Sat Jun 18 00:20:54 2011 Tadayoshi Funaba <tadf@dotrb.org>
+Wed Jul 31 20:11:01 2013 Masaki Matsushita <glass.saga@gmail.com>
- * ext/date/date_core.c: do not define wnum[01].
+ * string.c (rb_str_rindex): fix bug introduced in r42269.
+ "".rindex("") should return 0.
+ (str_rindex): ditto.
-Fri Jun 17 18:57:36 2011 NARUSE, Yui <naruse@ruby-lang.org>
+Wed Jul 31 19:55:33 2013 Tanaka Akira <akr@fsij.org>
- * compile.c (iseq_compile_each): fix return value of obj[a,*b]=c.
+ * 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.
-Fri Jun 17 13:09:45 2011 Eric Hodel <drbrain@segment7.net>
+Wed Jul 31 18:32:25 2013 Akinori MUSHA <knu@iDaemons.org>
- * ext/curses/curses.c: Clean up documentation.
+ * lib/uri/common.rb (URI.decode_www_form_component): Use String#b.
-Fri Jun 17 09:25:14 2011 Eric Hodel <drbrain@segment7.net>
+Wed Jul 31 18:24:02 2013 Shugo Maeda <shugo@ruby-lang.org>
- * ext/curses/curses.c: Document curses constants. Patch by Vincent
- Batts. [Ruby 1.9 - Bug #4880]
+ * eval.c (rb_mod_refine, mod_using, top_using): don't show
+ warnings because Refinements are no longer experimental.
+ [ruby-core:55993] [Feature #8632]
-Fri Jun 17 09:11:05 2011 Eric Hodel <drbrain@segment7.net>
+ * test/ruby/test_refinement.rb: related test.
- * object.c: Document Module#method_added and #method_removed.
- Patch by Bryce Kerley. [Ruby 1.9 - Feature #4867]
+ * NEWS: fixes for the above change.
-Fri Jun 17 08:50:16 2011 Eric Hodel <drbrain@segment7.net>
+Wed Jul 31 17:55:55 2013 Shota Fukumori <her@sorah.jp>
- * io.c: Improve documentation of IO and File open and new.
- Patch by Roger Pack. [Ruby 1.9 - Bug #4790]
+ * lib/uri/common.rb (URI.decode_www_form_component):
+ Don't raise error when str includes multibyte characters.
-Fri Jun 17 07:53:50 2011 Eric Hodel <drbrain@segment7.net>
+Wed Jul 31 17:45:39 2013 Masaki Matsushita <glass.saga@gmail.com>
- * lib/csv.rb: Document #raw_encoding. Patch by David Czarnecki.
- [Ruby 1.9 - Bug #4874]
+ * string.c (rb_str_rindex): performance improvement by using
+ memrchr(3).
-Fri Jun 17 07:46:50 2011 Eric Hodel <drbrain@segment7.net>
+Wed Jul 31 16:43:30 2013 Masaki Matsushita <glass.saga@gmail.com>
- * lib/benchmark.rb: Document Benchmark::Tms#memberwise. Patch by
- David Czarnecki. [Ruby 1.9 - Bug #4873]
+ * string.c (rb_str_rindex): refactoring and avoid to call str_nth() if
+ pos == 0.
-Fri Jun 17 07:38:31 2011 Eric Hodel <drbrain@segment7.net>
+Wed Jul 31 14:41:36 2013 Akinori MUSHA <knu@iDaemons.org>
- * lib/prettyprint.rb: Improve documentation. Patch by Ysiad
- Ferreiras. [#4834]
+ * lib/set.rb: [DOC] Add a couple of notes on Hash as storage.
+ ref. [Feature #6589]
-Fri Jun 17 07:23:03 2011 Eric Hodel <drbrain@segment7.net>
+Wed Jul 31 14:38:52 2013 Akinori MUSHA <knu@iDaemons.org>
- * array.c (rb_ary_drop): Improve documentation. Patch by Caley Woods.
- [Ruby 1.9 - Bug #4858]
+ * lib/set.rb: [DOC] Fix example result. Hash is now ordered.
-Fri Jun 17 06:11:31 2011 Eric Hodel <drbrain@segment7.net>
+Wed Jul 31 14:38:10 2013 Akinori MUSHA <knu@iDaemons.org>
- * 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]
+ * lib/set.rb: [DOC] Use the term "sorted" instead of "ordered"
+ when mentioning SortSet.
-Fri Jun 17 04:48:22 2011 Koichi Sasada <ko1@atdot.net>
+Wed Jul 31 12:18:47 2013 Tanaka Akira <akr@fsij.org>
- * thread_pthread.c, thread_pthread.h: remove unused variables.
- (native_thread_data_t::gvl_cond, native_thread_data_t::gvl_next)
+ * bignum.c (big2str_struct): New structure.
+ (big2str_orig): Use big2str_struct.
+ (big2str_karatsuba): Ditto.
+ (rb_big2str1): Ditto.
-Thu Jun 16 14:32:31 2011 NARUSE, Yui <naruse@ruby-lang.org>
+Wed Jul 31 12:02:16 2013 Zachary Scott <e@zzak.io>
- * time.c (rb_time_new): prevent overflow by "* 1000".
+ * lib/rubygems.rb: [DOC] typo in url patch by @Red54 [Fixes #369]
+ https://github.com/ruby/ruby/pull/369
-Fri Jun 17 03:07:36 2011 Koichi Sasada <ko1@atdot.net>
+Wed Jul 31 07:09:07 2013 Eric Hodel <drbrain@segment7.net>
- * benchmark/bm_vm4_thread_create_join.rb,
- benchmark/bm_vm4_thread_mutex[1-3].rb: renamed to
- bm_thread_* (fix last rename).
+ * lib/rubygems: Import RubyGems from master as of commit 523551c
+ * test/rubygems: ditto.
-Fri Jun 17 02:26:47 2011 Koichi Sasada <ko1@atdot.net>
+Tue Jul 30 22:21:54 2013 Masaki Matsushita <glass.saga@gmail.com>
- * thread_pthread.c (native_thread_create): fix debug message.
- (add last newline)
+ * test/ruby/test_hash.rb: add a test for enumeration order of Hash.
-Thu Jun 16 23:40:49 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+Tue Jul 30 18:52:27 2013 Akinori MUSHA <knu@iDaemons.org>
- * thread.c (rb_thread_schedule_rec): fix {UN,}LIKELY macro misuse.
- * gc.c (rb_newobj): ditto.
- * vm_insnhelper.c (vm_method_search): ditto.
+ * 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.
-Thu Jun 16 20:06:15 2011 Shota Fukumori <sorah@tubusu.net>
+Tue Jul 30 17:16:15 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * test/testunit/test_parallel.rb: Fix Regexp for test.
+ * sprintf.c (ruby__sfvextra): add QUOTE flag to escape unprintable
+ characters.
- * test/testunit/tests_for_parallel/test_third.rb: Use
- Test::Unit::TestCase#on_parallel_worker? for detecting worker.
+Tue Jul 30 11:00:52 2013 Zachary Scott <e@zzak.io>
- * 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.
+ * ext/curses/extconf.rb: [DOC] nodoc to reduce Object pollution
-Thu Jun 16 19:27:12 2011 Hiroshi Nakamura <nahi@ruby-lang.org>
+Tue Jul 30 08:19:42 2013 Tanaka Akira <akr@fsij.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.
+ * sizes.c (Init_sizes): Define sizes only if the type actually exists.
-Thu Jun 16 17:55:07 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+Mon Jul 29 22:55:26 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * test/ruby/test_io.rb (TestIO#test_copy_stream_socket): fix
- test hanging up issue. Patch by CHIKANAGA Tomoyuki.
+ * sizes.c (Init_sizes): define RbConfig::SIZEOF. [Feature #8568]
-Thu Jun 16 15:17:39 2011 Eric Hodel <drbrain@segment7.net>
+Mon Jul 29 22:25:20 2013 Zachary Scott <e@zzak.io>
- * variable.c (const_missing): Add simple example of const_missing.
- Patch by Anuj Dutta. [Ruby 1.9 - Bug #4794]
+ * 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
-Thu Jun 16 15:09:29 2011 Eric Hodel <drbrain@segment7.net>
+Mon Jul 29 22:16:11 2013 Tanaka Akira <akr@fsij.org>
- * lib/monitor.rb: Improve documentation. Patch by Sandor Szucs.
- [Ruby 1.9 - Bug #4823]
+ * bignum.c (LOG2_KARATSUBA_BIG2STR_DIGITS): Renamed from
+ LOG2_KARATSUBA_DIGITS.
+ (KARATSUBA_BIG2STR_DIGITS): Renamed from KARATSUBA_DIGITS.
-Thu Jun 16 14:54:09 2011 Eric Hodel <drbrain@segment7.net>
+Mon Jul 29 22:04:45 2013 Masaki Matsushita <glass.saga@gmail.com>
- * lib/webrick/utils.rb: Document WEBrick::Utils. Patch by Olivier
- Brisse. [Ruby 1.9 - Bug #4819]
+ * hash.c (rb_hash_compare_by_id): add function prototype.
-Thu Jun 16 14:26:46 2011 Eric Hodel <drbrain@segment7.net>
+Mon Jul 29 21:53:41 2013 Masaki Matsushita <glass.saga@gmail.com>
- * lib/webrick/httpservlet/erbhandler.rb: Allow the ERB document to
- alter the content-type of the response. [Ruby 1.9 - Bug #4685]
+ * hash.c (rb_hash_compare_by_id): don't call rb_hash_rehash()
+ if self.compare_by_identity? == true.
-Thu Jun 16 14:15:47 2011 Eric Hodel <drbrain@segment7.net>
+Mon Jul 29 21:29:48 2013 Masaki Matsushita <glass.saga@gmail.com>
- * lib/timeout.rb: Clarify timeout duration types. Patch by Alf Mikula.
- [Ruby 1.9 - Bug #4791]
- * lib/net/http.rb: ditto
+ * 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.
-Thu Jun 16 13:25:25 2011 Eric Hodel <drbrain@segment7.net>
+ * test/ruby/test_hash.rb: add a test for above.
- * lib/rdoc*: Import RDoc 3.7 release candidate
+Mon Jul 29 21:15:30 2013 Akinori MUSHA <knu@iDaemons.org>
-Thu Jun 16 11:35:09 2011 Shugo Maeda <shugo@ruby-lang.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().
- * lib/net/imap.rb (search_response): parses SEARCH responses from
- the Yahoo IMAP server correctly. patched by Mark Nadig. [Bug #4509]
+Mon Jul 29 21:06:42 2013 Akinori MUSHA <knu@iDaemons.org>
-Thu Jun 16 09:12:38 2011 Nobuyoshi Nakada <nobu@ruby-lang.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.
- * fix for build on solaris 10.
+ * enumerator.c (generator_init): Ditto.
-Thu Jun 16 09:08:39 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Mon Jul 29 20:14:24 2013 Masaki Matsushita <glass.saga@gmail.com>
- * test/io/console/test_io_console.rb (TestIO_Console#test_sync):
- fix for daemon process.
+ * hash.c (rb_hash_assoc): revert r42224. table->type->compare is
+ called only if hashes are matched.
-Thu Jun 16 07:58:01 2011 Shota Fukumori <sorah@tubusu.net>
+ * test/ruby/test_hash.rb: add a test to check using #== to compare.
- * test/testunit/test_parallel.rb(test_ignore_tzero): Test for r32109.
+Mon Jul 29 17:00:31 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * test/testunit/tests_for_parallel/test_third.rb: Use another way to
- detect that test is running on worker. This fixes sometimes
- TestParallel failing.
+ * parse.y (yycompile): store file name as String to keep the encoding.
-Thu Jun 16 07:20:06 2011 Shota Fukumori <sorah@tubusu.net>
+ * parse.y (rb_parser_compile_string_path, rb_parser_compile_file_path):
+ new functions to pass file name as a String.
- * lib/test/unit.rb(Test::Unit::Runner#_run_parallel): Ignore -j0
- because it makes blocking forever by IO.select.
+ * parse.y (gettable_gen): return a copy of the original file name, not
+ a copy in filesystem encoding.
-Thu Jun 16 03:08:11 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+ * vm_eval.c (eval_string_with_cref): use Qundef instead of "(eval)".
- * test/testunit/test_parallel.rb (TestParallel::TestParallelWorker#
- setup): now can run on Windows, probably.
+Mon Jul 29 16:53:18 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * test/testunit/test_parallel.rb (TestParallel::TestParallel#setup):
- ditto.
+ * hash.c (rb_hash_initialize_copy): copy st_table type even if empty.
+ [ruby-core:56256] [Bug #8703]
-Thu Jun 16 03:00:26 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+Mon Jul 29 16:34:29 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * thread.c (do_select): Windows: no need to poll if select(2) is
- cancelable.
+ * hash.c (rb_hash_initialize_copy): clear old table before copy new
+ table.
- * thread_win32.c (native_fd_select): new function to make select(2)
- cancelable.
+Mon Jul 29 16:34:09 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * thread_win32.c (rb_w32_check_interrupt): new function for checking
- interrupt.
+ * hash.c (rb_hash_assoc): aggregate object can be initialized only
+ with link time constants.
- * win32/win32.c (rb_w32_select_with_thread): new function. cancelable
- select(2).
+Mon Jul 29 14:54:44 2013 Masaki Matsushita <glass.saga@gmail.com>
- * win32/win32.c (rb_w32_select): use above function internally.
+ * hash.c (rb_hash_assoc): performance improvement by replacing
+ compare function in RHASH(hash)->ntbl->type temporarily.
-Wed Jun 15 23:30:45 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+Mon Jul 29 14:52:46 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * 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.
+ * lib/mkmf.rb (xsystem): expand environment variable in all macros not
+ expanded with RbConfig. [Bug #8702]
-Wed Jun 15 23:11:35 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+ * test/mkmf/test_framework.rb (create_framework): replace all $@ not
+ only once.
- * thread.c: remove BLOCKING_REGION_CORE() macro. It's no longer used
- since r32022.
+Mon Jul 29 06:54:30 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Wed Jun 15 21:00:47 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
+ * win32/win32.c (rb_w32_pipe): use enum for compile time constants,
+ instead of const int for debugging.
- * test/openssl/test_config.rb: execute based on the existence of the
- OpenSSL module.
+Mon Jul 29 00:11:49 2013 Tanaka Akira <akr@fsij.org>
-Wed Jun 15 12:35:11 2011 Tanaka Akira <akr@fsij.org>
+ * bignum.c (bigdivrem): Specialized implementation added for
+ nx == 2 && ny == 2
- * test/ruby/test_io.rb (test_copy_stream_socket): wait a child process
- before SIGUSR1 handler is removed.
+Sun Jul 28 20:28:41 2013 Masaki Matsushita <glass.saga@gmail.com>
- * test/pathname/test_pathname.rb (define_assertion): use line number
- for test method names.
+ * io.c (io_getpartial): use rb_str_locktmp_ensure().
+ [ruby-core:56121] [Bug #8669]
-Wed Jun 15 10:37:43 2011 NARUSE, Yui <naruse@ruby-lang.org>
+ * io.c (rb_io_sysread): ditto.
- * file.c (rb_stat_rdev): use DEVT2NUM.
+ * test/ruby/test_io.rb: add tests for above.
- * file.c (rb_stat_rdev_major): ditto.
+Sun Jul 28 20:10:49 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * file.c (rb_stat_rdev_minor): ditto.
+ * ext/extmk.rb (extmake): should make static libraries for extensions
+ to be statically linked. [Bug #7948]
-Wed Jun 15 05:12:59 2011 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+Sun Jul 28 17:38:32 2013 Masaki Matsushita <glass.saga@gmail.com>
- * 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.
+ * string.c: add internal API rb_str_locktmp_ensure().
-Wed Jun 15 04:42:47 2011 Koichi Sasada <ko1@atdot.net>
+ * io.c (io_fread): use rb_str_locktmp_ensure().
+ [ruby-core:56121] [Bug #8669]
- * benchmark/bm_vm3_thread_*.rb: renamed bm_vm3_thread_*.rb to
- benchmark/bm_vm_thread_*.rb.
+ * test/ruby/test_io.rb: add a test for above.
-Wed Jun 15 04:28:39 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+Sun Jul 28 13:04:39 2013 Masaki Matsushita <glass.saga@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.
+ * 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]
-Wed Jun 15 03:52:50 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+ * test/ruby/test_io.rb: Add tests for above.
- * benchmark/bm_vm4_pass_flood.rb: new benchmark for GVL fairness.
- * benchmark/bm_vm4_alive_check1.rb: ditto.
+Sun Jul 28 12:41:39 2013 Tanaka Akira <akr@fsij.org>
-Wed Jun 15 01:27:53 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+ * bignum.c (absint_numwords_generic): The char_bit variable changed
+ to static constant.
- * 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.
+Sun Jul 28 12:03:23 2013 Tanaka Akira <akr@fsij.org>
-Tue Jun 14 23:16:22 2011 Tanaka Akira <akr@fsij.org>
+ * bignum.c: Constify bary_* functions.
- * bootstraptest/runner.rb (show_progress): refine verbose mode.
- (exec_test): ditto.
+Sun Jul 28 11:12:07 2013 Tanaka Akira <akr@fsij.org>
-Tue Jun 14 23:02:36 2011 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]
- * bootstraptest/runner.rb (show_progress): extracted from assert_check.
- (assert_check): use show_progress.
- (assert_normal_exit): ditto.
- (assert_finish): ditto.
- (flunk): ditto.
+Sun Jul 28 10:54:26 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Tue Jun 14 22:51:42 2011 Tadayoshi Funaba <tadf@dotrb.org>
+ * win32/win32.c (rb_w32_pipe): fix pipe name formatting. as "%x" may
+ not contain '0' at all, fill at fixed position instead.
- * test/date/test_*.rb: added tests.
+Sun Jul 28 00:35:14 2013 Tanaka Akira <akr@fsij.org>
-Tue Jun 14 22:09:58 2011 Tadayoshi Funaba <tadf@dotrb.org>
+ * bignum.c (rb_big_size): Return the bignum "bytewise" size.
+ [ruby-core:55578] [Feature #8553]
+ This is accepted by matz on DevelopersMeeting20130727Japan.
- * ext/date/date_core.c: renamed some functions.
- * ext/date/date_core.c: modified doc.
+Sun Jul 28 00:07:48 2013 Tanaka Akira <akr@fsij.org>
-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.
+ * include/ruby/intern.h (rb_integer_pack): Declaration moved from
+ internal.h.
+ (rb_integer_unpack): Ditto.
+ [ruby-core:42813] [Feature #6065]
-Tue Jun 14 19:50:49 2011 Tanaka Akira <akr@fsij.org>
+Fri Jul 26 23:18:13 2013 Kouhei Sutou <kou@cozmixng.org>
- * test/ruby/test_autoload.rb: remove temporary directory.
+ * NEWS: Add a new feature that REXML::Parsers::StreamParser
+ supports "entity" event.
-Tue Jun 14 11:05:03 2011 Narihiro Nakamura <narihiro@netlab.jp>
+Fri Jul 26 23:14:31 2013 Kouhei Sutou <kou@cozmixng.org>
- * gc.c (rb_gc_set_params): call initial_expand_heap if
- initial_heap_min_slots is set.
+ * 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.
-Tue Jun 14 11:02:08 2011 Narihiro Nakamura <narihiro@netlab.jp>
+Fri Jul 26 23:05:27 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * gc.c: use size_t.
+ * parse.y (parser_yylex): separate numeric literal from succeeding
+ token, and treat 'e' as floating point number only if followed by
+ exponent part.
-Tue Jun 14 01:10:38 2011 Yusuke Endoh <mame@tsg.ne.jp>
+Fri Jul 26 22:14:10 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * test/coverage/test_coverage.rb: add a test for restart. a patch
- from Xavier Shay. [ruby-core:36745]
+ * vm_exec.h (CHECK_VM_STACK_OVERFLOW_FOR_INSN): surround with
+ do/while (0), and remove unnecessary casts.
-Tue Jun 14 01:05:10 2011 Yusuke Endoh <mame@tsg.ne.jp>
+Fri Jul 26 20:12:07 2013 Akinori MUSHA <knu@iDaemons.org>
- * ext/coverage/coverage.c: make it restartable. [ruby-core:36539]
+ * 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
-Mon Jun 13 23:55:40 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+Fri Jul 26 19:25:17 2013 Koichi Sasada <ko1@atdot.net>
- * 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().
+ * 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).
-Mon Jun 13 23:50:25 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+Fri Jul 26 18:30:14 2013 Koichi Sasada <ko1@atdot.net>
- * ext/io/console/console.c (console_dev): typo.
+ * array.c (ary_memcpy): cast to int to suppress a warning.
-Mon Jun 13 23:38:23 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Fri Jul 26 18:21:58 2013 Koichi Sasada <ko1@atdot.net>
- * parse.y (parser_parse_string): flush delayed token. based on a
- patch by Masaya Tarui in [ruby-dev:43762]. Bug #4544
+ * 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.
- * parse.y (yylex): revert r24557. delayed token at the end of
- string should be flushed already by the above change.
+Fri Jul 26 17:49:26 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Mon Jun 13 23:33:31 2011 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.
- * ext/io/console/console.c (console_dev): console should be
- unbuffered.
+Fri Jul 26 14:05:19 2013 Zachary Scott <e@zzak.io>
- * ext/io/console/console.c (console_dev): take care of no-ctty
- case.
+ * ext/fiddle/*: [DOC] More doc on dlopen and RTLD_DEFAULT from r42184
-Mon Jun 13 23:06:12 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+Fri Jul 26 13:08:53 2013 Zachary Scott <e@zzak.io>
- * 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.
+ * ext/fiddle/lib/fiddle.rb: [DOC] Document Fiddle.dlopen(nil)
+ * ext/fiddle/handle.c: [DOC] Document Fiddle::Handle.new(nil)
-Mon Jun 13 23:11:52 2011 Tanaka Akira <akr@fsij.org>
+Fri Jul 26 13:04:15 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * test/socket/test_unix.rb: don't use Thread.abort_on_exception.
+ * load.c (rb_load_internal): use rb_load_file_str() to keep path
+ encoding.
-Mon Jun 13 23:05:01 2011 Tanaka Akira <akr@fsij.org>
+ * load.c (rb_require_safe): search in OS path encoding for Windows.
- * ext/socket/unixsocket.c (unix_send_io): race condition fixed.
- (unix_recv_io): ditto.
- fixed by Eric Wong. [ruby-core:35574]
+ * ruby.c (rb_load_file_str): load file with keeping path encoding.
- * test/socket/test_unix.rb: test added for above problem.
+ * win32/file.c (rb_file_load_ok): use WCHAR type API assuming incoming
+ path is encoded in UTF-8. [ruby-core:56136] [Bug #8676]
-Mon Jun 13 21:41:05 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+ * file.c (rb_str_encode_ospath): simplify using rb_str_conv_enc().
- * thread_win32.c (native_cond_signal): remove unnecessary rb_bug().
- It's additional fix for r32021. [Bug #4696]
+ * win32/file.c (fix_string_encoding): simplify with rb_str_conv_enc().
-Mon Jun 13 20:50:49 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
+ * win32/file.c (convert_mb_to_wchar): use bare pointer instead of
+ VALUE, and remove useless argument.
- * 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.
+Fri Jul 26 11:42:07 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Mon Jun 13 20:28:24 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
+ * rational.c (f_round_common): Rational is expected to be returned by
+ Rational#*, but mathn.rb breaks that assumption. [ruby-core:56177]
+ [Bug #8687]
- * test/openssl/digest.rb: remove MDC2 from test, it is not available
- by default in an OpenSSL installation.
+Fri Jul 26 01:37:45 2013 NARUSE, Yui <naruse@ruby-lang.org>
-Mon Jun 13 20:18:55 2011 Koichi Sasada <ko1@atdot.net>
+ * include/ruby/ruby.h: check defined(USE_RGENGC_LOGGING_WB_UNPROTECT)
- * 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.
+Fri Jul 26 01:21:41 2013 NARUSE, Yui <naruse@ruby-lang.org>
- * 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.
+ * file.c (rb_file_expand_path_internal): fix r42160; skip '~'.
- * vm_method.c (vm_clear_global_method_cache): added.
+Thu Jul 25 17:53:18 2013 NARUSE, Yui <naruse@ruby-lang.org>
-Mon Jun 13 19:46:21 2011 Keiju Ishitsuka <keiju@ishitsuka.com>
+ * lib/net/http.rb (Net::HTTP#connect): disable Nagle's algorithm on
+ HTTP connection. [ruby-core:56158] [Feature #8681]
- * lib/cmath.rb: add new method Object#real?. fix #3137
+Thu Jul 25 17:49:42 2013 NARUSE, Yui <naruse@ruby-lang.org>
-Mon Jun 13 18:52:00 2011 Kenta Murata <mrkn@mrkn.jp>
+ * re.c (rb_reg_to_s): convert closing parenthesis to the target encoding
+ if it is ASCII incompatible encoding. [ruby-core:56063] [Bug #8650]
- * ext/bigdecimal/bigdecimal.c (is_kind_of_BigDecimal): new function to
- examine the whether the object is kind of BigDecimal.
+Thu Jul 25 17:21:21 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Mon Jun 13 18:49:00 2011 Kenta Murata <mrkn@mrkn.jp>
+ * 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.
- * ext/bigdecimal/bigdecimal.c (BigDecimalCmp): use GetVpValueWithPrec
- for Float and Rational arguments.
+Thu Jul 25 17:17:52 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * test/bigdecimal/test_bigdecimal.rb (test_new, test_cmp, test_power):
- add and modify tests for the above change.
+ * file.c (rb_file_expand_path_internal): should clear coderange after
+ copying user name as binary data.
- * ext/bigdecimal/bigdecimal.c (BigDecimalCmp): modify coding style to
- match ruby's standard.
+Thu Jul 25 16:17:55 2013 Koichi Sasada <ko1@atdot.net>
-Mon Jun 13 18:33:04 2011 Tanaka Akira <akr@fsij.org>
+ * encoding.c (check_encoding): Check T_DATA or not.
+ is_data_encoding(obj) assumes that `obj' is T_DATA.
- * 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]
+Thu Jul 25 13:06:46 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Mon Jun 13 17:02:34 2011 NARUSE, Yui <naruse@ruby-lang.org>
+ * dir.c (dir_s_home): use rb_home_dir_of and rb_default_home_dir.
- * lib/net/http.rb (Net::HTTP#use_ssl?): require 'openssl' only when
- https is needed. fixes r31933.
+ * 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.
-Mon Jun 13 14:35:00 2011 Kenta Murata <mrkn@mrkn.jp>
+ * file.c (rb_default_home_dir): split from rb_home_dir() for the home
+ directry of the current user.
- * lib/cmath.rb (CMath.cbrt): returns the principal value of the cube
- root of the argument. fix #3676
+Thu Jul 25 12:32:11 2013 Koichi Sasada <ko1@atdot.net>
- * test/test_cmath.rb (test_cbrt_returns_principal_value_of_cube_root):
- test for the above change.
+ * ext/openssl/ossl.c: support additional three thread synchronization
+ functions. [ruby-trunk - Bug #8386]
-Mon Jun 13 14:17:00 2011 Kenta Murata <mrkn@mrkn.jp>
+Thu Jul 25 07:15:58 2013 Eric Hodel <drbrain@segment7.net>
- * lib/test/unit.rb (Test::Unit::GlobOption#non_options): fix typo.
+ * lib/rubygems: Import RubyGems from master as of commit 4ff70cc
+ * test/rubygems: ditto.
-Mon Jun 13 13:04:20 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
+Wed Jul 24 20:57:44 2013 Koichi Sasada <ko1@atdot.net>
- * 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.
+ * compile.c (iseq_set_arguments): use RARRAY_RAWPTR() instead of
+ RARRAY_PTR() because there is no new reference.
-Mon Jun 13 12:51:51 2011 NARUSE, Yui <naruse@ruby-lang.org>
+ * compile.c (iseq_set_exception_table): ditto.
- * lib/yaml.rb: load psych only when syck is not loaded.
+Wed Jul 24 19:49:54 2013 NARUSE, Yui <naruse@ruby-lang.org>
-Mon Jun 13 12:23:39 2011 NARUSE, Yui <naruse@ruby-lang.org>
+ * lib/uri/generic.rb (find_proxy): raise BadURIError if the URI is
+ a relative URI. [Bug #8645]
-Mon Jun 13 12:23:39 2011 NARUSE, Yui <naruse@ruby-lang.org>
+Wed Jul 24 18:56:06 2013 Koichi Sasada <ko1@atdot.net>
- * ext/psych/lib/psych/deprecated.rb (Object#to_yaml_properties):
- undef to_yaml_properties before redefine it.
+ * vm_insnhelper.c (vm_expandarray): use RARRAY_RAWPTR() instead of
+ RARRAY_PTR() because there is no new reference.
- * ext/syck/lib/syck/rubytypes.rb: ditto.
+ * vm_insnhelper.c (vm_caller_setup_args): ditto.
-Mon Jun 13 11:30:10 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
+ * vm_insnhelper.c (vm_yield_setup_block_args): ditto.
- * 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]
+Wed Jul 24 18:40:11 2013 Koichi Sasada <ko1@atdot.net>
-Mon Jun 13 10:54:03 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
+ * array.c, gc.c: move ary_unprotect_logging() into
+ rb_gc_unprotect_logging() which is general version
- * ext/openssl/pkey_dh.c: corrected documentation.
- * test/openssl/utils.rb: add test key for DH.
- * test/openssl/test_pkey_dh.rb: add tests.
+ * include/ruby/ruby.h: add USE_RGENGC_LOGGING_WB_UNPROTECT
+ to enable.
-Mon Jun 13 10:13:08 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
+Wed Jul 24 17:37:50 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * ext/openssl/pkey_dh.c: clarify difference between DH#public_key and
- DH#pub_key in documentation.
+ * file.c (rb_file_expand_path_internal): preserve the file name
+ encoding in an exception message.
-Mon Jun 13 05:50:43 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
+Wed Jul 24 08:04:49 2013 Koichi Sasada <ko1@atdot.net>
- * NEWS: introduce PKey.read.
+ * test/-ext-/tracepoint/test_tracepoint.rb: add GC on/off to count
+ GC events strictly.
-Mon Jun 13 05:17:29 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
+Tue Jul 23 23:19:24 2013 NARUSE, Yui <naruse@ruby-lang.org>
- * 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]
+ * ext/openssl/extconf.rb (CRYPTO_THREADID): check exist or not.
-Mon Jun 13 04:42:24 2011 Koichi Sasada <ko1@atdot.net>
+ * 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/objspace/objspace.c (total_i): fix to skip no ruby objects.
+ * 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
-Mon Jun 13 03:07:38 2011 NARUSE, Yui <naruse@ruby-lang.org>
+ * ext/openssl/ossl.c (ossl_threadid_func): defined for above.
- * 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
+Tue Jul 23 20:47:36 2013 Tanaka Akira <akr@fsij.org>
-Mon Jun 13 02:40:23 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
+ * bignum.c: Move functions.
- * test/openssl/test_pkey_dsa.rb: Test for DSA#syssign/sysverify.
+Tue Jul 23 20:14:55 2013 Tanaka Akira <akr@fsij.org>
-Mon Jun 13 01:59:19 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
+ * bignum.c (bary_divmod): Add special cases for x < y easily detected
+ and nx == 2 && ny == 2.
- * ext/openssl/ossl_pkey_dh.c: completed documentation.
- * ext/openssl/ossl_pkey_dsa.c: corrected examples. Improved parameter
- sections.
+Tue Jul 23 19:48:38 2013 Koichi Sasada <ko1@atdot.net>
-Mon Jun 13 00:25:10 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
+ * thread_(pthread|win32).h: rename rb_thread_cond_t to
+ rb_nativethread_cond_t.
- * ext/openssl/ossl_pkey_dsa.c: completed documentation.
+ * thread.c, thread_pthread.c, thread_win32.c, vm_core.h: catch up
+ renaming.
-Sun Jun 12 23:36:46 2011 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
+Tue Jul 23 19:44:32 2013 Koichi Sasada <ko1@atdot.net>
- * lib/drb/drb.rb (kill_sub_thread): remove the method. [ruby-core:34185]
+ * thread_native.h: add rb_nativethread_self() which returns
+ current running native thread identifier.
-Sun Jun 12 21:01:56 2011 Tadayoshi Funaba <tadf@dotrb.org>
+ * thread_[pthread|win32].c: implement rb_nativethread_self().
- * ext/date/date_core.c (d_lite_marshal_load): should give converted value.
+Tue Jul 23 19:34:11 2013 Koichi Sasada <ko1@atdot.net>
-Sun Jun 12 20:36:30 2011 Tadayoshi Funaba <tadf@dotrb.org>
+ * thread_pthread.h, thread_win32.h: rename rb_thread_id_t to
+ rb_nativethread_id_t.
- * ext/date/date_core.c: edited doc.
+ * thread_pthread.c, vm_core.h: use rb_nativethread_id_t.
-Sun Jun 12 18:12:07 2011 Koichi Sasada <ko1@atdot.net>
+Tue Jul 23 18:56:11 2013 Koichi Sasada <ko1@atdot.net>
- * benchmark/bm_vm3_clearmethodcache.rb: added.
+ * 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.
-Sun Jun 12 17:40:29 2011 Koichi Sasada <ko1@atdot.net>
+Tue Jul 23 18:44:15 2013 Koichi Sasada <ko1@atdot.net>
- * vm_method.c (rb_clear_cache*): update only vm state version.
+ * thread_native.h: added.
+ Move native thread related lines from vm_core.h.
+ And declare several functions "rb_nativethread_lock_*",
+ manipulate locking.
- * 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]
+ * common.mk: add thread_native.h.
-Sun Jun 12 16:19:48 2011 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+ * thread.c: add functions "rb_nativethread_lock_*".
- * ext/tk/extconf.rb: fail on Mac OS X. [Bug #4853][ruby-dev:43655]
+ * 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.
-Sun Jun 12 15:56:08 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+Tue Jul 23 16:14:57 2013 Koichi Sasada <ko1@atdot.net>
- * thread.c: remove th->transition_for_lock. It's thread unsafe.
- [Bug #4723][ruby-dev:43563]
+ * gc.c (gc_before_sweep): fix spacing.
-Sun Jun 12 15:47:35 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+Tue Jul 23 15:57:11 2013 Koichi Sasada <ko1@atdot.net>
- * thread.c: introduce spurious wakeup safe deadlock check.
- [Bug #4696][ruby-dev:43554]
+ * 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.
-Sun Jun 12 13:33:52 2011 Koichi Sasada <ko1@atdot.net>
+ * 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.
- * benchmark/bm_vm3_thread_mutex.rb: remove it.
+ * gc.c (gc_slot_sweep): do not need to clear slot->freelist.
- * 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.
+Tue Jul 23 09:34:49 2013 Zachary Scott <e@zzak.io>
-Sun Jun 12 11:16:59 2011 Tanaka Akira <akr@fsij.org>
+ * sample/drb/README*.rdoc: [DOC] migrate DRb sample READMEs to rdoc
- * 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.
+Tue Jul 23 09:28:05 2013 Zachary Scott <e@zzak.io>
-Sun Jun 12 09:32:13 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * lib/drb/invokemethod.rb: [DOC] nodoc InvokeMethod18Mixin
- * atomic.h (ATOMIC_OR): _InterlockedOr is not available on mingw.h
- * gc.c (rb_gc_set_params): VM_OBJSPACE is disabled on mingw.
+Tue Jul 23 08:44:37 2013 Eric Hodel <drbrain@segment7.net>
-Sun Jun 12 01:07:09 2011 Tadayoshi Funaba <tadf@dotrb.org>
+ * 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.
- * ext/date/date_core.c: edited doc.
+Tue Jul 23 08:11:32 2013 Zachary Scott <e@zzak.io>
-Sat Jun 11 23:18:00 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+ * lib/rexml/streamlistener.rb: [DOC] Fix examples in
+ REXML::StreamListener#entitydecl patch by Ippei Obayashi [Bug #8665]
- * 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.
+Tue Jul 23 07:44:59 2013 Eric Hodel <drbrain@segment7.net>
-Sat Jun 11 23:23:52 2011 Tadayoshi Funaba <tadf@dotrb.org>
+ * lib/rubygems: Import RubyGems from master as of commit b165260
+ * test/rubygems: ditto.
- * ext/date/date_core.c: edited doc.
+Tue Jul 23 07:14:31 2013 Tanaka Akira <akr@fsij.org>
-Sat Jun 11 23:02:36 2011 Hiroshi Nakamura <nahi@ruby-lang.org>
+ * bignum.c (bary_mulsub_1xN): New function.
+ (bary_mul_toom3): Use bary_mulsub_1xN.
- * ext/openssl/lib/openssl/buffering.rb (module OpenSSL):
- Buffering#each_byte should return String in accordance with IO in
- 1.9.
+Tue Jul 23 03:32:23 2013 Tanaka Akira <akr@fsij.org>
- * test/openssl/test_buffering.rb (class OpenSSL): add tests for getc
- and each_byte.
+ * 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.
-Sat Jun 11 22:41:37 2011 Tadayoshi Funaba <tadf@dotrb.org>
+Tue Jul 23 01:34:45 2013 Tanaka Akira <akr@fsij.org>
- * time.c: a correction of doc for strftime (%v).
+ * bignum.c (bigdivrem_mulsub): Extracted from bigdivrem1.
+ (bigdivrem1): Use bary_add.
-Sat Jun 11 22:30:53 2011 Tadayoshi Funaba <tadf@dotrb.org>
+Mon Jul 22 18:39:52 2013 Masaki Matsushita <glass.saga@gmail.com>
- * ext/date/date_core.c: replaced doc for strftime based on Time's one.
+ * string.c (rb_str_enumerate_chars): specify array capa
+ with str_strlen().
-Sat Jun 11 22:07:56 2011 Tadayoshi Funaba <tadf@dotrb.org>
+ * string.c (rb_str_enumerate_codepoints): ditto.
- * ext/date/date_core.c (datetime_s_{iso8601,rfc3339,xmlschema,rfc2822,httpdate}):
- do not take argument comp.
+Mon Jul 22 18:01:33 2013 Masaki Matsushita <glass.saga@gmail.com>
-Sat Jun 11 21:58:31 2011 Tadayoshi Funaba <tadf@dotrb.org>
+ * string.c (rb_str_enumerate_chars): specify array capa.
- * ext/date/date_core.c: added examples.
+Mon Jul 22 17:24:14 2013 Masaki Matsushita <glass.saga@gmail.com>
-Sat Jun 11 19:40:45 2011 Narihiro Nakamura <authornari@gmail.com>
+ * string.c (rb_str_each_char_size): performance improvement by
+ using rb_str_length().
- * gc.c: expand heap if initial_heap_min_slots is bigger than
- HEAP_MIN_SLOTS.
+Mon Jul 22 16:32:48 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Sat Jun 11 19:42:50 2011 WATANABE Hirofumi <eban@ruby-lang.org>
+ * vm_eval.c (eval_string_with_cref): check by Check_TypedStruct
+ instead of rb_obj_is_kind_of.
- * ChangeLog (vim): set shiftwidth to 2.
+Mon Jul 22 13:19:22 2013 Koichi Sasada <ko1@atdot.net>
-Sat Jun 11 19:27:06 2011 Hiroshi Nakamura <nahi@ruby-lang.org>
+ * array.c (ary_resize_capa): use RARRAY_RAWPTR() because
+ this code creates no new references.
- * 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...
+Mon Jul 22 12:58:18 2013 Koichi Sasada <ko1@atdot.net>
-Sat Jun 11 19:34:51 2011 Tadayoshi Funaba <tadf@dotrb.org>
+ * array.c (ary_memfill): added.
- * ext/date/date_core.c (Date::(ABBR_)?(MONTH|DAY)NAMES): should be usascii.
+ * array.c (rb_ary_initialize): use ary_memfill().
-Sat Jun 11 19:24:33 2011 Tadayoshi Funaba <tadf@dotrb.org>
+ * array.c (rb_ary_fill): ditto.
- * ext/date/date_core.c: rewrote doc.
+ * array.c (rb_ary_slice_bang): use RARRAY_RAWPTR() because
+ this code creates no new references.
-Sat Jun 11 19:04:15 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Mon Jul 22 10:09:46 2013 Koichi Sasada <ko1@atdot.net>
- * lib/test/unit.rb (Test::Unit::GlobOption#non_options): should run
- with 1.8.
+ * gc.c (gc_slot_sweep): need to add empty RVALUE as freeobj.
-Sat Jun 11 18:05:57 2011 WATANABE Hirofumi <eban@ruby-lang.org>
+Mon Jul 22 09:48:31 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * bootstraptest/runner.rb: should initialize $stress to avoid warnings.
+ * 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].
-Sat Jun 11 18:02:09 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Mon Jul 22 09:24:19 2013 Kouji Takao <kouji@takao7.net>
- * io.c (io_getc): should be 7bit if ascii. fixes #4557
+ * 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.
-Sat Jun 11 16:52:16 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ Thanks, Nobuyoshi Nakada, for the patch.
- * numeric.c (rb_enc_uint_chr): fix message format. Bug#4869
+Mon Jul 22 03:15:54 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Sat Jun 11 16:28:25 2011 Kouhei Sutou <kou@cozmixng.org>
+ * ext/date/date_parse.c (rfc2822_cb): check if wday is given, since it
+ can be omitted.
- * 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!!!
+Mon Jul 22 00:15:20 2013 Tanaka Akira <akr@fsij.org>
-Sat Jun 11 16:11:36 2011 Kouhei Sutou <kou@cozmixng.org>
+ * bignum.c (bary_sq_fast): Refine expressions.
- * test/rexml/test_core.rb
- (Tester#test_pretty_format_long_text_finite): remove needless
- assert_nothing_raised.
+Sun Jul 21 21:08:59 2013 Tanaka Akira <akr@fsij.org>
-Sat Jun 11 16:04:03 2011 Kouhei Sutou <kou@cozmixng.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.
- * 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!!!
+Sun Jul 21 09:58:19 2013 Tanaka Akira <akr@fsij.org>
-Sat Jun 11 15:53:27 2011 Kouhei Sutou <kou@cozmixng.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.
- * test/rexml/test_elements.rb (ElementsTester): remove needless
- prefix from test name.
+Sun Jul 21 08:12:16 2013 Kazuki Tsujimoto <kazuki@callcc.net>
-Sat Jun 11 15:36:36 2011 Martin Duerst <duerst@it.aoyama.ac.jp>
- * common.mk: fixed a grammatical error
+ * proc.c (proc_to_s): use PRIsVALUE to preserve the result encoding.
-Sat Jun 11 14:20:16 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+Sun Jul 21 03:36:18 2013 NARUSE, Yui <naruse@ruby-lang.org>
- * vm.c (thread_memsize): don't ignore size of th->local_storage.
+ * hash.c (rb_hash_flatten): use NUM2INT to raise TypeError on 32bit
+ platform. it's introduced by r42039
-Sat Jun 11 10:32:46 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Sun Jul 21 01:07:45 2013 Benoit Daloze <eregontp@gmail.com>
- * lib/mkmf.rb: should quote arch_hdrdir and libpath for the case
- installed prefix contains spaces.
+ * 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 Jun 11 10:20:52 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Sat Jul 20 22:44:50 2013 Zachary Scott <e@zzak.io>
- * thread_pthread.c (native_cond_timeout): wrap conditionally used
- label.
+ * common.mk: Document running a single test [Fixes GH-363]
+ Patch by Avdi Grimm https://github.com/ruby/ruby/pull/363
- * thread_pthread.c (native_sleep): remove unused variable.
+Sat Jul 20 22:39:56 2013 Zachary Scott <e@zzak.io>
-Sat Jun 11 10:15:50 2011 Tanaka Akira <akr@fsij.org>
+ * sample/*: whitespace patch by Sergio Campama [Fixes GH-364]
+ https://github.com/ruby/ruby/pull/364
- * thread.c (rb_thread_execute_interrupts): use GetThreadPtr to extract
- rb_thread_t from VALUE.
- reported by Motohiro KOSAKI. [ruby-dev:43700]
+Sat Jul 20 22:33:13 2013 Zachary Scott <e@zzak.io>
-Sat Jun 11 10:00:49 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * doc/regexp.rdoc: [DOC] Fix typo in example [Fixes GH-365]
+ Patch by Juanito Fatas https://github.com/ruby/ruby/pull/365
- * ruby.c (ruby_process_options): add missing return type.
+Sat Jul 20 17:46:03 2013 NARUSE, Yui <naruse@ruby-lang.org>
-Fri Jun 10 23:18:09 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+ * string.c (rb_str_succ): add missing case NEIGHBOR_WRAPPED.
+ r42078 caused buggy behavior like "\xFF".b -> "\x01\xFF".b
- * ext/tk/tcltklib.c (lib_eventloop_core): replace CHECK_INTS with
- rb_thread_check_ints(). Because current code can't be compiled.
+Sat Jul 20 15:22:38 2013 Koichi Sasada <ko1@atdot.net>
-Fri Jun 10 16:38:13 2011 NARUSE, Yui <naruse@ruby-lang.org>
+ * array.c (rb_ary_resize): use simple memcpy because there are no new
+ references.
- * 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]
+Sat Jul 20 15:02:51 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Fri Jun 10 14:34:24 2011 Koichi Sasada <ko1@atdot.net>
+ * safe.c (ruby_safe_level_4_warning): define for old extension
+ libraries. [Bug #8652]
- * common.mk: restore TESTRUN_SCRIPT to "$(srcdir)/test.rb".
- TESTRUN_SCRIPT is used by "make run", "make gdb" and so on.
+Sat Jul 20 14:38:00 2013 Koichi Sasada <ko1@atdot.net>
-Fri Jun 10 13:01:24 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * 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.
- * test/ruby/test_module.rb (TestModule#remove_rake_mixins): remove all
- module related to Rake.
+Sat Jul 20 12:14:07 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Fri Jun 10 09:52:38 2011 Eric Hodel <drbrain@segment7.net>
+ * string.c (enc_succ_char, enc_pred_char): consider wchar case.
+ [ruby-core:56071] [Bug #8653]
- * encoding.c: Mention that Encoding.compatible? can work with more
- than just Strings.
+ * string.c (rb_str_succ): do not replace with invalid char.
-Fri Jun 10 02:25:53 2011 Aaron Patterson <aaron@tenderlovemaking.com>
+ * 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.
- * ext/psych/lib/psych.rb: updating version to match released gem.
+ * include/ruby/encoding.h (rb_enc_code_to_mbclen): declaration and
+ shortcut macro.
-Fri Jun 10 01:06:29 2011 Tadayoshi Funaba <tadf@dotrb.org>
+Fri Jul 19 21:59:12 2013 Koichi Sasada <ko1@atdot.net>
- * ext/bigdecimal (BigDecimal_to_i): Integer#** may return flonum.
+ * gc.c: declare type_name() at the beginning of file.
-Fri Jun 10 00:35:12 2011 Tadayoshi Funaba <tadf@dotrb.org>
+Fri Jul 19 21:35:09 2013 Koichi Sasada <ko1@atdot.net>
- * complex.c (string_to_c_internal): uses rb_reg_nth_match;
- * rational.c (string_to_r_internal): ditto.
+ * array.c: reduce shady operations.
-Fri Jun 10 00:25:03 2011 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
+ * 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().
- * gc.c: remove an unused declaration.
+ * array.c (rb_ary_shift): use RARRAY_PTR_USE() without WB because
+ there are not new relations.
-Fri Jun 10 00:24:04 2011 Tadayoshi Funaba <tadf@dotrb.org>
+ * array.c (ary_ensure_room_for_unshift): ditto.
- * rational.c (string_to_r): Rational#** may return flonum.
+ * array.c (rb_ary_sort_bang): ditto.
-Thu Jun 9 23:57:53 2011 Tanaka Akira <akr@fsij.org>
+ * array.c (rb_ary_delete_at): ditto.
- * io.c: fix IO.copy_stream interrupt handling.
- based on the patch by Eric Wong. [ruby-core:36156]
+ * array.c (rb_ary_reverse_m): use RARRAY_RAWPTR() because
+ there are not new relations.
- * vm_core.h (rb_thread_call_with_gvl): don't declare here.
+Fri Jul 19 20:58:20 2013 Koichi Sasada <ko1@atdot.net>
- * thread.c: include internal.h.
- (rb_thread_execute_interrupts): new function.
+ * array.c: reduce shade operations.
- * internal.h (rb_thread_execute_interrupts): declared.
- (rb_thread_call_with_gvl): declared.
+ * array.c (rb_ary_modify): use RARRAY_RAWPTR().
-Thu Jun 9 23:34:01 2011 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
+ * 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().
- * 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.
+Fri Jul 19 19:55:28 2013 Koichi Sasada <ko1@atdot.net>
-Thu Jun 9 22:53:49 2011 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
+ * array.c (ary_mem_clear): added. This operation doesn't need WB
+ because this operation creates a reference to Qnil.
- * test/ruby/test_thread.rb (TestThread#test_kill_thread_subclass):
- add test for Thread.kill with Thread subclass instance.
+ * 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().
-Thu Jun 9 22:31:47 2011 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
+ * array.c (ary_make_shared): use RARRAY_RAWPTR() instead of RARRAY_PTR().
- * 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.
+Fri Jul 19 19:18:51 2013 Koichi Sasada <ko1@atdot.net>
-Thu Jun 9 18:36:00 2011 Kenta Murata <mrkn@mrkn.jp>
+ * array.c: fix commit miss.
+ RGENGC_UNPROTECT_LOGGING should be 0.
- * 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.
+Fri Jul 19 19:15:30 2013 Koichi Sasada <ko1@atdot.net>
-Thu Jun 9 10:57:03 2011 Aaron Patterson <aaron@tenderlovemaking.com>
+ * array.c (rb_ary_resurrect): use RARRAY_RAWPTR() because there is no
+ writing.
- * 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.
+ * array.c (rb_ary_new_from_values): use ary_memcpy().
-Thu Jun 9 09:18:51 2011 Aaron Patterson <aaron@tenderlovemaking.com>
+Fri Jul 19 19:07:31 2013 Koichi Sasada <ko1@atdot.net>
- * 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.
+ * array.c (ary_memcpy): add a function to copy VALUEs into ary
+ with write barrier. If ary is promoted, use write barrier correctly.
-Thu Jun 9 09:05:04 2011 Aaron Patterson <aaron@tenderlovemaking.com>
+ * 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().
- * 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.
+Fri Jul 19 15:32:57 2013 Koichi Sasada <ko1@atdot.net>
-Wed Jun 8 21:38:57 2011 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
+ * array.c (rb_ary_store): use RARRAY_PTR_USE() instead of RARRAY_PTR().
+ Clearing memory space doesn't need WBs.
- * 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
+Fri Jul 19 15:19:37 2013 Koichi Sasada <ko1@atdot.net>
-Tue Jun 7 20:50:11 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+ * array.c (ary_ensure_room_for_push): use RARRAY_RAWPTR() instead of
+ RARRAY_PTR. In this code, there are no "write" operation.
- * 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.
+ * array.c (rb_ary_equal): ditto.
-Tue Jun 7 18:52:55 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+ * array.c (recursive_equal): ditto.
- * lib/rubygems/user_interaction.rb (Gem::StreamUI#tty?): IO#tty? of
- Windows has been fixed at r29969.
+Fri Jul 19 15:09:22 2013 Koichi Sasada <ko1@atdot.net>
- * test/rubygems/test_gem_stream_ui.rb: now can run tests.
+ * 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).
-Tue Jun 7 18:36:41 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+Fri Jul 19 14:56:00 2013 Koichi Sasada <ko1@atdot.net>
- * 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.
+ * array.c (ary_unprotect_logging): use (void *) for first parameter
+ because VALUE is not defined before including ruby/ruby.h.
-Tue Jun 7 18:15:00 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+Fri Jul 19 14:19:48 2013 Kazuki Tsujimoto <kazuki@callcc.net>
- * test/ruby/test_rubyoptions.rb (TestRubyOptions#test_set_program_name):
- should show some messages when skipping tests.
+ * ext/pathname/pathname.c (path_inspect): use PRIsVALUE to preserve
+ the result encoding.
-Tue Jun 7 13:59:47 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Fri Jul 19 12:35:41 2013 Tanaka Akira <akr@fsij.org>
- * ext/date/date_core.c (date_s_today, datetime_s_now): check the
- result of localtime_r().
+ * test/socket/test_tcp.rb (test_initialize_failure): Use EADDRNOTAVAIL
+ to test an error message generated by bind() failure.
-Tue Jun 7 13:36:51 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Fri Jul 19 11:27:38 2013 Zachary Scott <e@zzak.io>
- * ext/tk/extconf.rb: use $defs not $CPPFLAGS to get rid of
- command line escape issues on Windows. fixed #4835.
+ * lib/racc/parser.rb: [DOC] Capitalize "Ruby" in documentation
+ Patch by Dave Worth https://github.com/ruby/ruby/pull/341
-Tue Jun 7 03:18:45 2011 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+Fri Jul 19 11:26:28 2013 Zachary Scott <e@zzak.io>
- * test/ruby/test_io.rb (TestIO#test_s_{,bin}write): do not create a
- file under /tmp. [Bug #4846]
+ * ext/psych/lib/psych*: [DOC] Capitalize "Ruby" in documentation
+ Patch by Dave Worth https://github.com/ruby/ruby/pull/341
-Mon Jun 6 22:51:43 2011 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
+Fri Jul 19 11:25:12 2013 Zachary Scott <e@zzak.io>
- * 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
+ * lib/rdoc/*: [DOC] Capitalize "Ruby" in documentation
+ Patch by Dave Worth https://github.com/ruby/ruby/pull/341
-Mon Jun 6 21:59:23 2011 Tadayoshi Funaba <tadf@dotrb.org>
+Fri Jul 19 11:23:55 2013 Zachary Scott <e@zzak.io>
- * test/date/test_switch_hitter.rb: added a test.
+ * lib/rubygems*: [DOC] Capitalize "Ruby" in documentation
+ Patch by Dave Worth https://github.com/ruby/ruby/pull/341
-Mon Jun 6 21:37:45 2011 Tadayoshi Funaba <tadf@dotrb.org>
+Fri Jul 19 11:16:54 2013 Akinori MUSHA <knu@iDaemons.org>
- * ext/date/date_core.c: added notes.
+ * lib/set.rb (Set#to_set): Define Set#to_set so that aSet.to_set
+ returns self. [Fixes GH-359]
-Mon Jun 6 21:02:12 2011 Tadayoshi Funaba <tadf@dotrb.org>
+Fri Jul 19 11:10:23 2013 Zachary Scott <e@zzak.io>
- * ext/date/date_core.c: flattened format to strftimev.
- * ext/date/date_core.c (date_strftime_internal): taints run.
+ * lib/rake/*: [DOC] Capitalize "Ruby" in documentation
+ Patch by Dave Worth https://github.com/ruby/ruby/pull/341
-Mon Jun 6 15:10:17 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+Fri Jul 19 01:04:14 2013 Tanaka Akira <akr@fsij.org>
- * include/ruby/{defines,missing}.h (rb_infinity, rb_nan): move from
- defines.h to missing.h. (couldn't use RUBY_EXTERN there.)
+ * 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]
-Mon Jun 6 14:35:48 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+Fri Jul 19 00:54:27 2013 Benoit Daloze <eregontp@gmail.com>
- * 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.)
+ * test/ruby/test_array.rb (test_count): add a test case for #count
+ with an argument. See Bug #8654.
-Mon Jun 6 14:11:11 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+Thu Jul 18 23:45:06 2013 Masaki Matsushita <glass.saga@gmail.com>
- * ext/date/date_core.c (valid_jd_sub): need to convert from VALUE to
- double.
+ * array.c (rb_ary_eql): compare RARRAY_PTR() for performance
+ improvement in case of that self and other are shared.
- * ext/date/date_core.c (offset_to_sec): get rid of a compiler warning.
+Thu Jul 18 22:46:42 2013 Zachary Scott <e@zzak.io>
-Mon Jun 6 14:09:08 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+ * 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
- * include/ruby/defines.h (rb_infinity, rb_nan): export for Windows.
+Thu Jul 18 21:30:50 2013 Tanaka Akira <akr@fsij.org>
-Mon Jun 6 10:54:45 2011 Shota Fukumori <sorah@tubusu.net>
+ * bignum.c (bary_sq_fast): Specialize the last iteration of the
+ outer loop.
+ (bigfixize): A condition simplified.
- * 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.
+Thu Jul 18 21:15:41 2013 Masaki Matsushita <glass.saga@gmail.com>
-Mon Jun 6 10:52:13 2011 NARUSE, Yui <naruse@ruby-lang.org>
+ * array.c (rb_ary_equal): compare RARRAY_PTR() for performance
+ improvement in case of that self and other are shared.
- * lib/net/http.rb: don't use autoload.
+Thu Jul 18 20:44:51 2013 Masaki Matsushita <glass.saga@gmail.com>
-Mon Jun 6 09:39:43 2011 Aaron Patterson <aaron@tenderlovemaking.com>
+ * array.c (rb_ary_fill): use memfill().
- * ext/psych/parser.c (parse): release event objects to plug memory
- leak. Thanks Mark J. Titorenko!
+Thu Jul 18 20:35:14 2013 Benoit Daloze <eregontp@gmail.com>
-Sun Jun 5 23:26:15 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+ * array.c (rb_ary_count): check length to avoid SEGV
+ while iterating. Remove other pointer loop when arg is given.
- * eval.c: remove rb_thread_stop_timer_thread function declaration.
- Instead, include vm_core.h.
- * process.c: ditto.
+ * test/ruby/test_array.rb (test_count): add test for bug.
+ [ruby-core:56072] [Bug #8654]
-Sun Jun 5 21:38:51 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+Thu Jul 18 18:14:36 2013 Masaki Matsushita <glass.saga@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.
+ * array.c (rb_ary_count): iterate items appropriately.
+ [Bug #8654]
-Sun Jun 5 17:50:01 2011 Tadayoshi Funaba <tadf@dotrb.org>
+Thu Jul 18 17:35:41 2013 Masaki Matsushita <glass.saga@gmail.com>
- * ext/date/date_core.c (m_real_cwyear): new. derived from m_cwyear.
- * ext/date/date_strftime.c: trivial changes.
+ * hash.c (rb_hash_flatten): performance improvement by not using
+ rb_hash_to_a() to avoid array creation with rb_assoc_new().
-Sun Jun 5 17:22:01 2011 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+Thu Jul 18 16:16:17 2013 Koichi Sasada <ko1@atdot.net>
- * ext/tk/config_list.in: add new options for tcltklib.
+ * array.c: add logging feature for RGenGC's write barrier unprotect
+ event.
-Sun Jun 5 10:06:50 2011 Tadayoshi Funaba <tadf@dotrb.org>
+Thu Jul 18 15:45:47 2013 Nobuyoshi Nakada <nobu@ruby-lang.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.
+ * 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]
-Sun Jun 5 06:22:02 2011 Tadayoshi Funaba <tadf@dotrb.org>
+Thu Jul 18 15:42:01 2013 Koichi Sasada <ko1@atdot.net>
- * NEWS: wrote about changes of date.
+ * include/ruby/ruby.h: fix spell miss.
-Sat Jun 4 16:59:26 2011 Tadayoshi Funaba <tadf@dotrb.org>
+Thu Jul 18 15:11:11 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * ext/date/date_core.c (d_lite_inspect): changed the format.
- * ext/date/date_core.c: refactoring and fixing some bugs.
+ * include/ruby/ruby.h (ruby_safe_level_4): get rid of special
+ character. [ruby-dev:47512] [misc #8646]
-Sat Jun 4 04:04:41 2011 NARUSE, Yui <naruse@ruby-lang.org>
+Thu Jul 18 14:51:39 2013 Koichi Sasada <ko1@atdot.net>
- * test/rubygems/test_gem_commands_which_command.rb:
- "missing" exists on ruby's top source directory. [Bug #4815]
+ * array.c (ary_alloc): slim setup process.
-Fri Jun 3 21:48:12 2011 NARUSE, Yui <naruse@ruby-lang.org>
+Thu Jul 18 14:37:57 2013 Koichi Sasada <ko1@atdot.net>
- * lib/rubygems/test_case.rb: Refix for test-all in separate directory.
- r31147 + r31151.
+ * string.c (str_alloc): no need to clear RString (already cleared).
-Fri Jun 3 20:58:47 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+Thu Jul 18 12:57:47 2013 Tanaka Akira <akr@fsij.org>
- * ext/date/date_core.c (d_lite_plus): get rid of compiler warnings.
+ * 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.
-Fri Jun 3 20:56:40 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+Thu Jul 18 06:30:02 2013 Koichi Sasada <ko1@atdot.net>
- * 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.)
+ * 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().
-Fri Jun 3 20:42:04 2011 Shota Fukumori <sorah@tubusu.net>
+ * gc.c: rename a heap management function with prefix "heap_".
+ * get_freeobj() -> heap_get_freeobj().
- * 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]
+ * gc.c: rename markable_object_p() to is_markable_object().
-Fri Jun 3 19:58:14 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+Wed Jul 17 22:57:40 2013 Masaki Matsushita <glass.saga@gmail.com>
- * io.c (io_fflush): windows -- call fsync() only when the FD is tied to
- file, because if the FD is pipe, it blocks.
+ * hash.c (delete_if_i): use ST_DELETE.
-Fri Jun 3 09:27:31 2011 NARUSE, Yui <naruse@ruby-lang.org>
+Wed Jul 17 22:34:47 2013 Tanaka Akira <akr@fsij.org>
- * lib/net/http.rb (URI::HTTP#request_uri): return nil when the uri
- is path-rootless form. Bug #4759
+ * 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.
-Thu Jun 2 23:51:03 2011 James Edward Gray II <jeg2@ruby-lang.org>
+Wed Jul 17 22:13:26 2013 Masaki Matsushita <glass.saga@gmail.com>
- * lib/csv.rb: Improve the line ending detection algorithm
- patch by Alexey).
+ * hash.c (rb_hash_replace): performance improvement by using
+ st_copy().
-Thu Jun 2 20:05:57 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+Wed Jul 17 17:19:54 2013 Koichi Sasada <ko1@atdot.net>
- * io.c (rb_io_s_write, rb_io_s_binwrite): return!!!
+ * 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().
-Thu Jun 2 16:29:34 2011 Shota Fukumori <sorah@tubusu.net>
+ * gc.c (initial_expand_heap): inlined in rb_gc_set_params().
- * io.c: Add File.write, File.binwrite. [Feature #1081] [ruby-core:21701]
+Wed Jul 17 17:12:23 2013 Matthew M. Boedicker <matthewm@boedicker.org>
- * test/ruby/test_io.rb: Test for File.write, File.binwrite.
+ * hash.c (env_fetch): Add key name to message on ENV.fetch KeyError,
+ as well as Hash#fetch. [ruby-core:56062] [Feature #8649]
- * NEWS: News for above.
+Wed Jul 17 15:59:33 2013 Koichi Sasada <ko1@atdot.net>
-Thu Jun 2 12:33:09 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+ * gc.c: catch up last changes for debugging/checking mode.
- * io.c (io_fflush, rb_io_flush): need to fsync() when ruby calls
- internal flush. [ruby-core:36670] [Bug #4813]
+Wed Jul 17 15:50:10 2013 Koichi Sasada <ko1@atdot.net>
-Thu Jun 2 07:56:24 2011 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+ * gc.c (rb_objspace_free): free slot itself.
- * ext/tk/tcltklib.c: reduce CPU power required by an eventloop.
+ * gc.c (objspace_each_objects): fix condition.
+ Use slot->body instead of slot.
-Tue May 31 21:28:33 2011 Tanaka Akira <akr@fsij.org>
+ * gc.c (count_objects): use "slot" variable.
- * test/ruby/test_signal.rb (TestSignal#test_signal_requiring):
- redirect stderr to null device.
+Wed Jul 17 15:21:10 2013 Koichi Sasada <ko1@atdot.net>
-Thu Jun 2 00:45:26 2011 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+ * gc.c (unlink_heap_slot): fix memory leak.
+ free slot itself at free_heap_slot().
- * ext/tk/extconf.rb: fix for uninitialized global variables.
- [Ruby 1.9 - Bug #4811]
+ 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.
-Wed Jun 1 21:57:08 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+ * gc.c (unlink_heap_slot): remove not working code.
- * thread_pthread.c (native_sleep): fix 1000times calculation error.
- this is a regression since r31457. [Bug #4808] [ruby-dev:43606]
+Wed Jul 17 14:31:13 2013 Koichi Sasada <ko1@atdot.net>
-Wed Jun 1 17:19:16 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+ * gc.c: re-design the heap structure.
- * thread_pthread.c: remove unused macro.
+ (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.
-Wed Jun 1 15:42:18 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ See https://bugs.ruby-lang.org/projects/ruby-trunk/wiki/GC_design
+ for more details (figure).
- * parse.y (peek_n): new macro to see next nth char.
+ * gc.c: Avoid "heaps" terminology. It is ambiguous.
-Wed Jun 1 15:40:46 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Wed Jul 17 13:29:16 2013 Koichi Sasada <ko1@atdot.net>
- * tool/rbinstall.rb (gem): fix for rubygems change.
+ * 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.
-Wed Jun 1 14:07:57 2011 Ryan Davis <ryand-ruby@zenspider.com>
+ * gc.c: catch up above change.
- * lib/minitest/*: Imported minitest 2.2.2 (r6281)
- * test/minitest/*: ditto
+Wed Jul 17 12:30:05 2013 Tanaka Akira <akr@fsij.org>
-Wed Jun 1 12:35:50 2011 Ryan Davis <ryand-ruby@zenspider.com>
+ * include/ruby/st.h (st_strcasecmp): Macro defined for compatibility.
+ (st_strncasecmp): Ditto.
- * lib/rubygems*: Import rubygems 1.8.5 (released @ 137c80f)
- * test/rubygems: Ditto
+Wed Jul 17 11:57:45 2013 Takeyuki FUJIOKA <xibbar@ruby-lang.org>
-Wed Jun 1 12:34:00 2011 Kenta Murata <mrkn@mrkn.jp>
+ * lib/cgi/util.rb (CGI::Util#escape, unescape): Avoid use of regexp
+ special global variable. [Feature #8648] Thanks to fotos.
- * NEWS: add new features of bigdecimal.
+Wed Jul 17 11:57:10 2013 Takeyuki FUJIOKA <xibbar@ruby-lang.org>
-Wed Jun 1 09:41:14 2011 Eric Hodel <drbrain@segment7.net>
+ * lib/erb.rb (ERB::Util#url_encode): Avoid use of regexp special global
+ variable. [Feature #8648] Thanks to fotos.
- * lib/cgi/util.rb: Improve documentation. Patch by Kuba Fietkiewicz.
- [Ruby 1.9 - Bug #4775]
- * lib/cgi/core.rb: ditto
+Wed Jul 17 08:12:41 2013 Tanaka Akira <akr@fsij.org>
-Wed Jun 1 09:26:05 2011 Eric Hodel <drbrain@segment7.net>
+ * st.c (st_locale_insensitive_strcasecmp): Renamed from st_strcasecmp.
+ (st_locale_insensitive_strncasecmp): Renamed from st_strncasecmp.
- * lib/mathn.rb: Improve documentation and attach it to Numeric.
- Modified from patch by Anil V. [Ruby 1.9 - Bug #4762]
+ * include/ruby/st.h: Follow above changes.
-Wed Jun 1 09:21:30 2011 Eric Hodel <drbrain@segment7.net>
+ * include/ruby/ruby.h: Ditto.
- * lib/prime.rb: Indent examples enough to appear as code sections.
- Note that Prime is Enumerable. [#4762]
+Wed Jul 17 00:14:59 2013 Tanaka Akira <akr@fsij.org>
-Wed Jun 1 07:34:57 2011 Eric Hodel <drbrain@segment7.net>
+ * bignum.c (bigmul1_toom3): Use bigdivrem_single instead of bigdivrem.
+ (big_three): Removed.
+ (Init_Bignum): Don't initialize big_three.
- * 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]
+Tue Jul 16 21:46:03 2013 Masaki Matsushita <glass.saga@gmail.com>
-Wed Jun 1 07:26:19 2011 Eric Hodel <drbrain@segment7.net>
+ * configure.in: revert r42008. strcasecmp() uses the current locale.
- * ext/pty/pty.c (pty_check): Restore "not reached" comment.
- [Ruby 1.9 - Bug #4756]
+ * include/ruby/ruby.h: ditto.
-Wed Jun 1 07:21:40 2011 Eric Hodel <drbrain@segment7.net>
+ * st.c (st_strcasecmp): ditto.
- * ext/zlib/zlib.c: Fix document-method declarations for set_sync and
- set_comment. [Ruby 1.9 - Bug #4695]
+Tue Jul 16 21:07:04 2013 Masaki Matsushita <glass.saga@gmail.com>
-Wed Jun 1 06:43:13 2011 Masaya Tarui <tarui@ruby-lang.org>
+ * configure.in: check strcasecmp().
- * load.c (loaded_feature_path): cut nonsense loop execution to fix
- performance bug.
+ * include/ruby/ruby.h: use strcasecmp() as st_strcasecmp() if it
+ exists.
-Wed Jun 1 01:16:02 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * st.c (st_strcasecmp): define the function only if strcasecmp()
+ doesn't exist.
- * class.c (rb_mix_module): implement Module#mix.
+Tue Jul 16 20:21:28 2013 Tanaka Akira <akr@fsij.org>
-Wed Jun 1 01:15:12 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * bignum.c (bigsq): Renamed from bigsqr.
- * io.c (io_encoding_set): should honor already set ecflags since it
- might be set by mode option. fixed #4804
+Tue Jul 16 19:42:08 2013 Tanaka Akira <akr@fsij.org>
-Wed Jun 1 00:34:04 2011 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
+ * bignum.c (USHORT): Unused macro removed.
- * ext/bigdecimal/bigdecimal.c (GetVpValueWithPrec): remove unused
- variable.
+Tue Jul 16 19:18:51 2013 Koichi Sasada <ko1@atdot.net>
-Wed Jun 1 00:32:00 2011 Kenta Murata <mrkn@mrkn.jp>
+ * gc.c: slim a path of newobj_of().
- * ext/bigdecimal/bigdecimal.c (GetVpValueWithPrec): support instantiation from
- a Float through Rational.
+ * gc.c (objspace): add a new field objspace::freelist, which contains
+ available RVALUEs.
- * ext/bigdecimal/bigdecimal.c (BigDecimal_new): ditto.
+ * 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.
- * test/bigdecimal/test_bigdecimal.rb (test_global_new_float): add a test for
- the above changes.
+ * gc.c (before_gc_sweep): clear objspace::freelist.
- * test/bigdecimal/test_bigdecimal.rb (test_new_with_float): ditto.
+ * gc.c (slot_sweep): clear slot::freelist.
-Wed Jun 1 00:07:00 2011 Kenta Murata <mrkn@mrkn.jp>
+ * gc.c (heaps_prepare_freeslot): renamed to heaps_prepare_freeslot.
- * 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.
+ * gc.c (unlink_free_heap_slot): remove unused function.
- * test/bigdecimal/test_bigdecimal.rb (test_coerce): add a test for the
- above change.
+ * gc.c (rb_free_const_table): remove unused function.
-Tue May 31 23:49:08 2011 Tadayoshi Funaba <tadf@dotrb.org>
+Tue Jul 16 19:05:12 2013 Tanaka Akira <akr@fsij.org>
- * ext/date/date_core.c (offset_to_sec): fixed invalid validation.
+ * bignum.c (big_shift3): Big shift width is not a problem for right
+ shift.
-Tue May 31 23:43:00 2011 Kenta Murata <mrkn@mrkn.jp>
+Tue Jul 16 18:50:08 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * ext/bigdecimal/bigdecimal.c (GetVpValueWithPrec): replace the algorithm for
- coercing from a Rational to stop requiring "bigdecimal/util.rb".
- [ruby-core:34318]
+ * array.c (rb_ary_count): [DOC] fix typo. Array#count uses ==, not
+ ===. a question at asakusa.rb ML.
- * ext/bigdecimal/bigdecimal.c (GetVpValue): refactoring.
+Tue Jul 16 18:35:48 2013 Tanaka Akira <akr@fsij.org>
- * ext/bigdecimal/bigdecimal.c (BigDecimal_new): support instantiation from a
- Rational.
+ * bignum.c (bary_mul_karatsuba): Avoid duplicate calculation when
+ squaring.
+ (bary_mul_toom3_branch): Ditto.
- * test/bigdecimal/test_bigdecimal.rb (test_global_new_with_rational): add a
- test for the above change.
+Tue Jul 16 17:43:22 2013 Koichi Sasada <ko1@atdot.net>
- * test/bigdecimal/test_bigdecimal.rb (test_new_with_rational): ditto.
+ * gc.c (link_free_heap_slot): removed.
-Tue May 31 22:44:00 2011 Kenta Murata <mrkn@mrkn.jp>
+ * gc.c (slot_sweep): use `heaps_add_freeslot' instead of
+ `link_free_heap_slot'.
- * ext/bigdecimal/bigdecimal.c (BigDecimal_new): support instantiation a
- BigDecimal object from an Integer.
+ * gc.c (assign_heap_slot): use local variable `slot' instead of
+ `heaps'.
- * test/bigdecimal/test_bigdecimal.rb (test_new_with_integer):
- add for testing the above change.
+Tue Jul 16 17:21:39 2013 Koichi Sasada <ko1@atdot.net>
- * ext/bigdecimal/bigdecimal.c (BigDecimal_global_new): replace its body
- with a BigDecimal_new call.
+ * gc.c (assign_heap_slot): refactoring variable names.
- * test/bigdecimal/test_bigdecimal.rb (test_global_new_with_integer):
- add for testing the above change.
+ * gc.c (slot_add_freeobj): added.
-Tue May 31 22:24:39 2011 Tadayoshi Funaba <tadf@dotrb.org>
+ * gc.c (heaps_add_freeslot): added.
- * ext/date/date_core.c: use simple/complex mode instead of light/right mode.
- * test/date/*.rb: followed the above changes.
+ * gc.c (finalize_list, rb_gc_force_recycle, slot_sweep): use
+ `slot_add_freeobj' instead of modifying linked list directly.
-Tue May 31 21:28:33 2011 Tanaka Akira <akr@fsij.org>
+Tue Jul 16 16:30:58 2013 Koichi Sasada <ko1@atdot.net>
- * test/ruby/test_signal.rb (TestSignal#test_signal_requiring):
- initialize SIGINT handler.
+ * gc.c (lazy_sweep): refactoring.
-Tue May 31 17:03:24 2011 Hiroshi Nakamura <nahi@ruby-lang.org>
+Tue Jul 16 13:32:06 2013 Nobuyoshi Nakada <nobu@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>.
+ * 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.
- * test/net/http/test_http.rb: test it.
+Tue Jul 16 11:12:03 2013 Masaki Matsushita <glass.saga@gmail.com>
- * NEWS: Add new feature.
+ * proc.c (rb_block_arity): raise ArgumentError if no block given.
-Tue May 31 14:17:49 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+Tue Jul 16 08:15:22 2013 Zachary Scott <e@zzak.io>
- * 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.
+ * ext/bigdecimal/lib/bigdecimal/util.rb: [DOC] document top-level
+ classes from BigDecimal utils native extensions
-Tue May 31 13:00:17 2011 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+Tue Jul 16 03:23:03 2013 Zachary Scott <e@zzak.io>
- * strftime.c (rb_strftime_with_timespec): improved style consistency.
- constified some variables.
+ * numeric.c: [DOC] improve rdoc formatting for parameters and links
- * test/test_time.rb (TestTime#test_huge_precision): test for #4456.
+Mon Jul 15 14:40:00 2013 Tanaka Akira <akr@fsij.org>
-Tue May 31 12:53:10 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+ * include/ruby/intern.h (rb_big2str0): Deprecated.
- * test/io/wait/test_io_wait.rb (TestIOWait#{test_nread,test_ready?,
- test_wait}: give system some time to process the written data.
+ * bignum.c (rb_big2str1): Renamed from rb_big2str0.
+ (rb_big2str0): Deprecated wrapper for rb_big2str1.
+ (rb_big2str): Invoke rb_big2str1 instead of rb_big2str0.
-Tue May 31 12:40:49 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+Mon Jul 15 14:13:02 2013 Masaki Matsushita <glass.saga@gmail.com>
- * test/ruby/test_io.rb (TestIO#test_open_mode): MUST release resources
- explicitly. fix problem of r31671
+ * 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.
-Tue May 31 10:49:55 2011 NARUSE, Yui <naruse@ruby-lang.org>
+Mon Jul 15 13:46:26 2013 Tanaka Akira <akr@fsij.org>
- * vm_exec.c: remove conditions for clang
- because clang version 3.0 (trunk 132165) doesn't need them.
+ * bignum.c: Add static assertions.
-Mon May 30 22:19:33 2011 Tanaka Akira <akr@fsij.org>
+Mon Jul 15 13:36:02 2013 Masaki Matsushita <glass.saga@gmail.com>
- * test/ruby/test_signal.rb (TestSignal#test_signal_requiring): don't
- close stderr.
+ * hash.c (rb_hash_each_pair): performance improvement by using
+ rb_block_arity().
-Mon May 30 20:22:00 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+Mon Jul 15 13:15:37 2013 Masaki Matsushita <glass.saga@gmail.com>
- * test/ruby/test_signal.rb (TestSignal#test_signal_requiring): small
- but critical typo of r31642. sorry...
- [Bug #4798] [ruby-core:36550]
+ * proc.c (rb_block_arity): create internal API rb_block_arity().
+ it returns arity of given block.
-Mon May 30 15:44:16 2011 NARUSE, Yui <naruse@ruby-lang.org>
+Mon Jul 15 13:07:27 2013 Yuki Yugui Sonoda <yugui@yugui.jp>
- * insns.def (opt_mult): as r31805, volatile it.
- Without this, clang -O fails calculation.
+ * lib/prime.rb (Prime::EratosthenesGenerator,
+ Prime::EratosthenesSieve): New implementation by
+ robertjlooby <robertjlooby AT gmail.com>.
- * numeric.c (fix_mul): ditto.
+ * test/test_prime.rb: updated with new method name
- * rational.c (f_imul): ditto.
+Mon Jul 15 11:32:46 2013 Zachary Scott <e@zzak.io>
-Mon May 30 10:26:51 2011 NARUSE, Yui <naruse@ruby-lang.org>
+ * numeric.c (rb_cNumeric): [DOC] Added comment for Numeric to fix doc
- * numeric.c (int_pow): make sure to assign the result of x * z.
- If xz is optimized out, the value won't overflow.
+Mon Jul 15 11:24:48 2013 Tanaka Akira <akr@fsij.org>
-Sun May 29 23:17:29 2011 NARUSE, Yui <naruse@ruby-lang.org>
+ * bignum.c (maxpow_in_bdigit_dbl): Useless #if removed.
- * re.c (rb_reg_match): fix rdoc of Regexp#=~.
- patched by Tsuyoshi Sawada. [Bug #4781]
+Mon Jul 15 11:10:46 2013 Zachary Scott <e@zzak.io>
-Sun May 29 23:10:42 2011 NARUSE, Yui <naruse@ruby-lang.org>
+ * 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
- * lib/webrick/https.rb (WEBrick::HTTPRequest#parse_uri):
- keep parse_uri as private. patched by okkez. [Bug #4773]
+Mon Jul 15 10:56:01 2013 Zachary Scott <e@zzak.io>
-Sun May 29 17:53:03 2011 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
+ * thread.c (mutex_sleep): [DOC] Awake thread will reacquire lock
+ By Tim Abdulla [Fixes GH-342] https://github.com/ruby/ruby/pull/342
- * numeric.c: add #include "internal.h" for rb_big_uminus() prototype.
+Mon Jul 15 10:45:09 2013 Tanaka Akira <akr@fsij.org>
-Sun May 29 15:09:05 2011 Nobuyoshi Nakada <nobu@ruby-lang.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.
- * numeric.c (flo_round): fix for negative value.
+ * configure.in: Check __builtin_clz, __builtin_clzl and
+ __builtin_clzll.
-Sun May 29 02:16:53 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+Mon Jul 15 09:39:07 2013 Tanaka Akira <akr@fsij.org>
- * test/net/http/utils.rb (TestNetHTTPUtils#teardown): add nil check.
+ * bignum.c (power_cache_get_power): Use bitsize instead of ceil_log2.
+ (ones): Removed.
+ (next_pow2): Removed.
+ (floor_log2): Removed.
+ (ceil_log2): Removed.
-Sun May 29 00:22:40 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+ * configure.in (__builtin_popcountl): Don't check.
- * process.c (before_exec, after_exec): change from macro to function.
+Mon Jul 15 02:47:09 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Sat May 28 19:30:17 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+ * localeinit.c (rb_locale_charmap, Init_enc_set_filesystem_encoding):
+ move from encoding.c.
- * 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.
+ * miniinit.c (rb_locale_charmap, Init_enc_set_filesystem_encoding):
+ define miniruby specific functions only.
-Sat May 28 16:08:16 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+Mon Jul 15 02:32:58 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * signal.c (Init_signal, default_handler): change default SIGPIPE handler
- from empty function to SIG_IGN. [ruby-dev:43215]
- * signal.c (sigpipe): removed.
+ * encoding.c (rb_enc_init): no longer needs NO_PRESERVED_ENCODING.
-Sat May 28 03:04:27 2011 NARUSE, Yui <naruse@ruby-lang.org>
+ * encoding.c (enc_inspect): defer loading autoloaded encoding.
- * io.c (fill_cbuf): return MORE_CHAR_SUSPENDED when cbuf is not empty.
+ * encoding.c (enc_check_encoding): use is_data_encoding() to check
+ type consistently.
-Sat May 28 02:22:48 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+ * encoding.c (must_encoding): return rb_encoding* instead of encoding
+ index.
- * string.c (rb_str_bytesize): rb_str_bytesize() should use LONG2NUM().
- Patch by Nikolai Weibull. [Bug #4789] [ruby-core:36511]
+ * encoding.c (enc_check_encoding): use is_data_encoding() to check
+ type consistently.
-Sat May 28 02:06:26 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+ * encoding.c (must_encoding): return rb_encoding* instead of encoding
+ index.
- * io.c (fill_cbuf): Fix test-all crash.
+Mon Jul 15 02:21:39 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Sat May 28 00:58:40 2011 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+ * 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]
- * lib/ostruct.rb (method_missing): Handle [] and []= correctly.
- Based on a patch by Caius Durling, bug #4179 [ruby-core:33792]
+ * encoding.c (enc_inspect): use PRIsVALUE to preserve the result
+ encoding.
-Fri May 27 23:56:54 2011 Kouhei Sutou <kou@cozmixng.org>
+Sun Jul 14 23:21:47 2013 Tanaka Akira <akr@fsij.org>
- * test/rexml/test_core.rb (Tester::test_text_frozen): split frozen
- string test. refs #4783
+ * configure.in: Check __builtin_popcountl, __builtin_bswap32 and
+ __builtin_bswap64.
-Fri May 27 22:46:23 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * 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.
- * tool/rbinstall.rb (gem): install gemspec of json. fixed #4784
+ * bignum.c (ones): Use the configure result for the condition to use
+ __builtin_popcountl.
+ (bary_unpack_internal): Use appropriate types for swap argument.
-Fri May 27 22:45:10 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Sun Jul 14 22:21:11 2013 Tanaka Akira <akr@fsij.org>
- * io.c (validate_enc_binmode): do not clear textmode flag if
- default. fixed #4732
+ * 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.
- * io.c (fill_cbuf): finish reading at EOF.
+Sun Jul 14 00:36:03 2013 Tanaka Akira <akr@fsij.org>
-Fri May 27 11:31:51 2011 misfo <tedwardo2@gmail.com>
+ * bignum.c (DIGSPERLONG): Unused macro removed.
+ (DIGSPERLL): Ditto.
- * lib/rexml/text.rb (REXML::Text#initialize): prevent an error
- when passing a frozen string to REXML::Text.new
+Sun Jul 14 00:32:51 2013 Tanaka Akira <akr@fsij.org>
- dup the string passed in instead of cloning so that it's frozen
- state is ignored
+ * bignum.c (rb_big_aref): Less scan when the number is negative.
-Fri May 27 08:47:26 2011 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+Sun Jul 14 00:17:42 2013 Tanaka Akira <akr@fsij.org>
- * thread.c (ppoll): typo bug fix.
+ * bignum.c (big_shift): Avoid signed integer overflow.
-Fri May 27 08:35:04 2011 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+Sun Jul 14 00:14:15 2013 Tanaka Akira <akr@fsij.org>
- * ext/tk/lib/tk.rb: hang-up at exit before calling Tk.mainloop.
+ * bignum.c (bary_mul_precheck): Use bary_small_lshift or
+ bary_mul_normal if xl is 1.
- * ext/tk/lib/tk/extconf.rb: cannot make on MinGW [Ruby 1.9 - Bug #4141].
+Sat Jul 13 22:58:16 2013 Tanaka Akira <akr@fsij.org>
-Thu May 27 00:34:07 2011 James Edward Gray II <jeg2@ruby-lang.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.
- * lib/csv.rb: Enhance each() to support Enumerator.
+Sat Jul 13 15:51:38 2013 Tanaka Akira <akr@fsij.org>
-Thu May 26 10:32:11 2011 James Edward Gray II <jeg2@ruby-lang.org>
+ * bignum.c (bary_small_lshift): Use size_t instead of long.
+ (bary_small_rshift): Ditto.
- * lib/csv.rb: Documentation improvements from Ysiad Ferreiras.
- [Ruby 1.9 - Bug #4785]
+Sat Jul 13 15:33:33 2013 Tanaka Akira <akr@fsij.org>
-Thu May 26 15:42:02 2011 Cezary Baginski <cezary.baginski@gmail.com>
+ * bignum.c (bary_small_lshift): Functions moved to remove
+ declaration.
+ (bary_small_rshift): Ditto.
- * lib/xmlrpc/parser.rb (FaultException): fix to_s and inspect
+Sat Jul 13 12:27:34 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * test/xmlrpc/parser.rb: test for the above
+ * encoding.c (rb_enc_associate_index): fill new terminator length, not
+ old one.
-Wed May 25 11:54:31 2011 Eric Hodel <drbrain@segment7.net>
+Sat Jul 13 12:24:24 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * ext/curses/curses.c: Remove color constants block.
- [Ruby 1.9 - Bug #4748]
+ * 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.
-Wed May 25 09:56:45 2011 Eric Hodel <drbrain@segment7.net>
+Sat Jul 13 09:26:09 2013 Tanaka Akira <akr@fsij.org>
- * 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]
+ * bignum.c (biglsh_bang): Removed.
+ (bigrsh_bang): Ditto.
+ (bigmul1_toom3): Use bary_small_lshift and bary_small_rshift.
-Wed May 25 09:35:31 2011 Eric Hodel <drbrain@segment7.net>
+Sat Jul 13 01:04:43 2013 Zachary Scott <e@zzak.io>
- * lib/benchmark.rb: Restore nodoc for Benchmark::Job and
- Benchmark::Report. [Ruby 1.9 - Bug #4726]
+ * lib/rubygems/psych_additions.rb: Ignore Psych docs here
-Wed May 25 09:29:38 2011 Eric Hodel <drbrain@segment7.net>
+Fri Jul 12 18:10:46 2013 NAKAMURA Usaku <usa@ruby-lang.org>
- * lib/net/pop.rb: Hide implementation details from RDoc.
- [Ruby 1.9 - Bug #4711]
+ * ext/fiddle/win32/lib/win32/registry.rb
+ (Win32::Registry::API#make_wstr): same as r41922.
-Wed May 25 09:26:29 2011 Eric Hodel <drbrain@segment7.net>
+Fri Jul 12 16:28:37 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * lib/net/ftp.rb: Add :nodoc: for private methods.
- [Ruby 1.9 - Bug #4710]
+ * encoding.c (rb_enc_associate_index): refill the terminator if it
+ becomes longer than before. [ruby-dev:47500] [Bug #8624]
-Wed May 25 09:19:17 2011 Eric Hodel <drbrain@segment7.net>
+ * string.c (str_null_char, str_fill_term): get rid of out of bound
+ access.
- * ext/zlib/zlib.c: Fix Document-method declarations. Improve
- Zlib::GzipFile's method catalog. [Ruby 1.9 - Bug #4695]
+ * string.c (rb_str_fill_terminator): add a parameter for the length of
+ new terminator.
-Wed May 25 08:22:12 2011 Eric Hodel <drbrain@segment7.net>
+Fri Jul 12 11:26:25 2013 Masaki Matsushita <glass.saga@gmail.com>
- * lib/erb.rb: Hide documentation for implementation details of ERB.
- [Ruby 1.9 - Bug #4694]
+ * hash.c (rb_hash_reject_bang): do not call rb_hash_foreach() if RHash
+ has ntbl and it is empty.
-Wed May 25 07:58:14 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Fri Jul 12 11:17:41 2013 Masaki Matsushita <glass.saga@gmail.com>
- * lib/tempfile.rb (Tempfile.{mkdir,rmdir}): revert for backward
- compatibility.
+ * hash.c (recursive_hash): use RHASH_SIZE() to check hash size.
-Wed May 25 07:13:12 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Fri Jul 12 00:20:00 2013 Masaki Matsushita <glass.saga@gmail.com>
- * spec/README: update the description.
+ * hash.c (rb_hash_size): use RHASH_SIZE().
-Wed May 25 07:12:16 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Fri Jul 12 00:08:24 2013 Masaki Matsushita <glass.saga@gmail.com>
- * lib/tempfile.rb (Tempfile.{lock,unlock}_tempfile): refactor.
+ * hash.c (rb_hash_values): set array capa to RHASH_SIZE().
-Tue May 24 17:30:36 2011 NARUSE, Yui <naruse@ruby-lang.org>
+Thu Jul 11 23:54:45 2013 Masaki Matsushita <glass.saga@gmail.com>
- * spec/README: fix typo.
- patched by bowsersenior. https://github.com/ruby/ruby/pull/24
+ * hash.c (rb_hash_keys): set array capa to RHASH_SIZE().
-Tue May 24 07:06:34 2011 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+Thu Jul 11 21:30:17 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * ext/tk/lib/tk.rb: fail to start Tk.mainloop (exit immediately) on
- some environment (reported on [ruby-talk:381444]).
+ * win32/win32.c (rb_w32_pow): undef pow to get rid of infinite
+ recursive call. re-fix [Bug #8495]. [ruby-core:55923] [Bug #8621]
- * ext/tk/lib/tk/canvas.rb: support creating a canvas item object from
- an item ID number.
+Thu Jul 11 20:18:13 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * ext/tk/lib/tk/image.rb: import documents which are pull-requested.
- [Ruby 1.9 - Feature #4595]
+ * ext/dl/win32/lib/win32/registry.rb (Win32::Registry::API#make_wstr):
+ remove workaround to append WCHAR terminator.
- * 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.
+ * transcode.c (str_encode_associate): fill terminator after conversion.
- * ext/tk/lib/tk/README.tcltklib: modify docs for some new configure
- options.
+ * string.c (rb_enc_str_new, rb_str_set_len, rb_str_resize): fill
+ minimum length of the encoding as the terminator.
-Tue May 24 04:01:46 2011 Aaron Patterson <aaron@tenderlovemaking.com>
+ * string.c (str_buf_cat, rb_str_buf_append, rb_str_splice_0): ditto.
- * lib/yaml.rb: switch default YAML engine to Psych, old syck engine
- may be enabled via YAML::ENGINE.yamler = "syck". [ruby-core:36374]
+ * string.c (str_make_independent_expand, rb_str_modify_expand): make
+ the capacity enough for multi-byte terminator.
-Mon May 23 09:45:26 2011 Hiroshi Nakamura <nahi@ruby-lang.org>
+ * string.c (rb_string_value_cstr): fill minimum length of the encoding
+ as the terminator.
- * 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.
+ * string.c (rb_string_value_cstr): check null char in char, not in
+ byte.
-Mon May 23 10:01:02 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
+Thu Jul 11 14:48:35 2013 Zachary Scott <e@zzak.io>
- * 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.
+ * 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
-Mon May 23 09:19:53 2011 Eric Hodel <drbrain@segment7.net>
+Thu Jul 11 14:22:37 2013 Zachary Scott <e@zzak.io>
- * lib/net/smtp.rb: Document Net::SMTP::Response. Patch by J.R. Garcia.
- [Ruby 1.9 - Bug #4768]
+ * 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
-Mon May 23 09:03:52 2011 Shota Fukumori <sorah@tubusu.net>
+Thu Jul 11 13:48:03 2013 Zachary Scott <e@zzak.io>
- * lib/test/unit/parallel.rb: Never Ignore SIGINT. When received
- Interrupt, immediately puts result and exit. [ruby-dev:43571]
+ * sprintf.c: Fix typo patch by @hynkle [Fixes GH-357]
+ https://github.com/ruby/ruby/pull/357
- * lib/test/unit.rb: When received Interrupt, wait results from workers
- and collect them. [ruby-dev:43571]
+Thu Jul 11 13:00:34 2013 Zachary Scott <e@zzak.io>
-Mon May 23 09:08:07 2011 Eric Hodel <drbrain@segment7.net>
+ * lib/securerandom.rb: Refactor conditions by Rafal Chmiel
+ [Fixes GH-326] https://github.com/ruby/ruby/pull/326
- * lib/mathn.rb: Improve documentation. Patch by Sandor Szucs.
- [Ruby 1.9 - Bug #4767]
+Thu Jul 11 12:04:47 2013 Tanaka Akira <akr@fsij.org>
-Mon May 23 08:45:55 2011 Eric Hodel <drbrain@segment7.net>
+ * 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.
- * lib/ostruct.rb: Improve documentation. Patch by Franklin Webber.
- [Ruby 1.9 - Bug #4761]
+Thu Jul 11 10:46:38 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Mon May 23 08:35:24 2011 Eric Hodel <drbrain@segment7.net>
+ * tool/probes_to_wiki.rb: fix usage comment. use Enumerable#grep
+ which yields each elements to reduce unnecessary array.
- * hash.c: Improve documentation of Hash#key. Patch by Utkarsh
- Kukreti. [Ruby 1.9 - Bug #4760]
+Thu Jul 11 10:09:18 2013 NARUSE, Yui <naruse@ruby-lang.org>
-Mon May 23 08:32:59 2011 Eric Hodel <drbrain@segment7.net>
+ * process.c (rb_daemon): daemon(3) is implemented with fork(2).
+ Therefore it needs rb_thread_atfork(). (and revert r41903)
- * enumerator.c: Improve documentation. Patch by Dave Copeland.
- [Ruby 1.9 - Bug #4757]
+Thu Jul 11 03:22:10 2013 Aaron Patterson <aaron@tenderlovemaking.com>
-Mon May 23 07:19:45 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
+ * tool/probes_to_wiki.rb: adding a script to convert probes.d to wiki
+ format for easy wiki updates.
- * NEWS (openssl): Infinite length support. Different behavior of
- Constructive and Primitive constructors.
+Thu Jul 11 00:54:07 2013 Zachary Scott <zachary@zacharyscott.net>
-Mon May 23 06:58:33 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
+ * man/ri.1: Incorrect use of .Dd macro [Bug #8620] by Tristan Hill
- * ext/openssl/ossl_asn1.c: Forbid Constructives whose value is not an
- Array to prevent segfault. Added test.
+Thu Jul 11 00:48:29 2013 Zachary Scott <zachary@zacharyscott.net>
-Mon May 23 06:33:17 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
+ * lib/delegate.rb: Add example for __setobj__ and __getobj__
+ [Bug #8615] Patch by Caleb Thompson
- * ext/openssl/ossl_asn1.c: Forbid Constructive without infinite
- length. This also prevents a segfault. Added test and improved
- documentation.
+Wed Jul 10 23:29:22 2013 Zachary Scott <zachary@zacharyscott.net>
-Mon May 23 05:58:14 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
+ * lib/logger.rb: Use :call-seq: for method signature rdoc
- * 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]
+Wed Jul 10 23:23:18 2013 Zachary Scott <zachary@zacharyscott.net>
-Mon May 23 04:03:46 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
+ * lib/logger.rb (#add): Remove incorrect rdoc for return value
+ [Bug #8567] Reported by Tim Pease.
- * 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.
+Wed Jul 10 23:12:00 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Mon May 23 04:03:46 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
+ * string.c (rb_str_subpos): make public function.
- * 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.
+Wed Jul 10 22:44:19 2013 Tanaka Akira <akr@fsij.org>
-Mon May 23 03:44:39 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
+ * bignum.c: Add a static assertion for RBIGNUM_EMBED_LEN_MAX.
- * ext/openssl/ossl_asn1.c (ossl_asn1data_to_der): Remove redundant
- flag tmp_cons.
+Wed Jul 10 22:31:25 2013 Masaki Matsushita <glass.saga@gmail.com>
-Mon May 23 00:35:00 2001 Kenta Murata <mrkn@mrkn.jp>
+ * string.c (rb_str_index): cache single byte flag and some
+ cosmetic changes.
- * bignum.c (dump_bignum, bigmul1_balance, big_split, biglsh_bang),
- (bigrsh_bang, big_split3, bigmul1_toom3, bigmul0): implement Toom3 (Toom-Cook)
- multiplication.
+Wed Jul 10 22:03:27 2013 Tanaka Akira <akr@fsij.org>
- * include/ruby/defines.h: add format prefixes for BDIGIT and BDIGIT_DBL.
+ * bignum.c (bary_2comp): Don't use bary_plus_one.
+ (bary_add_one): Replaced by the implementation of bary_plus_one.
-Sun May 22 23:24:02 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
+Wed Jul 10 20:48:22 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * ext/openssl/ossl_asn1.c: Instead of rb_intern use static symbols to
- improve performance.
+ * bignum.c (sizeof_bdigit_dbl): check sizeof(BDIGIT_DBL).
-Sun May 22 21:56:51 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
+ * internal.h (STATIC_ASSERT): move from enum.c.
- * ext/openssl/ossl_asn1.c: Use OpenSSL constants V_ASN1_xxx instead of
- hardcoded numbers for initializing class_tag_map.
+Wed Jul 10 20:08:21 2013 Tanaka Akira <akr@fsij.org>
-Sun May 22 21:29:29 2011 Hiroshi Nakamura <nahi@ruby-lang.org>
+ * bignum.c (SIZEOF_BDIGIT_DBL): Add a ifdef guard for test.
- * include/ruby/defines.h (CASEFOLD_FILESYSTEM): Revert r30508. See #4255.
- Now __APPLE__ is not CASEFOLD_FILESYSTEM again.
+Wed Jul 10 14:18:59 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * load.c (loaded_feature_path, rb_feature_p, load_lock): Revert r30508.
- See #4255. Make $LOADED_FEATURES scanning case-sensitive again.
+ * process.c (fork_daemon): kill the other threads all and abandon the
+ kept mutexes.
-Sun May 22 18:59:27 2011 Hiroshi Nakamura <nahi@ruby-lang.org>
+Wed Jul 10 11:35:36 2013 NAKAMURA Usaku <usa@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.
+ * 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.
-Sun May 22 18:26:43 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Wed Jul 10 10:20:07 2013 NARUSE, Yui <naruse@ruby-lang.org>
- * gc.c (vm_xcalloc): use calloc provided by platforms.
- fixes #4754
+ * tool/rbinstall.rb: always require rubygems to stabilize rubygems
+ related status like whether Gem::Specification is defined or not.
-Sun May 22 11:44:53 2011 Eric Hodel <drbrain@segment7.net>
+ * tool/rbinstall.rb (Gem::Specification.unresolved_deps): define stub.
- * ext/pty/pty.c: Improve documentation. Patch by David Copeland.
- [Ruby 1.9 - Bug #4756]
+Wed Jul 10 08:21:15 2013 Eric Hodel <drbrain@segment7.net>
-Sun May 22 11:26:39 2011 Eric Hodel <drbrain@segment7.net>
+ * lib/rubygems: Import RubyGems 2.1
+ * test/rubygems: Ditto.
- * lib/timeout.rb: Improve documentation. Patch by David Copeland.
- [Ruby 1.9 - Bug #4755]
+Wed Jul 10 07:34:34 2013 Eric Hodel <drbrain@segment7.net>
-Sun May 22 11:21:41 2011 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/ipaddr.rb: Improve documentation. Patch by Sandor Szucs.
- [Ruby 1.9 - Bug #4753]
+ * lib/rubygems/psych_tree.rb (module Gem): Add backward compatibility
+ for r41148
-Sun May 22 11:14:40 2011 Eric Hodel <drbrain@segment7.net>
+ * test/rubygems/test_gem_package.rb: Add backward compatibility for
+ double-slash elimination.
- * lib/forwardable.rb: Document def_delegator. Patch by Sandor Szucs.
- [Ruby 1.9 - Bug #4752]
+Wed Jul 10 06:22:27 2013 Tadayoshi Funaba <tadf@dotrb.org>
-Sun May 22 11:11:41 2011 Eric Hodel <drbrain@segment7.net>
+ * ext/date/date_parse.c (date_zone_to_diff): [ruby-core:55831].
- * lib/fileutils.rb: Document block behavior of FileUtils.cd. Patch by
- Bil Kleb. [Ruby 1.9 - Bug #4751]
+Wed Jul 10 00:41:42 2013 Tanaka Akira <akr@fsij.org>
-Sun May 22 11:07:47 2011 Eric Hodel <drbrain@segment7.net>
+ * bignum.c (bary_mul): x*1 is x.
- * ext/curses/curses.c: Complete documentation. Patch by Vincent
- Batts. [Ruby 1.9 - Bug #4748]
+Tue Jul 9 22:24:39 2013 Tanaka Akira <akr@fsij.org>
-Sun May 22 09:29:43 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+ * bignum.c (bary_mul1): No need to invoke MEMZERO at last.
+ (bary_mul_single): Invoke MEMZERO here.
- * test/ruby/test_rubyoptions.rb (TestRubyOptions#test_set_program_name):
- use spawn. it prevent that other tests inherit renamed $0.
+Tue Jul 9 21:40:01 2013 Kouhei Sutou <kou@cozmixng.org>
-Sun May 22 08:57:13 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
+ * test/rexml/test_text.rb: Add missing tests for Text#<<.
+ Reported by nagachika. Thanks!!!
- * 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]
+Tue Jul 9 18:02:38 2013 Akinori MUSHA <knu@iDaemons.org>
-Sun May 22 07:54:16 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
+ * 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.
- * ext/openssl/ossl_digest.c: Explain DSS and DSS1 in documentation.
+Tue Jul 9 17:58:26 2013 Akinori MUSHA <knu@iDaemons.org>
-Sun May 22 07:10:25 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
+ * test/fileutils/test_fileutils.rb
+ (TestFileUtils#assert_output_lines): New utility assertion
+ method for testing verbose output.
- * test/openssl/test_pkey_dsa.rb: Add tests for sign/verify.
+Tue Jul 9 17:43:57 2013 Koichi Sasada <ko1@atdot.net>
-Sun May 22 06:07:17 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
+ * test/test_tracer.rb: catch up recent rubygems changes.
- * test/openssl/test_x509cert.rb: Merge DSA-related tests from ruby_1_8
- branch.
+Tue Jul 9 16:58:30 2013 NAKAMURA Usaku <usa@ruby-lang.org>
-Sun May 22 04:11:12 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+ * 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).
- * thread.c (Init_Thread): add a code comment why the meaningless
- line is necessary.
+Tue Jul 9 15:57:20 2013 Akinori MUSHA <knu@iDaemons.org>
-Sun May 22 01:35:12 2011 Tadayoshi Funaba <tadf@dotrb.org>
+ * object.c: Fix rdoc for Kernel#<=>. [Fixes GH-352]
- * ext/date/date_core.c: modified documentation.
+Tue Jul 9 15:53:51 2013 Akinori MUSHA <knu@iDaemons.org>
-Sat May 21 22:46:26 2011 Tadayoshi Funaba <tadf@dotrb.org>
+ * lib/fileutils.rb (FileUtils#mode_to_s): Define mode_to_s() also
+ as singleton method, or FileUtils.chmod fails in verbose mode.
- * ext/date/date_strftime(date_strftime_with_tmx): "%v" means "%e-%b-%Y".
+Tue Jul 9 15:16:02 2013 Akinori MUSHA <knu@iDaemons.org>
-Sat May 21 22:14:35 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+ * test/fileutils/fileasserts.rb
+ (Test::Unit::FileAssertions#assert_not_symlink): Add a missing
+ optional argument "message".
- * 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.
+Tue Jul 9 15:03:24 2013 Akinori MUSHA <knu@iDaemons.org>
-Sat May 21 21:44:14 2011 Tadayoshi Funaba <tadf@dotrb.org>
+ * lib/fileutils.rb (FileUtils#chown, FileUtils#chown_R): If user
+ and group are both nil, print ":".
- * test/date/test_switch_hitter.rb: new.
+Tue Jul 9 12:47:08 2013 Masaki Matsushita <glass.saga@gmail.com>
-Sat May 21 21:18:29 2011 Tadayoshi Funaba <tadf@dotrb.org>
+ * io.c (appendline): use READ_CHAR_PENDING_XXX macros and
+ RSTRING_END().
- * 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.
+ * io.c (rb_io_getline_1): rewrite nested if statement into one
+ statement.
-Sat May 21 02:58:46 2011 Eric Hodel <drbrain@segment7.net>
+Tue Jul 9 11:04:35 2013 NAKAMURA Usaku <usa@ruby-lang.org>
- * ext/.document: Add curses to documented extensions.
- * ext/curses/curses.c: Improve documentation. Patch by Vincent Batts.
- [Ruby 1.9 - Bug #4747]
+ * ext/{dl,fiddle}/win32/lib/win32/registry.rb (Win32::Registry#check):
+ should report the position of the error.
-Sat May 21 02:51:01 2011 Eric Hodel <drbrain@segment7.net>
+ * ext/{dl,fiddle}/win32/lib/win32/registry.rb
+ (Win32::Registry#QueryValue): workaround for test-all crash.
- * ext/bigdecimal/lib/bigdecimal/util.rb: Improve documentation. Patch
- by Pete Higgins. [Ruby 1.9 - Bug #4746]
+Tue Jul 9 10:27:56 2013 NAKAMURA Usaku <usa@ruby-lang.org>
-Sat May 21 02:44:10 2011 Eric Hodel <drbrain@segment7.net>
+ * ext/{dl,fiddle}/win32/lib/win32/registry.rb
+ (Win32::Registry.expand_environ): use suitable encoding for the
+ string.
- * ext/bigdecimal/lib/bigdecimal/jacobian.rb: Document isEqual. Patch
- by Kuba Fietkiewicz. [Ruby 1.9 - Bug #4744]
+ * 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.
-Sat May 21 02:22:34 2011 Eric Hodel <drbrain@segment7.net>
+Tue Jul 9 10:02:45 2013 NAKAMURA Usaku <usa@ruby-lang.org>
- * ext/date/lib/date/format.rb: Document date formats. Patch by
- Clinton Nixon. [Ruby 1.9 - Bug #4743]
+ * ext/{dl,fiddle}/win32/lib/win32/registry.rb
+ (Win32::Registry::Error#initialize): use suitable encoding for the
+ string.
-Fri May 20 05:15:19 2011 Nobuhiro Iwamatsu <iwamatsu@nigauri.org>
+Tue Jul 9 09:46:53 2013 NAKAMURA Usaku <usa@ruby-lang.org>
- * gc.c: Fix build on m68k by 'error: too few arguments to
- function 'mark_locations_array''.
+ * ext/dl/win32/lib/win32/registry.rb (Win32::Registry.expand_environ):
+ use suitable encoding for the string. fixed a test-all error of
+ r41838.
-Fri May 20 04:23:42 2011 Eric Hodel <drbrain@segment7.net>
+ * ext/fiddle/win32/lib/win32/registry.rb: same changes of r41838 and
+ this revision of dl's win32/registry.rb.
- * lib/scanf.rb: Improve documentation. Patch by Gabe McArthur.
- [Ruby 1.9 - Bug #4735]
+Tue Jul 9 07:39:45 2013 Eric Hodel <drbrain@segment7.net>
-Fri May 20 00:58:01 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * lib/rubygems: Update to RubyGems 2.0.4. See
+ https://github.com/rubygems/rubygems/blob/2.0/History.txt for changes
- * enc/trans/ibm737-tbl.rb: greek code page. fixes #4738
+Tue Jul 9 01:47:16 2013 Tanaka Akira <akr@fsij.org>
-Thu May 19 14:44:05 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+ * bignum.c (biglsh_bang): Don't shift a BDIGIT with BITSPERDIG bits.
+ (bigrsh_bang): Ditto.
- * test/ruby/test_signal.rb (test_signal_requiring): skip on Windows.
- we can send SIGINT only to pid 0 and the process itself.
+Tue Jul 9 01:17:57 2013 Tanaka Akira <akr@fsij.org>
-Thu May 19 09:07:08 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * bignum.c (bigrsh_bang): Fix bignum digits overrun.
- * lib: revert r31635-r31638 and untabify with expand(1).
+Tue Jul 9 00:46:22 2013 Tanaka Akira <akr@fsij.org>
-Thu May 19 07:47:26 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
+ * bignum.c (biglsh_bang): Fix bignum digits under-run.
- * test/openssl/test_pkey_rsa.rb: Add tests for sign/verify.
+Mon Jul 8 23:36:45 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Thu May 19 07:19:16 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
+ * ext/dl/win32/lib/win32/registry.rb (Error, API): use WCHAR
+ interfaces. c.f. [Bug #8508]
- * ext/openssl/ossl_pkey.c: Add documentation.
+Mon Jul 8 23:13:11 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Thu May 19 07:06:56 2011 Eric Hodel <drbrain@segment7.net>
+ * 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]
- * lib/benchmark.rb: Fix indentation.
- * lib/net/imap.rb: Fix indentation of regular expressions.
+ * numeric.c (finite): add declaration for strict ANSI.
+ [ruby-core:55312] [Bug #8495]
-Thu May 19 06:36:11 2011 Eric Hodel <drbrain@segment7.net>
+ * 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]
- * lib/net/imap.rb: Fix indentation of EOF for heredoc.
- * lib/debug.rb (Commands): Fix indentation of EOHELP for heredoc.
+ * win32/win32.c (gettimeofday): use __cdecl instead of _cdecl.
-Thu May 19 06:30:38 2011 Eric Hodel <drbrain@segment7.net>
+Mon Jul 8 22:41:12 2013 Tanaka Akira <akr@fsij.org>
- * lib/mkmf.rb: Fix indentation of EOM for heredoc.
+ * bignum.c (bary_mul): Arguments for work memory added.
+ (bary_mul_balance): Ditto.
+ (bary_mul_karatsuba): Ditto.
-Thu May 19 06:16:41 2011 Eric Hodel <drbrain@segment7.net>
+Mon Jul 8 22:03:30 2013 Tanaka Akira <akr@fsij.org>
- * lib: Convert tabs to spaces for ruby files per
- http://redmine.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]
+ * bignum.c (rb_big_sq_fast): New function for testing.
+ (rb_big_mul_toom3): Ditto.
-Thu May 19 06:06:07 2011 Eric Hodel <drbrain@segment7.net>
+ * internal.h (rb_big_sq_fast): Declared.
+ (rb_big_mul_toom3): Ditto.
- * 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
+Mon Jul 8 21:59:34 2013 Tanaka Akira <akr@fsij.org>
-Thu May 19 06:02:21 2011 Eric Hodel <drbrain@segment7.net>
+ * bignum.c (bary_mul_balance): Initialize a local variable to suppress
+ a warning.
- * lib/tempfile.rb: Document Dir.mkdir and Dir.rmdir. Patch by Clinton
- Nixon. [Ruby 1.9 - Bug #4728]
+Mon Jul 8 20:55:22 2013 Tanaka Akira <akr@fsij.org>
-Thu May 19 05:57:52 2011 Eric Hodel <drbrain@segment7.net>
+ * bignum.c (bary_mul_balance): Reduce work memory.
- * encoding.c: Improve documentation for Encoding#default_external and
- Encoding#default_internal.
+Mon Jul 8 08:26:15 2013 Martin Bosslet <Martin.Bosslet@gmail.com>
-Wed May 18 22:45:26 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * test/openssl/test_pkey_ec.rb: Skip tests for "Oakley" curves as
+ they are not suitable for ECDSA.
+ [ruby-core:54881] [Bug #8384]
- * ext/io/console/lib/console/size.rb (IO#console_size): new
- method. (EXPERIMENTAL)
+Mon Jul 8 08:03:01 2013 Tanaka Akira <akr@fsij.org>
-Wed May 18 22:41:51 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * bignum.c (bary_mul): Add a RB_GC_GUARD.
- * internal.h: add for internal use only.
+Sun Jul 7 23:56:32 2013 Tanaka Akira <akr@fsij.org>
-Wed May 18 22:36:43 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * bignum.c (bary_mul_karatsuba): Unreachable code removed. Remove
+ several branches.
- * eval.c (setup_exception): internal exception should be hidden
+Sun Jul 7 22:59:06 2013 Tanaka Akira <akr@fsij.org>
-Wed May 18 20:25:04 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+ * internal.h (rb_big_mul_normal): Declared.
+ (rb_big_mul_balance): Ditto.
+ (rb_big_mul_karatsuba): Ditto.
- * lib/timeout.rb (Timeout#timeout): don't leak "execution expired"
- exception. [Bug #4283] [ruby-core:34534].
+ * bignum.c (rb_big_mul_normal): New function for tests.
+ (rb_big_mul_balance): Ditto.
+ (rb_big_mul_karatsuba): Ditto.
-Wed May 18 06:09:24 2011 Eric Hodel <drbrain@segment7.net>
+Sun Jul 7 19:21:30 2013 Tanaka Akira <akr@fsij.org>
- * lib/cmath.rb: Add some examples and improve documentation. Patch by
- Sandor Szucs. [Ruby 1.9 - Bug #4727]
+ * bignum.c: Reorder functions to decrease forward reference.
-Wed May 18 05:40:31 2011 Eric Hodel <drbrain@segment7.net>
+Sun Jul 7 14:41:57 2013 Tanaka Akira <akr@fsij.org>
- * lib/benchmark.rb: Remove nodoc from Benchmark::Job and
- Benchmark::Report. Patch by Sandor Szucs. [Ruby 1.9 - Bug #4726]
+ * 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.
-Wed May 18 05:29:26 2011 Eric Hodel <drbrain@segment7.net>
+Sun Jul 7 11:54:33 2013 Kouhei Sutou <kou@cozmixng.org>
- * lib/webrick/compat.rb: Improve documentation. Patch by Sandor
- Szucs. [Ruby 1.9 - Bug #4725]
+ * NEWS: Add REXML::Text#<< related updates.
-Wed May 18 05:10:35 2011 Eric Hodel <drbrain@segment7.net>
+Sun Jul 7 11:49:19 2013 Kouhei Sutou <kou@cozmixng.org>
- * lib/tracer.rb: Improve documentation. Patch by Richard Ramsden.
- [Ruby 1.9 - Feature #4720]
+ * lib/rexml/text.rb (REXML::Text#<<): Support appending in not
+ "raw" mode. [Bug #8602] [ruby-dev:47482]
+ Reported by Ippei Obayashi. Thanks!!!
-Wed May 18 04:53:41 2011 Eric Hodel <drbrain@segment7.net>
+Sun Jul 7 11:43:13 2013 Kouhei Sutou <kou@cozmixng.org>
- * lib/cmath.rb: Improve documentation. Patch by Jason Dew.
- [Ruby 1.9 - Feature #4717]
+ * lib/rexml/text.rb (REXML::Text#<<): Support method chain use by "<<"
+ like other objects.
-Wed May 18 04:50:24 2011 Eric Hodel <drbrain@segment7.net>
+Sun Jul 7 11:34:18 2013 Kouhei Sutou <kou@cozmixng.org>
- * lib/net/ftp.rb: Improve documentation. Patch by Vincent Batts.
- [Ruby 1.9 - Bug #4710]
+ * lib/rexml/text.rb (REXML::Text#clear_cache): Extract common
+ cache clear code.
-Wed May 18 03:14:49 2011 Eric Hodel <drbrain@segment7.net>
+Sun Jul 7 11:01:03 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * test/test_singleton.rb: Add tests from lib/singleton.rb. Patch by
- Pete Higgins. [Ruby 1.9 - Bug #4715]
+ * 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].
-Wed May 18 03:03:07 2011 Eric Hodel <drbrain@segment7.net>
+Sun Jul 7 10:07:22 2013 Tanaka Akira <akr@fsij.org>
- * lib/singleton.rb: Improve documentation. Patch by Pete Higgins.
- [Ruby 1.9 - Bug #4709]
+ * 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.
-Tue May 17 21:24:04 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+Sat Jul 6 07:37:43 2013 Martin Bosslet <Martin.Bosslet@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().
+ * 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]
-Tue May 17 20:20:49 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+ Thanks to Vit Ondruch for providing the patch!
- * vm_core.h (rb_thread_struct): add volatile to
- transition_for_lock because it is not protected by lock.
+Sat Jul 6 07:12:39 2013 Martin Bosslet <Martin.Bosslet@gmail.com>
-Tue May 17 20:08:53 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+ * test/openssl/test_x509crl.rb: Remove unused variable.
+ [ruby-core:53501] [Bug #8114]
- * LEGAL (missing/{elf,tgamma,lgamma_r}.c): they've been replaced by
- public domain implementations.
+ Thanks, Vipul Amler, for pointing this out!
- * LEGAL (vsnprintf.c): it has moved to srcdir from missing/.
+Sat Jul 6 06:37:10 2013 Martin Bosslet <Martin.Bosslet@gmail.com>
- * LEGAL (missing/crypt.c): list its original license.
+ * 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]
-Tue May 17 19:54:26 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+ Thanks, Dirkjan Bussink, for the patch!
- * LEGAL (configure): add missing/setproctitle.c
+Sat Jul 6 06:06:16 2013 Martin Bosslet <Martin.Bosslet@gmail.com>
-Tue May 17 19:35:01 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
- Fix FreeBSD test failure.
+ * 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:
- * 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.
+ [id, criticality, octet_string] if critical,
+ [id, octet_string] if not.
-Tue May 17 08:04:26 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
+ Making sure to pick the last element of X509 extension and use it as
+ SAN value.
+ [ruby-core:55685] [Bug #8575]
- * ext/openssl/ossl_digest.c: Add documentation.
+ Thank you @nahi for providing the patch!
-Tue May 17 07:14:58 2011 Eric Hodel <drbrain@segment7.net>
+Sat Jul 6 04:49:38 2013 Aaron Patterson <aaron@tenderlovemaking.com>
- * lib/net/http.rb: Improve documentation of proxy configuration
- methods. Patch by Alf Mikula. [Ruby 1.9 - Bug #4714]
+ * 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.
-Tue May 17 07:09:01 2011 Eric Hodel <drbrain@segment7.net>
+Fri Jul 5 20:46:39 2013 NAKAMURA Usaku <usa@ruby-lang.org>
- * lib/net/pop.rb: Improve documentation. Patch by Vincent Batts.
- [Ruby 1.9 - Bug #4711]
- * lib/net/telnet.rb: ditto
+ * 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.
-Tue May 17 07:00:41 2011 Eric Hodel <drbrain@segment7.net>
+Fri Jul 5 19:05:40 2013 Akinori MUSHA <knu@iDaemons.org>
- * lib/net/http.rb: Fix nodoc for Net::HTTP::version_1_1?. Patch by
- Alf Mikula. [Ruby 1.9 - Bug #4713]
+ * 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".
-Tue May 17 06:56:26 2011 Eric Hodel <drbrain@segment7.net>
+Fri Jul 5 16:21:56 2013 Akinori MUSHA <knu@iDaemons.org>
- * lib/optparse.rb: Add link to make_switch to improve documentation.
- Patch by David Copeland. [Ruby 1.9 - Bug #4708]
+ * 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
-Tue May 17 06:50:40 2011 Eric Hodel <drbrain@segment7.net>
+ * 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.
- * lib/observer.rb: Improve documentation. Patch by David Copeland.
- [Ruby 1.9 - Bug #4707]
+Fri Jul 5 12:14:40 2013 NAKAMURA Usaku <usa@ruby-lang.org>
-Tue May 17 06:42:53 2011 Eric Hodel <drbrain@segment7.net>
+ * test/ruby/test_rubyoptions.rb (TestRubyOptions#test_notfound): after
+ r41710, the path of command uses backslash as the separator on
+ Windows.
- * lib/logger.rb: Improve documentation. Patch by David Copeland.
- [Ruby 1.9 - Bug #4706]
+Fri Jul 5 11:29:47 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Tue May 17 06:28:14 2011 Eric Hodel <drbrain@segment7.net>
+ * 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.
- * lib/gserver.rb: Improve documentation. Patch by David Copeland.
- [Ruby 1.9 - Bug #4705]
+Fri Jul 5 11:08:00 2013 NAKAMURA Usaku <usa@ruby-lang.org>
-Tue May 17 06:21:15 2011 Eric Hodel <drbrain@segment7.net>
+ * 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.
- * 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]
+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.
-Tue May 17 05:52:30 2011 Eric Hodel <drbrain@segment7.net>
+Fri Jul 5 05:39:53 2013 Tanaka Akira <akr@fsij.org>
- * ext/digest: Improve documentation of Digest, Digest::HMAC and
- Digest::SHA2. Patch by Pete Higgins. [Ruby 1.9 - Bug #4702]
+ * bignum.c (BARY_MUL1): Renamed from BARY_MUL.
+ (bary_mul1): Renamed from bary_mul.
+ (bary_mul): Renamed from bary_mul2.
-Tue May 17 03:51:42 2011 Eric Hodel <drbrain@segment7.net>
+Fri Jul 5 04:58:05 2013 Tanaka Akira <akr@fsij.org>
- * lib/abbrev.rb: Hide copyright and revision information from RDoc.
- Inspired by patch from David Copeland, bug #4703.
+ * bignum.c (bary_mul_balance): Extracted from bigmul1_balance and
+ use bary_mul2 and bary_add to decrease allocations.
-Tue May 17 03:33:21 2011 Eric Hodel <drbrain@segment7.net>
+Fri Jul 5 02:14:00 2013 Akinori MUSHA <knu@iDaemons.org>
- * lib/timeout.rb (module Timeout): Hide internal constants. Patch by
- Pete Higgins. [Ruby 1.9 - Bug #4701]
+ * 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.
-Mon May 16 11:21:09 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+ * 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.
- * configure.in, win32/Makefile.sub (RUBY_SO_NAME): add CPU as prefix
- of RUBY_SO_NAME on x64/ia64 mswin/mingw.
- [Feature #4602]
+Fri Jul 5 00:25:39 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Mon May 16 08:00:05 2011 Eric Hodel <drbrain@segment7.net>
+ * lib/mkmf.rb (have_framework): allow header file to check.
+ [ruby-core:55745] [Bug #8593]
- * lib/rdoc.rb: Update to RDoc 3.6.1, allows OpenSSL::Digest to be
- found.
+Thu Jul 4 22:31:00 2013 Charlie Somerville <charliesome@ruby-lang.org>
-Mon May 16 05:49:54 2011 Eric Hodel <drbrain@segment7.net>
+ * 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
- * lib/drb/acl.rb: Add documentation.
+Thu Jul 4 20:39:20 2013 Tanaka Akira <akr@fsij.org>
-Mon May 16 05:13:20 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
+ * tool/make-snapshot: Exit with EXIT_FAILURE when it fails.
- * ext/openssl/ossl_asn1.c: Add documentation.
+Thu Jul 4 20:20:23 2013 Tanaka Akira <akr@fsij.org>
-Mon May 16 00:32:05 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+ * 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.
- * test/ruby/test_signal.rb (TestSignal#test_signal_process_group):
- skip if the platform doesn't have :pgroup capability. (i.e. skip
- if mswin32)
+Thu Jul 4 18:25:25 2013 Tanaka Akira <akr@fsij.org>
-Sun May 15 23:53:31 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+ * bignum.c (rb_cstr_to_inum): Avoid temporary buffer allocation except
+ very big base non-power-of-2 numbers.
- * include/ruby/intern.h: resurrect old rb_fd_copy().
- * thread.c (rb_fd_copy): ditto.
+Thu Jul 4 15:51:56 2013 NARUSE, Yui <naruse@ruby-lang.org>
-Sun May 15 23:45:11 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+ * string.c (rb_str_succ): use ONIGENC_MBCLEN_CHARFOUND_P correctly.
- * 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.
+ * string.c (rb_str_dump): ditto.
-Sun May 15 22:26:39 2011 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
+Thu Jul 4 10:04:11 2013 NARUSE, Yui <naruse@ruby-lang.org>
- * 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.
+ * regcomp.c (): Merge Onigmo 5.13.5 23b523076d6f1161.
-Sun May 15 21:22:35 2011 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
+ * [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.
- * 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.
+Thu Jul 4 00:36:03 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Sun May 15 21:04:29 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * internal.h (SIGNED_INTEGER_MAX): suppress warning C4146 on VC6.
+ seems a logical ORed expression becomes unsigned.
- * transcode.c (econv_init): revert r31353. [ruby-dev:43512]
+Thu Jul 4 00:13:01 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Sun May 15 03:39:35 2011 Eric Hodel <drbrain@segment7.net>
+ * ruby_atomic.h (rb_w32_atomic_cas): call InterlockedCompareExchange
+ directly.
- * ext/zlib/zlib.c: Improve documentation. Patch by Vincent Batts.
- [Ruby 1.9 - Bug #4695]
+ * ruby_atomic.h (ATOMIC_CAS): fix missing function call.
-Sun May 15 03:23:46 2011 Eric Hodel <drbrain@segment7.net>
+Wed Jul 3 23:47:35 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * lib/erb.rb: Document ERB::Compiler. Patch by Simon Chiang.
- [Ruby 1.9 - Bug #4694]
+ * ruby_atomic.h (ATOMIC_CAS): suppress C4022 and C4047 warnings in
+ VC6. only InterlockedCompareExchange is declared using PVOID.
-Sun May 15 00:58:47 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
- fix mswin32 build error.
+Wed Jul 3 22:29:20 2013 Tanaka Akira <akr@fsij.org>
- * missing/setproctitle.c: add #ifdef HAVE_UNISTD_H.
- * win32/Makefile.sub (MISSING): add setproctitle.obj
+ * internal.h (ruby_digit36_to_number_table): Declared.
-Sat May 14 22:45:28 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+ * util.c (ruby_digit36_to_number_table): Moved from scan_digits.
- * missing/setproctitle.c: add to include "ruby/util.h".
+ * bignum.c (conv_digit): Use ruby_digit36_to_number_table.
-Sat May 14 19:52:22 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+ * pack.c (hex2num): Ditto.
- * test/ruby/test_rubyoptions.rb (TestRubyOptions#test_set_program_name):
- add for $0 test.
+Wed Jul 3 18:12:56 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Sat May 14 19:50:46 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+ * lib/mkmf.rb (install_dirs): revert DESTDIR prefix by r39841, since
+ it is fixed by r41648. [ruby-core:55760] [Bug #8115]
- * missing/setproctitle.c (compat_init_setproctitle): use
- ruby_strdup() instead of strdup().
+Wed Jul 3 14:15:25 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Sat May 14 19:37:31 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+ * 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]
- * include/ruby/missing.h: add setproctitle() declaration.
- * missing/setproctitle.c: added.
- * configure.in: add check for missing/setproctitle.c.
+Wed Jul 3 12:06:42 2013 Tanaka Akira <akr@fsij.org>
- * 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.
+ * bignum.c (maxpow_in_bdigit): Renamed from calc_hbase and return
+ maxpow.
- This patch makes a lot of cleanup set_arg0 related code and fixes
- [Feature #4689].
+Tue Jul 2 23:47:50 2013 Tanaka Akira <akr@fsij.org>
-Sat May 14 17:42:21 2011 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
+ * bignum.c (roomof): Cast to long.
+ (rb_ull2big): Fix bignew arguments.
- * process.c (rb_proc_times): improve documentation.
- [ruby-core:35785] fixes #4581, reported by Andrew Grimm.
+Tue Jul 2 21:17:37 2013 Tanaka Akira <akr@fsij.org>
-Sat May 14 12:12:54 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
+ * bignum.c (rb_cstr_to_inum): Merge two temporary buffers.
- * 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'.
+Tue Jul 2 20:25:04 2013 Tanaka Akira <akr@fsij.org>
-Sat May 14 12:06:49 2011 Eric Hodel <drbrain@segment7.net>
+ * bignum.c (rb_cstr_to_inum): Use BDIGIT_DBL to collect adjacent digits.
+ (BDIGIT_DBL_MAX): New macro.
+ (maxpow_in_bdigit_dbl): New function.
- * lib/rdoc/context.rb (class RDoc): Fix infinite loop caused by
- re-encountering BasicObject.
+Tue Jul 2 17:23:33 2013 Shugo Maeda <shugo@ruby-lang.org>
-Sat May 14 10:32:36 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
+ * doc/syntax/refinements.rdoc: add description of Module#using and
+ refinement inheritance by module inclusion.
- * 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]
+Tue Jul 2 17:22:44 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Sat May 14 09:50:10 2011 Eric Hodel <drbrain@segment7.net>
+ * internal.h: add EUC-JP and Windows-31J.
- * lib/yaml/dbm.rb: Add documentation. Patch by Justin Collins.
- [Ruby 1.9 - Bug #4693]
- * lib/yaml/store.rb: ditto
+ * re.c (rb_char_to_option_kcode): use built-in encoding indexes in
+ internal.h.
-Sat May 14 09:31:43 2011 Eric Hodel <drbrain@segment7.net>
+ * internal.h: add UTF8-MAC.
- * lib/rdoc.rb: Updated to RDoc 3.6
+ * dir.c (rb_utf8mac_encoding): use built-in encoding indexes in
+ internal.h.
-Sat May 14 07:30:29 2011 Aaron Patterson <aaron@tenderlovemaking.com>
+ * internal.h: add UTF-{16,32} dummy encodings.
- * ext/psych/lib/psych.rb: released a new gem, so increasing version.
+ * string.c (rb_str_inspect, str_scrub0): use built-in encoding indexes
+ in internal.h.
-Sat May 14 05:08:32 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
+ * internal.h: add UTF-{16,32}{BE,LE}.
- * 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!
+ * io.c (io_strip_bom): use built-in encoding indexes in internal.h.
-Sat May 14 05:02:58 2011 Eric Hodel <drbrain@segment7.net>
+ * internal.h (rb_{ascii8bit,utf8,usascii}_encindex): use built-in
+ encoding indexes for optimization.
- * lib/uri.rb: Add toplevel documentation. Patch by Vincent Batts.
- [Ruby 1.9 - Bug #4690]
+ * encoding.c (enc_inspect, rb_locale_encindex),
+ (enc_set_filesystem_encoding, rb_filesystem_encindex): use built-in
+ encoding indexes directly.
-Sat May 14 04:19:06 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
+ * encoding.c (rb_enc_set_index, rb_enc_associate_index): validate
+ argument encoding index.
- * NEWS: Describe altered behaviour for RSA and DSA public key
- encoding. [Ruby 1.9 - Bug #4421, Bug #4422]
- [ruby-core:35327,35328]
+ * include/ruby/encoding.h (ENCODING_SET): use rb_enc_set_index()
+ instead of setting inlined bits directly.
-Sat May 14 02:57:52 2011 Eric Hodel <drbrain@segment7.net>
+ * encoding.c (rb_enc_init): register preserved indexes.
- * lib/ipaddr.rb (unless Socket): Document valid*? methods. Patch by
- Sebastian Martinez. [Ruby 1.9 - Feature #4687]
+ * internal.h (ruby_preserved_encindex): move from encoding.c.
-Sat May 14 02:54:04 2011 Eric Hodel <drbrain@segment7.net>
+Tue Jul 2 11:14:36 2013 Shota Fukumori <sorah@cookpad.com>
- * lib/rexml/functions.rb: Add some documentation for REXML::Functions.
- Patch by Sebastian Martinez. [Ruby 1.9 - Feature #4688]
+ * lib/mkmf.rb (try_config): Fix to not replace $LDFLAGS with $libs
+ (1.9.3 behavior) [ruby-core:55752] [Bug #8595]
-Sat May 14 02:51:42 2011 Eric Hodel <drbrain@segment7.net>
+Tue Jul 2 00:39:59 2013 Tanaka Akira <akr@fsij.org>
- * lib/resolv.rb: Hide private method and state-tracking constants from
- RDoc. Patch by Mark Turner. [Ruby 1.9 - Feature #4691]
+ * ext/socket/ipsocket.c (init_inetsock_internal): Don't try mismatched
+ address family if already failed.
-Fri May 13 19:23:21 2011 URABE Shyouhei <shyouhei@ruby-lang.org>
+Mon Jul 1 23:07:38 2013 NARUSE, Yui <naruse@ruby-lang.org>
- * numeric.c (flo_coerce): Add #flo_coerce documentation.
- Patch by Sebastian Martinez.
- https://github.com/ruby/ruby/pull/21
+ * template/encdb.h.tmpl: define encoding index macros to use the index
+ statically from C source.
-Fri May 13 18:42:22 2011 URABE Shyouhei <shyouhei@ruby-lang.org>
+Mon Jul 1 22:57:19 2013 Tanaka Akira <akr@fsij.org>
- * README.EXT: fix typo. Patch by William Blackerby.
- https://github.com/ruby/ruby/pull/19
+ * bignum.c (bary_mul2): New function.
+ (rb_cstr_to_inum): Use a better algorithm to compose the result
+ if input length is very long.
- * README.EXT.ja: ditto.
+Mon Jul 1 20:22:00 2013 Kenta Murata <mrkn@cookpad.com>
-Fri May 13 15:22:34 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+ * ext/bigdecimal/bigdecimal.h (RB_UNUSED_VAR, UNREACHABLE):
+ import macros from ruby.h for 1.9.3.
+ [Bug #8588] [ruby-core:55730]
- * win32/win32.c (rb_w32_select): check invalid handle before doing
- select operations. see [ruby-dev:43513], [ruby-dev:43535]
+ * ext/bigdecimal/bigdecimal.gemspec: Bump version to 1.2.1.
-Fri May 13 08:34:00 2011 Eric Hodel <drbrain@segment7.net>
+Mon Jul 1 20:03:39 2013 Tanaka Akira <akr@fsij.org>
- * 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
+ * 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.
-Fri May 13 07:49:02 2011 Eric Hodel <drbrain@segment7.net>
+Mon Jul 1 15:05:00 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * lib/fileutils.rb: Hide internal methods from RDoc. Patch by Darragh
- Curran. [Ruby 1.9 - Bug #4684]
+ * 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]
-Fri May 13 07:36:23 2011 Eric Hodel <drbrain@segment7.net>
+ * ext/stringio/stringio.c (strio_write): keep coderange of
+ ptr->string.
- * lib/webrick/httpservlet/erbhandler.rb: Add documentation.
+ * 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.
-Fri May 13 07:04:33 2011 Eric Hodel <drbrain@segment7.net>
+Mon Jul 1 12:56:41 2013 Shugo Maeda <shugo@ruby-lang.org>
- * lib/mathn.rb: Fix indentation. Patch by Jason Dew.
- [Ruby 1.9 - Feature #4682]
+ * 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]
-Fri May 13 06:50:43 2011 Eric Hodel <drbrain@segment7.net>
+ * test/ruby/test_refinement.rb: related test.
- * lib/mathn.rb: Add documentation. Patch by Jason Dew. [Ruby 1.9 -
- Feature #4667]
+Mon Jul 1 12:02:39 2013 Tanaka Akira <akr@fsij.org>
-Fri May 13 05:44:19 2011 Eric Hodel <drbrain@segment7.net>
+ * bignum.c (rb_cstr_to_inum): Skip leading zeros.
- * lib/logger.rb (class Logger): Document Logger#datetime_format.
- Patch by Sergio Gil Perez de la Manga. [Ruby 1.9 - Bug #4678]
+Mon Jul 1 00:59:23 2013 Tanaka Akira <akr@fsij.org>
-Fri May 13 05:39:11 2011 Eric Hodel <drbrain@segment7.net>
+ * 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.
- * 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]
+Sun Jun 30 22:40:00 2013 Charlie Somerville <charliesome@ruby-lang.org>
-Fri May 13 05:16:38 2011 Eric Hodel <drbrain@segment7.net>
+ * lib/prime.rb: Corrected a few comments. Patch by @Nullset14.
+ Fixes GH-346.
- * 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]
+Sun Jun 30 21:53:38 2013 Tanaka Akira <akr@fsij.org>
-Fri May 13 02:15:18 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+ * bignum.c (rb_cstr_to_inum): Use rb_integer_unpack if base is a power
+ of 2.
- * io.c (select_internal): remove unused variable (interrupt_flag).
+Sun Jun 30 10:59:23 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Thu May 12 18:24:34 2011 Kouhei Sutou <kou@clear-code.com>
+ * 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]
- * 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
+ * io.c (spawnv, spawn): use UTF-8 spawn family. [Bug #1771]
- Approved by nobu.
+ * process.c (proc_exec_sh, proc_spawn_cmd, proc_spawn_sh): ditto.
-Thu May 12 14:50:52 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+ * win32/win32.c (translate_char, join_argv, has_redirection): make
+ codepage aware.
- * test/dl/test_base.rb (Fiddle::LIBC_SO): its always msvc*.dll on
- mswin/mingw.
+ * win32/win32.c (rb_w32_udln_find_exe_r, rb_w32_udln_find_file_r):
+ codepage independent versions.
-Thu May 12 14:47:53 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+ * win32/win32.c (w32_spawn): extract codepage aware code from
+ rb_w32_spawn().
- * lib/mkmf.rb (Logging.postpone): copy only when temporary logfile
- exists.
+ * win32/win32.c (rb_w32_uspawn): add UTF-8 version function.
-Thu May 12 12:24:22 2011 Nobuhiro Iwamatsu <iwamatsu@nigauri.org>
+ * win32/win32.c (w32_aspawn_flags): extract codepage aware code from
+ rb_w32_aspawn_flags().
- * 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.
+ * win32/win32.c (rb_w32_uaspawn_flags, rb_w32_uaspawn_flags): add
+ UTF-8 version functions.
-Thu May 12 08:10:46 2011 Eric Hodel <drbrain@segment7.net>
+ * win32/win32.c (w32_getenv): extract codepage aware code from
+ rb_w32_ugetenv() and rb_w32_getenv().
- * lib/set.rb (class Set): Add nodoc to internal-use methods. Patch
- by Pete Higgins. [Ruby 1.9 - Bug #4665]
+ * win32/win32.c (w32_stati64): extract codepage aware code from
+ rb_w32_ustati64() and rb_w32_stati64().
-Thu May 12 08:01:14 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
+ * dln.h (DLN_FIND_EXTRA_ARG, DLN_FIND_EXTRA_ARG_DECL): allow extra
+ arguments to dln_find_{exe,file}_r().
- * ext/openssl/ossl_pkey_ec.c: Allow encryption when PEM-encoding
- Elliptic Curve private keys.
- [ruby-core:35329] [Bug #4423]
+ * dln_find.c (dln_find_exe_r, dln_find_file_r): add extract arguments.
-Thu May 12 07:54:59 2011 Eric Hodel <drbrain@segment7.net>
+ * process.c (EXPORT_STR, EXPORT_DUP): convert to default process
+ encoding if defined.
- * 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
+ * process.c (check_exec_env_i): convert environment variables too.
-Thu May 12 07:30:08 2011 Eric Hodel <drbrain@segment7.net>
+ * process.c (rb_exec_fillarg): convert program path and arguments too.
- * Various .document files: Update .document files to match files which
- have documentation.
+Sun Jun 30 01:57:08 2013 Tanaka Akira <akr@fsij.org>
-Thu May 12 07:18:45 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
+ * bignum.c (big_rshift): Use abs2twocomp and twocomp2abs_bang.
- * ext/openssl/ossl_pkey_dsa.c: Use generic X.509 SubjectPublicKeyInfo
- format for PEM-encoding DSA public keys.
- [ruby-core:35328] [Bug #4422]
+Sun Jun 30 00:14:20 2013 Tanaka Akira <akr@fsij.org>
-Thu May 12 06:27:31 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
+ * bignum.c (RBIGNUM_SET_NEGATIVE_SIGN): New macro.
+ (RBIGNUM_SET_POSITIVE_SIGN): Ditto.
+ (rb_big_neg): Inline get2comp to avoid double negation.
- * ext/openssl/ossl_pkey_rsa.c: Use generic X.509 SubjectPublicKeyInfo
- format for encoding RSA public keys.
- [ruby-core:35327] [Bug #4421]
+Sat Jun 29 23:26:41 2013 Tanaka Akira <akr@fsij.org>
-Wed May 11 19:45:27 2011 Keiju Ishitsuka <keiju@ishitsuka.com>
+ * 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.
- * lib/forwardable.rb: support 'delegate :foo => :bar' for to meet
- by specification of RDOC.
+Sat Jun 29 22:31:59 2013 Tanaka Akira <akr@fsij.org>
-Wed May 11 08:36:38 2011 Eric Hodel <drbrain@segment7.net>
+ * bignum.c (bary_2comp): Simplified.
- * lib/webrick: Add documentation for WEBrick::HTTPAuth
+Sat Jun 29 09:33:53 2013 Tanaka Akira <akr@fsij.org>
-Wed May 11 03:06:35 2011 Eric Hodel <drbrain@segment7.net>
+ * bignum.c (bigor_int): Return -1 if y == -1.
- * lib/rss.rb: Add documentation for RSS. Patch by Steve Klabnik.
- [Ruby 1.9 - Bug #4663]
+Sat Jun 29 09:07:16 2013 Tanaka Akira <akr@fsij.org>
-Tue May 10 14:50:32 2011 Shota Fukumori <sorah@tubusu.net>
+ * 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.
- * lib/test/unit.rb: Add option for hiding skip messages when test
- ends. #4657
+Sat Jun 29 08:19:58 2013 Tanaka Akira <akr@fsij.org>
- * test/testunit/test_hideskip.rb, test/testunit/test4test_hideskip.rb:
- test for above.
+ * 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.
-Tue May 10 10:53:04 2011 Eric Hodel <drbrain@segment7.net>
+Fri Jun 29 01:08:00 2013 Charlie Somerville <charliesome@ruby-lang.org>
- * common.mk (rdoc): Add rdoc-coverage rule
+ * 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
-Tue May 10 09:13:21 2011 Eric Hodel <drbrain@segment7.net>
+ * test/ruby/test_integer_comb.rb (class TestIntegerComb): add test case
- * lib/webrick: Add Documentation
+Fri Jun 28 12:26:53 2013 Tanaka Akira <akr@fsij.org>
-Tue May 10 04:22:09 Eric Hodel <drbrain@segment7.net>
+ * bignum.c (rb_big_and): Allocate new bignum with same size to shorter
+ argument if it's high bits are zero.
- * 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
+Fri Jun 28 12:14:04 2013 Tanaka Akira <akr@fsij.org>
-Mon May 9 20:57:13 2011 Tadayoshi Funaba <tadf@dotrb.org>
+ * ext/socket/ipsocket.c (init_inetsock_internal): Don't use local
+ addresses which address family is different to remote address.
- * test/ruby/test_{complex,rational}.rb: added tests.
+Fri Jun 28 08:06:22 2013 Tanaka Akira <akr@fsij.org>
-Mon May 9 20:29:44 2011 Tadayoshi Funaba <tadf@dotrb.org>
+ * bignum.c (bigand_int): Add arguments, xn and hibitsx.
+ Use twocomp2abs_bang.
- * complex.c (string_to_c_internal): a refactoring.
+Thu Jun 27 23:58:13 2013 Tanaka Akira <akr@fsij.org>
-Mon May 9 18:33:05 2011 NARUSE, Yui <naruse@ruby-lang.org>
+ * bignum.c (abs2twocomp_bang): Removed.
+ (abs2twocomp): Take n_ret argument to return actual length.
+ (rb_big_and): Follow above change.
- * string.c: Improve documentation for String#start_with? and
- String#end_with?. fixes #4652
- patched by Andrew Grimm <andrew.j.grimm at gmail.com>
+Thu Jun 27 22:52:19 2013 Tanaka Akira <akr@fsij.org>
-Mon May 9 13:49:00 2011 Kenta Murata <mrkn@mrkn.jp>
+ * 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.
- * 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]
+Thu Jun 27 20:03:13 2013 CHIKANAGA Tomoyuki <nagachika@ruby-lang.org>
-Mon May 9 11:52:48 2011 NARUSE, Yui <naruse@ruby-lang.org>
+ * ext/openssl/lib/openssl/ssl.rb (verify_certificate_identity): fix
+ hostname verification. Patched by nahi.
- * numeric.c (int_ord): remove K&R style.
- patched by Daehyub Kim. https://github.com/ruby/ruby/pull/17
+ * test/openssl/test_ssl.rb (test_verify_certificate_identity): test for
+ above.
-Sun May 8 22:17:24 2011 Tadayoshi Funaba <tadf@dotrb.org>
- * test/ruby/test_{complex2,complexrational}.rb: use skip.
- * test/date/*.rb: ditto.
+Thu Jun 27 00:23:57 2013 Tanaka Akira <akr@fsij.org>
-Sun May 8 21:02:31 2011 Tadayoshi Funaba <tadf@dotrb.org>
+ * bignum.c (rb_big_pow): Retry if y is a Bignum and it is
+ representable as a Fixnum.
+ Use rb_absint_numwords.
- * test/ruby/test_{complex2,complexrational}.rb: NEVER SKIP.
+Wed Jun 26 23:53:00 2013 Charlie Somerville <charliesome@ruby-lang.org>
-Sun May 8 21:01:21 2011 Tadayoshi Funaba <tadf@dotrb.org>
+ * ext/bigdecimal/bigdecimal.c (BigDecimal_save_rounding_mode): fix typo.
+ Fixes GH-343. Patch by @jgarber.
- * test/date/test_date_base.rb: fixed.
+Wed Jun 26 23:22:21 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Sun May 8 20:54:11 2011 Tadayoshi Funaba <tadf@dotrb.org>
+ * enumerator.c (rb_enumeratorize_with_size): use strict definition
+ rb_enumerator_size_func.
- * test/date/*.rb: NEVER SKIP.
+Wed Jun 26 23:11:14 2013 Kouhei Sutou <kou@cozmixng.org>
-Sun May 8 20:37:33 2011 Tadayoshi Funaba <tadf@dotrb.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.
- * test/date/*.rb: reverted 31432.
+Wed Jun 26 22:44:00 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Sun May 8 20:32:43 2011 Tadayoshi Funaba <tadf@dotrb.org>
+ * include/ruby/intern.h (rb_enumeratorize_with_size): cast for
+ backward compatibility.
- * test/date/*.rb: reverted 31483.
+ * include/ruby/intern.h (rb_enumerator_size_func): define strict
+ function declaration for rb_enumeratorize_with_size().
-Sun May 8 19:39:16 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+Wed Jun 26 21:01:22 2013 Hiroshi Shirosaki <h.shirosaki@gmail.com>
- * thread_pthread.c (native_cond_timedwait): add to care EINTR.
- * thread_pthread.c (thread_timer): remove EINTR check.
+ * test/ruby/test_io.rb (TestIO#test_write_32bit_boundary): skip if
+ writing a file is slow.
+ [ruby-core:55541] [Bug #8519]
-Sun May 8 19:04:15 2011 Tadayoshi Funaba <tadf@dotrb.org>
+Wed Jun 26 16:42:11 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * lib/time.rb (xmlschema): avoid passing any negative numbers.
+ * 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.
-Sun May 8 18:40:03 2011 Tadayoshi Funaba <tadf@dotrb.org>
+Wed Jun 26 12:48:22 2013 Tanaka Akira <akr@fsij.org>
- * ext/date/date_{parse,strptime}.c: introduced some macros.
+ * bignum.c (bigxor_int): Fix a buffer over read.
-Sun May 8 17:17:13 2011 Tadayoshi Funaba <tadf@dotrb.org>
+Wed Jun 26 12:13:12 2013 Tanaka Akira <akr@fsij.org>
- * test/date/*.rb: use skip /w messages.
+ * 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).
-Sun May 8 17:04:55 2011 Tadayoshi Funaba <tadf@dotrb.org>
+Wed Jun 26 12:08:51 2013 Tanaka Akira <akr@fsij.org>
- * ext/date/lib/date/format.rb (_httpdate): omitted to call zone_to_diff.
+ * test/socket/test_udp.rb: Close sockets explicitly.
+ Don't use fixed port number.
-Sun May 8 16:56:19 2011 Tadayoshi Funaba <tadf@dotrb.org>
+Wed Jun 26 07:27:17 2013 Tanaka Akira <akr@fsij.org>
- * ext/date/date_core.c (date_s_test_*): use macros.
+ * bignum.c (bigand_int): Fix a buffer over read.
-Sun May 8 10:24:16 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+Wed Jun 26 06:48:07 2013 Tanaka Akira <akr@fsij.org>
- * 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.
+ * bignum.c (bigadd_int): Fix a buffer over read.
-Sun May 8 05:19:37 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+Wed Jun 26 01:18:13 2013 Masaya Tarui <tarui@ruby-lang.org>
- * 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!
+ * 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.
-Sun May 8 00:13:05 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+Wed Jun 26 01:17:29 2013 Tanaka Akira <akr@fsij.org>
- * test/io/wait/test_io_wait.rb: use Socket.pair instead of pipe.
- Windows can only treat a socket.
+ * bignum.c (bigsub_int): Fix a buffer over read.
-Sat May 7 22:43:48 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+Tue Jun 25 22:45:43 2013 Tanaka Akira <akr@fsij.org>
- * thread.c (rb_fd_zero): remove redundant zero fill.
+ * bignum.c (rb_absint_singlebit_p): Use POW2_P.
+ (bary_pack): Ditto.
+ (rb_big2str0): Ditto.
+ (POW2_P): Moved to top.
-Sat May 7 22:38:04 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+Tue Jun 25 22:28:07 2013 Akinori MUSHA <knu@iDaemons.org>
- * thread.c (rb_fd_init): remove volatile qualifier.
+ * 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]
-Sat May 7 22:34:29 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+Tue Jun 25 21:43:13 2013 Tanaka Akira <akr@fsij.org>
- * thread.c (rb_fd_init_copy): new internal api. It provide efficient
- copy constructor semantics.
- * thread.c (do_select): use rb_fd_init_copy().
+ * bignum.c (big2dbl): Use (BDIGIT)1 instead of 1UL.
+ (bary_mul_normal): Remove a useless cast.
-Sat May 7 15:18:06 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
- fix incorrect native_cond_signal call when deadlock was detected.
+Tue Jun 25 21:26:00 2013 Kenta Murata <mrkn@mrkn.jp>
- * thread.c (lock_func): decrement cond_waiting if timeout was happen.
+ * 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
-Sat May 7 18:28:37 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Tue Jun 25 20:36:31 2013 Tanaka Akira <akr@fsij.org>
- * thread_pthread.c (USE_MONOTONIC_COND): check the availability
- more strictly.
+ * bignum.c (big2ulong): "check" argument removed.
+ (rb_big2ulong): Follow above change.
+ (rb_big2long): Ditto.
+ (rb_big_rshift): Ditto.
+ (rb_big_aref): Ditto.
- * thread_pthread.h (rb_thread_cond_t): ditto.
+Tue Jun 25 20:08:29 2013 Tanaka Akira <akr@fsij.org>
-Sat May 7 15:15:10 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+ * bignum.c (rb_big2ulong_pack): Use rb_integer_pack.
+ (rb_big_aref): Call big2ulong with TRUE for "check" argument.
+ It should be non-effective.
- fix win32 native_cond_timedwait() makes SIGSEGV.
+Tue Jun 25 19:07:33 2013 Tanaka Akira <akr@fsij.org>
- * 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.
+ * 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
- * thread_win32.c (__cond_timedwait): remove entry properly if timeout
- was happen.
+Tue Jun 25 19:03:00 2013 Tanaka Akira <akr@fsij.org>
- * 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.
+ * bignum.c (big2ulong): Add a cast.
+ (big2ull): Add a specialized code for SIZEOF_LONG_LONG <=
+ SIZEOF_BDIGITS.
-Sat May 7 12:41:04 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
- fix mutex deadlock test hang-up.
+Tue Jun 25 12:42:57 2013 Tanaka Akira <akr@fsij.org>
- * thread_win32.c (abs_timespec_to_timeout_ms): fix 1000x calculation
- mistake. (ie fix hang-up native_cond_timedwait())
+ * bignum.c (integer_unpack_single_bdigit): Use "1 + ~u" instead of
+ "-u" to suppress warning (C4146) by Visual Studio.
+ Reported by ko1 via IRC.
-Sat May 7 03:14:13 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+Tue Jun 25 12:28:57 2013 Tanaka Akira <akr@fsij.org>
- sleep_cond use monotonic time if possible.
+ * bignum.c (big2ulong): Add code specialized for SIZEOF_LONG <=
+ SIZEOF_BDIGITS.
+ This prevents shift width warning from "num <<= BITSPERDIG".
- * thread_pthread.c (native_thread_init): change sleep_cond
- attribute to monotonic.
- * thread_pthread.c (native_sleep): use native_cond_timeout().
+Tue Jun 25 12:23:30 2013 Koichi Sasada <ko1@atdot.net>
- * thread_pthread.c (native_cond_timeout): add overflow care.
- * thread_win32.c (native_cond_timeout): ditto.
+ * gc.c: fix oldgen/remembered_shady counting algorithm.
-Sat May 7 02:49:12 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
- fix win32 compile error.
+ * gc.c (rgengc_check_shady): increment
+ `objspace->rgengc.remembered_shady_object_count' here.
- * thread_win32.c (RB_CONDATTR_CLOCK_MONOTONIC): define
- RB_CONDATTR_CLOCK_MONOTONIC always.
- * thread_pthread.c (RB_CONDATTR_CLOCK_MONOTONIC): ditto.
+ * gc.c (rgengc_remember): return FALSE if obj is already remembered.
-Sat May 7 02:29:41 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+ * gc.c (rgengc_rememberset_mark): make it void.
- mutex: deadlock check timeout use monotonic time.
+ * gc.c (gc_mark_children): fix to double counting oldgen_object_count
+ at minor GC.
- * 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.
+Tue Jun 25 12:07:18 2013 Tanaka Akira <akr@fsij.org>
- * thread_pthread.c (thread_timer): use native_cond_timeout()
- instead of get_ts.
- * thread.c (lock_func): ditto.
+ * 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.
- * thread_pthread.c (get_ts): removed. use native_cond_timeout().
- * thread.c (init_lock_timeout): ditto.
+ * marshal.c (shortlen): Use SIZEOF_BDIGITS instead of sizeof(BDIGIT).
-Sat May 7 01:54:21 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+ * ext/openssl/ossl_bn.c (ossl_bn_initialize): Use SIZEOF_BDIGITS
+ instead of sizeof(BDIGIT).
- * thread_pthread.c (get_ts): add monotonic clock capability.
- * thread_pthread.c (rb_thread_create_timer_thread): use monotonic
- clock if possible.
+Tue Jun 25 11:40:08 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Sat May 7 01:43:37 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+ * bignum.c (big2ulong): suppress shorten-64-to-32 warning. BDIGIT can
+ be bigger than long now.
- * 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.
+ * bignum.c (LSHIFTX): remove redundant never-true expression.
-Fri May 6 23:29:47 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+Tue Jun 25 00:55:54 2013 Masaya Tarui <tarui@ruby-lang.org>
- * thread.c (rb_wait_for_single_fd): use ppoll() instead of poll()
- if possible. based on a patch from Eric Wong. [ruby-core:36003].
+ * 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.
-Fri May 6 23:13:43 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+Mon Jun 24 23:30:31 2013 Tanaka Akira <akr@fsij.org>
- * configure.in: remove nanosleep check. we no longer use it.
- r20124 removed last usage.
+ * bignum.c (integer_unpack_single_bdigit): Refine code to filling
+ higher bits and use BIGLO.
-Fri May 6 22:35:56 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Mon Jun 24 22:26:31 2013 Hiroshi Shirosaki <h.shirosaki@gmail.com>
- * ext/syck/rubyext.c (mktime_do): extra digits are not used.
+ * test/rinda/test_rinda.rb (RingIPv6#prepare_ipv6):
+ ifindex() function may not be implemented on Windows. We use another
+ check for the case.
-Fri May 6 17:43:07 2011 NARUSE, Yui <naruse@ruby-lang.org>
+Mon Jun 24 22:11:37 2013 Hiroshi Shirosaki <h.shirosaki@gmail.com>
- * ext/syck/rubyext.c (mktime_do): remove unused variable offset.
+ * test/gdbm/test_gdbm.rb (TestGDBM#test_s_open_nolock):
+ skip a failing test on Windows because flock() implementation is
+ different from Unix.
- * ext/syck/syck.h: use #ifdef instead of #if DEBUG.
+Mon Jun 24 22:06:14 2013 Hiroshi Shirosaki <h.shirosaki@gmail.com>
-Fri May 6 16:27:33 2011 NARUSE, Yui <naruse@ruby-lang.org>
+ * 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]
- * 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.
+Mon Jun 24 22:04:02 2013 Hiroshi Shirosaki <h.shirosaki@gmail.com>
-Fri May 6 15:01:11 2011 URABE Shyouhei <shyouhei@ruby-lang.org>
+ * 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.
- * 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.
+Mon Jun 24 22:04:00 2013 Charlie Somerville <charliesome@ruby-lang.org>
-Fri May 6 14:25:53 2011 Tinco Andringa <mail@tinco.nl>
+ * 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
- * ext/syck/rubyext.c (mktime_do): YAML.load time correctly parse
- usecs smaller than 1 fixes #4571
+Mon Jun 24 20:31:00 2013 Charlie Somerville <charliesome@ruby-lang.org>
-Thu May 5 22:23:34 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+ * 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
- * thread_pthread.c (native_mutex_reinitialize_atfork): removed
- unused macro.
- * thread_win32.c (native_mutex_reinitialize_atfork): ditto.
+Mon Jun 24 07:57:18 2013 Masaya Tarui <tarui@ruby-lang.org>
-Thu May 5 22:09:39 2011 Nobuyoshi Nakada <nobu@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.
- * ext/date/date_core.c (DAY_IN_NANOSECONDS): long long int is not
- available on all platforms.
+Mon Jun 24 02:53:09 2013 Zachary Scott <zachary@zacharyscott.net>
-Thu May 5 17:36:31 2011 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
+ * array.c: Return value in Array overview example found by @PragTob
+ [Fixes GH-336] https://github.com/ruby/ruby/pull/336
- * eval.c (frame_func_id): store result of method_entry_of_iseq() to
- cfp->me because method_entry_of_iseq() might become expensive.
+Mon Jun 24 02:45:51 2013 Zachary Scott <zachary@zacharyscott.net>
-Thu May 5 15:03:51 2011 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
+ * array.c (rb_ary_zip): typo by @PragTob [Fixes GH-337]
+ https://github.com/ruby/ruby/pull/337
- * 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
+Mon Jun 24 02:42:01 2013 Zachary Scott <zachary@zacharyscott.net>
-Wed May 4 22:13:09 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+ * win32/README.win32: grammar typo by @blankenshipz [Fixes GH-334]
+ https://github.com/ruby/ruby/pull/334
- * benchmark/bm_vm4_pipe.rb: Reduced iterations. Too slow benchmark
- is bad.
- * benchmark/bm_vm4_thread_pass.rb: ditto.
+Mon Jun 24 00:59:35 2013 Tanaka Akira <akr@fsij.org>
-Wed May 4 22:08:22 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+ * 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.
- * test/date/test_date_base.rb: don't use no message skip().
+Sun Jun 23 23:05:58 2013 Tanaka Akira <akr@fsij.org>
-Wed May 4 21:11:28 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+ * 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.
- * benchmark/bm_io_select2.rb: reduce number of using file
- descriptors. because gdb need some fds.
+ * include/ruby/ruby.h (RBIGNUM_EMBED_LEN_MAX): Define it only if it is
+ not defined yet.
-Wed May 4 19:00:59 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+Sun Jun 23 17:29:51 2013 Tanaka Akira <akr@fsij.org>
- * 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.
+ * bignum.c (integer_unpack_single_bdigit): Use a cast.
-Wed May 4 18:46:39 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+Sun Jun 23 15:38:07 2013 Koichi Sasada <ko1@atdot.net>
- * 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]
+ * bootstraptest/test_thread.rb: rescue resource limitation errors.
- * test/-ext-/wait_for_single_fd/test_wait_for_single_fd.rb: ditto.
+Sun Jun 23 08:19:27 2013 Tanaka Akira <akr@fsij.org>
-Wed May 4 12:46:25 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+ * bignum.c (integer_unpack_single_bdigit): Extracted from
+ bary_unpack_internal.
- * thread.c (rb_wait_for_single_fd): Added POLLNVAL check.
- based on a patch from Eric Wong at [ruby-core:35991].
+Sun Jun 23 07:41:52 2013 Tanaka Akira <akr@fsij.org>
-Wed May 4 11:51:01 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+ * bignum.c (bary_unpack_internal): Suppress warnings (C4146) on Visual Studio.
+ Reported by ko1 via IRC.
- * io.c (rb_f_select): remove useless ifdef.
+Sun Jun 23 06:49:28 2013 Koichi Sasada <ko1@atdot.net>
-Wed May 4 11:42:47 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+ * 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(),
- * ext/socket/init.c (wait_connectable): fix error handling code.
- RB_WAITFD_OUT is turned on even though an error occur.
+ * class.c, eval.c, hash.c: use OBJ_WB_UNPROTECT().
-Wed May 4 10:12:39 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+Sun Jun 23 05:41:32 2013 Koichi Sasada <ko1@atdot.net>
- * ext/readline/readline.c (readline_event): use rb_wait_for_single_fd().
- The patch was written by Eric Wong. [Ruby 1.9 - Feature #4531]
+ * 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.
-Wed May 4 10:10:28 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+ * vm_method.c (rb_method_entry_make): add write barriers.
- * ext/socket/init.c (wait_connectable): use rb_wait_for_single_fd().
- The patch was written by Eric Wong. [Ruby 1.9 - Feature #4531]
+Sun Jun 23 01:27:54 2013 Tanaka Akira <akr@fsij.org>
- * ext/socket/init.c (try_wait_connectable, wait_connectable_ensure):
- removed.
+ * bignum.c (bytes_zero_p): Removed.
+ (bary_pack): Don't call bytes_zero_p.
-Wed May 4 10:07:48 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+Sun Jun 23 00:51:29 2013 Tanaka Akira <akr@fsij.org>
- * 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]
+ * bignum.c (bytes_zero_p): Extracted from bary_pack.
+ (bary_pack): Use bytes_zero_p.
-Wed May 4 10:01:27 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+Sun Jun 23 00:16:57 2013 Tanaka Akira <akr@fsij.org>
- * thread.c (rb_wait_for_single_fd): new. poll(2) based backend for
- rb_wait_for_single_fd().
- Now only Linux uses it.
+ * bignum.c (MSB): New macro.
+ (bary_unpack_internal): Use MSB.
+ (bary_divmod): Ditto.
+ (bigdivrem): Ditto.
- The patch was written by Eric Wong. [Ruby 1.9 - Feature #4531]
+Sat Jun 22 23:45:22 2013 Tanaka Akira <akr@fsij.org>
-Wed May 4 09:56:57 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+ * bignum.c (bary_swap): New function.
+ (bary_pack): Use bary_swap.
+ (bary_unpack_internal): Ditto.
- * thread.c (rb_wait_for_single_fd): new.
- * thread.c (select_single): select(2) based backend for
- rb_wait_for_single_fd().
+Sat Jun 22 23:18:39 2013 Tanaka Akira <akr@fsij.org>
- * 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.
+ * 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.
- * 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().
+Sat Jun 22 21:46:18 2013 Tanaka Akira <akr@fsij.org>
- The patch was written by Eric Wong. [Ruby 1.9 - Feature #4531]
+ * bignum.c (rb_integer_unpack): Don't allocate a Bignum if possible.
-Wed May 4 08:04:59 2011 Aaron Patterson <aaron@tenderlovemaking.com>
+Sat Jun 22 21:03:58 2013 Tanaka Akira <akr@fsij.org>
- * ext/psych/lib/psych/visitors/yaml_tree.rb: fix time dumping so that
- Syck can load UTC times that Psych dumps.
+ * pack.c (pack_unpack): Remove specialized unpackers for integers.
-Wed May 4 07:33:00 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+Sat Jun 22 20:36:50 2013 Tanaka Akira <akr@fsij.org>
- * thread.c (rb_fd_copy): fix wrong argument.This issue was pointed
- out by Eric Wong. [ruby-core:35982]
+ * 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.
-Tue May 3 20:29:33 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+Sat Jun 22 18:53:10 2013 Tanaka Akira <akr@fsij.org>
- * 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.
+ * 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.
-Tue May 3 18:23:57 2011 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+ * internal.h (INTEGER_PACK_FORCE_GENERIC_IMPLEMENTATION): Defined.
- * test/date/test_date.rb (TestDate#test_coerce):
- test for [ruby-core:35127].
+Sat Jun 22 15:41:25 2013 Koichi Sasada <ko1@atdot.net>
-Tue May 3 04:27:53 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * gc.c (rgengc_check_shady): add new WB miss checking
+ on RGENGC_CHECK_MODE >= 2.
- * thread.c (rb_thread_select): preserve errno if no error
- occurred.
+ (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.
-Tue May 3 03:57:04 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ This idea of this checker is by Masaya Tarui <tarui@ruby-lang.org>.
- * include/ruby/intern.h (rb_w32_fdcopy): add prototype. fixes
- #4640
+Sat Jun 22 15:25:00 2013 Charlie Somerville <charliesome@ruby-lang.org>
-Mon May 2 01:02:04 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+ * ext/etc/etc.c (setup_passwd): revert r41560, unnecessary
- * lib/fileutils.rb (FileUtils#chmod): accept symbolic mode argument.
- The patch was written by takkanm. [ruby-core:26029][Feature #2190]
+Sat Jun 22 14:39:00 2013 Charlie Somerville <charliesome@ruby-lang.org>
- * 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.
+ * 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
- * 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.
+Sat Jun 22 14:35:40 2013 Tanaka Akira <akr@fsij.org>
-Mon May 2 00:36:12 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+ * ext/dl/cfunc.c (rb_dlcfunc_call): Use rb_big_pack instead of
+ rb_big2ulong_pack and rb_big2ull.
- * ext/socket/init.c (rsock_connect): add to care EINTR. based
- on a patch from Eric Wong at [ruby-core:35621][Bug #4555]
+ * include/ruby/intern.h (rb_big2ulong_pack): Deprecated.
-Sun May 1 01:06:24 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+Sat Jun 22 14:31:00 2013 Charlie Somerville <charliesome@ruby-lang.org>
- * thread.c (rb_thread_select): release GVL while waiting select().
+ * 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 Apr 30 23:10:15 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+Sat Jun 22 13:47:13 2013 Tanaka Akira <akr@fsij.org>
- * 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()
+ * bignum.c (bary_pack): MEMZERO can be used even if nails is not zero.
-Sat Apr 30 20:18:43 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+Sat Jun 22 13:43:00 2013 Charlie Somerville <charliesome@ruby-lang.org>
- * 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]
+ * ext/etc/etc.c (etc_getpwnam): use PRIsVALUE in format string instead
+ of %s and RSTRING_PTR
- * thread.c (rb_thread_fd_select, rb_thread_wait_fd_rw):
- adapt new argument type.
+ * ext/etc/etc.c (etc_getgrnam): ditto
- * thread.c (rb_thread_select): make dummy implementation.
+Sat Jun 22 13:07:15 2013 Tanaka Akira <akr@fsij.org>
-Sat Apr 30 20:16:53 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+ * bignum.c (CLEAR_LOWBITS): Rewritten without RSHIFTX.
+ (RSHIFTX): Removed.
- * thread.c (rb_fd_copy): Change function argument. Now
- rb_fd_copy() has fully copy semantics.
- * include/ruby/intern.h: ditto.
+Sat Jun 22 10:38:03 2013 Tanaka Akira <akr@fsij.org>
-Sat Apr 30 20:11:47 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+ * pack.c (num2i32): Removed.
+ (pack_pack): Don't use num2i32.
- * include/ruby/intern.h (rb_thread_select): mark as deprecated.
+Sat Jun 22 09:55:13 2013 Tanaka Akira <akr@fsij.org>
- * 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.
+ * 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 Apr 30 20:06:36 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+Sat Jun 22 09:11:33 2013 Ryan Davis <ryand-ruby@zenspider.com>
- * thread.c (do_select): remove useless ifdef. time calculation
- is not heavy weight.
+ * lib/minitest/*: Imported minitest 4.7.5 (r8724)
+ * test/minitest/*: ditto
-Sat Apr 30 16:48:36 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+Sat Jun 22 07:20:30 2013 Koichi Sasada <ko1@atdot.net>
- * benchmark/bm_io_select3.rb: New.
+ * 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))
-Sat Apr 30 16:27:09 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+ * gc.c (gc_marks): record `oldgen_object_count' into current profile`
+ record directly.
- * 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.
+ * gc.c (rgengc_rememberset_mark): same for remembered_normal_objects
+ and remembered_shady_objects.
-Sat Apr 30 16:13:17 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+Sat Jun 22 06:46:04 2013 Koichi Sasada <ko1@atdot.net>
- * benchmark/bm_io_select.rb, benchmark/bm_io_select2.rb: New.
- based on a patch from Eric Wong at [Feature #4531]
+ * 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.
-Sat Apr 30 03:25:53 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+ * gc.c: use above fields.
- * test/io/wait/test_io_wait.rb: New. for testing ext/io/wait.
- the patch was written by Eric Wong. [Feature #4531]
+Sat Jun 22 06:05:36 2013 Koichi Sasada <ko1@atdot.net>
-Sat Apr 30 00:34:56 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+ * gc.c (rb_gc_giveup_promoted_writebarrier): remove `rest_sweep()'
+ because all of remembered objects are called for gc_mark_children().
- * include/ruby/win32.h: remove redundant declaration of
- rb_w32_time_subtract().
+Sat Jun 22 05:08:03 2013 Koichi Sasada <ko1@atdot.net>
-Sat Apr 30 00:16:40 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+ * gc.c (rgengc_rememberset_mark): call gc_mark_children() for
+ remembered objects directly instead of pushing on the mark stack.
- * thread_pthread.c (gvl_init): fix hangup if GVL_SIMPLE_LOCK=1.
- We don't have to call mutex_unlock() before initialize it!
+Sat Jun 22 04:48:53 2013 Koichi Sasada <ko1@atdot.net>
-Fri Apr 29 13:15:15 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+ * include/ruby/ruby.h (OBJ_WRITE): cast to (VALUE *) for second
+ parameter `slot'. You don't need to write a cast (VALUE *) any more.
- * thread_win32.c (native_cond_timedwait): New. r31373 caused
- win32 build failure.
+ * 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().
- * thread_win32.c (__cond_timedwait, abs_timespec_to_timeout_ms):
- New helper functions.
+Sat Jun 22 04:37:08 2013 Koichi Sasada <ko1@atdot.net>
- * win32/win32.c (rb_w32_time_subtract): rename from subtract and
- remove static.
+ * gc.c (slot_sweep_body): rename to slot_sweep().
+ No need to separate major/minor GC.
-Fri Apr 29 10:43:09 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+ * gc.c (gc_setup_mark_bits): remove gc_clear_mark_bits() and unify to
+ this function.
- * 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.
+Sat Jun 22 04:20:21 2013 Koichi Sasada <ko1@atdot.net>
-Fri Apr 29 10:25:31 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+ * gc.c (check_bitmap_consistency): add to check flag and bitmap consistency.
+ Use this function in several places.
- * vm_method.c (rb_clear_cache_by_class): Revert r29673. It made
- a segmentation fault regression. [Bug #4289][ruby-core:34554].
+Sat Jun 22 02:18:07 2013 Tanaka Akira <akr@fsij.org>
-Fri Apr 29 10:24:51 2011 Nobuyoshi Nakada <nobu@ruby-lang.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.
- * io.c (make_writeconv): do not add textmode newline decorator if any
- newline decorator is set already. fixes #4618, fixes #4619
+ * internal.h (swap16): Moved from pack.c
+ (swap32): Ditto.
+ (swap64): Ditto.
-Fri Apr 29 10:17:42 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+Fri Jun 21 21:29:49 2013 Masaya Tarui <tarui@ruby-lang.org>
- * thread.c (lock_func): small cleanup.
+ * 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 Apr 29 10:07:13 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+Fri Jun 21 21:11:53 2013 Koichi Sasada <ko1@atdot.net>
- * 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]
+ * gc.c (allocate_sorted_heaps): remove unused variable `add'.
- * thread.c (init_lock_timeout): New helper function.
+Fri Jun 21 20:50:32 2013 Koichi Sasada <ko1@atdot.net>
-Thu Apr 28 16:15:49 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+ * include/ruby/ruby.h: constify RArray::as::ary and RArray::heap::ptr.
+ Use RARRAY_ASET() or RARRAY_PTR_USE() to modify Array objects.
- * win32/{win32.c,dir.h} (rb_w32_uopendir): new API to pass UTF-8 path.
+ * array.c, gc.c: catch up above changes.
- * win32/win32.c (opendir_internal, rb_w32_opendir): extract and merge
- common part of rb_w32_opendir() and rb_w32_uopendir().
+Fri Jun 21 20:32:13 2013 Koichi Sasada <ko1@atdot.net>
- * dir.c (do_opendir, glob_helper): encoding.
+ * vm_eval.c (eval_string_with_cref): fix WB miss.
- * 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.
+Fri Jun 21 20:15:49 2013 Koichi Sasada <ko1@atdot.net>
-Thu Apr 28 15:32:53 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+ * 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 *).
- * test/dl/test_base.rb (DL::LIBC_SO): its always msvc*.dll on
- mswin/mingw.
+ * struct.c, re.c, gc.c, marshal.c: rewrite with above APIs.
-Thu Apr 28 06:07:06 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Fri Jun 21 19:38:37 2013 Tanaka Akira <akr@fsij.org>
- * lib/csv.rb (CSV::open): suppress universal newline decorator.
- fixes #4603
+ * bignum.c (BDIGMAX): Use BIGRAD.
+ (BIGLO): Use BDIGMAX.
+ (bigdivrem1): Ditto.
+ (bigor_int): Ditto.
+ (rb_big_or): Ditto.
- * lib/csv.rb (CSV.read): no mode is needed.
+Fri Jun 21 19:18:48 2013 Tanaka Akira <akr@fsij.org>
-Thu Apr 28 06:06:56 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * pack.c (pack_pack): Move the implementation for 'c' directive after
+ pack_integer label.
- * io.c (rb_io_extract_modeenc, rb_f_backquote): set default text
- mode. fixes #4619
+Fri Jun 21 19:11:56 2013 Koichi Sasada <ko1@atdot.net>
- * io.c (pipe_open): set universal newline decorator if needed.
+ * include/ruby/ruby.h, re.c: support write barrier for T_REGEXP.
-Wed Apr 27 11:33:08 2011 NARUSE, Yui <naruse@ruby-lang.org>
+ 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.
- * 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.
+Fri Jun 21 18:56:58 2013 Tanaka Akira <akr@fsij.org>
-Wed Apr 27 07:42:44 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * bignum.c (bigsub_int): Use bdigit_roomof.
+ (bigadd_int): Ditto.
+ (bigand_int): Ditto.
+ (bigor_int): Ditto.
+ (bigxor_int): Ditto.
- * configure.in (STRIP): use proper toolchain. based on a patch
- from Jon Forums at [ruby-core:35909]. fixes #4617
+Fri Jun 21 17:56:25 2013 Koichi Sasada <ko1@atdot.net>
-Wed Apr 27 01:20:59 2011 Tadayoshi Funaba <tadf@dotrb.org>
+ * benchmark/gc/gcbench.rb: fix summary of benchmark result notation.
- * ext/date/date_core.c (date_zone_to_diff): renamed.
- * ext/date/date_parse.c: ditto.
- * ext/date/date_strptime.c: ditto.
+Fri Jun 21 16:38:00 2013 Charlie Somerville <charliesome@ruby-lang.org>
-Wed Apr 27 01:16:59 2011 Nobuyoshi Nakada <nobu@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
- * encoding.c (enc_find): accept Encoding objects.
+Fri Jun 21 15:26:45 2013 Koichi Sasada <ko1@atdot.net>
-Wed Apr 27 00:55:56 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * gc.c (gc_sweep): profile sweep time correctly when LAZY_SWEEP is
+ disabled.
- * transcode.c (econv_opts): add newline option.
+ * gc.c (gc_marks_test): store oldgen count and shady count
+ before test marking and restore them after marking.
- * io.c (validate_enc_binmode, rb_io_extract_modeenc): set newline
- decorator according to open mode.
+Fri Jun 21 15:07:42 2013 Koichi Sasada <ko1@atdot.net>
- * transcode.c (rb_econv_prepare_options): new function, to prepare
- econv options with newline flags.
+ * gc.c: enable lazy sweep (commit miss).
- * include/ruby/encoding.h (ECONV_NEWLINE_DECORATOR_MASK): add.
+Fri Jun 21 14:31:29 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Wed Apr 27 00:51:01 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * hash.c (ruby_setenv): refine error message so include the variable
+ name.
- * file.c (rb_file_truncate): fix function.
+Fri Jun 21 14:15:08 2013 Koichi Sasada <ko1@atdot.net>
- * include/ruby/win32.h (ftruncate, truncate, ftello, fseeko): non-64
- versions on mingw are useless because they use int32_t. fixes #4564
+ * gc.c: fix to use total_allocated_object_num and heaps_used
+ at the GC time for profiler.
-Wed Apr 27 00:50:33 2011 Tadayoshi Funaba <tadf@dotrb.org>
+Fri Jun 21 12:35:35 2013 Koichi Sasada <ko1@atdot.net>
- * ext/date/date_core.c: modified validation methods.
- * ext/date/lib/date.rb: ditto.
+ * gc.c: RGENGC_CHECK_MODE should be 0.
-Wed Apr 27 00:00:37 2011 Tadayoshi Funaba <tadf@dotrb.org>
+Fri Jun 21 11:18:25 2013 Koichi Sasada <ko1@atdot.net>
- * ext/date/date_core.c (dt_lite_set_tmx): should get df value.
+ * gc.c (gc_marks_body): fix to get `th' in this function.
-Tue Apr 26 22:34:04 2011 Tadayoshi Funaba <tadf@dotrb.org>
+Fri Jun 21 10:21:44 2013 Koichi Sasada <ko1@atdot.net>
- * ext/date/lib/date/format.rb (_iso8601): allowed day only civil
- date. disallowed separatorless day only ordinal date.
+ * gc.c (heaps_header/heaps_slot): embed bitmaps into heaps_slot.
+ no need to maintain allocation/free bitmaps.
-Mon Apr 25 21:31:36 2011 Nobuhiro Iwamatsu <iwamatsu@nigauri.org>
+Fri Jun 21 09:22:16 2013 Koichi Sasada <ko1@atdot.net>
- * 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
+ * gc.c (slot_sweep_body): add counters at a time.
-Mon Apr 25 20:53:32 2011 Tajima, Akio <artonx@yahoo.co.jp>
+ * gc.c (gc_profile_dump_on): fix line break position.
- * win32/win32.c (kill): accept 0 only sig is SIGINT #4596
+Fri Jun 21 08:14:00 2013 Masaya Tarui <tarui@ruby-lang.org>
-Mon Apr 25 19:59:47 2011 Tajima, Akio <artonx@yahoo.co.jp>
+ * gc.c: refactoring bitmaps. introduce bits_t type and some Consts.
- * win32/win32.c (kill): accept 0 as pid, fixes #4596
+Fri Jun 21 08:04:32 2013 Koichi Sasada <ko1@atdot.net>
-Mon Apr 25 16:43:45 2011 NARUSE, Yui <naruse@ruby-lang.org>
+ * gc.c: fix to support USE_RGENGC == 0 (disable RGenGC).
+ If USE_RGENGC==0, it caused compilation error.
- * random.c (random_rand): remove unused variables.
+Fri Jun 21 08:08:11 2013 Masaya Tarui <tarui@ruby-lang.org>
- * struct.c (rb_struct_define_without_accessor): ditto.
+ * gc.c (lazy_sweep): Use is_lazy_sweeping()
+ * gc.c (rest_sweep): Ditto.
+ * gc.c (gc_prepare_free_objects): Ditto.
- * strftime.c (rb_strftime_with_timespec): ditto.
+Fri Jun 21 07:34:47 2013 Koichi Sasada <ko1@atdot.net>
- * sprintf.c: ditto.
+ * gc.c (gc_profile_record::oldgen_objects): added.
- * time.c (time_asctime): remove useless GetTimeval().
+ * 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
- * thread_pthread.c: cast to (void *) for %p.
+Fri Jun 21 06:43:59 2013 Tanaka Akira <akr@fsij.org>
-Mon Apr 25 11:02:11 2011 NARUSE, Yui <naruse@ruby-lang.org>
+ * bignum.c (rb_ull2big): Refactored.
+ (rb_uint2big): Useless code removed.
- * ext/ripper/lib/ripper/sexp.rb: fix rdoc around sexp.
- patched by Sho Hashimoto. fixes #4599
+Fri Jun 21 05:37:39 2013 Koichi Sasada <ko1@atdot.net>
-Mon Apr 25 08:24:04 2011 Shota Fukumori <sorah@tubusu.net>
+ * gc.c (gc_prof_sweep_timer_stop): accumulate sweep time only when
+ record->gc_time > 0.
- * random.c (rb_f_rand, random_s_rand): RDocs for them.
+Fri Jun 21 00:37:31 2013 Tanaka Akira <akr@fsij.org>
-Mon Apr 25 07:18:00 2011 Kenta Murata <mrkn@mrkn.jp>
+ * ext/bigdecimal: Workaround fix for bigdecimal test failures caused
+ by [ruby-dev:47413] [Feature #8509]
- * random.c (random_s_rand, Init_Random): Random.rand should behave as
- Random::DEFAULT.rand rather than Kernel#rand.
+ * 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.
- * random.c (rand_range, random_rand): rand_range function extracted
- from random_rand function.
+ * ext/bigdecimal/bigdecimal.c (RBIGNUM_ZERO_P): Use rb_bigzero_p.
+ (bigzero_p): Removed.
+ (is_even): Use rb_big_pack.
- * random.c (rb_f_rand): accept a Range argument as Random#rand
- [ruby-dev:43427] #4605
+Thu Jun 20 22:52:42 2013 Tanaka Akira <akr@fsij.org>
-Mon Apr 25 03:31:06 2011 Tadayoshi Funaba <tadf@dotrb.org>
+ * bignum.c (bigmul1_toom3): Don't call bignorm twice.
- * lib/time.rb: require 'date'.
- * ext/date/lib/date/format.rb: removed require line.
+Thu Jun 20 22:49:27 2013 Tanaka Akira <akr@fsij.org>
-Mon Apr 25 03:08:39 2011 Tadayoshi Funaba <tadf@dotrb.org>
+ * bignum.c (bignorm): Don't call bigtrunc if the result is a fixnum.
- * ext/date/lib/date/format.rb: require 'date'.
+Thu Jun 20 22:29:42 2013 Tanaka Akira <akr@fsij.org>
-Mon Apr 25 03:04:16 2011 Tadayoshi Funaba <tadf@dotrb.org>
+ * bignum.c (rb_uint2big): Refactored.
- * ext/date/lib/date/format.rb (_iso8601): added a pattern.
+Thu Jun 20 22:24:41 2013 Tanaka Akira <akr@fsij.org>
-Mon Apr 25 02:51:22 2011 NARUSE, Yui <naruse@ruby-lang.org>
+ * bignum.c (dump_bignum): Use SIZEOF_BDIGITS.
- * 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.
+Thu Jun 20 22:22:46 2013 Tanaka Akira <akr@fsij.org>
-Mon Apr 25 02:47:46 2011 Tadayoshi Funaba <tadf@dotrb.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.
- * ext/date/lib/date/format.rb (_iso8601): fixed a bug of regex.
+Thu Jun 20 22:02:46 2013 Tanaka Akira <akr@fsij.org>
-Mon Apr 25 02:12:26 2011 Tadayoshi Funaba <tadf@dotrb.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.
- * ext/date/lib/date/format.rb: an adjustment of regex.
+Thu Jun 20 21:17:19 2013 Koichi Sasada <ko1@atdot.net>
-Mon Apr 25 01:58:50 2011 Tadayoshi Funaba <tadf@dotrb.org>
+ * gc.c (rgengc_rememberset_mark): record
+ (1) normal objects count in remember set
+ (2) shady objects count in remember set
+ each GC timing.
- * ext/date/lib/date/format.rb: omitted to call _parse.
+ * gc.c (gc_profile_record_get): enable to access above information
+ and REMOVING_OBJECTS, EMPTY_OBJECTS.
-Mon Apr 25 01:03:03 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+Thu Jun 20 18:29:26 2013 Koichi Sasada <ko1@atdot.net>
- * string.c (rb_to_id): remove unused variable.
+ * benchmark/gc/gcbench.rb: Do not use GC::Profiler::disable because
+ GC::Profiler::disable prohibit to access profiling data. It should
+ be spec bug.
-Sun Apr 24 22:19:05 2011 Tadayoshi Funaba <tadf@dotrb.org>
+ Skip GC::Profiler::report if RUBY_VERSION < '2.0.0'
- * complex.c, rational.c: omitted some method calls.
+Thu Jun 20 17:59:08 2013 Koichi Sasada <ko1@atdot.net>
-Sun Apr 24 02:57:27 2011 Tadayoshi Funaba <tadf@dotrb.org>
+ * benchmark/gc/gcbench.rb: stop GC::Profiler before output results.
+ Generating GC::Profiler result under profiling causes infinite loop.
- * ext/date/date_parse.c (n2i): takes long.
+Thu Jun 20 17:24:24 2013 Koichi Sasada <ko1@atdot.net>
-Sun Apr 24 02:51:06 2011 Tadayoshi Funaba <tadf@dotrb.org>
+ * benchmark/gc/gcbench.rb: don't use __dir__ to make compatible
+ with ruby 1.9.3.
- * ext/date/date_parse.c: reverted.
+Thu Jun 20 16:57:19 2013 Koichi Sasada <ko1@atdot.net>
-Sun Apr 24 02:25:23 2011 NARUSE, Yui <naruse@ruby-lang.org>
+ * benchmark/bm_app_aobench.rb: use attr_accessor/reader instead of
+ defining methods.
- * include/ruby/intern.h: pcc can't use __builtin_constant_p.
+Thu Jun 20 16:46:46 2013 Koichi Sasada <ko1@atdot.net>
- * vm_exec.c: change condition.
+ * benchmark/bm_app_aobench.rb: added.
-Sun Apr 24 01:58:01 2011 NARUSE, Yui <naruse@ruby-lang.org>
+ * benchmark/gc/aobench.rb: added.
- * ext/date/date_core.c (leap_p): suppress warning: parentheses.
+Thu Jun 20 16:28:33 2013 Koichi Sasada <ko1@atdot.net>
- * ext/date/date_core.c (date_s__parse_internal): remove unused
- variable "str".
+ * benchmark/bm_so_binary_trees.rb: disable `puts' method
+ and change iteration parameter to increase execution time.
- * ext/date/date_parse.c (parse_ddd_cb): use RSTRING_LENINT.
+ * benchmark/gc/binarytree.rb: added.
- * ext/date/date_strftime.c (date_strftime_with_tmx): remove unused
- variable.
+Thu Jun 20 16:06:37 2013 Koichi Sasada <ko1@atdot.net>
-Sun Apr 24 00:34:23 2011 Tadayoshi Funaba <tadf@dotrb.org>
+ * benchmark/gc/pentomino.rb: added.
+ Simply load pentomino puzzle in the benchmark/ directory.
- * ext/date/date_parse.c: removed some unused macros. use strchr()
- instead of index().
+Thu Jun 20 15:32:56 2013 Koichi Sasada <ko1@atdot.net>
-Sat Apr 23 21:29:42 2011 Tadayoshi Funaba <tadf@dotrb.org>
+ * benchmark/gc/redblack.rb: import red black tree benchmark from
+ https://github.com/jruby/rubybench/blob/master/time/bench_red_black.rb
- * 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.
+ * benchmark/gc/ring.rb: add a benchmark. This benchmark create many
+ old objects.
-Fri Apr 22 12:04:15 2011 NARUSE, Yui <naruse@ruby-lang.org>
+Thu Jun 20 15:14:00 2013 Koichi Sasada <ko1@atdot.net>
- * array.c (rb_ary_sort_bang): fix rdoc.
- patched by burningTyger. https://github.com/ruby/ruby/pull/11
+ * benchmark/gc: create a directory to store GC related benchmark.
-Fri Apr 22 11:49:49 2011 NARUSE, Yui <naruse@ruby-lang.org>
+ * benchmark/gc/gcbench.rb: moved from tool/gcbench.rb.
- * lib/xmlrpc/create.rb (XMLRPC::Create#conv2value):
- XML-RPC's int is 32bit int, and Fixnum also may be beyond 32bit.
+ * benchmark/gc/hash(1|2).rb: ditto.
- * lib/xmlrpc/create.rb (XMLRPC::Create#conv2value):
- XML-RPC doesn't allow Infinity and NaN.
- http://www.xmlrpc.com/spec
+ * benchmark/gc/rdoc.rb: ditto.
-Fri Apr 22 04:16:14 2011 Aaron Patterson <aaron@tenderlovemaking.com>
+ * benchmark/gc/null.rb: added.
- * ext/psych/parser.c (parse): strings from psych have proper taint
- markings.
+ * common.mk: fix rule.
- * test/psych/test_tainted.rb: test for string taint
+Thu Jun 20 14:09:54 2013 Koichi Sasada <ko1@atdot.net>
-Thu Apr 21 01:30:02 2011 NARUSE, Yui <naruse@ruby-lang.org>
+ * tool/hashbench1.rb: fix parameter too. Increase temporary objects.
- * random.c (rb_f_srand): fix rdoc: srand(0)'s 0 is a seed.
- [ruby-core:35833] fixes #4590
+Thu Jun 20 14:01:35 2013 Koichi Sasada <ko1@atdot.net>
-Thu Apr 21 01:01:28 2011 Masaya Tarui <tarui@ruby-lang.org>
+ * tool/hashbench1.rb: fix parameters.
- * win32/win32.c (CreateChild): maximum length of lpCommandLine is
- 32,768 characters, including the Unicode terminating null character.
+Thu Jun 20 14:00:34 2013 Koichi Sasada <ko1@atdot.net>
-Wed Apr 20 21:32:11 2011 Tadayoshi Funaba <tadf@dotrb.org>
+ * common.mk: remove dependency from ruby.
- * ext/date/date_strptime.c (date__strptime_internal): do not
- overwrite local variables.
+Thu Jun 20 13:14:06 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Wed Apr 20 14:41:28 2011 NARUSE, Yui <naruse@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.
- * string.c (rb_str_each_line): check string's length when compare
- separator and string. [ruby-core:35815] fixes #4586
+Thu Jun 20 08:09:29 2013 Koichi Sasada <ko1@atdot.net>
-Wed Apr 20 00:02:13 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * tool/gcbench.rb: Summary in one line.
- * misc/ruby-mode.el (ruby-parse-partial): use position of open paren.
+ * common.mk: separate gcbench-hash to gcbench-hash1 and gcbench-hash2.
-Tue Apr 19 01:00:21 2011 Tajima Akio <artonx@yahoo.co.jp>
+Thu Jun 20 08:07:23 2013 Tanaka Akira <akr@fsij.org>
- * test/ruby/test_io.rb (TestIO#test_cross_thread_close_fd):
- skip cross thread pipe close if windows
+ * bignum.c (BIGSIZE): New macro.
+ (bigfixize): Use BIGSIZE.
+ (big2ulong): Ditto.
+ (check_shiftdown): Ditto.
+ (rb_big_aref): Ditto.
-Mon Apr 18 12:15:46 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+Thu Jun 20 07:46:48 2013 Masaya Tarui <tarui@ruby-lang.org>
- * test/ruby/test_range.rb (TestRange#test_step_ruby_core_35753):
- avoid float error. [ruby-core:35804]
+ * gc.c (rb_gc_writebarrier): give up rescan A and register B directly
+ if A has huge number of children.
-Sun Apr 17 00:20:14 2011 Tadayoshi Funaba <tadf@dotrb.org>
+Thu Jun 20 07:30:35 2013 Koichi Sasada <ko1@atdot.net>
- * ext/date/date_{core,strftime}.c: use struct tmx instead of vtm.
- * ext/date/date_tmx.h: new.
+ * common.mk: add new rules `gcbench-rdoc', `gcbench-hash'.
-Sat Apr 16 22:23:52 2011 Tadayoshi Funaba <tadf@dotrb.org>
+ * tool/gcbench.rb: separate GC bench framework and process.
- * ext/date/date_strftime.c (date_strftime_wo_timespec): changed
- the way of validation of locale modifiers.
+ * 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.
-Sat Apr 16 21:55:12 2011 Tadayoshi Funaba <tadf@dotrb.org>
+ * tool/rdocbench.rb: separated.
- * 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.
+Thu Jun 20 06:25:39 2013 Koichi Sasada <ko1@atdot.net>
-Sat Apr 16 10:18:30 2011 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+ * tool/rdocbench.rb: add summary.
- * vm.c (Init_VM): suppress warning: "OPT_BASIC_OPERATIONS" is not
- defined.
+Thu Jun 20 06:18:01 2013 Koichi Sasada <ko1@atdot.net>
-Fri Apr 15 23:41:18 2011 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+ * gc.c (gc_profile_total_time): check objspace->profile.next_index > 0.
- * ruby.c (proc_options): suppress warning:
- "ALLOW_DEFAULT_SOURCE_ENCODING" is not defined.
+Thu Jun 20 05:47:41 2013 Koichi Sasada <ko1@atdot.net>
-Fri Apr 15 15:10:29 2011 Akinori MUSHA <knu@iDaemons.org>
+ * gc.c (gc_prof_sweep_timer_start): fix merge miss.
- * 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]
+ * gc.c (GC_PROFILE_MORE_DETAIL): set it 0.
-Fri Apr 15 14:58:06 2011 Akinori MUSHA <knu@iDaemons.org>
+Thu Jun 20 05:38:56 2013 Koichi Sasada <ko1@atdot.net>
- * lib/fileutils.rb (FileUtils#touch): Fix corrupted output when
- mtime is specified in addition to nocreate (and verbose).
- ref [ruby-dev:43401]
+ * gc.c: Accumulate sweep time to GC time.
+ Now [GC time] is [mark time] + [sweep time] + [misc].
+ ([GC time] >= [mark time] + [sweep time])
-Thu Apr 14 23:43:43 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+ * gc.c (gc_prof_sweep_slot_timer_start/stop): rename to
+ gc_prof_sweep_timer_start/stop and locate at lazy_sweep().
- * numeric.c (ruby_float_step): wrong loop condition.
- fixes [ruby-core:35753], reported by Joey Zhou.
+ * gc.c (elapsed_time_from): add a utility function.
- * test/ruby/test_range.rb (TestRange#test_step_ruby_core_35753):
- test above change.
+Thu Jun 20 05:08:53 2013 Koichi Sasada <ko1@atdot.net>
-Thu Apr 14 22:48:12 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * gc.c (gc_marks): fix wrong option. FALSE means major/full GC.
+ It should be TRUE (minor marking).
- * lib/test/unit.rb (Test::Unit::Options#setup_options): set possible
- values for completion. no conversion is needed.
+Thu Jun 20 02:44:45 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * lib/test/unit.rb (Test::Unit::Runner::Worker#initialize): use
- positional arguments instead of keyword arguments.
+ * 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.
- * 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.
+Thu Jun 20 01:34:15 2013 Tanaka Akira <akr@fsij.org>
- * lib/test/unit.rb (Test::Unit::Runner::Worker#died): rename using a
- verb.
+ * 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.
- * lib/test/unit.rb (Test::Unit::Runner#_run_parallel): check if worker
- is signaled and use its exit status.
+Thu Jun 20 01:07:39 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * lib/test/unit.rb (Test::Unit::Runner::Worker#dead): no longer @in
- and @out are separated.
+ * gc.c (MARKED_IN_BITMAP, FL_TEST2): return boolean value since always
+ used as boolean value.
-Thu Apr 14 21:23:29 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * gc.c (MARK_IN_BITMAP, CLEAR_IN_BITMAP): evaluate bits once.
- * variable.c (rb_autoload_p): search superclasses as same as actual
- loading. fixes [ruby-core:35679]
+Thu Jun 20 00:05:07 2013 Koichi Sasada <ko1@atdot.net>
-Thu Apr 14 21:21:06 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * gc.c (RVALUE_PROMOTED): fix type.
- * include/ruby/win32.h (frexp, modf): wrongly declared as pure in
- mingw math.h.
+Wed Jun 19 23:39:01 2013 Koichi Sasada <ko1@atdot.net>
- * include/ruby/win32.h (ftruncate, truncate): mingw64 misses
- prototypes.
+ * 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)
- * win32/win32.c (rb_w32_read): suppress warning.
+Wed Jun 19 23:51:48 2013 Tanaka Akira <akr@fsij.org>
-Thu Apr 14 19:55:54 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+ * bignum.c (bigfixize): Use rb_absint_size.
+ (check_shiftdown): Ditto.
+ (big2ulong): Use bdigit_roomof.
- * 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]
+Wed Jun 19 23:32:23 2013 Koichi Sasada <ko1@atdot.net>
-Thu Apr 14 16:01:45 2011 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+ * gc.c (RVALUE_PROMOTED): check consistency between oldgen flag and
+ oldgen bitmap if RGENGC_CHECK_MODE > 0.
- * io.c (rb_f_syscall): suppress warning: "HAVE___SYSCALL" is not
- defined.
+Wed Jun 19 23:29:29 2013 Koichi Sasada <ko1@atdot.net>
-Thu Apr 14 00:41:09 2011 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
+ * gc.c (rb_gc_force_recycle): clear oldgen bitmap, too.
- * thread.c (thread_fd_close_i): IOError exception should be assigned
- to rb_thread_t::thrown_errinfo.
+Wed Jun 19 21:02:13 2013 Tanaka Akira <akr@fsij.org>
-Wed Apr 13 20:12:26 2011 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+ * 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.
- * io.c (rb_io_fdatasync): remove unused variable.
+Wed Jun 19 20:51:21 2013 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
-Tue Apr 12 20:54:12 2011 Tanaka Akira <akr@fsij.org>
+ * gc.c (gc_stress_get): GC.stress can be Fixnum.
- * include/ruby/st.h: parenthesize macro arguments.
+Wed Jun 19 19:31:30 2013 Tanaka Akira <akr@fsij.org>
-Tue Apr 12 19:19:50 2011 NARUSE, Yui <naruse@ruby-lang.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.
- * lib/uri/common.rb: avoid race condition. fixes #4572
+Wed Jun 19 15:14:30 2013 Koichi Sasada <ko1@atdot.net>
-Tue Apr 12 18:07:13 2011 TAKAO Kouji <kouji@takao7.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.
- * ext/readline/extconf.rb: --disable-libedit to disable
- libedit. fixes #4550
+ * iseq.c: making non-shady iseq objects.
-Tue Apr 12 10:37:39 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+ * class.c, compile.c, proc.c, vm.c: add WB for iseq objects.
- * 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)
+ * vm_core.h, iseq.h: constify fields to detect WB insertion.
-Tue Apr 12 01:33:00 2011 Luis Lavena <luislavena@gmail.com>
+Wed Jun 19 15:11:13 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * 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.
+ * gc.c (gc_mark_children): show more info for broken object.
-Mon Apr 11 21:51:52 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+Wed Jun 19 14:04:41 2013 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
- * io.c: revert r31230. Because it made a regression.
- [ruby-core:35631]
+ * test/ruby/envutil.rb (EnvUtil#rubybin): remove unnecessary
+ unless expression.
-Mon Apr 11 21:49:18 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+Wed Jun 19 07:47:48 2013 Koichi Sasada <ko1@atdot.net>
- * 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]
+ * gc.c (garbage_collect_body): use FIX2INT for ruby_gc_stress.
-Mon Apr 11 21:15:54 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+Wed Jun 19 07:44:31 2013 Koichi Sasada <ko1@atdot.net>
- * file.c (rb_group_member): kill 256K of stack usage.
- the patch was written by Eric Wong. [ruby-core:35699]
+ * gc.c (rb_objspace::gc_stress): int -> VALUE to store Fixnum object.
-Mon Apr 11 07:24:13 2011 Eric Hodel <drbrain@segment7.net>
+Wed Jun 19 07:25:35 2013 Koichi Sasada <ko1@atdot.net>
- * ext/openssl/ossl.c: Fix typo, document version constants.
+ * gc.c (make_deferred): clear flags to T_ZOMBIE.
-Sun Apr 10 22:23:45 2011 Tanaka Akira <akr@fsij.org>
+ * gc.c (slot_sweep_body): fix indent.
- * include/ruby/ruby.h: parenthesize macro arguments.
+Wed Jun 19 07:18:47 2013 Tanaka Akira <akr@fsij.org>
-Sat Apr 9 23:31:47 2011 Shota Fukumori <sorah@tubusu.net>
+ * bignum.c (rb_big_aref): Apply BIGLO to ~xds[i] for environment which
+ BDIGIT is 16bit.
- * ext/stringio/stringio.c (strio_each, strio_readlines):
- Use `NUM2LONG` instead of `FIX2INT`. Fixes [ruby-dev:43395].
+Wed Jun 19 07:09:26 2013 Koichi Sasada <ko1@atdot.net>
-Sat Apr 9 23:22:27 2011 Shota Fukumori <sorah@tubusu.net>
+ * gc.c (rgengc_remember): fix output level.
- * ext/stringio/stringio.c (strio_each):
- Fix exception message and don't raise immediately if block is not
- given.
- Fixes [ruby-dev:43394].
+ * gc.c (rgengc_rememberset_mark): fix to output clear count.
+ (shady_object_count + clear_count = count of remembered objects)
- * test/stringio/test_stringio.rb (test_each_line_limit_0):
- Fix test for above.
+Wed Jun 19 07:06:21 2013 Koichi Sasada <ko1@atdot.net>
-Sat Apr 9 21:54:15 2011 Shota Fukumori <sorah@tubusu.net>
+ * gc.c (rgengc_remember): check T_NONE and T_ZOMBIE
+ if RGENGC_CHECK_MODE > 0.
- * ext/stringio/stringio.c (strio_each, strio_readlines):
- limit must not be zero. Fixes [ruby-dev:43392].
+Wed Jun 19 07:02:19 2013 Koichi Sasada <ko1@atdot.net>
- * test/stringio/test_stringio.rb: Add tests for above.
+ * gc.c (RGENGC_CHECK_MODE): add new check mode `3'.
+ In this mode, show all references if there is
+ a miss-corrected object.
-Sat Apr 9 18:01:36 2011 Tanaka Akira <akr@fsij.org>
+Wed Jun 19 06:31:08 2013 Koichi Sasada <ko1@atdot.net>
- * include/ruby/util.h: parenthesize macro arguments.
+ * 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.
-Fri Apr 8 16:01:56 2011 NARUSE, Yui <naruse@ruby-lang.org>
+ You can debug RGenGC (WB) using `GC.stress = 1'.
+ Using this option, do minor marking at all possible places.
- * ext/stringio/stringio.c (strio_getline): check whether str is
- a string when str and lim are given.
- https://twitter.com/watson1978/status/56225052152168449
+ GC::STRESS_MINOR_MARK = 1 and GC::STRESS_LAZY_SWEEP = 2
+ seem good to add.
-Thu Apr 7 20:03:52 2011 Tanaka Akira <akr@fsij.org>
+Wed Jun 19 06:29:31 2013 Koichi Sasada <ko1@atdot.net>
- * include/ruby/io.h: parenthesize macro arguments.
+ * vm.c (kwmerge_i): add WB.
-Wed Apr 6 21:08:31 2011 Tanaka Akira <akr@fsij.org>
+Wed Jun 19 06:26:49 2013 Koichi Sasada <ko1@atdot.net>
- * include/ruby/intern.h: parenthesize macro arguments.
+ * 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 Apr 6 15:12:40 2011 NARUSE, Yui <naruse@ruby-lang.org>
+Wed Jun 19 04:33:22 2013 Koichi Sasada <ko1@atdot.net>
- * ext/openssl/ossl_pkey_dh.c (ossl_dh_initialize):
- pop pushed error after each try of reading. fixes #4550
+ * variable.c (rb_const_set): fix WB miss.
- * ext/openssl/ossl_pkey_dsa.c (ossl_dsa_initialize): ditto.
+ WBs had located before creating reference between a klass
+ and constant value. It causes GC bug.
- * ext/openssl/ossl_pkey_ec.c (ossl_ec_initialize): ditto.
+ # pseudo code:
+ WB(klass, value); # WB and remember klass
+ st_insert(klass->const_table, const_id, value);
-Wed Apr 6 11:36:44 2011 NARUSE, Yui <naruse@ruby-lang.org>
+ `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
- * ext/openssl/ossl_pkey_rsa.c (ossl_rsa_initialize):
- pop pushed error after each try of reading. fixes #4550
+ Lesson: The place of a WB is important.
-Tue Apr 5 20:33:43 2011 Tanaka Akira <akr@fsij.org>
+Tue Jun 18 22:01:00 2013 Charlie Somerville <charliesome@ruby-lang.org>
- * include/ruby/encoding.h: parenthesize macro arguments.
+ * vm_insnhelper.c (vm_call_method): ensure methods of type
+ VM_METHOD_TYPE_ATTR_SET are called with 1 argument
-Mon Apr 4 22:02:16 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+ * test/ruby/test_module.rb
+ (TestModule#test_attr_writer_with_no_arguments): add test
+ [ruby-core:55543] [Bug #8540]
- * 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]
+Tue Jun 18 22:36:23 2013 Masaya Tarui <tarui@ruby-lang.org>
-Mon Apr 4 21:41:26 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+ * gc.c (gc_profile_record_flag): fix typo.
- * 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]
+Tue Jun 18 22:08:53 2013 Zachary Scott <zachary@zacharyscott.net>
-Mon Apr 4 11:50:40 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+ * ext/objspace/object_tracing.c: Return for ::allocation_generation
- * test/test_tempfile.rb: simply ignore platform dependent testcases
- instead of skipping.
+Tue Jun 18 22:04:35 2013 Zachary Scott <zachary@zacharyscott.net>
-Sun Apr 3 22:52:22 2011 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
+ * ext/objspace/object_tracing.c: Document object_tracing methods.
- * ext/syslog/syslog.c: improve rdoc.
- a patch by Jonas Pfenniger. [ruby-core:35592] fixes #4545
+Tue Jun 18 21:58:17 2013 Zachary Scott <zachary@zacharyscott.net>
-Sun Apr 3 22:10:09 2011 Tanaka Akira <akr@fsij.org>
+ * gc.c: Rename rb_mObSpace -> rb_mObjSpace
- * ext/zlib/zlib.c: parenthesize macro arguments.
+Tue Jun 18 20:55:05 2013 Zachary Scott <zachary@zacharyscott.net>
-Sun Apr 3 21:33:58 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+ * ext/objspace/objspace.c: Document ObjectSpace::InternalObjectWrapper.
- * configure.in: disable fdatasync again on Mac OS X.
- [ruby-core:35493][Bug #4500]
+Tue Jun 18 20:39:04 2013 Zachary Scott <zachary@zacharyscott.net>
-Sun Apr 3 21:16:20 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+ * ext/objspace/object_tracing.c: Teach rdoc object_tracing.c [Bug #8537]
- * 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]
+Tue Jun 18 20:29:47 2013 Zachary Scott <zachary@zacharyscott.net>
- * io.c (fptr_finalize): ditto.
+ * ext/.document: add object_tracing.c to document file
- * io.c (maygvl_fclose): new.
- * io.c (nogvl_fclose): ditto.
- * io.c (maygvl_close): ditto.
- * io.c (nogvl_close): ditto.
+Tue Jun 18 20:20:27 2013 Zachary Scott <zachary@zacharyscott.net>
-Fri Apr 1 22:25:50 2011 Tanaka Akira <akr@fsij.org>
+ * ext/objspace/objspace.c: rdoc on require to overview from r41355
- * ext/syslog/syslog.c: parenthesize macro arguments.
+Tue Jun 18 18:39:58 2013 Tanaka Akira <akr@fsij.org>
-Fri Apr 1 18:53:06 2011 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+ * configure.in: Check __int128.
- * 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'
+ * 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.
- * test/webrick/test_cookie.rb (test_parse_non_whitespace): test it.
+ * include/ruby/ruby.h (PRI_64_PREFIX): Defined.
-Fri Apr 1 13:19:20 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * bignum.c (rb_big_pow): Don't use BITSPERDIG for the condition which
+ rb_big_pow returns Float or Bignum.
- * vm_core.h (RUBY_VM_CHECK_INTS_TH): merge a patch by ko1
- in [ruby-dev:43373].
+ [ruby-dev:47413] [Feature #8509]
-Thu Mar 31 23:15:46 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Tue Jun 18 16:43:44 2013 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
+ * 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.
-Thu Mar 31 20:42:05 2011 Tanaka Akira <akr@fsij.org>
+Tue Jun 18 12:53:25 2013 Tanaka Akira <akr@fsij.org>
- * ext/strscan/strscan.c: parenthesize macro arguments.
+ * bignum.c (nlz): Cast the result explicitly.
+ (big2dbl): Don't assign BDIGIT values to int variable.
-Thu Mar 31 18:06:12 2011 Shugo Maeda <shugo@ruby-lang.org>
+Tue Jun 18 12:25:16 2013 Tanaka Akira <akr@fsij.org>
- * vm_insnhelper.c (vm_get_ev_const): should ignore crefs with
- the NODE_FL_CREF_PUSHED_BY_EVAL flag.
+ * bignum.c (rb_big_xor): Non-effective code removed.
-Thu Mar 31 16:49:56 2011 Shugo Maeda <shugo@ruby-lang.org>
+Tue Jun 18 11:26:05 2013 Koichi Sasada <ko1@atdot.net>
- * vm_insnhelper.c (vm_get_ev_const): search root cref properly.
- [ruby-dev:43365]
+ * gc.c (gc_stat): add `generated_normal_object_count_types' for
+ RGENGC_PROFILE >= 2.
-Thu Mar 31 14:50:25 2011 Shugo Maeda <shugo@ruby-lang.org>
+Tue Jun 18 11:02:18 2013 Koichi Sasada <ko1@atdot.net>
- * eval.c (rb_mod_s_constants): should ignore crefs with
- the NODE_FL_CREF_PUSHED_BY_EVAL flag.
+ * gc.c (gc_mark_maybe): check to skip T_NONE.
-Wed Mar 30 22:55:47 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * gc.c (markable_object_p): do not need to check (flags == 0) here.
- * misc/ruby-mode.el (ruby-toggle-block): toggle do/end and {}.
+Tue Jun 18 10:17:37 2013 Koichi Sasada <ko1@atdot.net>
- * misc/ruby-mode.el (ruby-move-to-block): move to opening of
- block.
+ * variable.c (rb_autoload): fix WB miss.
-Wed Mar 30 14:35:15 2011 Shugo Maeda <shugo@ruby-lang.org>
+Tue Jun 18 04:20:18 2013 Koichi Sasada <ko1@atdot.net>
- * 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]
+ * gc.c (gc_mark_children): don't need to care about T_ZOMBIE here.
-Wed Mar 30 00:24:53 2011 Tanaka Akira <akr@fsij.org>
+Mon Jun 17 22:16:02 2013 Kazuki Tsujimoto <kazuki@callcc.net>
- * ext/stringio/stringio.c: parenthesize macro arguments.
+ * test/ruby/test_proc.rb (TestProc#test_block_given_method_to_proc):
+ run test for r41359.
-Tue Mar 29 21:51:31 2011 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
+Mon Jun 17 21:42:18 2013 Kazuki Tsujimoto <kazuki@callcc.net>
- * object.c (rb_String): Kernel#String should call to_str before to_s.
+ * include/ruby/ruby.h, vm_eval.c (rb_funcall_with_block):
+ new function to invoke a method with a block passed
+ as an argument.
-Tue Mar 29 10:28:08 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+ * string.c (sym_call): use the above function to avoid
+ a block sharing. [ruby-dev:47438] [Bug #8531]
- * test/webrick/test_filehandler.rb
- (WEBrick::TestFileHandler#test_short_filename): the cgi doesn't exist
- on current directory.
+ * vm_insnhelper.c (vm_yield_with_cfunc): don't set block
+ in the frame.
-Tue Mar 29 05:19:57 2011 Tanaka Akira <akr@fsij.org>
+ * test/ruby/test_symbol.rb (TestSymbol#test_block_given_to_proc):
+ run related tests.
- * ext/socket/raddrinfo.c: parenthesize macro arguments.
+Mon Jun 17 21:33:27 2013 Kazuki Tsujimoto <kazuki@callcc.net>
-Tue Mar 29 00:03:51 2011 Tajima Akio <artonx@yahoo.co.jp>
+ * 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.
- * test/webrick/test_filehandler.rb (test_short_filename):
- read real short filename by cmd because smb mounted files
- have different naming convention.
+ * proc.c (bmcall): use the above function to avoid a block sharing.
+ [ruby-core:54626] [Bug #8341]
-Mon Mar 28 11:38:08 2011 NARUSE, Yui <naruse@ruby-lang.org>
+ * test/ruby/test_proc.rb (TestProc#test_block_persist_between_calls):
+ run related tests.
- * ext/date/date_core.c (date_s_today): use int for year.
+Mon Jun 17 20:53:21 2013 Tanaka Akira <akr@fsij.org>
- * ext/date/date_core.c (datetime_s_now): ditto.
+ * loadpath.c (RUBY_REVISION): Defined to suppress revision.h
+ inclusion actually. r41352 removes the dependency.
-Mon Mar 28 11:07:41 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+Mon Jun 17 18:15:57 2013 Benoit Daloze <eregontp@gmail.com>
- * ext/extmk.rb: set MFLAGS from MAKEFLAGS when using nmake.
+ * ext/objspace/objspace.c: let rdoc know about objspace methods.
+ Specify 'objspace' should be required. See #8537.
-Mon Mar 28 11:07:00 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+Mon Jun 17 17:44:31 2013 Benoit Daloze <eregontp@gmail.com>
- * common.mk (love): all you need is love.
+ * gc.c (ObjectSpace): is a module not a class.
-Sun Mar 27 23:16:31 2011 Tanaka Akira <akr@fsij.org>
+ * ext/objspace/objspace.c: try to include overview in rdoc,
+ see #8537.
- * ext/socket/ipsocket.c: parenthesize macro arguments.
+Mon Jun 17 17:38:24 2013 Benoit Daloze <eregontp@gmail.com>
-Sun Mar 27 16:55:34 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * gc.c: fix example of ObjectSpace.define_finalizer in overview
- * misc/ruby-mode.el (ruby-mode-map): remove unnecessary
- binding. fixes
- http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=468952
+Mon Jun 17 16:59:53 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * misc/ruby-mode.el: suppress warnings at byte compile. fixes
- http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=502926
+ * 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]
-Sun Mar 27 11:18:35 2011 Tadayoshi Funaba <tadf@dotrb.org>
+Mon Jun 17 14:27:54 2013 Zachary Scott <zachary@zacharyscott.net>
- * ext/date/date_core.c: removed unused variables.
+ * vm_backtrace.c: Update rdoc for Backtrace#label with @_ko1
-Sat Mar 26 15:16:09 2011 Tanaka Akira <akr@fsij.org>
+Mon Jun 17 13:04:01 2013 Akinori MUSHA <knu@iDaemons.org>
- * ext/socket/getaddrinfo.c: parenthesize macro arguments.
+ * tool/ifchange (until): Fix the condition, although harmless in
+ this case.
-Sat Mar 26 05:27:34 2011 NARUSE, Yui <naruse@ruby-lang.org>
+Mon Jun 17 11:50:29 2013 Koichi Sasada <ko1@atdot.net>
- * ext/date/lib/date/format.rb (DateTime#strftime): removed because
- date_core defines it.
+ * gc.c (gc_mark_maybe): added. check `is_pointer_to_heap()' and
+ type is not T_ZOMBIE.
-Fri Mar 25 21:59:45 2011 Tadayoshi Funaba <tadf@dotrb.org>
+ * gc.c: use `gc_mark_maybe()'. T_ZOMBIE objects should not be pushed
+ to the mark stack.
- * ext/date/date_core.c: should not force cast with macros.
+Mon Jun 17 07:56:24 2013 Tanaka Akira <akr@fsij.org>
-Fri Mar 25 21:56:10 2011 Tanaka Akira <akr@fsij.org>
+ * bignum.c (bary_small_lshift): Renamed from bdigs_small_lshift.
+ (bary_small_rshift): Renamed from bdigs_small_rshift.
- * ext/sdbm/init.c: parenthesize macro arguments.
+Mon Jun 17 07:38:48 2013 Tanaka Akira <akr@fsij.org>
-Fri Mar 25 19:39:40 2011 Ben Walton <bwalton@artsci.utoronto.ca>
+ * bignum.c (absint_numwords_bytes): Removed.
+ (rb_absint_numwords): Don't call absint_numwords_bytes.
- * test/test_syslog.rb:
- Skip syslog tests that rely on LOG_PERROR unless it's defined
+Sun Jun 16 23:14:58 2013 Tanaka Akira <akr@fsij.org>
- 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.
+ * 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.
- This specifically addresses failures on Solaris 9.
+Sun Jun 16 21:41:39 2013 Tanaka Akira <akr@fsij.org>
- Use LOG_PID instead of LOG_PERROR in Syslog.open test
+ * 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.
- 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.
+ * internal.h (rb_integer_unpack_2comp): Removed.
- Use LOG_PID instead.
+ * pack.c: Follow the above change.
-Fri Mar 25 15:42:17 2011 NARUSE, Yui <naruse@ruby-lang.org>
+Sun Jun 16 18:41:42 2013 Tanaka Akira <akr@fsij.org>
- * ext/sdbm/_sdbm.c (sdbm_open): use size_t.
+ * internal.h (INTEGER_PACK_2COMP): Defined.
+ (rb_integer_pack_2comp): Removed.
- * ext/syck/bytecode.c: ditto.
+ * 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.
- * ext/sdbm/_sdbm.c (delpair): use ptrdiff_t.
+ * pack.c (pack_pack): Ditto.
- * ext/sdbm/init.c: use RSTRING_LENINT.
+ * sprintf.c (rb_str_format): Ditto.
- * ext/dl/handle.c: suppress warning: shorten-64-to-32.
+Sun Jun 16 17:48:14 2013 Tanaka Akira <akr@fsij.org>
- * ext/strscan/strscan.c: ditto.
+ * bignum.c (absint_numwords_generic): rb_funcall invocations removed.
- * ext/syck/emitter.c: ditto.
+Sun Jun 16 16:04:38 2013 NARUSE, Yui <naruse@ruby-lang.org>
- * ext/syck/implicit.c: ditto.
+ * tool/config_files.rb: use URI.read to allow it runs with Ruby 1.8.5.
- * ext/syck/syck.c: ditto.
+Sun Jun 16 14:32:25 2013 Tanaka Akira <akr@fsij.org>
- * ext/syck/token.c: ditto.
+ * bignum.c (bary_pack) Extracted from rb_integer_pack_internal.
+ (absint_numwords_generic): Use bary_pack.
-Fri Mar 25 12:14:58 2011 NARUSE, Yui <naruse@ruby-lang.org>
+Sun Jun 16 11:01:57 2013 Kouhei Sutou <kou@cozmixng.org>
- * ext/nkf/nkf-utf8/nkf.c: import nkf 7f18e30.
+ * NEWS (XMLRPC::Client#http): Add.
+ [ruby-core:55197] [Feature #8461]
-Fri Mar 25 11:49:29 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+Sun Jun 16 10:38:45 2013 Tanaka Akira <akr@fsij.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.
+ * 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.
- * test/ruby/test_dir_m17n.rb
- (TestDir_M17N#test_filename_extutf8_invalid,
- TestDir_M17N#test_filename_as_bytes_extutf8): ditto.
+Sun Jun 16 08:55:22 2013 Tanaka Akira <akr@fsij.org>
- * test/open-uri/test_open-uri.rb
- (TestOpenURI#test_find_proxy_case_sensitive_env): ditto.
+ * bignum.c (bigdivrem): Use a BDIGIT variable to store the return
+ value of bigdivrem_single.
- * test/dl/test_handle.rb (DL::TestHandle#test_NEXT,
- DL::TestHandle#test_DEFAULT): ditto.
+Sun Jun 16 08:43:59 2013 Tanaka Akira <akr@fsij.org>
-Thu Mar 24 23:06:29 2011 Nobuyoshi Nakada <nobu@ruby-lang.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.
- * vm_insnhelper.c (vm_get_ev_const): should not autoload in
- defined? mode.
+Sun Jun 16 05:51:51 2013 Masaya Tarui <tarui@ruby-lang.org>
- * variable.c (rb_const_defined_0): fix autoloading base.
- [ruby-core:35509]
+ * 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.
-Thu Mar 24 22:48:43 2011 Tanaka Akira <akr@fsij.org>
+Sun Jun 16 05:15:36 2013 Masaya Tarui <tarui@ruby-lang.org>
- * ext/sdbm/_sdbm.c: parenthesize macro arguments.
+ * gc.c: Add some columns to more detail profile.
+ new columns: Allocated size, Prepare Time, Removing Objects, Empty Objects
-Thu Mar 24 14:45:57 2011 NARUSE, Yui <naruse@ruby-lang.org>
+Sun Jun 16 02:04:40 2013 Masaya Tarui <tarui@ruby-lang.org>
- * ext/openssl/ossl.c: suppress warning: shorten-64-to-32.
+ * 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.
- * ext/openssl/ossl.h: ditto.
+Sat Jun 15 23:50:24 2013 Tanaka Akira <akr@fsij.org>
- * ext/openssl/ossl_asn1.c: ditto.
+ * bignum.c (bary_sub): New function.
+ (absint_numwords_generic): Use bary_sub.
+ (bigsub_core): Skip unnecessary copy.
- * ext/openssl/ossl_bio.c: ditto.
+Sat Jun 15 22:05:30 2013 Tanaka Akira <akr@fsij.org>
- * ext/openssl/ossl_bn.c: ditto.
+ * 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.
- * ext/openssl/ossl_cipher.c: ditto.
+Sat Jun 15 20:13:46 2013 Tanaka Akira <akr@fsij.org>
- * ext/openssl/ossl_hmac.c: ditto.
+ * 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.
- * ext/openssl/ossl_ns_spki.c: ditto.
+Sat Jun 15 19:35:04 2013 Tanaka Akira <akr@fsij.org>
- * ext/openssl/ossl_ocsp.c: ditto.
+ * bignum.c (absint_numwords_bytes): Make it static.
+ (absint_numwords_small): Ditto.
+ (absint_numwords_generic): Ditto.
- * ext/openssl/ossl_pkcs5.c: ditto.
+Sat Jun 15 17:14:32 2013 Tanaka Akira <akr@fsij.org>
- * ext/openssl/ossl_pkey.c: ditto.
+ * bignum.c (bigmul1_normal): Shrink the result Bignum length.
- * ext/openssl/ossl_pkey_dh.c: ditto.
+Sat Jun 15 10:19:42 2013 Zachary Scott <zachary@zacharyscott.net>
- * ext/openssl/ossl_pkey_dsa.c: ditto.
+ * ext/bigdecimal/bigdecimal.c: Update overview formatting of headers
- * ext/openssl/ossl_pkey_ec.c: ditto.
+Sat Jun 15 10:19:06 2013 Zachary Scott <zachary@zacharyscott.net>
- * ext/openssl/ossl_pkey_rsa.c: ditto.
+ * ext/bigdecimal/bigdecimal.gemspec: Update authors
- * ext/openssl/ossl_rand.c: ditto.
+Sat Jun 15 10:02:26 2013 Tanaka Akira <akr@fsij.org>
- * ext/openssl/ossl_ssl.c: ditto.
+ * bignum.c (bdigs_small_rshift): Extracted from big_rshift.
+ (bigdivrem): Use bdigs_small_rshift.
- * ext/openssl/ossl_x509ext.c: ditto.
+Sat Jun 15 08:37:28 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * ext/openssl/ossl_x509name.c: ditto.
+ * 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]
-Thu Mar 24 11:48:19 2011 NARUSE, Yui <naruse@ruby-lang.org>
+Sat Jun 15 02:40:18 2013 Tanaka Akira <akr@fsij.org>
- * ext/openssl/ossl_rand.c (ossl_rand_egd_bytes): use NUM2INT because
- the result is used with functions whose argument is int.
+ * bignum.c (bdigs_small_lshift): Extracted from big_lshift.
+ (bigdivrem): Use bdigs_small_lshift.
- * ext/openssl/ossl_ssl.c (ossl_sslctx_setup): ditto.
+Fri Jun 14 20:47:41 2013 Tanaka Akira <akr@fsij.org>
- * ext/openssl/ossl_x509store.c (ossl_x509store_set_purpose): ditto.
+ * bignum.c (bigdivrem): Reduce number of digits before bignew() for div.
- * ext/openssl/ossl_x509store.c (ossl_x509store_set_trust): ditto.
+Fri Jun 14 20:12:37 2013 Tanaka Akira <akr@fsij.org>
- * ext/openssl/ossl_x509store.c (ossl_x509stctx_set_purpose): ditto.
+ * bignum.c (bigdivrem): Use bignew when ny == 1.
- * ext/openssl/ossl_x509store.c (ossl_x509stctx_set_trust): ditto.
+Fri Jun 14 18:52:51 2013 Koichi Sasada <ko1@atdot.net>
-Thu Mar 24 11:36:55 2011 NARUSE, Yui <naruse@ruby-lang.org>
+ * 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?)
- * ext/openssl/ossl_x509name.c: id_aref's type is ID.
+ * test/ruby/test_settracefunc.rb: add a test.
-Thu Mar 24 10:04:35 2011 NARUSE, Yui <naruse@ruby-lang.org>
+Fri Jun 14 18:18:07 2013 Koichi Sasada <ko1@atdot.net>
- * ext/io/console/console.c (console_set_winsize):
- suppress warning: shorten-64-to-32.
+ * class.c, include/ruby/ruby.h: add write barriers for T_CLASS,
+ T_MODULE, T_ICLASS.
-Thu Mar 24 09:56:19 2011 NARUSE, Yui <naruse@ruby-lang.org>
+ * constant.h: constify rb_const_entry_t::value and file to detect
+ assignment.
- * ext/openssl/ossl_ocsp.c (ossl_ocspreq_verify): flags is VALUE,
- so it should use NUM2INT.
+ * variable.c, internal.h (rb_st_insert_id_and_value, rb_st_copy):
+ added. update table with write barrier.
- * ext/openssl/ossl_ocsp.c (ossl_ocspbres_verify): ditto.
+ * method.h: constify some variables to detect assignment.
-Wed Mar 23 21:09:29 2011 Tanaka Akira <akr@fsij.org>
+ * object.c (init_copy): add WBs.
- * ext/readline/readline.c: parenthesize macro arguments.
+ * variable.c: ditto.
-Wed Mar 23 08:07:33 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * vm_method.c (rb_add_method): ditto.
- * numeric.c (flo_round): fix inaccurate results.
+Fri Jun 14 14:33:47 2013 Shugo Maeda <shugo@ruby-lang.org>
-Wed Mar 23 00:12:16 2011 Tajima Akio <artonx@yahoo.co.jp>
+ * NEWS: add a note for Module#using.
- * win32/win32.c: wait process real termination after reading
- exit code. fixes #4518
+Fri Jun 14 13:40:27 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Tue Mar 22 21:20:10 2011 NARUSE, Yui <naruse@ruby-lang.org>
+ * .travis.yml (before_script): update config files.
- * lib/rubygems/test_case.rb: save current dir to @current_dir
- before Dir.chdir.
+ * common.mk ($(srcdir)/tool/config.{guess,sub}): use get-config_files.
-Tue Mar 22 20:10:04 2011 Tanaka Akira <akr@fsij.org>
+ * tool/config_files.rb: split get-config_files.
- * ext/psych/parser.c: parenthesize macro arguments.
+ * common.mk (update-config_files): rule to download config files.
-Tue Mar 22 20:10:01 2011 Tanaka Akira <akr@fsij.org>
+ * tool/config.guess, tool/config.sub: remove and download from the
+ upstream.
- * ext/openssl/ruby_missing.h: parenthesize macro arguments.
+ * tool/config_files.rb: download config files from GNU.
-Tue Mar 22 13:33:22 2011 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+Fri Jun 14 12:21:20 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * ext/openssl/lib/openssl/buffering.rb: removed circular require of
- openssl.rb.
+ * include/ruby/ruby.h (RUBY_SAFE_LEVEL_CHECK): suppress warnings
+ "left-hand operand of comma expression has no effect", on gcc 4.4.
- * 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"
+Fri Jun 14 09:48:48 2013 Shugo Maeda <shugo@ruby-lang.org>
-Tue Mar 22 10:57:36 2011 NARUSE, Yui <naruse@ruby-lang.org>
+ * NEWS: add notes for $SAFE.
- * test/runner.rb: set Gem::TestCase's @@project_dir.
+ * doc/security.rdoc: remove the description of $SAFE=4.
- * lib/rubygems/test_case.rb: set Gem::TestCase's @@project_dir only
- when it is not defined.
+Fri Jun 14 00:14:29 2013 Tanaka Akira <akr@fsij.org>
-Tue Mar 22 09:38:19 2011 NARUSE, Yui <naruse@ruby-lang.org>
+ * bignum.c (bigdivrem): Zero test condition simplified.
- * numeric.c (flo_round): use pow instead of while-loop. fixes #4510
- patched by Alex Young [ruby-core:35526]
+Thu Jun 13 23:43:11 2013 Zachary Scott <zachary@zacharyscott.net>
-Tue Mar 22 06:47:46 2011 NARUSE, Yui <naruse@ruby-lang.org>
+ * ext/bigdecimal/*: improve documentation, nodoc samples with @mrkn
- * ext/date/date_strftime.c (date_strftime_wo_timespec):
- suppress warning: shorten-64-to-32.
+Thu Jun 13 23:02:14 2013 Kouhei Sutou <kou@cozmixng.org>
-Tue Mar 22 06:42:42 2011 NARUSE, Yui <naruse@ruby-lang.org>
+ * lib/xmlrpc/client.rb (XMLRPC::Client#http): Add reader for raw
+ Net::HTTP. [ruby-core:55197] [Feature #8461]
+ Reported by Herwin Weststrate. Thanks!!!
- * ext/date/date_core.c: suppress warning: shorten-64-to-32.
+Thu Jun 13 22:44:52 2013 Kouhei Sutou <kou@cozmixng.org>
-Tue Mar 22 06:41:37 2011 NARUSE, Yui <naruse@ruby-lang.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.
- * lib/test/unit/parallel.rb: remove unused variable.
+Thu Jun 13 22:35:50 2013 Kouhei Sutou <kou@cozmixng.org>
-Tue Mar 22 06:19:42 2011 NARUSE, Yui <naruse@ruby-lang.org>
+ * lib/xmlrpc/client.rb (XMLRPC::Client#parse_set_cookies): Use
+ guard style.
- * enc/utf_16le.c: suppress warning: shorten-64-to-32.
+Thu Jun 13 22:12:32 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * ext/dbm/dbm.c: ditto.
+ * lib/fileutils.rb (FileUtils#rmdir): fix traversal loop, not trying
+ remove same directory only.
- * ext/gdbm/gdbm.c: ditto.
+Thu Jun 13 21:30:14 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * parse.y (Init_ripper): suppress warning: unused value.
+ * configure.in (opt-dir), tool/ifchange: get rid of "alternate value"
+ expansion for legacy sh. [ruby-dev:47420] [Bug #8524]
-Mon Mar 21 11:21:32 2011 Shota Fukumori <sorah@tubusu.net>
+Thu Jun 13 21:24:09 2013 Tanaka Akira <akr@fsij.org>
- * lib/test/unit.rb: Refactoring. Unified if and elsif.
+ * bignum.c (bigdivrem): Refactored to use ALLOCV_N for temporary
+ buffers.
-Sun Mar 20 23:09:34 2011 Tadayoshi Funaba <tadf@dotrb.org>
+Thu Jun 13 18:54:11 2013 NAKAMURA Usaku <usa@ruby-lang.org>
- * ext/date/date_strftime.c: checks duplicated modifiers.
+ * 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.
-Sun Mar 20 22:32:30 2011 Tadayoshi Funaba <tadf@dotrb.org>
+Thu Jun 13 18:53:14 2013 Tanaka Akira <akr@fsij.org>
- * ext/date/date_strftime.c: removed unused code and arguments.
+ * test/ruby/test_thread.rb (test_thread_local_security): Don't create
+ an unused thread.
-Sun Mar 20 21:34:49 2011 Tadayoshi Funaba <tadf@dotrb.org>
+Thu Jun 13 18:34:20 2013 Tanaka Akira <akr@fsij.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.
+ * bignum.c (bigdivrem): Use nlz.
-Sun Mar 20 12:43:12 2011 Tanaka Akira <akr@fsij.org>
+Thu Jun 13 14:51:06 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * ext/openssl/ossl_x509store.c: parenthesize macro arguments.
+ * include/ruby/ruby.h (RUBY_SAFE_LEVEL_CHECK): check constant safe
+ level at compile time.
-Sun Mar 20 01:39:48 2011 Tajima Akio <artonx@yahoo.co.jp>
+Thu Jun 13 14:39:08 2013 Shugo Maeda <shugo@ruby-lang.org>
- * 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.
+ * 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.
-Sat Mar 19 18:35:05 2011 Tajima Akio <artonx@yahoo.co.jp>
+Thu Jun 13 10:47:16 2013 Shugo Maeda <shugo@ruby-lang.org>
- * hash.c (ruby_setenv): calculate total env block size for win32.
- * test/ruby/test_env.rb: add test for above patch.
+ * bootstraptest/test_autoload.rb, bootstraptest/test_method.rb:
+ remove tests for $SAFE=4.
-Sat Mar 19 17:14:46 2011 Tajima Akio <artonx@yahoo.co.jp>
+ * lib/pp.rb: use taint instead of untrust to avoid warnings when
+ $VERBOSE is set to true.
- * 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.
+Thu Jun 13 06:12:18 2013 Tanaka Akira <akr@fsij.org>
-Sat Mar 19 12:30:25 2011 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]
- * ext/openssl/ossl_x509revoked.c: parenthesize macro arguments.
+Thu Jun 13 05:32:13 2013 Eric Hodel <drbrain@segment7.net>
-Fri Mar 18 20:44:36 2011 Tanaka Akira <akr@fsij.org>
+ * ext/socket/extconf.rb: Enable RFC 3542 IPV6 socket options for OS X
+ 10.7+. [ruby-trunk - Bug #8517]
- * ext/openssl/ossl_x509req.c: parenthesize macro arguments.
+Thu Jun 13 00:17:18 2013 Tanaka Akira <akr@fsij.org>
-Fri Mar 18 08:48:06 2011 Oleg Shaldybin <oleg.shaldybin@gmail.com>
+ * 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.
- * 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).
+ * internal.h (rb_integer_unpack_2comp): Declared.
-Fri Mar 18 00:59:38 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * pack.c (pack_unpack): Use rb_integer_unpack_2comp and
+ rb_integer_unpack.
- * 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]
+Wed Jun 12 23:27:03 2013 Shugo Maeda <shugo@ruby-lang.org>
-Fri Mar 18 00:54:20 2011 Nobuyoshi Nakada <nobu@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]
- * include/ruby/ruby.h (rb_funcall_passing_block): add prototype.
- a patch by James M. Lawrence at [ruby-core:35501]
+ * test/ruby/test_refinement.rb: related test.
-Wed Mar 17 06:23:31 2011 Tanaka Akira <akr@fsij.org>
+Wed Jun 12 22:58:48 2013 Shugo Maeda <shugo@ruby-lang.org>
- * ext/openssl/ossl_x509name.c: parenthesize macro arguments.
+ * 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]
-Wed Mar 16 20:36:56 2011 Tanaka Akira <akr@fsij.org>
+ * 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.
- * ext/socket/ipsocket.c (init_inetsock_internal): raise an error on
- listen(2) failure.
- reported by Xavier Shay. [ruby-core:35505]
+ * include/ruby/ruby.h (OBJ_UNTRUSTED, OBJ_UNTRUST): OBJ_UNTRUSTED()
+ and OBJ_UNTRUST() are aliases of OBJ_TAINTED() and OBJ_TAINT(),
+ respectively.
-Wed Mar 16 15:06:21 2011 Eric Hodel <drbrain@segment7.net>
+ * 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.
- * ext/openssl/lib/openssl/buffering.rb (module OpenSSL): #flush should
- not change sync mode on exception.
- * test/openssl/test_buffering.rb: added
+ * 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 Mar 16 13:45:28 2011 Eric Hodel <drbrain@segment7.net>
+Wed Jun 12 22:18:23 2013 Tanaka Akira <akr@fsij.org>
- * ext/openssl/lib/openssl/buffering.rb: de-nest Buffering module
+ * 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.
- * ext/openssl/lib/openssl/buffering.rb: add RDoc
+Wed Jun 12 20:18:03 2013 Kouhei Sutou <kou@cozmixng.org>
-Wed Mar 16 08:40:39 2011 Tanaka Akira <akr@fsij.org>
+ * lib/xmlrpc/client.rb (XMLRPC::Client#parse_set_cookies): Extract.
- * ext/openssl/ossl_x509ext.c: parenthesize macro arguments.
+Wed Jun 12 18:19:41 2013 Tanaka Akira <akr@fsij.org>
-Tue Mar 15 18:34:27 2011 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.
- * ext/openssl/ossl_x509crl.c: parenthesize macro arguments.
+Wed Jun 12 16:41:38 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Tue Mar 15 09:49:03 2011 Shota Fukumori <sorah@tubusu.net>
+ * array.c (rb_ary_sort_bang): remove duplicated assertions.
+ ARY_HEAP_PTR() implies ary not to be embedded. [ruby-dev:47419]
+ [Bug #8518]
- * test/misc/test_ruby_mode.rb (test_singleton_class): Skip for Pending.
+Wed Jun 12 12:44:45 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Mon Mar 14 21:20:44 2011 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
+ * io.c (io_getc): fix 7bit coderange condition, check if ascii read
+ data instead of read length. [ruby-core:55444] [Bug #8516]
- * test/ruby/test_require.rb (test_require_too_long_filename):
- increase path length, because MAXPATHLEN is defined as 4096 on linux.
+Wed Jun 12 12:35:13 2013 Tanaka Akira <akr@fsij.org>
- * test/ruby/test_require.rb (test_require_path_home_1): ditto.
+ * pack.c (pack_pack): Use rb_integer_pack_2comp.
- * test/ruby/test_require.rb (test_require_path_home_2): ditto.
+Wed Jun 12 12:07:04 2013 Tanaka Akira <akr@fsij.org>
-Mon Mar 14 19:54:37 2011 Tanaka Akira <akr@fsij.org>
+ * sprintf.c (rb_str_format): Fix a dynamic format string.
- * ext/openssl/ossl_x509cert.c: parenthesize macro arguments.
+Wed Jun 12 12:04:09 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Sun Mar 13 18:11:28 2011 Tanaka Akira <akr@fsij.org>
+ * array.c (rb_ary_uniq_bang): must not be modified once frozen even in
+ a callback method.
- * ext/openssl/ossl_x509attr.c: parenthesize macro arguments.
+Wed Jun 12 12:03:43 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Sun Mar 13 16:07:58 2011 Shota Fukumori <sorah@tubusu.net>
+ * array.c (rb_ary_sort_bang): must not be modified once frozen even in
+ a callback method.
- * lib/pstore.rb: Fix don't raise "nested transaction" when thread_safe
- is true. Patch by Masaki Matsushita (Glass_saga). [ruby-dev:43337]
+Wed Jun 12 12:00:15 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * test/test_pstore.rb: Test for above.
- Patch by Masaki Matsushita (Glass_saga) [ruby-dev:43337]
+ * array.c (FL_SET_EMBED): shared object is frozen even when get
+ unshared.
-Sat Mar 12 04:12:41 2011 Tanaka Akira <akr@fsij.org>
+ * array.c (rb_ary_modify): ARY_SET_CAPA needs unshared array.
- * ext/openssl/ossl_ssl_session.c: parenthesize macro arguments.
+Wed Jun 12 07:32:01 2013 Tanaka Akira <akr@fsij.org>
-Sat Mar 12 02:27:07 2011 Tadayoshi Funaba <tadf@dotrb.org>
+ * random.c (rand_int): Use rb_big_uminus.
- * ext/date/date_core.c ({d,dt}_lite_marshal_load): checks the given
- argument.
+Wed Jun 12 07:12:54 2013 Eric Hodel <drbrain@segment7.net>
-Sat Mar 12 01:26:24 2011 Tadayoshi Funaba <tadf@dotrb.org>
+ * 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.
- * ext/date/date_core.c: changed some directives.
+Wed Jun 12 06:35:01 2013 Tanaka Akira <akr@fsij.org>
-Sat Mar 12 01:16:02 2011 Tadayoshi Funaba <tadf@dotrb.org>
+ * internal.h (INTEGER_PACK_NEGATIVE): Defined.
+ (rb_integer_unpack): sign argument removed.
- * ext/date/date_core.c, ext/date/lib/*: moved rdoc descriptions.
+ * 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.
-Sat Mar 12 00:06:24 2011 Tadayoshi Funaba <tadf@dotrb.org>
+ * pack.c (pack_unpack): Follow the above change.
- * ext/date/lib: moved from lib.
+ * random.c (int_pair_to_real_inclusive): Ditto.
+ (make_seed_value): Ditto.
+ (mt_state): Ditto.
+ (limited_big_rand): Ditto.
-Fri Mar 11 23:32:38 2011 Tadayoshi Funaba <tadf@dotrb.org>
+ * marshal.c (r_object0): Ditto.
- * lib/date/delta*: removed undocumented delta.
+Wed Jun 12 00:07:46 2013 Kouhei Sutou <kou@cozmixng.org>
-Fri Mar 11 18:42:43 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * test/xmlrpc/test_client.rb (XMLRPC::ClientTest#test_cookie_simple):
+ Add a test for the extracted method.
- * lib/mkmf.rb (find_executable0): should exclude directories.
+Tue Jun 11 23:56:24 2013 Kouhei Sutou <kou@cozmixng.org>
-Fri Mar 11 01:40:35 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+ * test/xmlrpc/test_client.rb (XMLRPC::ClientTest::Fake::HTTP#started):
+ Add a missing empty line.
- * process.c (proc_getmaxgroups, proc_setmaxgroups): Process#maxgroups
- and Process#maxgroups= now raise NotImplementedError if the
- platform don't support supplementary groups concept.
+Tue Jun 11 23:37:19 2013 Tanaka Akira <akr@fsij.org>
-Fri Mar 11 01:25:03 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+ * 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.
- * process.c (get_sc_ngroups_max): return -1 if platform don't
- support NGROUPS_MAX.
+ * hash.c (rb_hash): Ditto.
-Thu Mar 10 22:28:15 2011 Tanaka Akira <akr@fsij.org>
+ * time.c (v2w_bignum): Ditto.
- * ext/openssl/ossl_ssl.h: parenthesize macro arguments.
+Tue Jun 11 23:01:57 2013 Tanaka Akira <akr@fsij.org>
-Thu Mar 10 21:59:37 2011 NARUSE, Yui <naruse@ruby-lang.org>
+ * bignum.c (validate_integer_pack_format): Refine error messages.
- * 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
+Tue Jun 11 22:25:04 2013 Tanaka Akira <akr@fsij.org>
-Thu Mar 10 16:00:22 2011 NARUSE, Yui <naruse@ruby-lang.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.
- * 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
+Tue Jun 11 20:52:43 2013 Tanaka Akira <akr@fsij.org>
-Thu Mar 10 10:52:01 2011 NAKAMURA Usaku <usa@ruby-lang.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.
- * 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.
+ * internal.h (rb_integer_pack_2comp): Declared.
-Thu Mar 10 10:09:35 2011 NARUSE, Yui <naruse@ruby-lang.org>
+ * 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.
- * lib/test/unit.rb (Test::Unit::Runner::Worker#read): fix for the case
- when IO#read or IO#gets returns nil.
+Tue Jun 11 16:15:03 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Thu Mar 10 07:12:03 2011 Ryan Davis <ryand-ruby@zenspider.com>
+ * array.c (ary_shrink_capa): shrink the capacity so it fits just with
+ the length.
- * 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.
+ * array.c (ary_make_shared): release never used elements from frozen
+ array to be shared. [ruby-dev:47416] [Bug #8510]
-Thu Mar 10 03:00:43 2011 Tanaka Akira <akr@fsij.org>
+Tue Jun 11 12:49:01 2013 Zachary Scott <zachary@zacharyscott.net>
- * ext/openssl/ossl_ssl.c: parenthesize macro arguments.
+ * doc/re.rdoc: Rename to doc/regexp.rdoc
+ * re.c: Update rdoc include for rename of file
-Wed Mar 9 23:51:26 2011 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
+Tue Jun 11 07:13:13 2013 Masaya Tarui <tarui@ruby-lang.org>
- * test/ruby/test_io_m17n.rb (test_io_new_enc): "sjis" is now an alias
- of Windows-31J.
+ * eval_error.c (error_print): keep that errat is non-shady object.
+ and guard errat from GC.
-Wed Mar 9 23:06:13 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Tue Jun 11 05:04:25 2013 Benoit Daloze <eregontp@gmail.com>
- * misc/ruby-mode.el (ruby-parse-partial): fix indent after aref.
+ * 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.
-Wed Mar 9 12:50:24 2011 Aaron Patterson <aaron@tenderlovemaking.com>
+Mon Jun 10 23:51:51 2013 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
- * ext/psych/lib/psych/visitors/yaml_tree.rb: Rescue exceptions when
- people implement the method method. Thanks Lin Jen-Shin.
- [ruby-core:35255]
+ * 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
- * test/psych/visitors/test_yaml_tree.rb: test for implementation of
- method method.
+Mon Jun 10 21:51:03 2013 Kouhei Sutou <kou@cozmixng.org>
-Wed Mar 9 11:53:31 2011 NARUSE, Yui <naruse@ruby-lang.org>
+ * ext/socket/raddrinfo.c (nogvl_getaddrinfo): Fix indent.
- * enc/shift_jis.c: Change SJIS as an alias of Windows-31J.
- [ruby-dev:43027] fixes #4280
+Mon Jun 10 21:49:43 2013 Kouhei Sutou <kou@cozmixng.org>
- * enc/shift_jis.c: Add PCK as an alias of Windows-31J.
+ * ext/socket/raddrinfo.c (nogvl_getaddrinfo): Add missing return
+ value assignment.
-Wed Mar 9 00:45:29 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Mon Jun 10 20:58:11 2013 NARUSE, Yui <naruse@ruby-lang.org>
- * ext/extmk.rb: nmake substitutes all occurrences in macro.
+ * ext/socket/raddrinfo.c (nogvl_getaddrinfo): work around for Ubuntu
+ 13.04's getaddrinfo issue with mdns4. [ruby-list:49420]
- * ext/extmk.rb: workaround for nmake.
+Mon Jun 10 19:34:39 2013 Tanaka Akira <akr@fsij.org>
-Tue Mar 8 23:49:45 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+ * bignum.c (rb_integer_pack): Returns sign instead of words.
+ (absint_numwords_generic): Follow the above change.
+ (big2str_base_powerof2): Follow the above change.
- * process.c (proc_setgroups): cleanup.
+ * internal.h: Ditto.
-Tue Mar 8 23:40:30 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * hash.c (rb_hash): Ditto.
- * test/misc/test_ruby_mode.rb: test for ruby-mode.el.
+ * pack.c (pack_pack): Ditto.
-Tue Mar 8 23:27:38 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+ * random.c (int_pair_to_real_inclusive): Ditto.
+ (rand_init): Ditto.
+ (random_load): Ditto.
+ (limited_big_rand): Ditto.
- * process.c (get_sc_ngroups_max): try to use NGROUPS_MAX at first if
- _SC_NGROUP_MAX is not defined.
+ * time.c (v2w_bignum): Ditto.
-Tue Mar 8 23:10:16 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Mon Jun 10 17:20:01 2013 Koichi Sasada <ko1@atdot.net>
- * misc/ruby-mode.el (ruby-parse-partial): fix for array in block.
+ * gc.c (rgengc_remember): permit promoted object.
+ (rb_gc_writebarrier -> remember)
-Tue Mar 8 21:44:49 2011 Tanaka Akira <akr@fsij.org>
+Mon Jun 10 17:14:01 2013 Koichi Sasada <ko1@atdot.net>
- * ext/openssl/ossl_rand.c: parenthesize macro arguments.
+ * gc.c (RVALUE_PROMOTE): fix parameter name (`x' to `obj')
+ and make it inline function (like RVALUE_PROMOTE).
-Tue Mar 8 16:45:31 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+Mon Jun 10 16:22:50 2013 Koichi Sasada <ko1@atdot.net>
- * 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.
+ * array.c (rb_ary_new_from_values): add assertion
+ (ary should be young object).
-Tue Mar 8 15:57:20 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+Mon Jun 10 16:05:59 2013 Koichi Sasada <ko1@atdot.net>
- * 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.
+ * gc.c (wmap_mark): check allocation of `w->obj2wmap'.
+ (no-allocation `w->obj2wmap' will be NULL pointer reference)
-Tue Mar 8 12:30:06 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Mon Jun 10 15:36:00 2013 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.
+ * eval_error.c (error_print): use checking functions instead of
+ catching exceptions.
-Tue Mar 8 09:32:48 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * eval_error.c (error_print): restore errinfo for the case new
+ exception raised while printing the message. [ruby-core:55365]
+ [Bug #8501]
- * common.mk (configure-ext, build-ext), ext/extmk.rb (extmake):
- support parallel-make under ext.
+ * eval_error.c (error_print): reduce calling setjmp.
-Tue Mar 8 09:25:23 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Mon Jun 10 12:10:06 2013 Tanaka Akira <akr@fsij.org>
- * process.c (proc_setgroups): use getgrnam() if getgrnam_r() is
- not available.
+ * 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.
- * process.c: RARRAY_LEN() returns long int.
+Mon Jun 10 05:38:23 2013 Tanaka Akira <akr@fsij.org>
-Tue Mar 8 09:07:03 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * bignum.c (absint_numwords_small): New function.
+ (absint_numwords_generic): Use absint_numwords_small if possible.
- * configure.in (RUBY_REPLACE_TYPE): enclose in quotes for multiple
- type names.
+Mon Jun 10 01:07:57 2013 Tanaka Akira <akr@fsij.org>
-Tue Mar 8 01:43:11 2011 NARUSE, Yui <naruse@ruby-lang.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.
- * process.c (get_sc_ngroups_max): define to wrap sysconf(3).
- this also supports Windows which doesn't have sysconf(3).
+Sun Jun 9 21:33:15 2013 Tanaka Akira <akr@fsij.org>
- * process.c (maxgroups): use get_sc_ngroups_max.
+ * bignum.c (rb_absint_numwords): Return (size_t)-1 when overflow.
+ Refine variable names.
+ (rb_absint_size): Refine variable names.
- * process.c (proc_setmaxgroups): ditto.
+ * internal.h (rb_absint_size): Refine an argument name.
+ (rb_absint_numwords): Ditto.
-Tue Mar 8 01:16:49 2011 NARUSE, Yui <naruse@ruby-lang.org>
+Sun Jun 9 16:51:41 2013 Tanaka Akira <akr@fsij.org>
- * gc.c (rb_objspace): an initializer must be a constant.
+ * bignum.c (rb_absint_numwords): Renamed from rb_absint_size_in_word.
-Tue Mar 8 01:11:44 2011 NARUSE, Yui <naruse@ruby-lang.org>
+ * internal.h (rb_absint_numwords): Follow the above change.
- * process.c (maxgroups): cast because sysconf(3)'s return value is long.
+ * pack.c (pack_pack): Ditto.
- * process.c (proc_setmaxgroups): ditto.
+ * random.c (rand_init): Ditto.
+ (limited_big_rand): Ditto.
- * process.c (proc_setgroups): cast because RARRAY_LEN() is long.
+Sun Jun 9 14:41:05 2013 Tanaka Akira <akr@fsij.org>
-Tue Mar 8 00:02:47 2011 Tanaka Akira <akr@fsij.org>
+ * bignum.c (rb_integer_pack): numwords_allocated argument removed.
- * ext/openssl/ossl_pkey_rsa.c: parenthesize macro arguments.
+ * internal.h (rb_integer_pack): Follow the above change.
-Mon Mar 7 22:59:39 2011 Shota Fukumori <sorah@tubusu.net>
+ * hash.c (rb_hash): Ditto.
- * lib/pstore.rb: Delete variable @transaction and fix #4474. Patch by
- Masaki Matsushita (Glass_saga).
+ * time.c (v2w_bignum): Ditto.
- * test/test_pstore.rb(test_thread_safe): Add test for #4474.
+ * pack.c (pack_pack): Ditto.
-Mon Mar 7 21:31:38 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+ * random.c (int_pair_to_real_inclusive): Ditto.
+ (rand_init): Ditto.
+ (random_load): Ditto.
+ (limited_big_rand): Ditto.
- * process.c (proc_setgroups): replace getgrnam() with getgrnam_r()
- because getgrnam() isn't thread safe.
+Sun Jun 9 09:34:44 2013 Tanaka Akira <akr@fsij.org>
-Mon Mar 7 20:49:12 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+ * bignum.c (big2str_base_powerof2): New function.
+ (rb_big2str0): Use big2str_base_powerof2 if base is 2, 4, 8, 16 or 32.
- * process.c (proc_getmaxgroups, proc_setmaxgroups): reflect
- platform maxgroups limitation by default instead hardcoded 65536.
+Sun Jun 9 00:59:04 2013 Tanaka Akira <akr@fsij.org>
-Mon Mar 7 17:13:00 2011 Yukihiro Matsumoto <matz@ruby-lang.org>
+ * hash.c (rb_hash): Use rb_integer_pack to obtain least significant
+ long integer.
- * 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.
+Sat Jun 8 23:56:00 2013 Tanaka Akira <akr@fsij.org>
-Mon Mar 7 09:05:18 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * numeric.c (rb_num_to_uint): Use rb_absint_size instead of
+ RBIGNUM_LEN.
- * process.c: NUM2RLIM is defined but no getrlimit and setrlimit on
- mingw.
+Sat Jun 8 22:53:45 2013 Tanaka Akira <akr@fsij.org>
-Mon Mar 7 08:38:14 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * marshal.c (r_object0): Use rb_integer_unpack.
- * ext/date/date_core.c (DateTimeData): should not use bare 'long long'
- and 'long double', which are not defined by C89.
+Sat Jun 8 22:18:57 2013 Tanaka Akira <akr@fsij.org>
- * ext/date/date_core.c (dt_lite_plus): get rid of overflow at casting
- down double to integer.
+ * time.c (v2w): Use rb_absint_size instead of RBIGNUM_LEN.
-Mon Mar 7 00:21:11 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+Sat Jun 8 21:47:33 2013 Tanaka Akira <akr@fsij.org>
- * process.c (proc_getgroups): get rid of maxgroups dependency.
- ngroups can be calculated dynamically.
+ * time.c (v2w_bignum): Simplified using rb_integer_pack.
+ (rb_big_abs_find_maxbit): Removed.
-Sun Mar 6 23:45:40 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+Sat Jun 8 21:03:40 2013 Tanaka Akira <akr@fsij.org>
- * configure.in: rlim_t use standard RUBY_REPLACE_TYPE mechanism.
+ * bignum.c (rb_absint_singlebit_p): New function.
-Sun Mar 6 23:26:07 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+ * internal.h (rb_absint_singlebit_p): Declared.
- * process.c (proc_setmaxgroups): added negative value check.
- This was suggested by Daniel Berger. Thanks Daniel!
- [ruby-core:35426][Bug#4467]
+ * time.c (v2w_bignum): Use rb_absint_singlebit_p instead of
+ rb_big_abs_find_minbit.
+ (rb_big_abs_find_minbit): Removed.
-Sun Mar 6 23:18:23 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+Sat Jun 8 20:24:23 2013 Tanaka Akira <akr@fsij.org>
- * process.c (maxgroups, proc_setmaxgroups): increase max groups
- limitation up to 65536.
+ * time.c (rb_big_abs_find_maxbit): Use rb_absint_size.
+ (bdigit_find_maxbit): Removed.
-Sun Mar 6 22:20:59 2011 Tanaka Akira <akr@fsij.org>
+Sat Jun 8 19:47:00 2013 Charlie Somerville <charliesome@ruby-lang.org>
- * ext/openssl/ossl_pkey_ec.c: parenthesize macro arguments.
+ * class.c (include_modules_at): invalidate method cache if included
+ module contains constants
-Sun Mar 6 21:49:04 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+ * test/ruby/test_module.rb: add test
- * 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]
+Sat Jun 8 19:31:00 2013 Charlie Somerville <charliesome@ruby-lang.org>
-Sun Mar 6 05:21:41 2011 NARUSE, Yui <naruse@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.
- * class.c: fix camelCase to snake_case in documentation code examples.
- patched by Andrew Grimm. fixes Bug #4469
+Sat Jun 8 19:23:53 2013 NARUSE, Yui <naruse@ruby-lang.org>
- * marshal.c: ditto.
+ * 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.
- * proc.c: ditto.
+Sat Jun 8 19:06:26 2013 Tanaka Akira <akr@fsij.org>
- * sample/biorhythm.rb: ditto.
+ * random.c: Unused RBignum internal accessing macros removed.
- * vm_eval.c: ditto.
+Sat Jun 8 19:04:15 2013 Tanaka Akira <akr@fsij.org>
- * vm_method.c: ditto.
+ * 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>
-Sun Mar 6 03:22:27 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+ * random.c (make_seed_value): Fix the length given for
+ rb_integer_unpack.
- * io.c (io_cntl): use rb_thread_io_blocking_region() instead
- rb_thread_blocking_region().
+Sat Jun 8 16:38:02 2013 Tanaka Akira <akr@fsij.org>
-Sat Mar 5 22:54:36 2011 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
+ * bignum.c (rb_integer_unpack): Don't use rb_funcall if possible.
- * include/ruby/intern.h: fix a typo of prototype declaration.
- rb_mutex_try_lock -> rb_mutex_trylock [ruby-dev:43213]
+ * random.c: Use uint32_t for elements of seed.
+ (make_seed_value): Use rb_integer_unpack.
-Sat Mar 5 19:44:03 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+Sat Jun 8 15:58:18 2013 Tanaka Akira <akr@fsij.org>
- * test/ruby/test_io.rb (TestIO#test_fcntl_lock): small clean up.
+ * 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 Mar 5 01:33:46 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+Sat Jun 8 15:30:03 2013 Tanaka Akira <akr@fsij.org>
- * 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]
+ * random.c (rand_init): Use rb_integer_pack.
+ (roomof): Removed.
- * test/ruby/test_io.rb (TestIO#test_fcntl_lock): add new test for
- IO.fcntl().
+Sat Jun 8 14:58:32 2013 Tanaka Akira <akr@fsij.org>
-Fri Mar 4 23:09:12 2011 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
+ * internal.h (INTEGER_PACK_FORCE_BIGNUM): New flag constant.
- * 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]
+ * bignum.c (rb_integer_unpack): Support INTEGER_PACK_FORCE_BIGNUM.
-Fri Mar 4 22:01:14 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+ * random.c (int_pair_to_real_inclusive): Use
+ INTEGER_PACK_FORCE_BIGNUM to use rb_big_mul instead of rb_funcall.
- * io.c (io_cntl): change 'cmd' type to int. ioctl and fcntl need to
- be passed int.
- * io.c (rb_io_ctl): ditto.
+Sat Jun 8 14:17:01 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Fri Mar 4 21:10:40 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+ * configure.in: check for NET_LUID. header macro varies across
+ compiler versions.
- * configure.in: save warnflags. the patch is created by Eric Wong.
- [Bug #4465]
+ * win32/win32.c: use configured macro.
-Wed Mar 2 21:15:00 2011 Tanaka Akira <akr@fsij.org>
+Sat Jun 8 11:59:55 2013 Tanaka Akira <akr@fsij.org>
- * ext/openssl/ossl_pkey_dsa.c: parenthesize macro arguments.
+ * random.c (int_pair_to_real_inclusive): Use rb_funcall instead of
+ rb_big_mul because rb_integer_unpack can return a Fixnum.
-Thu Mar 3 22:10:26 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+Sat Jun 8 11:17:39 2013 Tanaka Akira <akr@fsij.org>
- * process.c (check_exec_redirect_fd, check_exec_redirect): raise
- ArgumentError if fd >= 3 on Windows because the feature is not
- supported.
+ * random.c (int_pair_to_real_inclusive): Use rb_integer_pack.
- * test/ruby/test_process.rb (test_execopts_redirect): remove meaningless
- argument.
+Sat Jun 8 09:49:42 2013 Tanaka Akira <akr@fsij.org>
-Thu Mar 3 21:21:42 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+ * random.c (int_pair_to_real_inclusive): Use rb_integer_unpack.
- * 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.
+Sat Jun 8 08:12:22 2013 Tanaka Akira <akr@fsij.org>
-Thu Mar 3 18:59:04 2011 NARUSE, Yui <naruse@ruby-lang.org>
+ * random.c (random_load): Use rb_integer_pack.
- * string.c (rb_str_slice_bang): raise error when the string is frozen.
+Sat Jun 8 06:15:46 2013 Tanaka Akira <akr@fsij.org>
-Thu Mar 3 14:25:19 2011 NARUSE, Yui <naruse@ruby-lang.org>
+ * random.c (numberof): Removed.
- * strftime.c (STRFTIME): return 0 and ERANGE when precision is too
- large. [ruby-dev:43284] fixes #4456
+Sat Jun 8 06:00:47 2013 Tanaka Akira <akr@fsij.org>
-Thu Mar 3 00:46:51 2011 NARUSE, Yui <naruse@ruby-lang.org>
+ * random.c: include internal.h.
+ (mt_state): Use rb_integer_unpack.
- * addr2line.c (uleb128): cast the value to unsigned long.
+Sat Jun 8 00:55:51 2013 Tanaka Akira <akr@fsij.org>
- * addr2line.c (fill_lines): print error when lseek fails.
+ * 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.
-Thu Mar 3 00:36:29 2011 NARUSE, Yui <naruse@ruby-lang.org>
+Sat Jun 8 00:37:32 2013 Tanaka Akira <akr@fsij.org>
- * lib/rexml/encoding.rb (REXML::Encoding#encoding=): store @encoding
- a String which means the name of the encoding.
- this partially revert r29646.
+ * 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.
- * lib/rexml/document.rb: follow above.
+Fri Jun 7 23:58:06 2013 Tanaka Akira <akr@fsij.org>
- * lib/rexml/output.rb: ditto.
+ * 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.
- * lib/rexml/parsers/baseparser.rb: ditto.
+ * pack.c: Ditto.
- * lib/rexml/source.rb: 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.
- * lib/rexml/xmldecl.rb: ditto.
+Fri Jun 7 22:10:50 2013 NARUSE, Yui <naruse@ruby-lang.org>
-Wed Mar 2 23:19:56 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * lib/rubygems/specification.rb (Gem::Specification#to_yaml):
+ use Gem::NoAliasYAMLTree.create instead of Gem::NoAliasYAMLTree.new
+ to suppress deprecated warnings.
- * string.c (str_byte_substr): return nil for negative length.
+Fri Jun 7 21:39:39 2013 Tanaka Akira <akr@fsij.org>
-Wed Mar 2 21:15:00 2011 Tanaka Akira <akr@fsij.org>
+ * bignum.c (rb_integer_pack): Renamed from rb_int_export.
+ (rb_integer_unpack): Renamed from rb_int_import.
- * ext/openssl/ossl_pkey_dh.c: parenthesize macro arguments.
+ * internal.h, pack.c: Follow the above change.
-Wed Mar 2 14:24:04 2011 Shota Fukumori <sorah@tubusu.net>
+Fri Jun 7 21:05:26 2013 Tanaka Akira <akr@fsij.org>
- * lib/test/unit/parallel.rb: Fix name from `inclement_io` to
- `increment_io`.
+ * bignum.c (integer_format_loop_setup): Extracted from rb_int_export
+ and rb_int_import.
-Wed Mar 2 14:06:01 2011 NARUSE, Yui <naruse@ruby-lang.org>
+Fri Jun 7 19:48:38 2013 Tanaka Akira <akr@fsij.org>
- * string.c (rb_str_slice_bang): move treatments which is only needed
- when the result is not nil.
+ * bignum.c (validate_integer_format): Extracted from rb_int_export and
+ rb_int_import.
-Wed Mar 2 14:02:29 2011 Shota Fukumori <sorah@tubusu.net>
+Fri Jun 7 19:23:15 2013 Tanaka Akira <akr@fsij.org>
- * test/testunit/test_parallel.rb(TestParallel#spawn_runner):
- Fix outputing empty line in running test.
+ * bignum.c (rb_absint_size): Use numberof.
+ (rb_int_export): Ditto.
- * test/testunit/tests_for_parallel/test_third.rb: Remove `sleep`
+Fri Jun 7 18:58:56 2013 Tanaka Akira <akr@fsij.org>
-Tue Mar 1 22:29:10 2011 Tanaka Akira <akr@fsij.org>
+ * internal.h (numberof): Gathered from various files.
- * ext/openssl/ossl_pkey.h: parenthesize macro arguments.
+ * 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.
-Tue Mar 1 22:02:35 2011 Shota Fukumori <sorah@tubusu.net>
+Fri Jun 7 18:24:39 2013 Tanaka Akira <akr@fsij.org>
- * lib/test/unit/parallel.rb: Fix number.
+ * bignum.c (rb_absint_size): Declare a variable, i, just before used
+ to suppress a warning.
+ (rb_int_export): Ditto.
-Tue Mar 1 21:48:22 2011 Shota Fukumori <sorah@tubusu.net>
+Fri Jun 7 17:41:00 2013 Charlie Somerville <charliesome@ruby-lang.org>
- * lib/test/unit/parallel.rb: For Windows.
+ * 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
- * 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.
+Fri Jun 7 17:31:00 2013 Charlie Somerville <charliesome@ruby-lang.org>
-Tue Mar 1 20:51:57 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+ * internal.h (RCLASS_SUPER): use descriptive variable name
+ * internal.h (RCLASS_SET_SUPER): ditto
- * test/ruby/test_system.rb (TestSystem#test_system_at):
- remove tests for [bug#4396]. because we decided to reject this
- ticket.
+Fri Jun 7 13:25:27 2013 NARUSE, Yui <naruse@ruby-lang.org>
-Tue Mar 1 19:46:19 2011 Tadayoshi Funaba <tadf@dotrb.org>
+ * ext/json/fbuffer/fbuffer.h (fbuffer_append_str): change the place of
+ RB_GC_GUARD. it should be after the object is used.
- * test/date/{test_date.rb,test_date_attr.rb}: [ruby-dev:43280]
+Fri Jun 7 13:22:43 2013 NARUSE, Yui <naruse@ruby-lang.org>
-Tue Mar 1 18:40:38 2011 Ryan Davis <ryan@YPCMC09457>
+ * gc.c (before_gc_sweep): noinline can also avoid the segv instead of
+ -O0 of r41084. this way is expected less slow.
- * lib/rubygems*: Import rubygems 1.6.0 (released version @ 58d8a0b9)
- * test/rubygems: Ditto
+Fri Jun 7 11:45:42 2013 Kenta Murata <mrkn@cookpad.com>
-Tue Mar 1 16:22:22 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+ * 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]
- * win32/win32.c: revert r30987 because it causes some failures in
- test-all, especially webrick.
+ * numeric.c (num_quo): ditto.
-Tue Mar 1 15:59:53 2011 NARUSE, Yui <naruse@ruby-lang.org>
+ * test/test_mathn.rb: add a test for the change at r41109.
- * 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]
+Fri Jun 7 11:41:42 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Tue Mar 1 13:25:00 2011 Kenta Murata <mrkn@mrkn.jp>
+ * configure.in: revert r41106. size_t may not be unsigned
- * ext/bigdecimal/bigdecimal.c (VpMemAlloc): CVE-2011-0188.
- Fixes a bug reported by Drew Yao <ayao at apple.com>
+ * bignum.c (rb_absint_size_in_word, rb_int_export, rb_int_import): use
+ NUM2SIZET() and SIZET2NUM() already defined in ruby/ruby.h.
-Tue Mar 1 10:34:39 2011 NARUSE, Yui <naruse@ruby-lang.org>
+Fri Jun 7 11:28:37 2013 Masaya Tarui <tarui@ruby-lang.org>
- * string.c (rb_str_byteslice): Add String#byteslice. [ruby-core:35376]
+ * 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.
-Tue Mar 1 00:12:49 2011 Tajima Akio <artonx@yahoo.co.jp>
+Fri Jun 7 11:25:56 2013 Masaya Tarui <tarui@ruby-lang.org>
- * include/ruby/win32.h: define WIN32 if neither _WIN64 nor WIN32
- defined. it forces to use push/pop for pack(4) pragma.
+ * gc.c: introduce oldgen bitmap for preparing performance tuning.
-Mon Feb 28 23:52:13 2011 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
+Fri Jun 7 11:20:57 2013 Masaya Tarui <tarui@ruby-lang.org>
- * test/testunit/test_rake_integration.rb (test_with_rake_runner):
- use assert_in_out_err for suppress messages.
+ * gc.c (MARKED_IN_BITMAP, MARK_IN_BITMAP, CLEAR_IN_BITMAP): bring
+ bitmap macros in one place, and introduce BITMAP_BIT.
-Mon Feb 28 22:48:56 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+Fri Jun 7 11:18:35 2013 Masaya Tarui <tarui@ruby-lang.org>
- * 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.
+ * array.c (ary_new): change order of allocation in order
+ to remove FL_OLDGEN operation.
- * 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.
+Fri Jun 7 11:16:28 2013 Masaya Tarui <tarui@ruby-lang.org>
-Mon Feb 28 17:36:57 2011 Tanaka Akira <akr@fsij.org>
+ * tool/rdocbench.rb: add gc total time information.
- * ext/openssl/ossl_pkcs7.c: parenthesize macro arguments.
+Fri Jun 7 10:12:01 2013 Koichi Sasada <ko1@atdot.net>
-Mon Feb 28 16:48:42 2011 Tanaka Akira <akr@fsij.org>
+ * gc.c: remove "Sunny" terminology.
+ "Sunny" doesn't mean antonym of "Shady" (questionable, doubtful, etc).
+ Instead of "Sunny", use "non-shady" or "normal".
- * ext/openssl/ossl_pkcs12.c: parenthesize macro arguments.
+Fri Jun 7 09:29:33 2013 Kenta Murata <mrkn@cookpad.com>
-Mon Feb 28 16:28:15 2011 NARUSE, Yui <naruse@ruby-lang.org>
+ * bignum.c (rb_int_import): explicitly casting BDIGIT_DBL to BDIGIT
+ to prevent warning.
- * 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
+Fri Jun 7 07:29:33 2013 Tanaka Akira <akr@fsij.org>
-Mon Feb 28 16:38:56 2011 Tanaka Akira <akr@fsij.org>
+ * internal.h (rb_int_export): countp argument is split into
+ wordcount_allocated and wordcount.
- * ext/openssl/ossl_ocsp.c: parenthesize macro arguments.
+ * bignum.c (rb_int_export): Follow the above change.
-Mon Feb 28 13:02:15 2011 Danial Pearce <github@tigris.id.au>
+ * pack.c (pack_pack): Ditto.
- * lib/tempfile.rb: Fix example file paths in docs for tempfile.
- https://github.com/ruby/ruby/pull/5
+Fri Jun 7 07:17:00 2013 Kenta Murata <mrkn@mrkn.jp>
-Mon Feb 28 12:56:18 2011 URABE Shyouhei <shyouhei@ruby-lang.org>
+ * NEWS: describe a compatibility issue of Numeric#quo
+ introduced at r41109.
- * ext/openssl/ossl_cipher.c (ossl_cipher_init): typo fix.
- https://github.com/ruby/ruby/pull/8
+Fri Jun 7 07:15:00 2013 Kenta Murata <mrkn@mrkn.jp>
-Mon Feb 28 12:28:13 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+ * NEWS: fix style.
- * 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.
+Fri Jun 7 06:48:17 2013 Benoit Daloze <eregontp@gmail.com>
-Mon Feb 28 11:57:40 2011 Shota Fukumori <sorah@tubusu.net>
+ * numeric.c: remove unused ID id_to_r introduced in r41109.
- * test/testunit/test_parallel.rb: Temporally disable test on Windows.
+Fri Jun 7 06:15:31 2013 Tanaka Akira <akr@fsij.org>
-Mon Feb 28 07:28:35 2011 Shota Fukumori <sorah@tubusu.net>
+ * bignum.c (rb_int_import): New function.
+ (int_import_push_bits): Ditto.
- * lib/test/unit.rb(Test::Unit::Runner#after_worker_quit):
- method name more be natural English.
+ * internal.h (rb_int_import): Declared.
- * lib/test/unit.rb(Test::Unit::Runner::Worker.launch):
- IO.sync doesn't need. Should use "b" for mode.
+ * pack.c (pack_unpack): Use rb_int_import for BER compressed integer.
-Sun Feb 27 21:59:37 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+Thu Jun 6 22:24:00 2013 Kenta Murata <mrkn@mrkn.jp>
- * test/ruby/test_system.rb (TestSystem#test_system_redirect_win):
- add test for system().
+ * numeric.c (num_quo): Use to_r method to convert the receiver to
+ rational. [ruby-core:41575] [Bug #5736]
-Sun Feb 27 18:00:09 2011 Shota Fukumori <sorah@tubusu.net>
+ * test/ruby/test_numeric.rb: add a test for the above change.
- * lib/test/unit.rb: Refactoring; Worker never use Hash for internal
- storage.
+Thu Jun 6 20:40:17 2013 Tanaka Akira <akr@fsij.org>
- * lib/test/unit.rb: Never use Kernel#spawn. Use IO.popen instead.
+ * 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.
-Sun Feb 27 13:16:48 2011 Tanaka Akira <akr@fsij.org>
+ * internal.h (rb_absint_size): Declared.
+ (rb_absint_size_in_word): Ditto.
+ (rb_int_export): Ditto.
- * ext/openssl/ossl_ns_spki.c: parenthesize macro arguments.
+ * 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.
-Sat Feb 26 17:07:53 2011 Tadayoshi Funaba <tadf@dotrb.org>
+ * pack.c (pack_pack): Use rb_int_export for BER compressed integer.
- * lib/date.rb: [Feature #4257]
+Thu Jun 6 19:31:33 2013 Tadayoshi Funaba <tadf@dotrb.org>
- * ext/date/extconf.rb: new
+ * ext/date/date_core.c: fixed coding error [ruby-core:55337].
+ reported by Riley Lynch.
- * ext/date/date_core.c: new
+Thu Jun 6 14:16:37 2013 Narihiro Nakamura <authornari@gmail.com>
-Sat Feb 26 16:10:23 2011 Shota Fukumori <sorah@tubusu.net>
+ * ext/objspace/object_tracing.c: rename allocation_info to
+ lookup_allocation_info. At times I confused "struct
+ allocation_info" with "function allocation_info".
- * lib/test/unit.rb: --jobs-status won't puts over 2 lines.
+Thu Jun 6 13:57:06 2013 Narihiro Nakamura <authornari@gmail.com>
- * test/testunit/test_parallel.rb: Fix test for above.
+ * ext/objspace/object_tracing.c: allocation_info function isn't
+ called by any other file.
- * lib/test/*: refactoring.
+Thu Jun 6 09:41:00 2013 Kenta Murata <mrkn@cookpad.com>
-Sat Feb 26 07:10:05 2011 Aaron Patterson <aaron@tenderlovemaking.com>
+ * numeric.c (num_quo): should return a Float for a Float argument.
+ [ruby-dev:44710] [Bug #5515]
- * ext/psych/lib/psych/scalar_scanner.rb: fix parsing timezone's whose
- whose format is (+/-)hhmm. Thanks Goncalo Silva!
+ * test/ruby/test_fixnum.rb: Add an assertion for the above change.
- * test/psych/test_scalar_scanner.rb: test for bug.
+ * test/ruby/test_bignum.rb: ditto.
-Thu Feb 24 23:02:55 2011 Tanaka Akira <akr@fsij.org>
+Thu Jun 6 00:59:44 2013 Masaya Tarui <tarui@ruby-lang.org>
- * ext/openssl/ossl_hmac.c: parenthesize macro arguments.
+ * 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.
-Thu Feb 24 22:53:10 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ change sunny old check point in order to save mark stack and
+ remove unnatural rest_sweep & demote.
- * common.mk (love): for the birthday.
+Thu Jun 6 00:52:42 2013 Masaya Tarui <tarui@ruby-lang.org>
-Thu Feb 24 22:51:54 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * gc.c (rgengc_rememberset_mark): change scan algorithm for performance:
+ from object's pointer base to bitmap one.
- * vm.c (ruby_vm_destruct): run vm exit hooks after all objects are
- destructed.
+Thu Jun 6 00:30:04 2013 NARUSE, Yui <naruse@ruby-lang.org>
-Thu Feb 24 14:40:33 2011 Shota Fukumori <sorah@tubusu.net>
+ * 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
- * ChangeLog (vim): Modeline for vim
+Thu Jun 6 00:05:08 2013 Akinori MUSHA <knu@iDaemons.org>
-Thu Feb 24 13:39:25 2011 Shota Fukumori <sorah@tubusu.net>
+ * 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]
- * common.mk: Use $RUNRUBY for worker process.
+Wed Jun 5 22:40:42 2013 Shugo Maeda <shugo@ruby-lang.org>
- * lib/test/unit.rb: Fix bug.
+ * lib/net/imap.rb (capability_response): should ignore trailing
+ spaces. Thanks, Peter Kovacs. [ruby-core:55024] [Bug #8415]
- * lib/test/unit.rb: @options[:ruby](@opts[:ruby]) is now Array.
+ * test/net/imap/test_imap_response_parser.rb: related test.
- * test/testunit/parallel.rb: Fix for above.
+Wed Jun 5 21:17:08 2013 Tanaka Akira <akr@fsij.org>
-Thu Feb 24 10:05:55 2011 Shota Fukumori <sorah@tubusu.net>
+ * bignum.c (big_fdiv): Use nlz() instead of bdigbitsize().
+ (bdigbitsize): Removed.
- * test/testunit/tests_for_parallel/misc.rb: Fix bug in r30947.
+Wed Jun 5 20:32:00 2013 Kenta Murata <mrkn@cookpad.com>
- * lib/test/unit.rb, lib/test/unit/assertions.rb: For this test.
+ * include/ruby/ruby.h: fix alignment in comment.
-Wed Feb 23 23:07:38 2011 Shota Fukumori <sorah@tubusu.net>
+Wed Jun 5 20:05:29 2013 Tanaka Akira <akr@fsij.org>
- * test/testunit/test_parallel.rb, test/testunit/parallel/*:
- Test for r30939.
+ * 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.
- * lib/test/unit.rb: For test.
+Wed Jun 5 15:26:10 2013 NARUSE, Yui <naruse@ruby-lang.org>
- * lib/test/parallel.rb: For test.
+ * 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
- * lib/test/unit/testcase.rb: For test.
+Wed Jun 5 09:46:46 2013 NARUSE, Yui <naruse@ruby-lang.org>
-Wed Feb 23 22:05:13 2011 Tanaka Akira <akr@fsij.org>
+ * test/fileutils/test_fileutils.rb (TestFileUtils#test_mkdir): add
+ EACCES for Windows.
- * ext/openssl/ossl_engine.c: parenthesize macro arguments.
+Wed Jun 5 08:13:37 2013 Tanaka Akira <akr@fsij.org>
-Tue Feb 22 23:15:17 2011 Shota Fukumori <sorah@tubusu.net>
+ * bignum.c (rb_big_pow): Don't need to multiply SIZEOF_BDIGITS.
+ Use nlz instead of bitlength_bdigit.
+ (bitlength_bdigit): Removed.
- * lib/test/unit.rb: Fix --ruby option doesn't effect.
+Wed Jun 5 07:14:18 2013 Tadayoshi Funaba <tadf@dotrb.org>
- * lib/test/unit.rb: Fix typo.
+ * ext/date/date_core.c (d_lite_cmp, d_lite_equal): simplified.
-Tue Feb 22 21:39:28 2011 Tanaka Akira <akr@fsij.org>
+Wed Jun 5 07:07:01 2013 Tadayoshi Funaba <tadf@dotrb.org>
- * ext/openssl/ossl_digest.c: parenthesize macro arguments.
+ * ext/date/date_core.c: fixed a bug [ruby-core:55295]. reported
+ by Riley Lynch.
-Tue Feb 22 14:34:26 2011 Shota Fukumori <sorah@tubusu.net>
+Wed Jun 5 06:44:08 2013 Eric Hodel <drbrain@segment7.net>
- * lib/test/unit.rb: Fix merging miss.
+ * lib/rubygems: Update to RubyGems 2.0.3
-Tue Feb 22 12:27:26 2011 Shota Fukumori <sorah@tubusu.net>
+ * test/rubygems: Tests for the above.
- * 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]
+ * NEWS: Added RubyGems 2.0.3 note.
- * lib/test/unit/parallel.rb: Used at test/unit --jobs(-j) option.
+Wed Jun 5 06:35:15 2013 Eric Hodel <drbrain@segment7.net>
- * test/csv/test_serialization.rb: test/unit parallel running ready.
+ * doc/marshal.rdoc: Add description of Marshal format.
- * test/rake/test_file_task.rb: test/unit parallel running ready.
+Wed Jun 5 01:16:09 2013 Benoit Daloze <eregontp@gmail.com>
-Tue Feb 22 06:09:10 2011 Eric Hodel <drbrain@segment7.net>
+ * array.c (Array#+): fix documentation example.
+ Patch by Logan Serman. [Fixes GH-324]
- * ext/syslog/syslog.c: Apply documentation patch from mathew murphy.
- [Bug #4149]
+Wed Jun 5 00:21:54 2013 Ayumu AIZAWA <ayumu.aizawa@gmail.com>
-Tue Feb 22 03:09:10 2011 Aaron Patterson <aaron@tenderlovemaking.com>
+ * lib/irb/lc/ja/help-message: update help messages.
+ following r41028. [ruby-dev:46707] [Feature #7510]
- * ext/psych/lib/psych.rb: increase Psych to 1.1.0 for help with
- debugging.
+Wed Jun 5 00:09:32 2013 Tanaka Akira <akr@fsij.org>
-Tue Feb 22 03:04:46 2011 Aaron Patterson <aaron@tenderlovemaking.com>
+ * marshal.c (r_object0): Generalize a round up expression.
+ Use BDIGIT instead of int.
- * 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 Jun 4 23:44:02 2013 Ayumu AIZAWA <ayumu.aizawa@gmail.com>
-Tue Feb 22 02:41:51 2011 Aaron Patterson <aaron@tenderlovemaking.com>
+ * object.c (rb_Hash): fix docs. patched by Stefan Sch"ussler.
+ [ruby-core:55299] [Bug #8487]
- * 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.
+Tue Jun 4 23:16:49 2013 Benoit Daloze <eregontp@gmail.com>
-Mon Feb 21 10:58:39 2011 Aaron Patterson <aaron@tenderlovemaking.com>
+ * lib/irb/completion.rb: Use %w literal construction for long lists.
+ Patch by Dave Goodchild. [Fixes GH-299]
- * 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.
+Tue Jun 4 23:08:42 2013 Benoit Daloze <eregontp@gmail.com>
-Mon Feb 21 10:54:29 2011 Aaron Patterson <aaron@tenderlovemaking.com>
+ * ext/objspace/objspace.c: improve wording and remove duplicated comment.
+ Based on a patch by Dave Goodchild. [Fixes GH-299]
- * 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.
+Tue Jun 4 18:41:47 2013 Tanaka Akira <akr@fsij.org>
-Mon Feb 21 10:05:10 2011 Aaron Patterson <aaron@tenderlovemaking.com>
+ * bignum.c (bitlength_bdigit): Fix an off-by-one error.
- * 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
+Tue Jun 4 15:30:00 2013 Kenta Murata <mrkn@cookpad.com>
-Mon Feb 21 10:01:01 2011 Aaron Patterson <aaron@tenderlovemaking.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
- * 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.
+ * test/bigdecimal/test_bigdecimal_util.rb: fix for the above change.
-Mon Feb 21 00:38:56 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+Tue Jun 4 00:44:27 2013 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
- * test/ruby/test_system.rb (TestSystem#test_system_at):
- add testcase for bug4396.
+ * test/fileutils/test_fileutils.rb (TestFileUtils#test_mkdir): add
+ EEXIST for Linux. (suggested by nurse)
-Sun Feb 20 19:59:32 2011 Tanaka Akira <akr@fsij.org>
+Mon Jun 3 23:58:19 2013 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
- * ext/openssl/ossl_cipher.c: parenthesize macro arguments.
+ * lib/fileutils.rb (FileUtils.rmdir): use remove_tailing_slash.
+ * test/fileutils/test_fileutils.rb: test for above.
-Sun Feb 20 16:26:45 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Mon Jun 3 23:47:55 2013 Tanaka Akira <akr@fsij.org>
- * thread.c (exec_recursive): prevent temporary objects from GC.
+ * bignum.c (bitlength_bdigit): New function.
+ (rb_big_pow): Use bitlength_bdigit instead of ffs.
- * prevent temporary objects from GC, and should not use
- RSTRING_PTR() for function calls since it evaluates the argument
- a couple of times.
+Mon Jun 3 23:11:19 2013 Ayumu AIZAWA <ayumu.aizawa@gmail.com>
-Sun Feb 20 16:22:53 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * 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]
- * file.c (rb_file_flock): use rb_thread_io_blocking_region for the
- time being.
+Mon Jun 3 19:02:20 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Sun Feb 20 05:33:17 2011 Ryan Davis <ryand-ruby@zenspider.com>
+ * dir.c (is_hfs): use the file descriptor instead of a path.
- * lib/minitest/*.rb: Imported minitest 2.0.2 r6207.
- * test/minitest/*: ditto
+Mon Jun 3 07:15:17 2013 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-Sun Feb 20 02:14:09 2011 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.
- * 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).
+ * 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.
- * signal.c (init_sigchld): ditto.
+Mon Jun 3 03:40:29 2013 NARUSE, Yui <naruse@ruby-lang.org>
-Sun Feb 20 00:46:51 2011 Tanaka Akira <akr@fsij.org>
+ * vm_insnhelper.c (vm_yield_setup_block_args): partially revert r41019.
+ The code is not useless.
- * ext/openssl/ossl_bn.c: parenthesize macro arguments.
+Mon Jun 3 01:25:25 2013 Ayumu AIZAWA <ayumu.aizawa@gmail.com>
-Sat Feb 19 22:37:42 2011 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
+ * test/socket/test_sockopt.rb: change test name. follow r41037.
- * vm_insnhelper.c (vm_check_if_namespace): guard temporary object
- from GC.
+Mon Jun 3 01:08:43 2013 Ayumu AIZAWA <ayumu.aizawa@gmail.com>
-Sat Feb 19 06:36:27 2011 Aaron Patterson <aaron@tenderlovemaking.com>
+ * test/rinda/test_rinda.rb: rename functions introduced in r41009.
- * lib/test/unit.rb: partial revert of r30849. [ruby-core:32864]
+Sun Jun 2 23:33:42 2013 Kazuki Tsujimoto <kazuki@callcc.net>
- * test/testunit/test_rake_integration.rb: adding an integration test
- with the rake loader to prevent regressions.
+ * 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.
-Fri Feb 18 19:31:31 2011 Shugo Maeda <shugo@ruby-lang.org>
+Sun Jun 2 22:44:42 2013 NARUSE, Yui <naruse@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>
+ * 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)
-Fri Feb 18 00:28:39 2011 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
+Sun Jun 2 16:15:29 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * compile.c (get_exception_sym2type): guard temporary object from GC.
+ * dln_find.c (dln_find_exe, dln_find_file): remove deprecated
+ non-reentrant functions.
-Thu Feb 17 23:54:29 2011 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
+Sun Jun 2 15:04:35 2013 Zachary Scott <zachary@zacharyscott.net>
- * iseq.c (prepare_iseq_build): initialize iseq_compile_data::err_info
- with nil. this fix exception in rb_iseq_load().
+ * lib/cgi/util.rb, lib/erb.rb: Use String#b [Feature #8394] by znz
-Thu Feb 17 22:32:35 2011 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
+Sun Jun 2 14:10:21 2013 Zachary Scott <zachary@zacharyscott.net>
- * test/ruby/test_marshal.rb (test_marshal_dump_extra_iv):
- fix a typo of local variable. [Bug #3720] [ruby-dev:42083]
+ * lib/irb/lc/help-message: Apply english updates for irb --help #7510
-Thu Feb 17 21:32:53 2011 Tanaka Akira <akr@fsij.org>
+Sun Jun 2 12:03:58 2013 Zachary Scott <zachary@zacharyscott.net>
- * ext/openssl/ossl.h: parenthesize macro arguments.
+ * range.c: Fix rdoc on Range#bsearch [Bug #8242] [ruby-core:54143]
-Wed Feb 16 20:37:48 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+Sun Jun 2 02:08:37 2013 NARUSE, Yui <naruse@ruby-lang.org>
- * 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.
+ * enc/euc_jp.c: fix typo: the name of EUC-JIS-2004.
- * 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.
+Sat Jun 1 23:17:00 2013 Charlie Somerville <charliesome@ruby-lang.org>
-Wed Feb 16 20:17:06 2011 Tanaka Akira <akr@fsij.org>
+ * vm_eval.c (rb_mod_module_eval): mention in docs that arguments passed
+ to the method are passed to the block
- * ext/openssl/openssl_missing.h: parenthesize macro arguments.
+Sat Jun 1 17:58:13 2013 Akinori MUSHA <knu@iDaemons.org>
-Tue Feb 15 21:37:45 2011 Tanaka Akira <akr@fsij.org>
+ * lib/set.rb (Set#freeze, taint, untaint): Save a "self" by
+ utilizing super returning self, and add tests while at it.
- * ext/gdbm/gdbm.c: parenthesize macro arguments.
+Sat Jun 1 17:24:47 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Tue Feb 15 20:34:53 2011 Tanaka Akira <akr@fsij.org>
+ * compile.c (iseq_set_arguments): not a simple single argument if any
+ keyword arguments exist. [ruby-core:55203] [Bug #8463]
- * array.c (ary_join_1): fix array size.
+ * 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]
-Tue Feb 15 19:43:23 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+Sat Jun 1 11:16:22 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * configure.in: fix and resubmit r30621. [ruby-dev:43203]
+ * error.c (rb_exc_new_cstr): rename from rb_exc_new2.
-Tue Feb 15 15:41:30 2011 NARUSE, Yui <naruse@ruby-lang.org>
+ * error.c (rb_exc_new_str): rename from rb_exc_new3.
- * array.c (array_join): copy the encoding of the first element as
- an initial encoding.
+Sat Jun 1 10:13:17 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * array.c (array_join_0): ditto.
+ * string.c (rb_str_new[2-5], rb_{tainted,usascii}_str_new2),
+ (rb_str_buf_new2): remove old interfaces.
- * array.c (array_join_1): ditto.
+Sat Jun 1 08:00:46 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * array.c (inspect_ary): ditto.
+ * ext/zlib/zlib.c (gzfile_read, gzfile_read_all, gzfile_getc),
+ (gzreader_gets): check EOF. [ruby-core:55220] [Bug #8467]
- * array.c (array_join_1): add an argument to check the appending is
- first one or not.
+Sat Jun 1 07:32:15 2013 Tanaka Akira <akr@fsij.org>
-Tue Feb 15 15:40:53 2011 NARUSE, Yui <naruse@ruby-lang.org>
+ * bignum.c: Use BDIGIT type for hbase.
- * hash.c (inspect_i): copy the encoding of the first key as
- an initial encoding.
+Sat Jun 1 02:37:35 2013 NARUSE, Yui <naruse@ruby-lang.org>
-Mon Feb 14 15:00:16 2011 NARUSE, Yui <naruse@ruby-lang.org>
+ * ext/socket/option.c (sockopt_s_byte): constructor of the sockopt
+ whose value's is byte.
- * array.c (inspect_ary): don't taint the inspected result of a
- recursive array.
+ * ext/socket/option.c (sockopt_byte): getter for above.
-Tue Feb 15 15:43:29 2011 NARUSE, Yui <naruse@ruby-lang.org>
+ * ext/socket/option.c (inspect_byte): inspect for above.
- * 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.
+ * ext/socket/option.c (sockopt_s_ip_multicast_loop): constructor of
+ the sockopt whose optname is IP_MULTICAST_LOOP.
-Tue Feb 15 15:39:37 2011 NARUSE, Yui <naruse@ruby-lang.org>
+ * ext/socket/option.c (sockopt_ip_multicast_loop): getter for above.
- * string.c (rb_enc_cr_str_buf_cat): remove special treatment of
- ASCII-8BIT receivers.
+ * ext/socket/option.c (sockopt_s_ip_multicast_ttl): constructor of
+ the sockopt whose optname is IP_MULTICAST_TTL.
- * string.c (str_gsub): set initial encoding of the buffer as the
- same of the receiver. [ruby-core:35141]
+ * ext/socket/option.c (sockopt_ip_multicast_ttl): getter for above.
-Tue Feb 15 09:49:33 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+ * ext/socket/option.c (sockopt_inspect): use above.
- * 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.
+Sat Jun 01 01:50:00 2013 Kenta Murata <mrkn@mrkn.jp>
-Mon Feb 14 23:01:19 2011 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
+ * ext/bigdecimal/bigdecimal.c (BigDecimal_power): use rb_dbl2big
+ to convert a double value to a Bignum.
- * thread.c (rb_thread_io_blocking_region): reset th->waiting_fd
- after blocking region, because remaining waiting_fd might
- cause unnecessary IOError.
+Sat Jun 1 00:19:50 2013 Tanaka Akira <akr@fsij.org>
-Mon Feb 14 21:06:50 2011 URABE Shyouhei <shyouhei@ruby-lang.org>
+ * bignum.c (calc_hbase): Make hbase the maximum power of base
+ representable in BDIGIT.
- * configure.in: revert r30621. That revision introduced mkmf test
- failures and it turned out to be OK to revert. [ruby-dev:43203]
+Fri May 31 23:56:13 2013 Tanaka Akira <akr@fsij.org>
-Mon Feb 14 21:04:01 2011 Tanaka Akira <akr@fsij.org>
+ * bignum.c (calc_hbase): Extracted from rb_big2str0.
- * ext/fiddle/conversions.h: parenthesize macro arguments.
+Fri May 31 23:22:24 2013 Tanaka Akira <akr@fsij.org>
-Mon Feb 14 18:41:47 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+ * 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.
- * 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.
+Fri May 31 17:57:21 2013 Zachary Scott <zachary@zacharyscott.net>
-Mon Feb 14 17:28:34 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+ * process.c: Improve Process::exec documentation
- * test/ruby/test_system.rb (TestSystem#test_system_at):
- added test. [ruby-core:35218] (#4393)
+Fri May 31 17:26:42 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Mon Feb 14 13:15:35 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+ * vm_eval.c (rb_funcallv): add better names of rb_funcall2.
- * win32/win32.c (is_internal_cmd): if the first char of prog is '@',
- execute it via shell. [ruby-core:35218] (#4393)
+ * vm_eval.c (rb_funcallv_public): ditto for rb_funcall3.
-Mon Feb 14 10:33:45 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+Fri May 31 17:04:45 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * lib/test/unit.rb: revert r30863, because it causes too many noise.
+ * array.c (rb_ary_new_capa): add better names of rb_ary_new2.
-Mon Feb 14 07:34:55 2011 Tanaka Akira <akr@fsij.org>
+ * array.c (rb_ary_new_from_args): ditto for rb_ary_new3.
- * ext/curses/curses.c: parenthesize macro arguments.
+ * array.c (rb_ary_new_from_values): ditto for rb_ary_new4.
-Sun Feb 13 19:41:47 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Fri May 31 16:35:44 2013 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.
+ * configure.in (HAVE_ATTRIBUTE_FUNCTION_ALIAS): define to tell if
+ alias attribute is available.
-Sun Feb 13 09:56:44 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Fri May 31 16:03:23 2013 Zachary Scott <zachary@zacharyscott.net>
- * test/openssl/test_config.rb (OpenSSL#test_freeze): fix error
- message assertion.
+ * object.c, proc.c: s/call_seq/call-seq in rdoc. [Fixes GH-322]
- * test/io/nonblock/test_flush.rb (TestIONonblock#flush_test):
- return true to finish the test.
+Fri May 31 15:56:36 2013 Zachary Scott <zachary@zacharyscott.net>
- * test/syck/test_string.rb (Syck::TestString#test_non_binary_string):
- use assert_not instead of refute, unless required minitest
- explicitly.
+ * ext/openssl/ossl_ssl.c: Add missing paren in rdoc [Fixes GH-321]
- * test/test_prime.rb (TestPrime::sieve.Integer): ditto.
+Fri May 31 11:58:24 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * test/xmlrpc/webrick_testing.rb (WEBrick_Testing#start_server):
- catch IOError when server socket was closed.
+ * vm_method.c (set_visibility): extract from rb_mod_public(),
+ rb_mod_protected() and rb_mod_private().
-Sun Feb 13 07:39:51 2011 Yukihiro Matsumoto <matz@ruby-lang.org>
+Thu May 30 19:47:42 2013 Yusuke Endoh <mame@tsg.ne.jp>
- * enum.c (enum_inject): typo fixed. a patch from Gaku Ueda in
- [ruby-core:35216].
+ * 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]
-Sun Feb 13 00:48:47 2011 Tadayoshi Funaba <tadf@dotrb.org>
+ * test/ruby/test_keyword.rb: update a test for above.
- * lib/date.rb (Date#===): [ruby-core:35127]
+Thu May 30 17:55:04 2013 Zachary Scott <zachary@zacharyscott.net>
-Sun Feb 13 00:29:18 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * process.c: RDoc on Process.spawn
- * lib/test/unit.rb (Test::Unit::Options#process_args): always
- return options.
+Thu May 30 00:08:14 2013 Koichi Sasada <ko1@atdot.net>
- * lib/test/unit.rb (Test::Unit::RequireFiles#non_options): return
- if any test case get loaded.
+ * 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).
- * lib/test/unit.rb (Test::Unit::AutoRunner#initialize): do not add
- default directory if it is nil.
+Wed May 29 10:33:27 2013 Koichi Sasada <ko1@atdot.net>
- * lib/test/unit.rb (Test::Unit::AutoRunner#process_args): return
- true if any test cases to run.
+ * 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().
-Sat Feb 12 23:17:43 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Tue May 28 12:31:21 2013 Koichi Sasada <ko1@atdot.net>
- * lib/test/unit.rb (assert_include): add alias.
+ * 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'.
-Sat Feb 12 14:44:20 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * 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>
- * thread.c (rb_thread_io_blocking_region): new function to run
- blocking region with GIL released, for fd.
+ * test/objspace/test_objspace.rb: add a test.
- * thread.c (rb_thread_fd_close): implement. [ruby-core:35203]
+Tue May 28 11:30:02 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * vm.c (th_init): rename from th_init2.
+ * ext/extmk.rb (extmake): leave makefiles untouched if the content is
+ not changed, to get rid of unnecessary re-linking.
-Sat Feb 12 14:41:36 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Tue May 28 03:11:02 2013 Koichi Sasada <ko1@atdot.net>
- * lib/test/unit.rb (Test::Unit::AutoRunner#initialize): use
- default_dir if no test case given.
+ * 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)
- * lib/test/unit.rb (Test::Unit::Runner): rename from Test::Unit::Mini.
+ Note that hooks are not kicked immediately. Procs are kicked
+ at postponed_job.
- * lib/test/unit.rb (Test::Unit::GlobOption#non_options): run tests
- under base directory if no argument given.
+ This feature is a sample of new internal event and
+ rb_postponed_job API.
-Sat Feb 12 08:03:12 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Tue May 28 02:56:15 2013 Koichi Sasada <ko1@atdot.net>
- * test/ruby/test_settracefunc.rb (TestSetTraceFunc): ensure to use
- method_added hook defined in Module.
+ * gc.c (gc_stat): remove wrong rest_sweep().
-Sat Feb 12 01:04:02 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Tue May 28 02:44:23 2013 Koichi Sasada <ko1@atdot.net>
- * ruby.c (proc_options): enable rubygems if --gem option is given.
+ * gc.c (garbage_collect_body): fix GC_ENABLE_LAZY_SWEEP condition.
- * ruby.c (process_options): load rubygems if it is disabled but
- --gem option is given.
+ * gc.c (GC_NOTIFY): move debug print location and use stderr instead
+ of stdout.
-Fri Feb 11 23:27:50 2011 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+Tue May 28 02:07:21 2013 Koichi Sasada <ko1@atdot.net>
- * 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.
+ * vm_trace.c (rb_postponed_job_register_one): fix iteration bug.
-Fri Feb 11 23:17:04 2011 Tanaka Akira <akr@fsij.org>
+ * ext/-test-/postponed_job/postponed_job.c,
+ test/-ext-/postponed_job/test_postponed_job.rb: add a test.
- * ext/dl/cfunc.c: parenthesize macro arguments.
+Tue May 28 00:34:23 2013 Koichi Sasada <ko1@atdot.net>
-Fri Feb 11 21:41:53 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * 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) ...]
- * bin/testrb, test/runner.rb, lib/test/unit.rb: improve backward
- compatibility.
+ * ext/-test-/tracepoint/tracepoint.c,
+ test/-ext-/tracepoint/test_tracepoint.rb: modify a test.
-Fri Feb 11 19:45:26 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Tue May 28 00:18:57 2013 Koichi Sasada <ko1@atdot.net>
- * eval.c (ruby_cleanup): use rb_ary_free to free internal object.
+ * vm_trace.c (rb_postponed_job_flush): remove a wrong comment.
- * gc.h (RUBY_FREE_UNLESS_NULL): get rid of double free.
- [ruby-core:35192]
+Mon May 27 22:09:33 2013 Tanaka Akira <akr@fsij.org>
-Fri Feb 11 16:57:03 2011 Nobuyoshi Nakada <nobu@ruby-lang.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.
- * test/ruby/test_transcode.rb (test_from_cp50221): fix wrong
- assertion and move back.
+Mon May 27 19:25:47 2013 Koichi Sasada <ko1@atdot.net>
-Fri Feb 11 14:33:18 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * include/ruby/ruby.h: rename RUBY_INTERNAL_EVENT_FREE to
+ RUBY_INTERNAL_EVENT_FREEOBJ.
- * lib/test/unit/assertions.rb (assert_no_match): alias for
- backward compatibility.
+ * ext/-test-/tracepoint/tracepoint.c,
+ ext/objspace/object_tracing.c,
+ gc.c, vm_trace.c: catch up this change.
-Fri Feb 11 12:06:48 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Mon May 27 18:57:28 2013 Koichi Sasada <ko1@atdot.net>
- * ruby.c (add_gems, require_libraries, proc_options): add
- --require and --gem options.
+ * 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.
-Fri Feb 11 12:03:24 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * test/objspace/test_objspace.rb: add a test.
- * configure.in (rubygems): add --disable-rubygems option.
+ * ext/objspace/object_tracing.c: ditto.
-Fri Feb 11 11:39:03 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * gc.c (rb_gc_count): add. This function returns GC count.
- * template/fake.rb.in (CROSS_COMPILING): get rid of NameError.
+ * internal.h: add decl. of rb_gc_count(). Same as `GC.count'.
-Thu Feb 10 23:12:34 2011 Tanaka Akira <akr@fsij.org>
+Mon May 27 17:33:28 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * ext/dl/dl.h: parenthesize macro arguments.
+ * tool/rbinstall.rb (install_recursive): add maxdepth option.
-Wed Feb 9 23:11:27 2011 Tanaka Akira <akr@fsij.org>
+ * tool/rbinstall.rb (bin-comm): limit depth of bindir and reject empty
+ files. [ruby-core:55101] [Bug #8432]
- * ext/pty/pty.c: parenthesize macro arguments.
+Mon May 27 16:16:18 2013 Koichi Sasada <ko1@atdot.net>
-Tue Feb 8 11:47:11 2011 Loren Sands-Ramshaw <lorensr@gmail.com>
+ * vm_trace.c (rb_postponed_job_flush, rb_postponed_job_register): use
+ ruby_xmalloc/xfree. It is safe during GC.
- * array.c: documentation clarification in rotate, rotate!,
- index, and rindex. [ruby-core:35144]
+Mon May 27 09:24:03 2013 Koichi Sasada <ko1@atdot.net>
-Wed Feb 9 09:45:43 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+ * test/-ext-/postponed_job/test_postponed_job.rb: fix typo and class name.
- * test/rdoc/test_rdoc_encoding.rb: remove unnecessary (and wrong)
- platform-dependent hacks.
+Mon May 27 09:05:17 2013 Koichi Sasada <ko1@atdot.net>
-Wed Feb 9 00:47:18 2011 Tanaka Akira <akr@fsij.org>
+ * 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'.
- * ext/etc/etc.c: parenthesize macro arguments.
+ 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.
-Tue Feb 8 19:38:00 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ This change is mostly written by Aman Gupta (tmm1).
+ https://bugs.ruby-lang.org/issues/8107#note-12
+ [Feature #8107]
- * misc/ruby-mode.el (ruby-expr-beg): fix for invalid nest errors.
+ * 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.
-Tue Feb 8 19:22:59 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+ * ext/-test-/tracepoint/extconf.rb,
+ ext/-test-/tracepoint/tracepoint.c,
+ test/-ext-/tracepoint/test_tracepoint.rb: add a test.
- * configure.in (AC_MSG_CHECKING): fixed typo. the patch is
- created by Benoit Daloze. Thanks a lot. [Bug #4384][ruby-core:35148]
+Mon May 27 08:38:21 2013 Koichi Sasada <ko1@atdot.net>
-Tue Feb 8 16:04:03 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+ * ext/-test-/postponed_job/postponed_job.c: fix `init' function name.
- * io.c (rb_io_s_sysopen): use NUM2MODET() instead NUM2UINT().
+Mon May 27 06:22:41 2013 Koichi Sasada <ko1@atdot.net>
-Tue Feb 8 15:59:23 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+ * 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.
- * process.c (rb_run_exec_options_err): use MODET2NUM() instead
- LONG2NUM().
+ 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).
-Tue Feb 8 13:59:56 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+ This change is mostly written by Aman Gupta (tmm1).
+ https://bugs.ruby-lang.org/issues/8107#note-15
+ [Feature #8107]
- * configure.in: revert r30725. Now we have proper runtime fallback.
- Therefore, no need compile time disabling. (see r30762).
+ * gc.c: use postponed job API for finalizer.
-Tue Feb 8 01:00:21 2011 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
+ * common.mk: add dependency from vm_trace.c to debug.h.
- * process.c (proc_setgroups): add GC guard to prevent intermediate
- variable from GC.
+ * ext/-test-/postponed_job/extconf.rb, postponed_job.c,
+ test/-ext-/postponed_job/test_postponed_job.rb: add a test.
-Tue Feb 8 00:56:33 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * thread.c: implement postponed API.
- * misc/ruby-mode.el (ruby-expr-beg, ruby-in-here-doc-p): tell
- singleton class definitions from here documents.
+ * vm_core.h: ditto.
- * misc/ruby-mode.el (ruby-expr-beg, ruby-parse-partial): keyword
- followed by colon is label.
+Mon May 27 02:26:02 2013 Koichi Sasada <ko1@atdot.net>
-Mon Feb 7 22:56:16 2011 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
+ * gc.c (gc_stat): collect promote_operation_count and
+ types (RGENGC_PROFILE >= 2).
- * lib/benchmark.rb (Benchmark#bmbm): use ensure clause instead of
- Object#tap to restore STDOUT.sync.
+Mon May 27 01:40:58 2013 Koichi Sasada <ko1@atdot.net>
-Mon Feb 7 22:34:20 2011 Tanaka Akira <akr@fsij.org>
+ * 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.
- * 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 May 27 01:15:22 2013 Koichi Sasada <ko1@atdot.net>
-Mon Feb 7 16:05:32 2011 Eric Hodel <drbrain@segment7.net>
+ * hash.c (rb_hash_tbl_raw), internal.h: added.
+ Returns st_table without shading hash.
- * lib/rdoc: Upgrade to RDoc 3.5.3 Fixes [Bug #4376]
+ * array.c: use rb_hash_tbl_raw() for read-only purpose.
-Mon Feb 7 11:46:59 2011 NARUSE, Yui <naruse@ruby-lang.org>
+ * compile.c (iseq_compile_each): ditto.
- * common.mk (rdoc): add --encoding=UTF-8; ruby's rdoc must be UTF-8.
+ * gc.c (count_objects): ditto.
-Mon Feb 7 10:21:50 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+ * insns.def: ditto.
- * 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.
+ * process.c: ditto.
-Sun Feb 6 13:48:29 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * thread.c (clear_coverage): ditto.
- * ext/json/lib/json/common.rb (JSON::MissingUnicodeSupport.iconv):
- should not drop rest of the result. use Iconv.conv instead.
+ * vm_insnhelper.c: ditto.
-Sun Feb 6 12:46:02 2011 Eric Hodel <drbrain@segment7.net>
+Mon May 27 00:31:09 2013 NARUSE, Yui <naruse@ruby-lang.org>
- * string.c (gsub): Ensure result encoding is the same as input
- encoding. [Bug #4340].
+ * tool/make-snapshot: use ENV["AUTOCONF"] instead of directly using
+ literal "autoconf".
-Sun Feb 6 12:18:25 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Sun May 26 21:31:46 2013 Koichi Sasada <ko1@atdot.net>
- * parse.y (words, qwords): dispatch array events. based on a
- patch from Michael Edgar. [Bug #4365].
+ * 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().
-Sun Feb 6 12:12:59 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * include/ruby/intern.h: declare rb_hash_set_ifnone(hash, ifnone).
- * test/fileutils/fileasserts.rb (FileAssertions): separate module.
+ * marshal.c (r_object0): use RHASH_SET_IFNONE().
-Sun Feb 6 11:29:23 2011 Tanaka Akira <akr@fsij.org>
+ * ext/openssl/ossl_x509name.c (Init_ossl_x509name): ditto.
- * ext/dbm/dbm.c: parenthesize macro arguments.
+Sat May 25 23:22:38 2013 Kazuki Tsujimoto <kazuki@callcc.net>
-Sat Feb 5 22:01:59 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+ * 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.
- * lib/test/unit/assertions.rb (Test::Unit::Assertions#assert):
- revert r30796. r30797 and r30798 are an alternative fix.
- [ruby-dev:43174]
+Sat May 25 21:29:34 2013 NARUSE, Yui <naruse@ruby-lang.org>
-Sat Feb 5 21:47:09 2011 Nobuyoshi Nakada <nobu@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
- * parse.y (mlhs_basic): include mlhs_post for ripper. a patch
- from Michael Edgar at [ruby-core:35078].
+Sat May 25 18:46:23 2013 Yusuke Endoh <mame@tsg.ne.jp>
-Sat Feb 5 21:22:21 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * 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.
- * lib/test/unit/assertions.rb (assert_block): move from
- test/fileutils/fileasserts.rb.
+Sat May 25 18:08:06 2013 Yusuke Endoh <mame@tsg.ne.jp>
- * test/fileutils/fileasserts.rb (assert_block): pass arguments
- as-is. [ruby-dev:43174]
+ * 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 Feb 5 16:47:54 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+Sat May 25 17:06:25 2013 Koichi Sasada <ko1@atdot.net>
- * lib/test/unit/assertions.rb (Test::Unit::Assertions#assert):
- msg can be passed nil. [Bug #4371] [ruby-dev:43174]
+ * gc.c (after_gc_sweep): reduce full GC timing.
-Sat Feb 5 15:18:25 2011 Eric Hodel <drbrain@segment7.net>
+Sat May 25 11:28:49 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * lib/rdoc: Upgrade to RDoc 3.5.2
+ * variable.c (set_const_visibility): return without clearing method
+ cache if no arguments.
-Sat Feb 5 12:05:27 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * vm_method.c (set_method_visibility): ditto.
- * ext/syck/rubyext.c (syck_node_init_copy): SyckNode is not
- copiable. [ruby-core:35094]
+Sat May 25 11:27:32 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Sat Feb 5 11:48:47 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * vm_method.c (set_method_visibility): quote unprintable method name.
- * ext/openssl/ossl_cipher.c (ossl_cipher_alloc): leave data ptr
- NULL.
+Sat May 25 11:24:24 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * ext/openssl/ossl_cipher.c (ossl_cipher_new, ossl_cipher_initialize):
- allocate internal structure. [ruby-core:35094]
+ * eval.c (rb_frame_callee): returns the called name of the current
+ frame, not the previous frame.
- * ext/openssl/ossl_cipher.c (ossl_cipher_copy): ditto.
+ * 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.
-Sat Feb 5 11:29:10 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * variable.c (set_const_visibility): use the called name.
- * ext/json/parser/parser.h (GET_PARSER): raise TypeError.
+Sat May 25 08:58:23 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * ext/json/parser/parser.rl (cParser_initialize): ditto.
+ * string.c (rb_str_quote_unprintable): check if argument is a string.
- * ext/json/parser/parser.h (GET_PARSER): check if initialized.
- [ruby-core:35079]
+Fri May 24 19:32:00 2013 Charlie Somerville <charliesome@ruby-lang.org>
- * ext/json/parser/parser.rl (cParser_initialize): ditto.
+ * variable.c (set_const_visibility): use rb_frame_this_func() instead
+ of rb_frame_callee() for getting the name of the called method
-Sat Feb 5 10:09:31 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * test/ruby/test_module.rb: add test for private_constant with no args
- * load.c (rb_get_expanded_load_path): always expand load paths.
+Fri May 24 18:53:10 2013 Koichi Sasada <ko1@atdot.net>
-Sat Feb 5 09:38:08 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * 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!)
- * transcode.c (encoded_dup): extract.
+Fri May 24 17:07:00 2013 Charlie Somerville <charliesome@ruby-lang.org>
-Sat Feb 5 03:37:47 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * intern.h: remove dangling rb_class_init_copy declaration
+ [ruby-core:55120] [Bug #8434]
- * lib/fileutils.rb (FileUtils::LowMethods): make low level methods
- in NoWrite and DryRun to do nothing. [ruby-dev:43129]
+Fri May 24 16:31:23 2013 NARUSE, Yui <naruse@ruby-lang.org>
- * test/fileutils/fileasserts.rb: add message arguments.
+ * ext/strscan/strscan.c (strscan_aref): raise error if given
+ name reference is not found.
- * test/fileutils/fileasserts.rb (Test::Unit::Assertions#assert_block):
- show the given message.
+Fri May 24 15:48:18 2013 Koichi Sasada <ko1@atdot.net>
-Sat Feb 5 02:09:39 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * 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.
- * parse.y (lex_getline, parser_set_encode): set encoding of lines
- in SCRIPT_LINES__ as source encoding. [ruby-dev:43168]
+ * gc.c (after_gc_sweep): remove TODO comments.
-Sat Feb 5 02:08:37 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Fri May 24 11:04:00 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * vm.c (ruby_thread_data_type): add prefix.
+ * 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]
-Sat Feb 5 00:59:54 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+Fri May 24 02:57:17 2013 Koichi Sasada <ko1@atdot.net>
- * 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]
+ * object.c (rb_obj_clone): should not propagate OLDGEN status.
+ This propagation had caused WB miss for class.
- * vm.c (thread_data_type): remove static.
+Thu May 23 17:35:30 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Fri Feb 4 19:14:27 2011 Tanaka Akira <akr@fsij.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 '/'.
- * enc/trans/utf8_mac.trans: parenthesize macro arguments.
+Thu May 23 17:21:22 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Fri Feb 4 12:11:51 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+ * gc.c (gc_profile_dump_on): revert r40898. ok to show the record
+ accumulating while lazy_sweep().
- * string.c (str_utf8_nth): fixed a condition of optimized lead
- byte counting. [Bug #4366][ruby-dev:43170]
+Wed May 22 16:50:18 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Fri Feb 4 01:50:13 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+ * 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.
- * string.c (count_utf8_lead_bytes_with_word): wrote function
- comments.
+Wed May 22 15:18:59 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Fri Feb 4 00:14:55 2011 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]
- * ext/zlib/zlib.c (gzfile_reader_get_unused): no need to dup
- before rb_str_resurrect.
+ * win32/win32.c (setup_overlapped, finish_overlapped): extract from
+ rb_w32_read() and rb_w32_write().
-Thu Feb 3 20:04:44 2011 Tanaka Akira <akr@fsij.org>
+Wed May 22 14:19:56 2013 Koichi Sasada <ko1@atdot.net>
- * ext/curses/curses.c (CHECK): unused macro removed.
+ * gc.c (gc_prepare_free_objects, rest_sweep, lazy_sweep): fix position
+ of `during_gc' setting.
-Thu Feb 3 18:33:26 2011 NARUSE, Yui <naruse@ruby-lang.org>
+Wed May 22 07:36:08 2013 Koichi Sasada <ko1@atdot.net>
- * ext/zlib/zlib.c (gzfile_reader_get_unused): use rb_str_resurrect
- because gz->z.input is hidden string. [ruby-core:35057]
+ * 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.
-Thu Feb 3 16:34:10 2011 NARUSE, Yui <naruse@ruby-lang.org>
+ * gc.c (gc_prepare_free_objects): use `garbage_collect_body()'.
- * enc/shift_jis.c (code_to_mbc): cast as int from the subtraction of
- pointers.
+ * gc.c (slot_sweep, before_gc_sweep, after_gc_sweep): add logging code.
- * enc/utf_16le.c (utf16le_mbc_enc_len): use ptrdiff_t.
+Tue May 21 22:47:06 2013 NARUSE, Yui <naruse@ruby-lang.org>
- * enc/utf_32be.c (utf32be_left_adjust_char_head): ditto.
+ * ext/strscan/strscan.c (strscan_aref): support named captures.
+ patched by Konstantin Haase [ruby-core:54664] [Feature #8343]
- * enc/utf_32le.c (utf32le_left_adjust_char_head): ditto.
+Tue May 21 21:48:44 2013 Kouhei Sutou <kou@cozmixng.org>
-Thu Feb 3 16:31:43 2011 NARUSE, Yui <naruse@ruby-lang.org>
+ * test/ruby/test_dir_m17n.rb (TestDir_M17N#test_entries_compose):
+ Use #each instead of #map just for iteration.
- * include/ruby/missing.h: don't use HAVE_STDDEF_H because it never
- defined by configure though configure.bat defines it.
+Tue May 21 19:57:22 2013 Akinori MUSHA <knu@iDaemons.org>
- * include/ruby/ruby.h: move include stddef.h to defines.h
+ * ext/digest/lib/digest.rb (Digest::Class.file): Take optional
+ arguments that are passed to the constructor of the digest
+ class.
- * include/ruby/defines.h: ditto.
+Tue May 21 17:21:12 2013 Koichi Sasada <ko1@atdot.net>
-Wed Feb 2 20:25:04 2011 NARUSE, Yui <naruse@ruby-lang.org>
+ * gc.c: remove gc_profile_record::is_marked. always true.
- * 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.
+Tue May 21 17:13:40 2013 Koichi Sasada <ko1@atdot.net>
-Thu Feb 3 07:20:46 2011 Aaron Patterson <aaron@tenderlovemaking.com>
+ * gc.c: fix to collect additional information for GC::Profiler.
+ * major/minor GC
+ * trigger reason of GC
- * ext/psych/lib/psych/visitors/to_ruby.rb: use Regexp::NOENCODING
- rather than magic number.
+ * gc.c (gc_profile_dump_on): change reporting format with
+ added information.
- * ext/syck/lib/syck/rubytypes.rb: ditto
+ * gc.c (gc_profile_record_get): return added information by
+ :GC_FLAGS => array.
-Thu Feb 3 07:16:11 2011 Aaron Patterson <aaron@tenderlovemaking.com>
+Tue May 21 16:45:31 2013 Koichi Sasada <ko1@atdot.net>
- * re.c (Init_Regexp): added a constant for ARG_ENCODING_NONE
- [ruby-core:35054]
+ * 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.
- * test/ruby/test_regexp.rb: corresponding test.
+Tue May 21 16:29:09 2013 Koichi Sasada <ko1@atdot.net>
-Thu Feb 3 07:02:16 2011 Aaron Patterson <aaron@tenderlovemaking.com>
+ * 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.
- * ext/psych/lib/psych/visitors/to_ruby.rb: ARG_ENCODING_NONE regular
- expressions can round trip. [ruby-core:34969]
+ * tool/rdocbench.rb: added for `rdoc-bench'.
- * test/psych/test_yaml.rb: test for ARG_ENCODING_NONE regex
+Tue May 21 16:25:05 2013 Koichi Sasada <ko1@atdot.net>
- * ext/sych/lib/syck/rubytypes.rb: ARG_ENCODING_NONE regular
- expressions can round trip.
+ * gc.c (gc_profile_dump_on): `count' should be (int) because it
+ can be negative number.
+ And use pointer for `record' (don't copy).
- * test/syck/test_yaml.rb: test for ARG_ENCODING_NONE regex
+Tue May 21 03:11:18 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Wed Feb 2 17:09:22 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+ * dir.c (dir_each): compose HFS file names from
+ UTF8-MAC. [ruby-core:48745] [Bug #7267]
- * io.c (rb_io_fdatasync): Use fsync(2) if the underlying
- operating system does not support fdatasync(2).
+Tue May 21 03:08:52 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Wed Feb 2 14:51:08 2011 Eric Hodel <drbrain@segment7.net>
+ * test/ruby/envutil.rb (assert_separately): require envutil in the
+ child process too.
- * 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
+Tue May 21 03:07:26 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Wed Feb 2 09:27:53 2011 Eric Hodel <drbrain@segment7.net>
+ * string.c (rb_str_conv_enc_opts): should infect.
- * lib/rdoc: Upgrade to RDoc 3.5.1
+Mon May 20 22:24:45 2013 Akinori MUSHA <knu@iDaemons.org>
-Wed Feb 2 00:30:43 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+ * 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.
- * include/ruby/st.h (st_table): Added comment why we need __extension__.
+Mon May 20 22:00:31 2013 Zachary Scott <zachary@zacharyscott.net>
-Tue Feb 1 20:45:44 2011 Tanaka Akira <akr@fsij.org>
+ * lib/e2mmap.rb: Format of E2MM documentation
- * enc/encdb.c: parenthesize macro arguments.
+Mon May 20 21:41:15 2013 Zachary Scott <zachary@zacharyscott.net>
-Tue Feb 1 15:12:26 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+ * ext/extmk.rb: nodoc this file
- * 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.
+Mon May 20 20:43:32 2013 Zachary Scott <zachary@zacharyscott.net>
-Tue Feb 1 13:20:39 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+ * lib/cmath.rb: Remove duplicate RDoc heading from overview
- * 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.
+Mon May 20 20:36:19 2013 Zachary Scott <zachary@zacharyscott.net>
-Tue Feb 1 11:03:47 2011 Ryan Davis <ryan@lust.local>
+ * lib/securerandom.rb: Update position of overview for RDoc
- * lib/rubygems*: Import rubygems 1.5.0 (released version @ 1fb59d0)
- * test/rubygems: Ditto
+Mon May 20 19:33:55 2013 Benoit Daloze <eregontp@gmail.com>
-Tue Feb 1 08:01:39 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * math.c: improve and fix documentation of sin, tan and log
- * ext/io/console/console.c (console_set_winsize): new method to set
- console size. [EXPERIMENTAL]
+Mon May 20 19:31:49 2013 Benoit Daloze <eregontp@gmail.com>
- * ext/io/console/console.c (console_winsize): use GetWriteFD.
+ * lib/logger.rb (Logger::Application): show namespace in documentation
-Tue Feb 1 02:28:14 2011 Masaya Tarui <tarui@ruby-lnag.org>
+Mon May 20 11:50:12 2013 Zachary Scott <zachary@zacharyscott.net>
- * include/ruby/win32.h, win32/win32.c: add rb_w32_inet_ntop.
- inet_ntop's minimum supported client is Vista.
+ * lib/pp.rb: Revert part of r40834 and nodoc PP::ObjectMixin
+ [ruby-core:55068]
-Tue Feb 1 00:10:30 2011 NARUSE, Yui <naruse@ruby-lang.org>
+Mon May 20 10:40:21 2013 Nobuyoshi Nakada <nobu@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/webrick/htmlutils.rb (WEBrick::HTMLUtils#escape): replace HTML
+ meta chars even in non-ascii string. [Bug #8425] [ruby-core:55052]
- * 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
+ * lib/webrick/httputils.rb (WEBrick::HTTPUtils#{_escape,_unescape}):
+ fix %-escape encodings. [Bug #8425] [ruby-core:55052]
- * test/benchmark: remove unused variable warnings
+ * lib/webrick/httpservlet/filehandler.rb (set_dir_list): revert r20152
+ partially and fix misuse of bytesize and regexp repetition operator.
-Mon Jan 31 23:27:23 2011 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
+Mon May 20 08:03:51 2013 Zachary Scott <zachary@zacharyscott.net>
- * node.c (add_id): remove duplicated rb_id2str() call.
+ * lib/profiler.rb: Document Profiler__ methods
-Sun Jan 30 17:19:46 2011 Tanaka Akira <akr@fsij.org>
+Mon May 20 08:02:13 2013 Zachary Scott <zachary@zacharyscott.net>
- * missing/langinfo.c: parenthesize macro arguments.
+ * lib/tempfile.rb: nodoc Tempfile#inspect
-Mon Jan 31 21:57:39 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+Mon May 20 07:48:24 2013 Zachary Scott <zachary@zacharyscott.net>
- * configure.in: revert r30698.
+ * ext/stringio/stringio.c: Correct position of method rdoc
-Mon Jan 31 21:32:44 2011 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
+Mon May 20 07:27:41 2013 Zachary Scott <zachary@zacharyscott.net>
- * 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]
+ * math.c: RDoc formatting of Math core docs with domains and codomains
+ Patch by @eLobato [Fixes GH-309]
-Mon Jan 31 14:45:47 2011 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+Mon May 20 05:58:12 2013 Zachary Scott <zachary@zacharyscott.net>
- * lib/irb/locale.rb (IRB::Locale::#search_file):
- Gem might be undefined if --disable-gems. [ruby-core:34990]
+ * ext/bigdecimal/bigdecimal.c: Formatting for BigMath [Fixes GH-306]
+ Based on a patch by @eLobato.
+ * ext/bigdecimal/lib/bigdecimal/math.rb: ditto
-Mon Jan 31 12:26:14 2011 NARUSE, Yui <naruse@ruby-lang.org>
+Mon May 20 04:56:59 2013 Zachary Scott <zachary@zacharyscott.net>
- * 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.
+ * lib/forwardable.rb: Forwardable examples in overview were broken
+ Based on patch by @joem [Fixes GH-303] [Bug #8392]
-Mon Jan 31 04:45:12 2011 NARUSE, Yui <naruse@ruby-lang.org>
+Mon May 20 03:35:26 2013 Zachary Scott <zachary@zacharyscott.net>
- * 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]
+ * lib/optparse.rb: nodoc OptionParser::Version and SPLAT_PROC
-Sun Jan 30 17:19:46 2011 Tanaka Akira <akr@fsij.org>
+Mon May 20 03:16:52 2013 Zachary Scott <zachary@zacharyscott.net>
- * missing/crypt.c: parenthesize macro arguments.
+ * lib/pp.rb: Document PP::ObjectMixin [Fixes GH-312]
-Sun Jan 30 16:40:27 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Sun May 19 23:52:22 2013 Ayumu AIZAWA <ayumu.aizawa@gmail.com>
- * test/rubygems/test_gem_security.rb (TestGemSecurity): valid only
- if OpenSSL is available.
+ * test/webrick/test_htmlutils.rb: add test for WEBrick::HTMLUtils.
- * test/dl/test_dl2.rb (TestDL#test_sin): math functions do not
- work on x86_64 due to the design of DL2.
+Sun May 19 23:12:07 2013 Ayumu AIZAWA <ayumu.aizawa@gmail.com>
- * test/dl/test_func.rb (DL::TestFunc#test_{sinf,sin): ditto.
+ * encoding.c: document fix, change default script encoding.
+ patched by @windwiny [Fixes GH-310]
-Sun Jan 30 16:09:22 2011 Tanaka Akira <akr@fsij.org>
+Sun May 19 17:29:07 2013 Akinori MUSHA <knu@iDaemons.org>
- * strftime.c (rb_strftime_with_timespec): %G produces 4 digits.
+ * lib/set.rb (Set#delete_if, Set#keep_if): Add comments.
-Sun Jan 30 15:13:19 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Sun May 19 11:37:36 2013 Kazuki Tsujimoto <kazuki@callcc.net>
- * enc/emacs_mule.c (emacsmule_islead): 7bit range is also leading
- byte.
+ * ext/fiddle/extconf.rb: ignore rc version of libffi to fix build failure.
-Sun Jan 30 13:03:16 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Sun May 19 10:38:50 2013 Akinori MUSHA <knu@iDaemons.org>
- * hash.c (rb_hash_fetch_m): use useful message for longer key, not a
- nonsense id value.
+ * misc/ruby-electric.el (ruby-electric-delete-backward-char): Use
+ delete-char instead of delete-backward-char, which is an
+ interactive function.
- * string.c (rb_str_ellipsize): new function to ellipsize a string.
+Sun May 19 03:59:29 2013 NARUSE, Yui <naruse@ruby-lang.org>
- * include/ruby/encoding.h (rb_enc_step_back): new function to step
- back n characters.
+ * string.c (str_scrub0): added for refactoring.
-Sun Jan 30 12:53:38 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Sun May 19 03:48:26 2013 NARUSE, Yui <naruse@ruby-lang.org>
- * enc/emacs_mule.c (emacsmule_islead): fix inverse condition.
+ * lib/uri/common.rb (URI.decode_www_form): scrub string if decoded
+ bytes are invalid for the encoding.
-Sun Jan 30 09:37:25 2011 Yutaka Kanemoto <kanemoto@ruby-lang.org>
+Sun May 19 02:46:32 2013 Akinori MUSHA <knu@iDaemons.org>
- * io.c (struct argf): char behaves like an unsigned char
- by default on AIX.
+ * 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 Jan 30 08:02:55 2011 NARUSE, Yui <naruse@ruby-lang.org>
+Sun May 19 02:33:09 2013 Akinori MUSHA <knu@iDaemons.org>
- * configure.in: Mac OS X wrongly reports it has fdatasync(3).
+ * 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.
-Sun Jan 30 03:29:47 2011 NARUSE, Yui <naruse@ruby-lang.org>
+ * misc/ruby-electric.el (ruby-electric-delete-backward-char):
+ Introduce electric DEL that deletes what the previous electric
+ command has input.
- * ext/openssl/ossl_bn.c (GetBNPtr): add missing nil case.
- patched by Martin Bosslet. [ruby-core:34987]
+ * misc/ruby-electric.el (ruby-electric-matching-char): Make
+ electric quotes work again at the end of buffer.
-Sun Jan 30 01:02:28 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+Sun May 19 01:39:50 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * include/ruby/ruby.h: Added NUM2MODET() and MODET2NUM() default
+ * configure.in (setjmp-type): check if setjmpex() is really available.
+ workaround for i686-w64-mingw32 which declares it but lacks its
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.
+ * include/ruby/defines.h: include setjmpex.h only if also setjmpex()
+ is available.
-Fri Jan 28 17:33:28 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+Sat May 18 23:57:46 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * test/gdbm/test_gdbm.rb (TestGDBM#test_s_open_no_create): skip
- the test if gdbm version is 1.8.x.
+ * configure.in (setjmp-type): use setjmpex() on w64-mingw32 to get rid
+ of -Wclobbered warnings.
-Fri Jan 28 16:30:51 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+ * include/ruby/defines.h: include setjmpex.h here becase setjmp.h is
+ included from win32.h via intrin.h, winnt.h, and so on.
- * 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]
+Sat May 18 20:28:12 2013 Tanaka Akira <akr@fsij.org>
-Fri Jan 28 16:19:38 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+ * ext/socket/mkconstants.rb (INTEGER2NUM): Make less comparisons.
- * 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]
+Sat May 18 20:15:28 2013 NARUSE, Yui <naruse@ruby-lang.org>
-Fri Jan 28 16:04:54 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+ * string.c (str_scrub_bang): add String#scrub!. [Feature #8414]
- * test/ruby/test_require.rb (TestRequire#test_require_path_home_{1,2,3}):
- split from test_require_path_home.
+Sat May 18 16:59:52 2013 Tanaka Akira <akr@fsij.org>
-Fri Jan 28 13:04:38 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+ * ext/socket/mkconstants.rb (INTEGER2NUM): Renamed from INTEGER2VALUE.
- * configure.in (--with-valgrind): Fixed r29683. Now this option
- is really default on.
+Sat May 18 16:57:58 2013 Tanaka Akira <akr@fsij.org>
-Fri Jan 28 12:05:48 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+ * ext/socket/mkconstants.rb (INTEGER2VALUE): Suppress a warning:
+ comparison between signed and unsigned integer expressions
- * configure.in: Add #include<sys/stat.h> when struct stat is
- tested. Otherwise, incomplete type dereference error will occur.
+Sat May 18 16:38:39 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Fri Jan 28 11:53:19 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+ * compile.c (iseq_compile_each): forward anonymous and first keyword
+ rest argument one. [ruby-core:55033] [Bug #8416].
- * configure.in: redundant variable names made strange conftest
- error. Fixed it.
+Sat May 18 15:49:14 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Fri Jan 28 11:47:00 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+ * vm_core.h (rb_vm_tag): move jmpbuf between tag and prev so ensure to
+ be accessible.
- * 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.
+Sat May 18 11:05:14 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Fri Jan 28 11:23:54 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+ * enumerator.c (inspect_enumerator): use VALUE instead of mere char*
+ by using rb_sprintf() and rb_id2str().
- * io.c (rb_io_open): Use NUM2MODET() instead NUM2UINT().
- * io.c (rb_scan_open_args): ditto.
+ * enumerator.c (append_method): extract from inspect_enumerator().
-Fri Jan 28 10:58:20 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+Sat May 18 09:00:32 2013 Tanaka Akira <akr@fsij.org>
- * 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.
+ * ext/socket/mkconstants.rb (INTEGER2VALUE): Use LONG2FIX if possible.
-Fri Jan 28 02:37:18 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+Sat May 18 00:38:47 2013 Tanaka Akira <akr@fsij.org>
- * re.c (rb_reg_raise): add GC guard to prevent intermediate
- variable from GC.
+ * ext/socket/mkconstants.rb: Convert integer constants bigger than int
+ correctly.
-Fri Jan 28 02:35:41 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+Fri May 17 22:02:15 2013 Tanaka Akira <akr@fsij.org>
- * hash.c (rb_hash_fetch_m): add GC guard to prevent intermediate
- variable from GC.
+ * ext/socket/ifaddr.c: Use unsigned LONG_LONG to represent flags
+ because SunOS 5.11 (OpenIndiana) defines ifa_flags as uint64_t.
-Fri Jan 28 01:33:51 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+Fri May 17 21:47:00 2013 Zachary Scott <zachary@zacharyscott.net>
- * 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.
+ * cont.c: Typo in constant MAX_MACHINE_STACK_CACHE from '..MAHINE..'
+ patch by @schmurfy [Fixes GH-307]
-Fri Jan 28 01:27:42 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+Fri May 17 19:18:24 2013 Akinori MUSHA <knu@iDaemons.org>
- * test/ruby/test_process.rb (TestProcess#test_too_long_path2):
- Factored out from test_too_long_path. A test should only do
- one test.
+ * 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 ?\".
-Thu Jan 27 23:29:36 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Fri May 17 18:06:15 2013 Tanaka Akira <akr@fsij.org>
- * st.c (st_foreach): check if unpacked.
+ * 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.
-Thu Jan 27 23:14:19 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Fri May 17 17:34:48 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * misc/ruby-mode.el (ruby-mode-map): remove deprecated binding.
- use M-; instead.
+ * gc.c (rb_gc_guarded_ptr): unoptimize on other compilers than gcc and
+ msvc.
-Thu Jan 27 21:58:32 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+Fri May 17 11:06:48 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * bignum.c (rb_str_to_inum): get rid of too huge alloca().
+ * eval_intern.h (TH_PUSH_TAG): ensure jmpbuf to be accessible before
+ pushing tag to get rid of unaccessible tag by stack overflow.
-Thu Jan 27 21:43:29 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+Thu May 16 17:15:32 2013 NARUSE, Yui <naruse@ruby-lang.org>
- * object.c (rb_str_to_dbl): rewrite again. use ALLOCV instead
- rb_str_tmp_new().
+ * 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 Jan 27 21:41:47 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+Thu May 16 16:19:50 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * win32/win32.c: get rid of STRNDUPA(). It's dangerous API.
+ * win32/Makefile.sub (verconf.in): no longer used.
-Thu Jan 27 21:31:57 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+ * win32/Makefile.sub (config.status): fix typo.
- * win32/win32.c (rb_w32_aspawn): get rid of too huge alloca().
- [Bug #4330] [ruby-core:34898]
+ * configure.in, template/verconf.h.in (RUBY_EXEC_PREFIX): fix for
+ default prefix.
-Thu Jan 27 20:30:18 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+Thu May 16 13:12:27 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * 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
+ * template/verconf.h.in: generate verconf.h from the template and
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>
+Thu May 16 05:47:18 2013 Aaron Patterson <aaron@tenderlovemaking.com>
- * 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]
+ * ext/psych/lib/psych/visitors/yaml_tree.rb: fix syntax error.
+ Thanks @spastorino! [ruby-core:55011]
-Wed Jan 12 19:09:29 2011 Tanaka Akira <akr@fsij.org>
+Thu May 16 03:05:45 2013 Koichi Sasada <ko1@atdot.net>
- * enum.c (sort_by_i): reenter check more strictly.
- (sort_by_cmp): ditto.
- [ruby-dev:43003] reported by Usaku NAKAMURA.
+ * gc.c (rb_node_newnode): use newobj_of() instead of rb_newobj().
-Wed Jan 12 16:25:12 2011 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+Thu May 16 02:03:39 2013 Tanaka Akira <akr@fsij.org>
- * lib/net/http.rb (Net::HTTP#connect): makes it timeout during
- SSL handshake too. [ruby-core:34203]
- Patch by Marc Slemko.
+ * ext/socket/depend: Add a dependency for ifaddr.o.
- * test/net/http/test_http.rb (TestNetHTTP_v1_2#test_timeout_during_HTTP_session):
- test for [ruby-core:34203]
+Thu May 16 01:44:45 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * 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>
+ * common.mk (verconf.h): $< cannot be used in explicit rules with
+ nmake.
- * enum.c (enum_sort_by): use less temporary objects.
+ * win32/Makefile.sub (CONFIG_H): create verconf.in instead of
+ verconf.h.
-Fri Dec 31 11:46:47 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Thu May 16 01:25:07 2013 Aaron Patterson <aaron@tenderlovemaking.com>
- * configure.in (warnflags), lib/mkmf.rb (configuration): turn
- warnings into errors only for bundled extensions.
- [ruby-core:33815]
+ * ext/psych/lib/psych/visitors/yaml_tree.rb: only emit warnings when
+ -w is enabled.
-Fri Dec 31 11:15:57 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Wed May 15 18:58:17 2013 Koichi Sasada <ko1@atdot.net>
- * ext/zlib/zlib.c (sizeof): zlib.h mistakenly assumes the result
- of sizeof to be int, not size_t.
+ * 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.
-Fri Dec 31 10:27:34 2010 Tanaka Akira <akr@fsij.org>
+ * gc.c (rb_data_object_alloc, rb_data_typed_object_alloc):
+ use newobj_of().
- * st.c: parenthesize macro arguments.
+Wed May 15 17:55:49 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Fri Dec 31 03:23:26 2010 NARUSE, Yui <naruse@ruby-lang.org>
+ * configure.in (RUBY_PLATFORM): move to config.h as needed by
+ version.c.
- * vsnprintf.c (BSD__uqtoa): Fix overflow when long != quad_t.
- patched by Peter Weldon <peter.weldon AT null.net>
- [ruby-core:33985]
+Wed May 15 17:04:11 2013 Koichi Sasada <ko1@atdot.net>
-Fri Dec 31 03:00:34 2010 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+ * gc.c: add an additional RGENGC_PROFILE mode (2).
+ Profiling result can be check by GC.stat.
- * Makefile.in: remove unnecessary semicolons.
+ * gc.c (type_name): separate from obj_type_name().
-Thu Dec 30 23:09:47 2010 wanabe <s.wanabe@gmail.com>
+Wed May 15 16:58:24 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * vm.c (vm_define_method): guard iseq from GC while method definition.
- [ruby-dev:42832]
+ * configure.in: save configured load path values into verconf.in.
-Thu Dec 30 20:18:32 2010 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+ * common.mk (verconf.h): create from verconf.in with shvar_to_cpp.rb.
- * win32/Makefile.sub: ditto.
+ * tool/shvar_to_cpp.rb: turn shell variables into C macros.
+ [Bug #7959]
-Thu Dec 30 20:57:09 2010 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+ * loadpath.c: split load path staffs from version.c.
- * Makefile.in: Check V=1 argument if run "make clean" or similar.
+ * dmyloadpath.c: miniruby has no builtin load paths, so verconf.h is
+ not needed.
-Thu Dec 30 20:41:50 2010 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+Wed May 15 03:56:09 2013 Aaron Patterson <aaron@tenderlovemaking.com>
- * Makefile.in: Kill ugly line continuation.
+ * ext/psych/lib/psych/visitors/yaml_tree.rb: adding backwards
+ compatible YAMLTree.new method
-Thu Dec 30 11:49:40 2010 Tanaka Akira <akr@fsij.org>
+Wed May 15 02:22:16 2013 Aaron Patterson <aaron@tenderlovemaking.com>
- * sprintf.c: parenthesize macro arguments.
+ * 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 Dec 29 21:20:13 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Wed May 15 02:06:35 2013 Aaron Patterson <aaron@tenderlovemaking.com>
- * io.c (maygvl_copy_stream_wait_readwrite): define if USE_SENDFILE
+ * test/psych/helper.rb: envutil is not available outside Ruby, so
+ port the functions from envutil to the test helper.
-Wed Dec 29 20:37:43 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * test/psych/test_deprecated.rb: ditto
- * ext/extmk.rb: strip current directory prefix.
+ * test/psych/test_encoding.rb: ditto
- * enc/depend (clean): remove name2ctype.h when out-of-place build.
+Wed May 15 00:42:54 2013 NAKAMURA Usaku <usa@ruby-lang.org>
- * win32/Makefile.sub (clean-enc): pass V to inferior make.
+ * 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)
-Wed Dec 29 18:23:46 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+Tue May 14 23:43:05 2013 Tanaka Akira <akr@fsij.org>
- * re.c (rb_reg_expr_str): need to escape if the coderange is invalid.
+ * ext/socket/.document: Add ifaddr.c.
-Wed Dec 29 10:06:51 2010 Tanaka Akira <akr@fsij.org>
+Tue May 14 23:24:31 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * signal.c: parenthesize macro arguments.
+ * ext/socket/extconf.rb: check for if_nametoindex() for
+ i686-w64-mingw32, and check for declarations of if_indextoname() and
+ if_nametoindex().
-Wed Dec 29 07:22:15 2010 Eric Hodel <drbrain@segment7.net>
+ * ext/socket/ifaddr.c (ifaddr_ifindex): not-implement unless
+ if_nametoindex() is available.
- * lib/rake/rdoctask.rb: Deprecate in favor of rdoc/task.
+ * ext/socket/rubysocket.h: declare if_indextoname() and
+ if_nametoindex() if available but not declared.
-Wed Dec 29 07:07:06 2010 Eric Hodel <drbrain@segment7.net>
+Tue May 14 19:58:17 2013 CHIKANAGA Tomoyuki <nagachika@ruby-lang.org>
- * lib/rdoc: Import RDoc 3.1
+ * 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 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.
+Tue May 14 14:51:52 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * parse.y (compile_error): use above function.
- [ruby-core:33951] (#4217)
+ * 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 Dec 28 07:37:38 2010 Tanaka Akira <akr@fsij.org>
+Tue May 14 12:21:28 2013 NAKAMURA Usaku <usa@ruby-lang.org>
- * ruby.c: parenthesize macro arguments.
+ * win32/win32.c (NET_LUID): mingw may have NET_LUID and not defined
+ _IFDEF_.
-Tue Dec 28 07:17:11 2010 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+Tue May 14 03:33:17 2013 Koichi Sasada <ko1@atdot.net>
- * NEWS: add ARGF.write and so on.
+ * string.c (rb_str_new_frozen): remove debug print.
-Tue Dec 28 07:12:38 2010 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+Tue May 14 03:22:51 2013 Koichi Sasada <ko1@atdot.net>
- * NEWS: add new magic-comment. (warn-indent) [ruby-core:25442]
+ * include/ruby/ruby.h: enable to generate write barrier protected
+ arrays (T_ARRAY).
-Tue Dec 28 04:32:37 2010 Aaron Patterson <aaron@tenderlovemaking.com>
+Tue May 14 03:21:42 2013 Koichi Sasada <ko1@atdot.net>
- * ext/fiddle/extconf.rb: check for windows.h while building fiddle.
- Thanks Jon Forums! [ruby-core:33923]
+ * include/ruby/ruby.h: enable to generate write barrier protected
+ strings (T_STRING).
-Tue Dec 28 01:45:12 2010 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+Tue May 14 03:19:59 2013 Koichi Sasada <ko1@atdot.net>
- * NEWS: Add Zlib.deflate and Zlib.inflate.
- [ruby-dev:42833]
+ * include/ruby/ruby.h: enable to generate write barrier protected
+ objects (T_OBJECT).
-Mon Dec 27 21:22:33 2010 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+Tue May 14 03:17:15 2013 Koichi Sasada <ko1@atdot.net>
- * win32/configure.bat: Remove obsoleted coding rule. Now, we
- don't support to build on Windows 95/98 and Me.
+ * include/ruby/ruby.h: enable to generate write barrier protected
+ objects for numeric types (Float, Complex, Rational, Bignum).
-Mon Dec 27 18:27:13 2010 Tanaka Akira <akr@fsij.org>
+Tue May 14 03:10:59 2013 Koichi Sasada <ko1@atdot.net>
- * re.c: parenthesize macro arguments.
+ * include/ruby/ruby.h: enable RGENGC (USE_RGENGC)
+ but no type creates write protected (sunny) objects
+ (RGENGC_WB_PROTECTED_* == 0).
-Mon Dec 27 15:22:23 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+Tue May 14 02:47:30 2013 Koichi Sasada <ko1@atdot.net>
- * win32/README.win32: note to need NT based OS to build ruby.
+ * gc.c: support RGENGC. [ruby-trunk - Feature #8339]
+ See this ticket about RGENGC.
-Mon Dec 27 12:14:46 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+ * 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.
- * common.mk (EXTMK_ARGS): specify to pass macro V, because nmake
- doesn't pass it via MAKEFLAGS.
+ * include/ruby/ruby.h: disable RGENGC by default (USE_RGENGC == 0).
-Mon Dec 27 10:33:43 2010 NARUSE, Yui <naruse@ruby-lang.org>
+ * array.c: add write barriers for T_ARRAY and generate sunny objects.
- * ext/zlib/zlib.c (Init_zlib): Add Zlib.deflate and Zlib.inflate.
- [ruby-dev:42833]
+ * 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.
-Mon Dec 27 07:38:07 2010 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+ * bignum.c, marshal.c, random.c: generate T_BIGNUM sunny objects.
- * misc/rb_optparse.zsh: add compdef for generator.
+ * complex.c, include/ruby/ruby.h: add write barriers for T_COMPLEX
+ and generate sunny objects.
-Mon Dec 27 07:32:07 2010 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+ * rational.c (nurat_s_new_internal), include/ruby/ruby.h: add write
+ barriers for T_RATIONAL and generate sunny objects.
- * lib/optparse.rb (OptionParser#compsys): escape brackets too.
- [ruby-dev:42754]
+ * internal.h: add write barriers for RBasic::klass.
-Mon Dec 27 01:30:08 2010 Tanaka Akira <akr@fsij.org>
+ * numeric.c (rb_float_new_in_heap): generate sunny T_FLOAT objects.
- * ext/socket/mkconstants.rb: add IF_NAMESIZE.
- add a default for INET6_ADDRSTRLEN.
+ * object.c (rb_class_allocate_instance), range.c:
+ generate sunny T_OBJECT objects.
-Sun Dec 26 23:49:47 2010 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+ * string.c: add write barriers for T_STRING and generate sunny objects.
- * win32/Makefile.sub: suppress a strange error message when RMALL
- found no such file.
- * win32/rmall.bat: new.
+ * variable.c: add write barriers for ivars.
-Sun Dec 26 21:23:23 2010 <kosaki.motohiro@gmail.com>
+ * vm_insnhelper.c (vm_setivar): ditto.
- * win32/Makefile.sub: fix 'nmake clean-enc' breakage since r28322.
+ * include/ruby/ruby.h, debug.c: use two flags
+ FL_WB_PROTECTED and FL_OLDGEN.
-Sun Dec 26 22:25:07 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * node.h (NODE_FL_CREF_PUSHED_BY_EVAL, NODE_FL_CREF_OMOD_SHARED):
+ move flag bits.
- * ext/ripper/depend (ripper.y): fix messages with nmake.
- [ruby-dev:42896]
+Tue May 14 01:54:48 2013 Koichi Sasada <ko1@atdot.net>
-Sun Dec 26 22:24:14 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * 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.
- * file.c (file_expand_path): get rid of warnings caused by
- -Wdeclaration-after-statement on cygwin.
+ * gc.c (after_gc_sweep): use objspace_live_num() instead of removed
+ rb_objspace_t::marked_num.
-Sun Dec 26 20:28:34 2010 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+ * gc.c (gc_mark_ptr, gc_marks): remove rb_objspace_t::marked_num code.
- * process.c (before_exec): add small comment.
+ * 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.
-Sun Dec 26 20:52:21 2010 Tanaka Akira <akr@fsij.org>
+ * gc.c (lazy_sweep): call after_gc_sweep() if there are no sweep_able entry.
- * ext/socket/mkconstants.rb: define INET_ADDRSTRLEN as 16 if not
- available. fix compilation error on mswin32-60. reported by nobu.
+ * gc.c (rest_sweep, gc_prepare_free_objects): remove after_gc_sweep() call.
-Sun Dec 26 19:37:37 2010 Tanaka Akira <akr@fsij.org>
+Tue May 14 01:50:41 2013 Koichi Sasada <ko1@atdot.net>
- * ext/socket/option.c: define IFNAMSIZ if not available.
- fix compilation error on mingw32. reported by nobu.
+ * gc.c: disable GC_PROFILE_MORE_DETAIL (fix last commit).
-Sun Dec 26 12:16:29 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * gc.c (gc_prof_set_malloc_info): fix "objspace->heap.live_num" to
+ "objspace_live_num(objspace)". There is no such member variable.
- * lib/rdoc/ri/paths.rb (RDoc::RI::Paths::HOMEDIR): no exception if
- HOME is not set. [ruby-core:33867]
+Tue May 14 01:25:55 2013 Koichi Sasada <ko1@atdot.net>
-Sun Dec 26 11:39:11 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * gc.c: refactoring GC::Profiler.
- * parse.y (stmt): missing ripper rule. i.e., `a::B ||= c 1'.
- http://twitter.com/#!/wannabe53/status/18797576396472321
- http://twitter.com/#!/wannabe53/status/18798416150663168
+ * gc.c (gc_prof_sweep_timer_start/stop): removed because
+ they doesn't support lazy sweep.
-Sun Dec 26 11:15:50 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * gc.c (gc_prof_sweep_slot_timer_start/stop): added.
+ redefine `sweeping time' to accumulated time of all of
+ slot_sweep().
- * test/with_different_ofs.rb (DifferentOFS): should not affect
- original classes.
+ * 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.
-Sun Dec 26 09:35:07 2010 Tanaka Akira <akr@fsij.org>
+Tue May 14 00:48:55 2013 Koichi Sasada <ko1@atdot.net>
- * rational.c: parenthesize macro arguments.
+ * 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].
-Sun Dec 26 09:22:19 2010 Tanaka Akira <akr@fsij.org>
+ TODO: API design. RRATIONAL_SET(rat,num,den) is enough?
+ TODO: Setting constify variable with cast has same issue of r40691.
- * 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>".
+ * complex.c, rational.c: use above macros.
-Sun Dec 26 04:31:15 2010 Luis Lavena <luislavena@gmail.com>
+Mon May 13 21:49:17 2013 Tanaka Akira <akr@fsij.org>
- * ext/dl/win32/registry.rb: Corrected RegCreateKeyExA signature.
- Patch by Rafal Michalski [ruby-core:33874] [Ruby 1.9-Bug#4203]
+ * ext/socket/extconf.rb: Check socketpair again.
+ It is required on Unix.
-Sun Dec 26 02:31:58 2010 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+Mon May 13 21:20:32 2013 NAKAMURA Usaku <usa@ruby-lang.org>
- * io.c (advice_arg_check): Change argument check.
- Now, an unsupported advice makes NotImplementedError.
- [ruby-dev:42887] [Ruby 1.9-Feature#4204]
+ * win32/win32.c (getipaddrs): use alternative interface name if
+ available, because if_nametoindex() requires them.
-Sun Dec 26 03:00:53 2010 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+Mon May 13 20:23:24 2013 NAKAMURA Usaku <usa@ruby-lang.org>
- * ext/socket/extconf.rb: Fix build error which was introduced r30372.
+ * win32/win32.c, include/ruby/win32.h (getipaddrs): [experimental]
+ emulate getipaddrs(3) on Unix.
-Sun Dec 26 01:37:10 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+ * win32/Makefile.sub, configure.in (LIBS): need iphlpapi.lib for above
+ function.
- * ext/socket/extconf.rb: check the existence of if_indextoname().
+ * include/ruby/win32.h (socketpair): rb_w32_socketpair() doesn't
+ substitute for any function, so use non-prefixed name.
- * ext/socket/option.c: yesterday's akr's commits destroyed the build of
- some unrelated platforms (such as Windows).
+ * ext/socket/extconf.rb (socketpair); follow above change.
-Sat Dec 25 23:29:11 2010 Tanaka Akira <akr@fsij.org>
+Mon May 13 20:11:06 2013 Koichi Sasada <ko1@atdot.net>
- * 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>".
+ * iseq.c (prepare_iseq_build): remove additional line break.
- * ext/socket/extconf.rb: check struct ip_mreq and struct ip_mreqn.
+Mon May 13 19:29:54 2013 Koichi Sasada <ko1@atdot.net>
-Sat Dec 25 22:49:10 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * 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].
- * test/csv: DifferentOFS needs to be include in each classes.
+ * 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);
- * test/digest/test_digest_extend.rb (TestDigestExtend#setup):
- should not depend on the result of previous tests
+ TODO: API design. rb_obj_reveal() should be replaced with others.
- * test/with_different_ofs.rb (DifferentOFS::WithDifferentOFS): give
- name.
+ 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)".
- * test/with_different_ofs.rb (DifferentOFS): test suite for test
- suites affected by $,.
+ * 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.
- * test/digest/test_digest_extend.rb (TestDigestExtend): should not
- assume $, invariant.
+ * 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.
- * test/csv/test_data_converters.rb, test/csv/test_table.rb: don't
- call setup within tests.
+ * ext/coverage/coverage.c, ext/readline/readline.c,
+ ext/socket/ancdata.c, ext/socket/init.c,
+ * ext/zlib/zlib.c: ditto.
-Sat Dec 25 20:01:40 2010 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+Mon May 13 18:44:14 2013 Koichi Sasada <ko1@atdot.net>
- * io.c (pipe_open): Added rb_thread_atfork(). We must reinitialize
- GVL at new process creation.
+ * *.c, parse.y, insns.def: use RARRAY_AREF/ASET macro
+ instead of using RARRAY_PTR().
-Sat Dec 25 18:26:55 2010 Tanaka Akira <akr@fsij.org>
+Mon May 13 16:53:53 2013 Koichi Sasada <ko1@atdot.net>
- * 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>".
+ * 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].
- * ext/socket/extconf.rb: check struct ipv6_mreq.
+Mon May 13 15:31:10 2013 Koichi Sasada <ko1@atdot.net>
-Sat Dec 25 18:04:30 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * object.c (rb_obj_setup): added.
- * lib/csv.rb (CSV.foreach): 'rb' mode is defaulted in open.
+ * include/ruby/ruby.h (OBJSETUP): use rb_obj_setup() instead of
+ a macro.
- * lib/csv.rb (CSV#init_separators): cannonicalize encoding options
- as Encoding objects.
+Mon May 13 15:24:16 2013 Koichi Sasada <ko1@atdot.net>
-Sat Dec 25 18:30:34 2010 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+ * gc.c (rb_data_object_alloc): check klass only if klass is not 0.
+ klass==0 means internal object.
- * thread.c (rb_thread_atfork): Add small comment why we need
- reset random seed.
+Mon May 13 14:57:28 2013 Koichi Sasada <ko1@atdot.net>
-Sat Dec 25 17:33:55 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * gc.c (rb_data_object_alloc, rb_data_typed_object_alloc):
+ use NEWOBJ_OF() instead of NEWOBJ().
- * test/csv/base.rb (TestCSV.with_different_ofs): give name to
- anonymous classes.
+Mon May 13 14:51:59 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * lib/csv.rb (CSV#init_separators): use IO#gets with length
- parameter to get rid of wrong convertion.
+ * 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]
- * lib/csv.rb (CSV::foreach, CSV#initialize): directly use encoding
+ * vm_method.c (rb_method_entry_at): return the method entry for id at
+ klass, without ancestors.
- * lib/csv.rb, test/csv: should not assume $, invariant.
+ * class.c (rb_singleton_class_get): get the singleton class if exists,
+ or nil.
-Sat Dec 25 16:08:06 2010 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+Mon May 13 10:20:59 2013 Yuki Yugui Sonoda <yugui@google.com>
- * signal.c: change rb_atomic_t definition from uchar to uint.
+ * ext/openssl/ossl_ssl.c: Disabled OpenSSL::SSL::SSLSocket if
+ defined(OPENSSL_NO_SOCK).
-Sat Dec 25 15:04:05 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ 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.
- * test/csv/test_encodings.rb (TestEncodings#setup): fix evil test
- suite writing to the source directory.
+Mon May 13 10:30:04 2013 Zachary Scott <zachary@zacharyscott.net>
-Sat Dec 25 15:08:08 2010 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+ * hash.c: Hash[] and {} are not equivalent by @eam [Fixes GH-301]
- * 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]
+Mon May 13 10:04:22 2013 Zachary Scott <zachary@zacharyscott.net>
-Sat Dec 25 14:27:09 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * random.c: Document Random::DEFAULT by @eLobato [Fixes GH-304]
- * io.c (rb_io_extract_encoding_option): accept Encoding object as
- encoding: optional argument. [ruby-dev:42884]
+Sun May 12 21:12:42 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Sat Dec 25 13:37:55 2010 Ryan Davis <ryand-ruby@zenspider.com>
+ * include/ruby/ruby.h (OFFT2NUM): RUBY_REPLACE_TYPE also defines macro
+ to convert int type to VALUE if found.
- * lib/minitest/*.rb: Imported minitest 2.0.2 r6093.
+Wed May 8 13:46:52 2013 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-Sat Dec 25 13:05:59 2010 Tanaka Akira <akr@fsij.org>
+ * include/ruby/intern.h (rb_iv_set, rb_iv_get): removed. Because
+ ruby.h has a declaration for that.
- * random.c: parenthesize macro arguments.
+Wed May 8 13:49:06 2013 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-Sat Dec 25 12:48:50 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * 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.
- * load.c (rb_f_require_relative): don't omit return type.
+Sun May 12 17:52:23 2013 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-Sat Dec 25 11:06:00 2010 Eric Hodel <drbrain@segment7.net>
+ * configure.in: removes 'ac_cv_func_fseeko=yes' form MinGW
+ specific definitions.
- * load.c (rb_f_require_relative): Add documentation.
+Sun May 12 17:25:46 2013 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-Sat Dec 25 11:02:52 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * file.c (rb_file_s_truncate): use correct type. chsize takes
+ a long.
- * ext/zlib/zlib.c (gzreader_gets): support optional length
- parameter.
+Sun May 12 17:18:46 2013 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
- * ext/zlib/zlib.c (gzfile_read, gzfile_readpartial): length should
- be long.
+ * process.c: move '#define HAVE_SPAWNV 1' to win32/Makefile.sub.
+ * win32/Makefile.sub: see above.
-Sat Dec 25 10:51:03 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Sun May 12 17:13:32 2013 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
- * ext/json/generator/generator.{c,h} (fbuffer_free_only_buffer):
+ * configure.in: removes AC_CHECK_FUNCS(setitimer) because it's
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>
+Sun May 12 17:08:16 2013 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
- * NEWS: remove #object_id. [ruby-dev:42840]
+ * configure.in: removes AC_CHECK_FUNCS(pause) because it's unused.
-Wed Dec 22 08:56:39 2010 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+Sun May 12 17:05:18 2013 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
- * NEWS: add Module#private_constant and Module#public_constant.
- [ruby-dev:39685][ruby-core:32698]
+ * signal.c (rb_f_kill): fixes typo. s/HAS_KILLPG/HAVE_KILLPG/.
-Wed Dec 22 07:59:23 2010 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+Sun May 12 17:03:27 2013 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
- * NEWS: add IO#advise. [ruby-core:33110] [Ruby 1.9-Feature#4038]
+ * configure.in: abort if gettimeofday doesn't exist.
-Tue Dec 21 23:45:31 2010 Yukihiro Matsumoto <matz@ruby-lang.org>
+Sun May 12 16:31:27 2013 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
- * gc.c (Init_GC): move back object_id to Kernel. [ruby-dev:42840]
+ * 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.
-Tue Dec 21 12:45:16 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Sun May 12 16:03:41 2013 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
- * configure.in (target_archs): remove temporary objects.
+ * configure.in: removes AC_CHECK_FUNC(fseeko, fseeko64, ftello,
+ ftello64). They are not used from anywhere.
- * enc/Makefile.in, enc/depend (clean): remove work directories.
+ * 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'.
-Tue Dec 21 07:39:12 2010 Tanaka Akira <akr@fsij.org>
+Sun May 12 15:51:47 2013 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
- * pack.c: parenthesize macro arguments.
+ * configure.in: remove AC_CHECK_FUNC(close). It is not used from
+ anywhere.
-Tue Dec 21 06:25:43 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Sun May 12 15:50:45 2013 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
- * test/rexml/test_contrib.rb (ContribTester#test_pos): should not
- use fixed path name for tests. [ruby-dev:42827]
+ * configure.in: adds comments for setjmp check.
- * test/rexml/test_sax.rb (SAX2Tester#test_socket): should not use
- fixed port for tests. [ruby-dev:42828]
+Sun May 12 15:38:09 2013 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-Tue Dec 21 06:10:18 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * configure.in: move clock_gettime() check into regular place.
- * compile.c (setup_args), vm.c (invoke_block_from_c),
- vm_insnhelper.c (caller_setup_args): reverted r30241 and r30243
- except for the test.
+Wed May 8 13:45:53 2013 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-Tue Dec 21 01:41:42 2010 Masaya Tarui <tarui@ruby-lnag.org>
+ * configure.in: add getenv() declaration check.
+ * dln_find.c: add HAVE_DECL_GETENV test.
- * 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.
+Sun May 12 15:33:18 2013 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-Tue Dec 21 01:18:06 2010 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+ * configure.in: sorts AC_CHECK_FUNCS()s as alphabetical order.
- * error.c: Fix build error for win32. This regression was
- introduced by r30271.
+Wed May 8 13:41:57 2013 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-Tue Dec 21 00:59:40 2010 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+ * bignum.c: remove redundant decl for big_lshift() big_rshift().
- * 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.
+Sun May 12 16:06:43 2013 NARUSE, Yui <naruse@ruby-lang.org>
-Sat Dec 18 16:02:27 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * ext/socket/rubysocket.h (rsock_inspect_sockaddr): as r40646
+ check HAVE_TYPE_STRUCT_SOCKADDR_DL.
- * 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 May 11 23:01:58 2013 NARUSE, Yui <naruse@ruby-lang.org>
-Sat Dec 18 14:42:29 2010 Tanaka Akira <akr@fsij.org>
+ * 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
- * load.c: parenthesize macro arguments.
+Sat May 11 22:07:42 2013 Tanaka Akira <akr@fsij.org>
-Sat Dec 18 10:07:04 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * test/rinda/test_rinda.rb: Socket.getifaddrs may returns an interface
+ which #addr method returns nil for venet0 in OpenVZ.
- * compile.c (setup_args, iseq_compile_each): optimize AMPER LAMBDA
- combination as block.
+Sat May 11 21:56:34 2013 Tanaka Akira <akr@fsij.org>
-Fri Dec 17 22:07:16 2010 Yukihiro Matsumoto <matz@ruby-lang.org>
+ * ext/socket/raddrinfo.c (rsock_inspect_sockaddr): Add casts to
+ suppress warnings.
- * gc.c (Init_GC): move #__id__ and #object_id to BasicObject.
- [ruby-dev:42778]
+Sat May 11 17:28:51 2013 Tanaka Akira <akr@fsij.org>
-Fri Dec 17 19:35:13 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * ext/socket: New method, Socket.getifaddrs, implemented.
+ [ruby-core:54777] [Feature #8368]
- * test/mkmf/base.rb (TestMkmf::FakeLog): capture output from mkmf.
+Sat May 11 00:47:22 2013 Tanaka Akira <akr@fsij.org>
- * test/mkmf/test_find_executable.rb (test_find_executable):
- suppress meaningless differences for chkbuild.
+ * 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/
-Fri Dec 17 13:26:54 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+Fri May 10 23:56:34 2013 Nobuyoshi Nakada <nobu@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]
+ * 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]
-Fri Dec 17 07:04:09 2010 Tanaka Akira <akr@fsij.org>
+Fri May 10 20:22:40 2013 Tanaka Akira <akr@fsij.org>
- * iseq.c: parenthesize macro arguments.
+ * configure.in: Move library checks into "Checks for libraries." part.
-Fri Dec 17 04:18:37 2010 Eric Hodel <drbrain@segment7.net>
+Fri May 10 19:32:01 2013 Tanaka Akira <akr@fsij.org>
- * transcode.c (str_encode): Alter comment for better wording and ri
- output.
+ * configure.in: Reformat arguments of AC_CHECK_HEADERS and
+ AC_CHECK_FUNCS to track modifications easily.
-Fri Dec 17 00:05:40 2010 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+Fri May 10 12:01:36 2013 Tanaka Akira <akr@fsij.org>
- * 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]
+ * 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
- * io.c (do_io_advise): Helper function.
- * io.c (io_advise_sym_to_const): ditto.
+Thu May 9 22:00:35 2013 Tanaka Akira <akr@fsij.org>
-Thu Dec 16 23:29:20 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * ext/socket/ancdata.c (bsock_sendmsg_internal): controls_num should
+ not be negative.
- * tool/rbinstall.rb (bin-comm): use transformed name.
- [ruby-dev:42777]
+Thu May 9 21:09:57 2013 Tanaka Akira <akr@fsij.org>
-Thu Dec 16 21:52:07 2010 Tanaka Akira <akr@fsij.org>
+ * 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.
- * io.c: parenthesize macro arguments.
+Thu May 9 20:43:41 2013 Tanaka Akira <akr@fsij.org>
-Thu Dec 16 21:46:39 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * 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.
- * tool/mkconfig.rb (RbConfig): honor ARCHFLAGS and RC_ARCHS to
- override embedded ARCH_FLAG value on universal-darwin.
+Thu May 9 12:06:07 2013 Tanaka Akira <akr@fsij.org>
-Thu Dec 16 19:50:12 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+ * ext/socket/rubysocket.h, ext/socket/unixsocket.c,
+ ext/socket/ancdata.c: Use HAVE_STRUCT_MSGHDR_MSG_CONTROL instead
+ of HAVE_ST_MSG_CONTROL.
- * 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 May 9 11:30:02 2013 Zachary Scott <zachary@zacharyscott.net>
-Thu Dec 16 08:04:47 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * string.c: Add call-seq alias for String#=== [Bug #8381]
- * node.h (RNode): match the type of flags to RBasic, and renamed
- nd_file as nd_reserved.
+Thu May 9 11:14:18 2013 Zachary Scott <zachary@zacharyscott.net>
- * iseq.c (set_relation), vm_insnhelper.c (vm_cref_push): nd_file
- is always zero-cleared.
+ * doc/contributing.rdoc: Add guide for contributing to CRuby
-Thu Dec 16 07:22:30 2010 Ryan Davis <ryand-ruby@zenspider.com>
+Thu May 9 04:55:49 2013 Tanaka Akira <akr@fsij.org>
- * lib/minitest/unit.rb: Imported minitest 2.0.1 r6079.
+ * configure.in: Check socket library again. shutdown() is used in
+ io.c.
-Wed Dec 15 20:45:02 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+Thu May 9 01:52:31 2013 Tanaka Akira <akr@fsij.org>
- * lib/test/unit.rb (process_args): need to setup @help to print options.
+ * configure.in: Don't check socketpair. socketpair is not used in
+ ruby command itself.
-Wed Dec 15 11:19:33 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+Thu May 9 01:05:41 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * test/zlib/test_zlib.rb (test_to_io): forgotten to fix with r30201.
+ * class.c (rb_mod_included_modules): should not include non-modules.
+ [ruby-core:53158] [Bug #8025]
-Wed Dec 15 11:07:34 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Wed May 8 22:46:59 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * io.c (simple_sendfile): enable on Mac OS X.
+ * class.c (rb_mod_included_modules): should not include the original
+ module itself. [ruby-core:53158] [Bug #8025]
- * io.c (nogvl_copy_stream_sendfile): moved precheck of copy length.
+Wed May 8 17:43:55 2013 NARUSE, Yui <naruse@ruby-lang.org>
- * io.c (nogvl_copy_stream_sendfile): should wait for both of
- read/write fds.
+ * io.c (rb_io_ext_int_to_encs): ignore internal encoding if external
+ encoding is ASCII-8BIT. [Bug #8342]
-Wed Dec 15 07:11:55 2010 Tanaka Akira <akr@fsij.org>
+Wed May 8 13:49:38 2013 NARUSE, Yui <naruse@ruby-lang.org>
- * hash.c: parenthesize macro arguments.
+ * ext/json/generator/generator.c (isArrayOrObject): cast char to
+ unsigned char. [Bug #8378]
-Wed Dec 15 04:02:00 2010 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+Wed May 8 13:46:10 2013 NARUSE, Yui <naruse@ruby-lang.org>
- * 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]
+ * ext/json/generator/depend: fix dependencies [Bug #8379]
-Wed Dec 15 03:41:31 2010 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+ * ext/json/parser/depend: ditto.
- * 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]
+Wed May 8 13:07:17 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Tue Dec 14 23:53:52 2010 NARUSE, Yui <naruse@ruby-lang.org>
+ * parse.y (parser_yylex): fail if $, @, @@ are not followed by a valid
+ name character. [ruby-core:54846] [Bug #8375].
- * io.c (simple_sendfile): improve linux compatibility on FreeBSD,
- and now it works. But without cpuset -l 0, it still gets stuck.
+Wed May 8 13:06:31 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Tue Dec 14 20:31:33 2010 Tanaka Akira <akr@fsij.org>
+ * include/ruby/ruby.h (ISGRAPH): add missing macro.
- * gc.c: parenthesize macro arguments.
+Wed May 8 06:42:56 2013 NARUSE, Yui <naruse@ruby-lang.org>
-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>
+ * 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().
- * common.mk (help): there is no reason to use the abbreviation for here.
+Tue May 7 22:12:34 2013 Tanaka Akira <akr@fsij.org>
-Tue Dec 14 15:03:46 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+ * ext/readline/readline.c (insert_ignore_escape): Add a cast to
+ unsigned char * before dereference.
+ This suppress a warning on Cygwin.
- * test/ruby/test_io.rb (test_reopen, test_reinitialize): should close
- the temporary files.
+Tue May 7 12:15:24 2013 Tanaka Akira <akr@fsij.org>
-Tue Dec 14 14:24:15 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+ * 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.
- * test/ruby/test_io.rb (make_tempfile): change the prefix from 'foo'
- to 'test_io' because the old one is meaningless and inconvenient.
+Tue May 7 12:12:42 2013 Tanaka Akira <akr@fsij.org>
- * test/ruby/test_io.rb (test_binmode_after_closed): the temporary file
- maked by make_temfile is already closed.
+ * 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.
-Tue Dec 14 13:52:19 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+Tue May 7 12:10:52 2013 Tanaka Akira <akr@fsij.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).
+ * ext/socket/socket.c (socket_s_ip_address_list): Cast EXTRA_SPACE as
+ int. This suppress a warning.
-Tue Dec 14 13:34:33 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+Tue May 7 12:09:29 2013 Tanaka Akira <akr@fsij.org>
- * ext/zlib/zlib.c (gzfile_s_open): should close the IO if some error
- occurs in initializing.
+ * 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.
-Tue Dec 14 13:04:16 2010 NARUSE, Yui <naruse@ruby-lang.org>
+Tue May 7 12:07:35 2013 Tanaka Akira <akr@fsij.org>
- * lib/net/http.rb (Net::HTTPRequest#send_request_body_data):
- set binmode to tempfile.
+ * pack.c (swap32): Don't redefine it if it is already defined.
+ Bionic defines it.
+ (swap64): Ditto.
-Tue Dec 14 12:55:46 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+Mon May 6 20:50:37 2013 Tanaka Akira <akr@fsij.org>
- * test/zlib/test_zlib.rb (*): should close files associated with zlib.
+ * 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 Dec 14 11:30:17 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+Sun May 5 18:56:52 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * test/ruby/test_argf.rb (test_inplace_rename_impossible): unlink
- the renamed temporary file on no_safe_rename platforms.
+ * insns.def (defined): use vm_search_superclass() like as normal super
+ call. based on a patch <https://gist.github.com/wanabe/5520026> by
+ wanabe.
- * 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.)
+ * vm_insnhelper.c (vm_search_superclass): return error but not raise
+ exceptions.
-Tue Dec 14 11:27:07 2010 NARUSE, Yui <naruse@ruby-lang.org>
+ * vm_insnhelper.c (vm_search_super_method): check the result of
+ vm_search_superclass and raise exceptions on error.
- * 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.
+Sun May 5 16:29:41 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Tue Dec 14 11:25:20 2010 NARUSE, Yui <naruse@ruby-lang.org>
+ * insns.def (defined): get method entry from the method top level
+ frame, not block frame. [ruby-core:54769] [Bug #8367]
- * 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.
+Sun May 5 13:28:54 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Tue Dec 14 10:25:57 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+ * template/ruby.pc.in (Cflags): use rubyarchhdrdir for multiarch.
+ [Bug #7874]
- * ext/openssl/ossl_asn1.c (ossl_asn1_decode0): how many gcc-c99isms
- must a man mend; before he can build with VC? r30178
+Sat May 4 07:20:00 2013 Zachary Scott <zachary@zacharyscott.net>
-Mon Dec 13 21:26:33 2010 NARUSE, Yui <naruse@ruby-lang.org>
+ * doc/security.rdoc: Add note about reporting security vulns
- * io.c (simple_sendfile): disable the use of sendfile(2) on
- FreeBSD. It blocks on TestIO#test_copy_stream_socket.
+Sat May 4 04:13:27 2013 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-Mon Dec 13 18:35:33 2010 NARUSE, Yui <naruse@ruby-lang.org>
+ * include/ruby/defines.h (RUBY_ATTR_ALLOC_SIZE): New for
+ attribute((alloc_size(params))).
- * io.c: define USE_SENDFILE on FreeBSD or DragonFly BSD.
- Remove Mac OS X because its argument is different from them.
+ * include/ruby/defines.h (xmalloc, xmalloc2, xcalloc)
+ (xrealloc, xrealloc2): Annotated by RUBY_ATTR_ALLOC_SIZE.
+ * include/ruby/ruby.h (rb_alloc_tmp_buffer): ditto.
-Mon Dec 13 12:00:09 2010 Tanaka Akira <akr@fsij.org>
+Fri May 3 19:32:13 2013 Takeyuki FUJIOKA <xibbar@ruby-lang.org>
- * file.c: parenthesize macro arguments.
+ * lib/cgi/util.rb: All class methods modulized.
+ We can use these methods like a function when "include CGI::Util".
+ [Feature #8354]
-Mon Dec 13 11:21:14 2010 NARUSE, Yui <naruse@ruby-lang.org>
+Fri May 3 14:09:45 2013 Tanaka Akira <akr@fsij.org>
- * io.c (simple_sendfile): added for BSD version of sendfile(2).
+ * 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
-Mon Dec 13 09:50:09 2010 NARUSE, Yui <naruse@ruby-lang.org>
+Fri May 3 13:35:26 2013 Nobuyoshi Nakada <nobu@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]
+ * ext/socket/{getaddrinfo,getnameinfo}.c: define socklen_t if not
+ defined, e.g., older VC.
-Sun Dec 12 23:45:27 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Fri May 3 13:29:11 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * compile.c (iseq_compile_each): fix for __goto__ and __label__
- where were totally broken.
+ * 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.
-Sun Dec 12 22:45:43 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Fri May 3 13:22:12 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * common.mk (ID_H_INCLUDES): now id.h depends on vm_opts.h.
+ * win32/win32.c (poll_child_status): fix build error on older mingw.
-Sun Dec 12 20:42:47 2010 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+Fri May 3 00:15:58 2013 Ayumu AIZAWA <ayumu.aizawa@gmail.com>
- * template/id.h.tmpl: suppress all warning: "SUPPORT_JOKE" is not
- defined. [ruby-dev:42730]
+ * common.mk: remove timestamps in distclean-ext realclean-ext.
-Sun Dec 12 20:35:07 2010 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+Thu May 2 23:23:49 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * misc/rb_optparse.zsh: update how to install.
+ * object.c (rb_obj_is_kind_of): skip prepending modules.
+ [ruby-core:54742] [Bug #8357]
- * misc/rb_optparse.zsh: avoid error when setopt noclobber.
+ * object.c (rb_class_inherited_p): ditto.
+ [ruby-core:54736] [Bug #8357]
- * lib/optparse.rb: fix typo. pointed out at
- <http://d.hatena.ne.jp/nagachika/20101207>.
+Thu May 2 22:11:47 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Sun Dec 12 13:27:35 2010 Tanaka Akira <akr@fsij.org>
+ * bin/irb: remove dead code from sample/irb.rb.
- * eval_error.c: parenthesize macro arguments.
+Thu May 2 17:32:45 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Sun Dec 12 11:53:24 2010 Tanaka Akira <akr@fsij.org>
+ * marshal.c (copy_ivar_i): get rid of overwriting already copied
+ instance variables. c.f. [Bug #8276]
- * error.c: parenthesize macro arguments.
+Thu May 2 16:55:43 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Sun Dec 12 04:01:58 2010 NARUSE, Yui <naruse@ruby-lang.org>
+ * thread.c (id_locals): use cached ID.
- * string.c (rb_str_inspect): fix: extra back slash is added when
- the string is dummy encoding and includes \x22 or \x5C.
+ * vm.c (ruby_thread_init): ditto.
-Sun Dec 12 02:42:24 2010 Aaron Patterson <aaron@tenderlovemaking.com>
+ * defs/id.def: add more predefined IDs used in core.
- * ext/openssl/ossl_asn1.c: indefinite length BER to DER encoding is
- properly supported. Thanks Martin Bosslet! [ruby-core:33082]
+Thu May 2 13:42:42 2013 Ryan Davis <ryand-ruby@zenspider.com>
-Sat Dec 11 17:43:34 2010 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+ * lib/minitest/*: Imported minitest 4.7.4 (r8483)
+ * test/minitest/*: ditto
- * ext/bigdecimal/bigdecimal.h: suppress "warning: 'VPrint' declared
- 'static' but never defined".
+Thu May 2 11:32:22 2013 NAKAMURA Usaku <usa@ruby-lang.org>
-Sat Dec 11 09:24:57 2010 Tanaka Akira <akr@fsij.org>
+ * 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.
- * encoding.c: parenthesize macro arguments.
+ * test/ruby/test_process.rb (TestProcess#test_no_curdir): maybe now
+ we can test it.
-Sat Dec 11 08:12:48 2010 Eric Hodel <drbrain@segment7.net>
+ * test/ruby/test_thread.rb (TestThread#test_thread_timer_and_interrupt):
+ ditto.
- * ext/openssl/ossl.c, ext/openssl/ossl_pkey_rsa.c: Document RSA, RSA
- encryption/decryption and PKCS #5 encryption/decryption.
+Thu May 2 11:24:00 2013 Zachary Scott <zachary@zacharyscott.net>
-Sat Dec 11 06:23:41 2010 Eric Hodel <drbrain@segment7.net>
+ * lib/yaml.rb: nodoc EngineManager, add History doc #8344
- * ext/openssl/ossl_x509name.c: include Comparable to provide #==.
- Document OpenSSL::X509::Name#<=>. [Ruby 1.9-Feature#4116]
+Wed May 1 21:11:17 2013 Tanaka Akira <akr@fsij.org>
-Sat Dec 11 05:48:28 2010 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+ * time.c (localtime_with_gmtoff_zone): musl libc may return NULL for
+ tm_zone.
- * ext/tk/lib/multi-tk.rb: infinite loop on method_missing at loading.
- [ruby-dev:42716] [Ruby 1.9-Bug#4129]
+Wed May 1 18:59:36 2013 Benoit Daloze <eregontp@gmail.com>
- * ext/tk/lib/multi-tk.rb: when no eventloop is running, ruby freezes at
- exit.
+ * enum.c (Enumerable#chunk): fix grammar of error message
+ for symbols beginning with an underscore [Bug #8351]
-Sat Dec 11 02:23:15 2010 Aaron Patterson <aaron@tenderlovemaking.com>
+Wed May 1 16:47:47 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * ext/openssl/extconf.rb: try pkgconfig first, then fall back to
- normal have_library, etc. Thanks Erik Hollensbe. [ruby-core:32406]
+ * ext/curses/extconf.rb (curses_version): try once for each tests, a
+ function or a variable. fallback to variable for old SVR4.
-Fri Dec 10 22:33:39 2010 Tanaka Akira <akr@fsij.org>
+Wed May 1 16:17:46 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * dln_find.c: parenthesize macro arguments.
+ * ext/extmk.rb (extmake): extensions not to be installed should not
+ make static libraries, but make dynamic libraries always.
-Fri Dec 10 20:05:42 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Wed May 1 12:20:00 2013 Zachary Scott <zachary@zacharyscott.net>
- * template/id.h.tmpl (ruby_method_ids): suppress warnings.
- [ruby-dev:42730]
+ * lib/rake/version.rb: Fix RDoc warning with :include: [Bug #8347]
-Fri Dec 10 18:29:20 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Wed May 1 11:40:25 2013 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.
+ * defs/id.def (predefined): add "idProc".
-Fri Dec 10 18:28:40 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * eval.c (frame_func_id): use predefined IDs.
- * cygwin/GNUmakefile.in (SCRIPTPROGRAMS): ignore backup files and etc.
+ * proc.c (mnew, mproc, mlambda): use predefined IDs.
- * cygwin/GNUmakefile.in (scriptbin): set executable bit.
+ * vm.c (rb_vm_control_frame_id_and_class): ditto.
- * tool/rbinstall.rb (install_recursive): always skip default ignored
- files. if block is given, call it instead of calling install.
+ * vm.c (Init_VM): ditto.
- * tool/rbinstall.rb (bin-comm): use install_recursive.
+Tue Apr 30 23:18:00 2013 Zachary Scott <zachary@zacharyscott.net>
-Fri Dec 10 18:12:31 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * lib/benchmark.rb: Update Benchmark results on newer CPU
- * test/mkmf/base.rb (TestMkmf#config_value): extract macro value from
- config.h.
+Tue Apr 30 12:31:40 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * test/mkmf/test_sizeof.rb (TestMkmf::TestSizeof#test_sizeof_builtin),
- (TestMkmf::TestSizeof#test_sizeof_struct): more tests.
+ * proc.c (mproc, mlambda): use frozen core methods instead of plain
+ global methods, so that methods cannot be overridden.
+ [ruby-core:54687] [Bug #8345]
- * lib/mkmf.rb (check_signedness): should use the prelude code.
- [ruby-dev:42731]
+ * vm.c (Init_VM): define proc and lambda on the frozen core object.
- * lib/mkmf.rb (Logging.log_close): separate from Logging.logfile.
+ * include/ruby/intern.h (rb_block_lambda): add declaration instead of
+ deprecated rb_f_lambda.
- * test/mkmf/base.rb (TestMkmf::MKMFLOG): show mkmf.log at failures.
+Mon Apr 29 17:02:30 2013 NARUSE, Yui <naruse@ruby-lang.org>
- * test/mkmf/base.rb (TestMkmf#teardown): close log file for each tests.
+ * ext/nkf/nkf-utf8/nkf.h: Bionic libc doesn't have locale.
+ [Feature #8338]
-Fri Dec 10 11:36:43 2010 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
- * compile.c (enum): remove a comma at end of enumerator list.
+Mon Apr 29 06:58:30 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * constant.h (rb_const_flag_t): ditto.
+ * ext/openssl/ossl_bn.c (ossl_bn_initialize): no need of alloca for
+ small fixed size array.
- * iseq.h (enum catch_type): ditto.
+ * ext/openssl/ossl_bn.c (ossl_bn_initialize): check overflow first,
+ and use alloca for small size input.
- * iseq.h (enum defined_type): ditto.
+Mon Apr 29 00:40:13 2013 Benoit Daloze <eregontp@gmail.com>
- * vm_core.h (enum iseq_type): ditto.
+ * lib/yaml.rb: Clarify documentation about YAML being always Psych.
+ Give a tip about using Syck. See #8344.
- * vm_core.h (enum vm_special_object_type): ditto.
+Sun Apr 28 23:34:01 2013 Benoit Daloze <eregontp@gmail.com>
-Fri Dec 10 10:47:53 2010 NARUSE, Yui <naruse@ruby-lang.org>
+ * lib/yaml.rb: Use another trick to define the YAML module.
+ https://twitter.com/n0kada/status/328342207511801856
- * sprintf.c (_HAVE_SANE_QUAD_): Don't forget LP64, r30156.
+Sun Apr 28 23:19:00 2013 Zachary Scott <zachary@zacharyscott.net>
-Fri Dec 10 10:37:17 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+ * lib/pp.rb: Update PP module overview by @geopet
- * sprintf.c (_HAVE_SANE_QUAD_): if a certain platform has LONG_LONG in
- 8 byte, it might be sane quad. [ruby-core:33634]
+Sun Apr 28 22:04:37 2013 Hiroshi Shirosaki <h.shirosaki@gmail.com>
-Fri Dec 10 10:07:59 2010 NARUSE, Yui <naruse@ruby-lang.org>
+ * 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]
- * lib/net/http.rb: remove version 1.1 features.
+Sun Apr 28 12:38:04 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Fri Dec 10 02:18:02 2010 Aaron Patterson <aaron@tenderlovemaking.com>
+ * README.EXT: correct method name to be used. [Bug #7982]
- * ext/openssl/ossl_x509store.c (ossl_x509stctx_cleanup): removing C
- implementation of `cleanup`.
+ * README.EXT.ja: add notes too.
- * 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]
+Sun Apr 28 10:35:00 2013 Zachary Scott <zachary@zacharyscott.net>
-Thu Dec 9 20:14:39 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * object.c: With feedback from Steve Klabnik, reverted a change to
+ #untrusted? and #tainted?. Also adjusted grammar for $SAFE levels
- * parse.y (lvar_defined_gen, shadowing_lvar_gen, dvar_defined): no
- warnings for unused method and block arguments.
- [ruby-dev:42718] [ruby-dev:42724]
+Sun Apr 28 10:10:00 2013 Zachary Scott <zachary@zacharyscott.net>
-Thu Dec 9 19:25:49 2010 Tanaka Akira <akr@fsij.org>
+ * lib/yaml.rb: Disable setting YAML const twice [ruby-core:54642]
- * dln.c: parenthesize macro arguments.
+Sun Apr 28 09:50:00 2013 Zachary Scott <zachary@zacharyscott.net>
-Thu Dec 9 18:51:06 2010 Tanaka Akira <akr@fsij.org>
+ * object.c: Documentation for taint and trust [Bug #8162]
- * lib/webrick/accesslog.rb (WEBrick::AccessLog#format): support
- %{remote}p for logging remote (client) port number.
- [ruby-dev:42670]
+Sun Apr 28 09:40:00 2013 Zachary Scott <zachary@zacharyscott.net>
-Thu Dec 9 11:00:30 2010 Yukihiro Matsumoto <matz@ruby-lang.org>
+ * README.EXT: Copy note from r40505 for rb_sprintf() [Bug #7982]
- * 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]
+Sun Apr 28 08:28:00 2013 Zachary Scott <zachary@zacharyscott.net>
- * array.c (rb_ary_reverse_m): ditto.
+ * ext/curses/curses.c: Update Curses::Window example for nicer output
+ Patch by Michal Suchanek [Bug #8121] [ruby-core:53520]
- * array.c (rb_ary_rotate_m): ditto.
+Sun Apr 28 08:10:00 2013 Zachary Scott <zachary@zacharyscott.net>
-Wed Dec 8 21:38:40 2010 NARUSE, Yui <naruse@ruby-lang.org>
+ * README.EXT: Update note from r40504, by Jeremy Evans [Bug #7982]
- * ext/dl/lib/dl/struct.rb: clean a warning: assigned but unused
- variable. patched by Kouhei Yanagita. [ruby-dev:42722]
+Sun Apr 28 08:02:00 2013 Zachary Scott <zachary@zacharyscott.net>
- * ext/dl/lib/dl/import.rb: ditto.
+ * README.EXT: Add note to warn use of %i in Exceptions [Bug #7982]
-Wed Dec 8 21:36:16 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Sun Apr 28 02:41:05 2013 Tanaka Akira <akr@fsij.org>
- * parse.y (shadowing_lvar_gen): fix line number. [ruby-dev:42718]
+ * configure.in: Fix a typo. Should check endgrent() instead of
+ endgrnam().
-Wed Dec 8 20:37:11 2010 Tanaka Akira <akr@fsij.org>
+Sun Apr 28 00:35:45 2013 Tanaka Akira <akr@fsij.org>
- * dir.c: parenthesize macro arguments.
+ * process.c (obj2gid): Don't call endgrent() if not exist.
+ Bionic (Android's libc) don't have endgrent().
-Tue Dec 7 22:37:15 2010 Masaya Tarui <tarui@ruby-lnag.org>
+ * configure.in: Check endgrnam function.
- * io.c (io_read): duplicate string if shared. [ruby-dev:42719]
+Sat Apr 27 23:53:00 2013 Charlie Somerville <charlie@charliesomerville.com>
-Tue Dec 7 22:31:08 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * lib/yaml.rb: add security warning to YAML documentation
- * lib/optparse.rb (OptionParser::Officious): separate completion
- options from --help. [ruby-dev:42690]
+Sat Apr 27 23:25:00 2013 Zachary Scott <zachary@zacharyscott.net>
- * lib/optparse.rb (OptionParser::Completion#candidate),
- (OptionParser::Switch#compsys): remove unused variables.
+ * lib/yaml.rb: Documentation for YAML module [Bug #8213]
-Tue Dec 7 22:05:25 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Sat Apr 27 20:19:21 2013 Tanaka Akira <akr@fsij.org>
- * transcode.c (transcode_loop): call default handler of the given
- hash, method, proc or [] method as fallback. [ruby-dev:42692]
+ * thread_pthread.c (ruby_init_stack): Add STACK_GROW_DIR_DETECTION.
+ This fixes a compilation failure while cross-compiling for Tensilica
+ Xtensa Processor.
-Tue Dec 7 21:59:37 2010 Kouhei Sutou <kou@cozmixng.org>
+Sat Apr 27 19:32:44 2013 Benoit Daloze <eregontp@gmail.com>
- * lib/rexml/light/node.rb: remove circular require.
+ * thread.c: fix typos and documentation
-Tue Dec 7 21:56:01 2010 Kouhei Sutou <kou@cozmixng.org>
+Sat Apr 27 19:04:55 2013 Tanaka Akira <akr@fsij.org>
- * test/rexml/test_light.rb: really suppress a warning.
+ * 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
-Tue Dec 7 21:51:57 2010 Kouhei Sutou <kou@cozmixng.org>
+Sat Apr 27 17:22:50 2013 Tanaka Akira <akr@fsij.org>
- * test/rexml/test_light.rb: suppress a warning.
+ * ext/socket/extconf.rb: Redundant test removed.
-Tue Dec 7 21:14:03 2010 Tanaka Akira <akr@fsij.org>
+Sat Apr 27 16:00:10 2013 Tanaka Akira <akr@fsij.org>
- * debug.c: parenthesize macro arguments.
+ * ext/socket/extconf.rb (test_recvmsg_with_msg_peek_creates_fds):
+ Extracted.
-Tue Dec 7 21:06:38 2010 Kouhei Sutou <kou@cozmixng.org>
+Sat Apr 27 15:50:40 2013 Tanaka Akira <akr@fsij.org>
- * lib/rexml/doctype.rb, test/rexml/test_doctype.rb: suppress warnings.
- [ruby-core:33305]
- Reported by Aaron Patterson. Thanks!!!
+ * 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.
-Tue Dec 7 18:56:52 2010 NARUSE, Yui <naruse@ruby-lang.org>
+ * thread.c (TIMEVAL_SEC_MAX): Use SIGNED_INTEGER_MAX.
+ (TIMEVAL_SEC_MIN): Use SIGNED_INTEGER_MIN.
- * ext/nkf/lib/kconv.rb (String#kconv): fix typo and update rdoc.
- patched by Kouhei Yanagita [ruby-dev:42696]
+Sat Apr 27 10:52:52 2013 Tanaka Akira <akr@fsij.org>
-Tue Dec 7 20:32:11 2010 Kouhei Sutou <kou@cozmixng.org>
+ * 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).
- * test/rexml/test_doctype.rb: add Accessor to test case name.
+Fri Apr 26 23:34:59 2013 Kouhei Sutou <kou@cozmixng.org>
-Tue Dec 7 20:31:02 2010 Kouhei Sutou <kou@clear-code.com>
+ * 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.
- * test/rexml/test_doctype.rb: Doctype -> DocType.
+Fri Apr 26 22:53:55 2013 Kouhei Sutou <kou@cozmixng.org>
-Tue Dec 7 20:29:23 2010 Kouhei Sutou <kou@clear-code.com>
+ * 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.
- * test/rexml/test_doctype_mixin.rb: rename to ...
- * test/rexml/test_doctype.rb: ... this to remove needless name.
+Fri Apr 26 21:48:29 2013 Kouhei Sutou <kou@cozmixng.org>
-Tue Dec 7 17:03:16 2010 Shugo Maeda <shugo@ruby-lang.org>
+ * lib/rss/atom.rb (RSS::Atom::Entry): Fix indent of document comment.
- * lib/net/imap.rb (xlist): supported the XLIST command, which is an
- extension by Apple and Google. patch by Geoff Youngs.
- [ruby-core:33521]
+Fri Apr 26 21:21:17 2013 Kouhei Sutou <kou@cozmixng.org>
-Tue Dec 7 08:00:44 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * lib/rss/maker.rb (RSS::Maker): Fix indent of document comment.
- * configure.in, win32/Makefile.sub (WERRORFLAG): flag to treat
- warnings as errors.
+Fri Apr 26 18:41:04 2013 Tanaka Akira <akr@fsij.org>
- * lib/mkmf.rb (Logging.postpone): yield log file object.
+ * ext/socket/extconf.rb: Use a block of enable_config() for
+ --{enable,disable}-close-fds-by-recvmsg-with-peek configure option
- * lib/mkmf.rb (xsystem): add options, :werror only right now.
+Fri Apr 26 18:08:08 2013 Tanaka Akira <akr@fsij.org>
- * lib/mkmf.rb (with_werror): check as if warnings are errors.
+ * dir.c (dir_set_pos): Fix a compilation error when seekdir() is not
+ exist.
- * lib/mkmf.rb (convertible_int): make declaration conflict
- warnings errors not to pass wrong type. [ruby-dev:42684]
+Fri Apr 26 17:41:17 2013 Tanaka Akira <akr@fsij.org>
- * lib/mkmf.rb (COMMON_MACROS): get rid of conflicts.
+ * thread_pthread.c (ruby_init_stack): Add STACK_GROW_DIR_DETECTION.
+ This fixes a compilation failure while cross-compiling for ARM.
- * win32/Makefile.sub (WARNFLAGS): make declaration conflict
- warnings errors if possible.
+Fri Apr 26 14:35:00 2013 Zachary Scott <zachary@zacharyscott.net>
-Sun Dec 7 21:16:10 2010 Tanaka Akira <akr@fsij.org>
+ * 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
- * cont.c: parenthesize macro arguments.
+Fri Apr 26 12:41:22 2013 Tanaka Akira <akr@fsij.org>
-Tue Dec 7 00:27:14 2010 Masaya Tarui <tarui@ruby-lnag.org>
+ * ext/curses/extconf.rb: Test linkability of curses_version at first.
- * win32/win32.c (rb_w32_read): fixed more for readline,
- and so on. [ruby-core:33511]
+ * 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.
-Mon Dec 6 23:18:22 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Fri Apr 26 00:07:52 2013 Hiroshi Shirosaki <h.shirosaki@gmail.com>
- * test/mkmf/base.rb (TestMkmf#setup): run quietly.
+ * lib/rinda/ring.rb (Rinda::RingServer#initialize): accept array
+ arguments of address to specify multicast interface.
- * test/mkmf/test_find_executable.rb (test_find_executable): use
- configured results.
+ * lib/rinda/ring.rb (Rinda::RingServer#make_socket): add optional
+ arguments for multicast interface.
- * common.mk (test-build): test for build process.
+ * test/rinda/test_rinda.rb
+ (TestRingFinger#test_ring_server_ipv4_multicast,
+ TestRingFinger#test_ring_server_ipv6_multicast): add tests for
+ above change.
-Mon Dec 6 22:47:15 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * 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]
- * lib/optparse.rb (OptionParser#candidate): skip separators.
+Thu Apr 25 23:45:02 2013 Hiroshi Shirosaki <h.shirosaki@gmail.com>
- * sample/optparse/opttest.rb: should not override --help.
- [ruby-dev:42690]
+ * 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.
-Mon Dec 6 19:00:48 2010 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+ * lib/rinda/ring.rb (Rinda::RingServer#make_socket): ditto.
- * misc/rb_optparse.zsh: fix typos.
+Thu Apr 25 23:39:42 2013 Hiroshi Shirosaki <h.shirosaki@gmail.com>
-Mon Dec 6 18:59:04 2010 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+ * 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.
- * NEWS: add new encodings.
+Thu Apr 25 23:16:28 2013 Tanaka Akira <akr@fsij.org>
-Mon Dec 6 18:56:42 2010 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+ * ext/curses/extconf.rb: Implement
+ --with-curses-version={function,variable} configure option for
+ cross-compiling.
- * test/ruby/test_string.rb (TestString#test_scan): add a test for
- [ruby-core:33338] #4087.
+Thu Apr 25 18:15:46 2013 Tanaka Akira <akr@fsij.org>
-Mon Dec 6 18:55:36 2010 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+ * ext/socket/extconf.rb: Don't use WIDE getaddrinfo by default.
- * test/uri/test_common.rb (TestCommon#test_encode_www_form): add
- tests for r30015.
+Thu Apr 25 17:56:39 2013 Tanaka Akira <akr@fsij.org>
-Mon Dec 6 10:39:54 2010 NARUSE, Yui <naruse@ruby-lang.org>
+ * ext/socket/extconf.rb: Remove obsolete options: ---with-ipv6-lib and
+ --with-ipv6-libdir.
- * lib/uri/common.rb (URI::Parser#initialize_pattern):
- refix for restrict the pattern.
+Thu Apr 25 17:43:49 2013 Tanaka Akira <akr@fsij.org>
-Mon Dec 6 09:45:11 2010 Eric Hodel <drbrain@segment7.net>
+ * 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.
- * 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
+Thu Apr 25 16:11:06 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Mon Dec 6 09:16:46 2010 NARUSE, Yui <naruse@ruby-lang.org>
+ * 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]
- * lib/uri/common.rb (URI::Parser#initialize_pattern):
- workaround fix pattern of hostname for RFC 3986. [ruby-dev:42672]
+ * io.c (io_set_encoding_by_bom): reset extenal encoding if no BOM
+ found. [ruby-core:54569]
-Mon Dec 6 09:14:38 2010 NARUSE, Yui <naruse@ruby-lang.org>
+Thu Apr 25 14:35:01 2013 NARUSE, Yui <naruse@ruby-lang.org>
- * lib/mkmf.rb (check_signedness): rename unused variable prelude.
+ * ext/openssl/ossl_bn.c (ossl_bn_initialize): allow Fixnum and Bignum.
+ [ruby-core:53986] [Feature #8217]
-Sun Dec 5 17:56:36 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Thu Apr 25 14:26:32 2013 NARUSE, Yui <naruse@ruby-lang.org>
- * class.c (make_metaclass): fix probable typo. builtin type flag
- cannot be used with FL_TEST.
+ * 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]
-Sun Dec 5 12:09:27 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * 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.
- * lib/irb/init.rb (IRB.parse_opts): fix typo. [ruby-core:33574]
+Wed Apr 25 14:26:00 2013 Charlie Somerville <charlie@charliesomerville.com>
-Sun Dec 5 11:27:08 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * benchmark/bm_hash_shift.rb: add benchmark for Hash#shift
- * ruby.c (load_file_internal): decrement for ungotten line.
- [ruby-dev:42680]
+ * hash.c (rb_hash_shift): use st_shift if hash is not being iterated to
+ delete element without iterating the whole hash.
-Sun Dec 5 10:32:11 2010 Tanaka Akira <akr@fsij.org>
+ * hash.c (shift_i): remove function
- * complex.c: parenthesize macro arguments.
+ * include/ruby/st.h (st_shift): add st_shift function
-Sat Dec 4 11:39:17 2010 Eric Hodel <drbrain@segment7.net>
+ * st.c (st_shift): ditto
- * ext/openssl/ossl_x509ext.c (initialize): add documentation.
+ [Bug #8312] [ruby-core:54524] Patch by funny-falcon
-Sat Dec 4 11:21:50 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Thu Apr 25 12:03:38 2013 Tanaka Akira <akr@fsij.org>
- * hash.c (rb_hash_update_by): new API for Hash#update.
+ * ext/socket/extconf.rb: Extract C programs as toplevel constants.
-Sat Dec 4 11:18:10 2010 Tanaka Akira <akr@fsij.org>
+Thu Apr 25 02:23:28 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * class.c: parenthesize macro arguments.
+ * configure.in (RUBY_RM_RECURSIVE): this hack is needed by only
+ autoconf 2.69 or earlier on darwin.
-Sat Dec 4 11:07:57 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Thu Apr 25 01:22:41 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * vm_core.h (rb_vm_inc_const_missing_count): missing prototype.
+ * lib/tracer.rb (get_line): simply read by File.readlines.
-Sat Dec 4 08:50:10 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * lib/debug.rb (script_lines): get source lines from SCRIPT_LINES__ or
+ read from the file.
- * ext/iconv/iconv.c (Init_iconv): no warnings if $VERBOSE is nil.
+ * lib/debug.rb (display_list): use script_lines instead of recursion.
+ [Bug #8318]
-Sat Dec 4 08:25:15 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * lib/debug.rb (line_at): use script_lines same as display_list.
- * vm_insnhelper.c (vm_call_method): revert r30064 and r30071,
- because of [ruby-core:26761]. Bug#4106 rejected.
+ * 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]
-Sat Dec 4 07:46:48 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Wed Apr 24 21:51:13 2013 Tanaka Akira <akr@fsij.org>
- * lib/mkmf.rb (String#tr_cpp): substitute * with P like as
- autoconf.
+ * configure.in: Check mblen().
+ mblen() is optional in uClibc.
-Fri Dec 3 22:36:45 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * eval_intern.h (CharNext): Don't use mblen() is not available.
- * vm_insnhelper.c (vm_call_method): protected methods should be
- checked against the real class.
+Wed Apr 24 15:55:06 2013 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-Fri Dec 3 20:23:31 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * io.c (rb_fd_fix_cloexec): use rb_update_max_fd().
- * lib/mkmf.rb (convertible_int): define printf format prefix too.
+Wed Apr 24 14:08:00 2013 Zachary Scott <zachary@zacharyscott.net>
- * lib/mkmf.rb (convertible_int): detect convertible integer type.
- port RUBY_REPLACE_INT from configure.in.
+ * numeric.c: Fix wiki link on Float imprecision in overview, patched
+ by Makoto Kishimoto [Bug #8304] [ruby-dev:47280]
- * lib/mkmf.rb (check_sizeof): should return integer always.
+Wed Apr 24 14:03:59 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Fri Dec 3 12:54:48 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+ * parse.y (parser_yylex): disallow $- without following identifier
+ character. [ruby-talk:406969]
- * win32/Makefile.sub (RCFLAGS): VC10 and after only. fixed the problem
- of r30015. [ruby-core:33530]
+ * parse.y (is_special_global_name): mere $- is not a valid global
+ variable name.
-Fri Dec 3 12:41:52 2010 URABE Shyouhei <shyouhei@ruby-lang.org>
+Wed Apr 24 13:54:00 2013 Zachary Scott <zachary@zacharyscott.net>
- * 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.
+ * string.c: Document String#setbyte return value by @gjmurakami-10gen
+ [Fixes GH-294]
- * vm.c (ruby_vm_destruct): ruby_current_vm termination should be
- somewhere after rb_objspace_free for above reason.
+Wed Apr 24 13:45:00 2013 Zachary Scott <zachary@zacharyscott.net>
-Fri Dec 3 12:17:19 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * class.c: Example of Object#methods by @windwiny [Fixes GH-293]
+ * ruby.c: Document return values of Kernel #sub, #gsub, and #chop
- * vm_insnhelper.c (vm_call_method): protected singleton methods should
- be visible from same real class methods. [ruby-core:33506]
+Wed Apr 24 12:54:00 2013 Zachary Scott <zachary@zacharyscott.net>
-Fri Dec 3 07:08:42 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * ext/socket/lib/socket.rb: Doc typos by @vipulnsward [Fixes GH-292]
- * 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>
+Wed Apr 24 12:54:00 2013 Zachary Scott <zachary@zacharyscott.net>
- * compile.c: parenthesize macro arguments.
+ * ext/socket/lib/socket.rb: Doc typos by @vipulnsward [Fixes GH-292]
-Fri Dec 3 04:08:59 2010 NARUSE, Yui <naruse@ruby-lang.org>
+Wed Apr 24 12:27:00 2013 Zachary Scott <zachary@zacharyscott.net>
- * encoding.c (enc_alias_internal): use st_insert2 and change return
- value to int.
+ * array.c: Fix documentation for Array#index and #replace aliases
+ Based on a patch by @phiggins [Fixes GH-282]
- * encoding.c (enc_alias): follow enc_alias_internal.
+Tue Apr 23 21:14:38 2013 NARUSE, Yui <naruse@ruby-lang.org>
-Fri Dec 3 01:52:43 2010 NARUSE, Yui <naruse@ruby-lang.org>
+ * 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]
- * encoding.c (enc_alias_internal): use xfree instead of free.
+Tue Apr 23 20:10:02 2013 Tanaka Akira <akr@fsij.org>
-Thu Dec 2 23:52:26 2010 URABE Shyouhei <shyouhei@ruby-lang.org>
+ * missing/isnan.c (isnan): Don't define if isnan() macro is defined.
+ This fixes a compilation failure on uClibc based Gentoo system.
- * NEWS: entry for ruby_vm_at_exit().
+Tue Apr 23 17:40:40 2013 Martin Duerst <duerst@it.aoyama.ac.jp>
- * eval.c (ruby_cleanup): bug fix around at_exit (1) timing was
- wrong. (2) execution order was opposite.
+ * lib/rexml/document.rb, lib/rexml/element.rb,
+ lib/rexml/formatters/pretty.rb: remove opinionated
+ language in documentation. [Bug #8309],
+ reported by Charles Beckmann
-Thu Dec 2 23:05:14 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+Tue Apr 23 14:04:44 2013 Shugo Maeda <shugo@ruby-lang.org>
- * win32/Makefile.sub (RCFLAGS): -nologo switch is only available in
- newer versions of rc.exe. fixed the problem of r30012.
+ * lib/net/imap.rb (getacl_response): parse the mailbox of an ACL
+ response correctly. [ruby-core:54365] [Bug #8281]
-Thu Dec 2 21:28:07 2010 NARUSE, Yui <naruse@ruby-lang.org>
+Tue Apr 23 11:58:46 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * ext/json/lib/json/add/rails.rb: removed.
+ * 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]
-Thu Dec 2 21:22:05 2010 NARUSE, Yui <naruse@ruby-lang.org>
+Tue Apr 23 10:26:50 2013 Akinori MUSHA <knu@iDaemons.org>
- * encoding.c (enc_alias_internal): free the copied key and
- return NULL when given key is already registered.
+ * test/ruby/test_module.rb
+ (TestModule#test_const_get_invalid_name)
+ (test_const_defined_invalid_name): Fix expected values.
- * encoding.c (enc_alias): call set_encoding_const only when the
- alias is not registered yet.
+Tue Apr 23 09:51:26 2013 Akinori MUSHA <knu@iDaemons.org>
-Thu Dec 2 19:58:24 2010 URABE Shyouhei <shyouhei@ruby-lang.org>
+ * string.c (rb_str_inspect): NUL should not be represented as "\0"
+ when octal digits may follow. [ruby-core:54458] [Bug #8290]
- * 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.
+Mon Apr 22 22:54:00 2013 Charlie Somerville <charlie@charliesomerville.com>
- * include/ruby/vm.h: ditto.
+ * insns.def (opt_mod): Use % operator if both operands are positive for
+ a significant performance improvement. Thanks to @samsaffron.
- * vm_core.h (rb_vm_struct): new field.
+Mon Apr 22 17:09:37 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * vm.c (vm_init2): initialize above new field.
+ * marshal.c (r_object0): copy all instance variables not only generic
+ ivars, before calling post proc. [ruby-core:51163] [Bug #7627]
- * eval.c (ruby_cleanup): trigger those hooks.
+Mon Apr 22 10:25:21 2013 NARUSE, Yui <naruse@ruby-lang.org>
-Thu Dec 2 17:00:44 2010 Tanaka Akira <akr@fsij.org>
+ * 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.
- * bignum.c: parenthesize macro arguments.
+Sun Apr 21 23:19:00 2013 Charlie Somerville <charlie@charliesomerville.com>
-Thu Dec 2 15:31:14 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+ * configure.in: Revert using sigsetjmp by default due to performance
+ problems on some systems (eg. older Linux)
- * win32/win32.c (rb_w32_read): more fix. [ruby-core:33513]
+Sun Apr 21 21:35:00 2013 Charlie Somerville <charlie@charliesomerville.com>
-Thu Dec 2 13:41:43 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+ * 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]
- * win32/win32.c (rb_w32_read): workaround for console reading troubles.
- fixed [ruby-core:33511]
+ * configure.in: Manually check for presence of sigsetjmp. It is not a
+ function on some systems, so AC_CHECK_FUNCS cannot be used.
-Thu Dec 2 13:10:42 2010 NARUSE, Yui <naruse@ruby-lang.org>
+Sun Apr 21 08:00:55 2013 Tanaka Akira <akr@fsij.org>
- * lib/uri/common.rb (URI.encode_www_form):
- split key-value when the value is Array like object.
+ * 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.
-Thu Dec 2 10:39:39 2010 NARUSE, Yui <naruse@ruby-lang.org>
+Sun Apr 21 00:15:36 2013 Tanaka Akira <akr@fsij.org>
- * lib/net/http.rb (Net::HTTP#set_form_data):
- use URI.encode_www_form for application/x-www-form-urlencoded.
+ * lib/tempfile.rb (Tempfile.create): Close when the block exits.
-Thu Dec 2 10:38:40 2010 NARUSE, Yui <naruse@ruby-lang.org>
+Sat Apr 20 23:38:14 2013 Tanaka Akira <akr@fsij.org>
- * ext/extmk.rb: remove $makeflags.defined?, it should be $mflags.
+ * lib/webrick/httpauth/htpasswd.rb: Use Tempfile.create to avoid
+ unintentional unlink() by the finalizer.
+ lib/webrick/httpauth/htdigest.rb: Ditto.
-Thu Dec 2 10:19:47 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+Sat Apr 20 22:47:48 2013 Tanaka Akira <akr@fsij.org>
- * win32/Makefile.sub (rc): suppress meaningless message.
+ * lib/tempfile.rb (Tempfile.create): New method.
+ The method name is proposed by Shugo Maeda. [ruby-dev:47220]
+ [ruby-core:41478] [Feature #5707]
-Thu Dec 2 10:09:40 2010 NARUSE, Yui <naruse@ruby-lang.org>
+Sat Apr 20 14:22:10 2013 Nobuyoshi Nakada <nobu@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.
+ * marshal.c (w_object): dump no ivars to the original by marshal_dump.
+ [ruby-core:54334] [Bug #8276]
- * ext/json/parser/extconf.rb: ditto.
+ * marshal.c (r_object0): copy all ivars of marshal_dump data to the
+ result object instead. [ruby-core:51163] [Bug #7627]
-Thu Dec 2 10:01:59 2010 NARUSE, Yui <naruse@ruby-lang.org>
+Sat Apr 20 02:33:27 2013 NARUSE, Yui <naruse@ruby-lang.org>
- * ext/extmk.rb: define $makeflags.defined? like $mflags.
+ * string.c (str_scrub): add ruby method String#scrub which verify and
+ fix invalid byte sequence. [ruby-dev:45975] [Feature #6752]
-Thu Dec 2 07:20:20 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * string.c (str_compat_and_valid): check given string is compatible
+ and valid with given encoding.
- * lib/test/unit.rb (Test::Unit::GCStressOption): --gc-stress
- option.
+ * 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.
- * lib/test/unit.rb (Test::Unit::Mini#_run_suites): show the result
- even when interrupted on the way.
+Fri Apr 19 21:55:40 2013 Kouhei Sutou <kou@cozmixng.org>
-Thu Dec 2 07:08:38 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * 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]
- * ext/io/console/console.c (setattr): should retry on EINTR.
- [ruby-dev:42666]
+Fri Apr 19 17:54:57 2013 Shugo Maeda <shugo@ruby-lang.org>
-Thu Dec 2 02:30:50 2010 Eric Hodel <drbrain@segment7.net>
+ * lib/net/imap.rb (body_type_msg): should accept
+ message/delivery-status with extra data.
+ [ruby-core:53741] [Bug #8167]
- * lib/net/http.rb: fixed positional wording to match revised order.
+ * test/net/imap/test_imap_response_parser.rb: related test.
-Thu Dec 2 01:24:39 2010 NARUSE, Yui <naruse@ruby-lang.org>
+Fri Apr 19 13:03:14 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * ext/json/lib/json/common.rb: don't use iconv on 1.9.
- patched by Shota Fukumori [ruby-core:33164]
+ * marshal.c (w_object): do not dump encoding which is dumped with
+ marshal_dump data. [ruby-core:54334] [Bug #8276]
-Thu Dec 2 01:02:03 2010 NARUSE, Yui <naruse@ruby-lang.org>
+Fri Apr 19 11:36:53 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * ext/json: Update github/flori/json from 1.4.2+ to
- e22b2f2bdfe6a9b0. this fixes some bugs.
+ * configure.in (stack_protector): control use of -fstack-protector.
-Thu Dec 2 00:05:44 2010 NARUSE, Yui <naruse@ruby-lang.org>
+ * configure.in (debugflags): let -fstack-protector precede and disable
+ debugflags, because they can't work together on SmartOS. [Bug #8268]
- * 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]
+Fri Apr 19 07:43:52 2013 NARUSE, Yui <naruse@ruby-lang.org>
-Wed Dec 1 22:01:49 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+ * test/openssl/test_cipher.rb: Correct a typo
+ by jgls <joerg@joergleis.com>
+ https://github.com/ruby/ruby/pull/291 fix GH-291
- * 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]
+Thu Apr 18 16:58:51 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Wed Dec 1 21:43:21 2010 Tanaka Akira <akr@fsij.org>
+ * 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]
- * array.c: parenthesize macro arguments.
+Thu Apr 18 16:20:51 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Wed Dec 1 21:41:57 2010 Tanaka Akira <akr@fsij.org>
+ * 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]
- * test/socket/test_addrinfo.rb: extract Errno::EADDRINUSE as a method.
+Thu Apr 18 16:20:21 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * test/socket/test_socket.rb: ditto.
+ * pack.c (pack_unpack): increase buffer size to fix buffer overflow,
+ and fix garbage just after unpacking without missing paddings.
+ [Bug #8286]
-Wed Dec 1 15:08:32 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+Thu Apr 18 13:35:54 2013 NARUSE, Yui <naruse@ruby-lang.org>
- * test/openssl/test_ssl.rb (test_not_started_session): non socket
- argument of SSLSocket.new is not supported on Windows.
+ * pack.c (pack_unpack): output characters even if the input doesn't
+ have paddings. [Bug #8286]
-Wed Dec 1 14:36:36 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Thu Apr 18 08:20:48 2013 NARUSE, Yui <naruse@ruby-lang.org>
- * string.c (rb_memhash): zero-filled strings should return
- different values. [ruby-core:33500]
+ * common.mk (clean-ext): remove timestamps.
-Wed Dec 1 14:27:49 2010 Ryan Davis <ryand-ruby@zenspider.com>
+Wed Apr 17 22:07:50 2013 Tanaka Akira <akr@fsij.org>
- * lib/minitest/*.rb: Imported minitest 2.0.0 r5952.
- * test/minitest/*.rb: ditto.
- * lib/test/unit.rb: Compatibility fix for minitest changes.
+ * ext/socket/rubysocket.h (SOCKLEN_MAX): Expression simplified.
-Wed Dec 1 10:16:41 2010 NARUSE, Yui <naruse@ruby-lang.org>
+Wed Apr 17 20:09:19 2013 Aman Gupta <ruby@tmm1.net>
- * string.c (rb_str_inspect): fix typo (not 0xFD but 0xFE).
+ * compile.c (iseq_add_mark_object): Use new rb_iseq_add_mark_object().
-Wed Dec 1 09:28:27 2010 NARUSE, Yui <naruse@ruby-lang.org>
+ * insns.def (setinlinecache): Ditto.
- * 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]
+ * iseq.c (rb_iseq_add_mark_object): New function to allocate
+ iseq->mark_ary on demand. [Bug #8142]
-Wed Dec 1 01:29:15 2010 NARUSE, Yui <naruse@ruby-lang.org>
+ * iseq.h (rb_iseq_add_mark_object): Ditto.
- * 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]
+ * iseq.c (prepare_iseq_build): Avoid allocating mark_ary until needed.
-Tue Nov 30 17:04:10 2010 NARUSE, Yui <naruse@ruby-lang.org>
+ * iseq.c (rb_iseq_build_for_ruby2cext): Ditto.
- * addr2line.c (parse_debug_line_cu): ignore DW_LNE_set_discriminator.
- To ignore, it needs to read a single unsigned LEB128 integer.
+Wed Apr 17 20:00:18 2013 Tanaka Akira <akr@fsij.org>
-Tue Nov 30 16:29:19 2010 NARUSE, Yui <naruse@ruby-lang.org>
+ * ext/socket/rubysocket.h (SOCKLEN_MAX): Defined.
- * 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.
+ * ext/socket/raddrinfo.c (ext/socket/raddrinfo.c): Reject too long
+ Linux abstract socket name.
-Tue Nov 30 16:23:23 2010 NARUSE, Yui <naruse@ruby-lang.org>
+Wed Apr 17 19:45:27 2013 Aman Gupta <tmm1@ruby-lang.org>
- * lib/net/http.rb: improve rdoc.
- patched by Eric Hodel ref #4100
+ * iseq.c (iseq_location_setup): re-use existing string when iseq has
+ the same path and absolute_path. [Bug #8149]
-Tue Nov 30 12:23:52 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+Wed Apr 17 11:38:37 2013 Nobuyoshi Nakada <nobu@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.
+ * lib/test/unit/assertions.rb (Test::Unit::Assertions#assert):
+ UNASSIGNED is not a valid message.
-Tue Nov 30 11:39:13 2010 NARUSE, Yui <naruse@ruby-lang.org>
+Wed Apr 17 10:58:18 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * lib/net/http.rb: improve rdoc.
- patched by mathew murphy [ruby-core:33472] ref #4100
+ * thread.c (sleep_timeval): get rid of overflow on Windows where
+ timeval.tv_sec is not time_t but mere long.
-Tue Nov 30 05:03:44 2010 Eric Hodel <drbrain@segment7.net>
+Tue Apr 16 23:07:12 2013 Tanaka Akira <akr@fsij.org>
- * lib/uri/common.rb (encode_www_form, encode_www_form_component):
- Improve English in documentation.
+ * ext/socket/unixsocket.c (unix_send_io): Suppress a warning by clang.
+ (unix_recv_io): Ditto.
- * ext/openssl/ossl_ssl.c (ssl_version=, ciphers=): Document
- #ssl_version=, add documentation for #ciphers=.
+Tue Apr 16 12:27:00 2013 Zachary Scott <zachary@zacharyscott.net>
-Mon Nov 29 22:55:24 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * ext/sdbm/init.c: Fix comment indentation, by windwiny [Fixes GH-277]
- * lib/uri/common.rb (URI::WFKV_): get rid of backtrack explosion
- by nested repeat operators. [ruby-core:33464]
+Tue Apr 16 12:25:00 2013 Zachary Scott <zachary@zacharyscott.net>
-Mon Nov 29 22:53:13 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * 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
- * win32/Makefile.sub (scriptbin.mk): fix generated rules.
+Tue Apr 16 11:23:00 2013 Zachary Scott <zachary@zacharyscott.net>
- * win32/win32.c (rb_w32_write_console): fix argument type.
+ * ext/openssl/*: Document synonymous methods, by windwiny [GH-277]
-Mon Nov 29 21:12:51 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Mon Apr 15 22:21:42 2013 Tanaka Akira <akr@fsij.org>
- * misc/ruby-mode.el (ruby-forward-sexp): stop after literal hash
- key labels.
+ * ext/fiddle/depend: New file.
- * misc/ruby-mode.el (ruby-font-lock-keywords): highlight literal
- hash key labels as symbols.
+Mon Apr 15 22:01:02 2013 Akinori MUSHA <knu@iDaemons.org>
-Mon Nov 29 18:31:31 2010 Martin Duerst <duerst@it.aoyama.ac.jp>
+ * misc/ruby-electric.el (ruby-electric-insert): Check
+ ruby-electric-is-last-command-char-expandable-punct-p here.
- * 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.
+ * 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 "{ } }".
-Mon Nov 29 14:31:17 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+Mon Apr 15 12:54:42 2013 Martin Bosslet <Martin.Bosslet@gmail.com>
- * win32/win32.c (rb_w32_isatty): use GetConsoleMode() to determine the
- fd is console or not, just like rb_w32_write_console(). [experimental]
+ * ext/openssl/ossl_ssl.c: Correct shutdown behavior w.r.t GC.
-Mon Nov 29 14:19:40 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+ * test/openssl/test_ssl.rb: Add tests to verify correct behavior.
- * include/ruby/win32.h (rb_w32_write_console): wrong prototype.
+ [Bug #8240] Patch provided by Shugo Maeda. Thanks!
-Mon Nov 29 14:10:55 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+Mon Apr 15 10:23:39 2013 NARUSE, Yui <naruse@ruby-lang.org>
- * win32/win32.c (rb_w32_write_console): fixed indentation.
+ * ext/coverage/depend: fix id.h place as r40283.
-Sun Nov 28 22:13:39 2010 Koichi Sasada <ko1@atdot.net>
+ * ext/coverage/extconf.rb: add topdir and topsrcdir to VPATH.
- * thread_pthread.c (NATIVE_MUTEX_LOCK_DEBUG): move and use it.
+Sun Apr 14 19:46:14 2013 Tanaka Akira <akr@fsij.org>
- * ChangeLog: fix my timezone.
+ * ext/-test-/debug/depend: New file.
-Mon Nov 28 21:58:58 2010 Koichi Sasada <ko1@atdot.net>
+ * ext/-test-/exception/depend: Ditto.
- * thread_pthread.c: remove pthread_atfork().
+ * ext/-test-/printf/depend: Ditto.
-Mon Nov 28 21:54:22 2010 Koichi Sasada <ko1@atdot.net>
+ * ext/-test-/string/depend: Ditto.
- * thread_pthread.c (native_cond_*): Check return code.
- (Some OSes except Linux return error code).
+ * ext/coverage/depend: Ditto.
-Sun Nov 28 21:46:21 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * ext/io/console/depend: Ditto.
- * thread_pthread.c (thread_start_func_1): initialize native thread
- data immediately before starting.
+ * ext/io/nonblock/depend: Ditto.
-Sun Nov 28 14:56:32 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * ext/io/wait/depend: Ditto.
- * io.c (struct argf): make lineno long, and reorder members.
+ * ext/openssl/depend: Ditto.
-Sun Nov 28 14:55:42 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * ext/pathname/depend: Ditto.
- * thread_win32.c (gvl_release, gvl_init): suppress warnings.
+ * ext/psych/depend: Ditto.
-Sun Nov 28 14:48:24 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * ext/zlib/depend: Ditto.
- * thread_pthread.c (gvl_release, gvl_init): suppress warnings.
+Sun Apr 14 02:46:50 2013 NARUSE, Yui <naruse@ruby-lang.org>
- * vm_core.h (rb_vm_gvl_destroy): add prototype.
+ * lib/mkmf.rb (MakeMakefile#create_makefile): remove {$(VPATH)} other
+ than nmake.
-Sun Nov 28 14:46:24 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * ext/ripper/depend: use VPATH expecting removed by above.
- * thread_pthread.c (gvl_reinit): register atfork handler only in
- the parent process, to get rid of dead lock.
+Sat Apr 13 23:06:20 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Sun Nov 28 12:23:57 2010 Koichi Sasada <ko1@atdot.net>
+ * lib/mkmf.rb (timestamp_file): gather timestamp files in one
+ directory from each extension directories.
- * thread.c, vm_core.h: make gvl_acquire/release/init/destruct
- APIs to modularize GVL implementation.
+Sat Apr 13 21:09:02 2013 NAKAMURA Usaku <usa@ruby-lang.org>
- * 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]
+ * lib/mkmf.rb (MakeMakefile#create_makefile): output new macro
+ disthdrdir to specify the path of id.h, parse.h and etc.
- * thread_win32.c, thread_win32.h: Using simple lock
- not by CRITICAL_SECTION but by Mutex.
- Bug #3890 [ruby-dev:42315]
+ * ext/ripper/depend: use above macro.
- * vm.c (ruby_vm_destruct): ditto.
+Sat Apr 13 20:28:08 2013 NARUSE, Yui <naruse@ruby-lang.org>
-Sun Nov 28 04:40:00 2010 Luis Lavena <luislavena@gmail.com>
+ * Merge Onigmo 5.13.4 f22cf2e566712cace60d17f84d63119d7c5764ee.
+ [bug] fix problem with optimization of \z (Issue #16) [Bug #8210]
- * io.c (io_fwrite): use rb_w32_write_console under Windows.
+Sat Apr 13 18:56:15 2013 NAKAMURA Usaku <usa@ruby-lang.org>
- * win32/win32.c (rb_w32_write_console): added to write to write
- Unicode using WriteConsoleW for stdout/stderr. [ruby-core:33166]
+ * ext/ripper/depend: parse.h and id.h may be created on topdir.
-Sun Nov 28 03:58:47 2010 NARUSE, Yui <naruse@ruby-lang.org>
+Sat Apr 13 12:08:16 2013 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
- * lib/net/http.rb: improve rdoc.
- patched by Mike Perham [ruby-core:33433]
+ * lib/matrix.rb: Add Vector#cross_product, patch by Luis Ezcurdia
+ [fix GH-276] [rubyspec:81eec89a124]
-Sat Nov 27 19:12:10 2010 Tanaka Akira <akr@fsij.org>
+Sat Apr 13 10:20:37 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * time.c: parenthesize macro arguments.
+ * struct.c (rb_struct_define_without_accessor, rb_struct_define),
+ (rb_struct_s_def): hide member names array.
-Sat Nov 27 18:08:18 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * struct.c (anonymous_struct, new_struct, setup_struct): split
+ make_struct() for each purpose.
- * time.c (leap_year_v_p): fixed typo. [ruby-dev:42631]
+Sat Apr 13 09:34:31 2013 Tanaka Akira <akr@fsij.org>
-Sat Nov 27 17:57:08 2010 Tanaka Akira <akr@fsij.org>
+ * 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.
- * resolv.rb (Resolv::DNS): use the same DNS server when retry using
- TCP. reported by Julian Mehnle. [ruby-core:32970]
+ * ext/-test-/old_thread_select/depend: Update dependencies.
-Sat Nov 27 15:45:27 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * ext/-test-/wait_for_single_fd/depend: Ditto.
- * vm_dump.c (rb_vm_bugreport): see CrashReport log on Mac OS X.
+ * ext/bigdecimal/depend: Ditto.
- * configure.in: link addr2line only for ELF.
+ * ext/curses/depend: Ditto.
-Sat Nov 27 13:58:55 2010 Shugo Maeda <shugo@ruby-lang.org>
+ * ext/digest/bubblebabble/depend: Ditto.
- * lib/optparse.rb (OptionParser#candidate): : was missing. Thanks,
- Shota Fukumori. [ruby-dev:42634]
+ * ext/digest/depend: Ditto.
-Sat Nov 27 12:07:05 2010 Yukihiro Matsumoto <matz@ruby-lang.org>
+ * ext/digest/md5/depend: Ditto.
- * man/ruby.1: Ruby man page from Arthur Gunn in [ruby-core:33412]
+ * ext/digest/rmd160/depend: Ditto.
-Sat Nov 27 11:29:24 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * ext/digest/sha1/depend: Ditto.
- * lib/optparse.rb (OptionParser#candidate): get rid of 1.9 syntax
- so that BASERUBY can be 1.8.
+ * ext/digest/sha2/depend: Ditto.
-Sat Nov 27 08:16:21 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * ext/dl/callback/depend: Ditto.
- * addr2line.c (rb_dump_backtrace_with_lines): should close fd on
- edge case.
+ * ext/dl/depend: Ditto.
-Fri Nov 26 13:33:24 2010 NARUSE, Yui <naruse@ruby-lang.org>
+ * ext/etc/depend: Ditto.
- * addr2line.c: apply a patch from shinichiro.h.
+ * ext/nkf/depend: Ditto.
-Fri Nov 26 12:21:20 2010 NARUSE, Yui <naruse@ruby-lang.org>
+ * ext/objspace/depend: Ditto.
- * 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>
+ * ext/pty/depend: Ditto.
- * addr2line.h: ditto.
+ * ext/readline/depend: Ditto.
- * common.mk: add addr2line.$(OBJEXT).
+ * ext/ripper/depend: Ditto.
- * configure.in: check dl_iterate_phdr.
+ * ext/sdbm/depend: Ditto.
- * vm_dump.c (rb_vm_bugreport): use rb_dump_backtrace_with_lines in
- addr2line.c when the binary is ELF.
+ * ext/socket/depend: Ditto.
-Fri Nov 26 12:12:50 2010 NARUSE, Yui <naruse@ruby-lang.org>
+ * ext/stringio/depend: Ditto.
- * 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]
+ * ext/strscan/depend: Ditto.
-Fri Nov 26 11:40:11 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+ * ext/syslog/depend: Ditto.
- * 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.
+ * ext/-test-/num2int/depend: Removed.
-Fri Nov 26 11:09:07 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+ * ext/dbm/depend: Ditto.
- * vm_dump.c (dump_thread): show the displacement from the beginning
- of the symbol.
+ * ext/fcntl/depend: Ditto.
-Fri Nov 26 10:48:23 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+ * ext/gdbm/depend: Ditto.
- * vm_dump.c (dump_thread): follow the output of glibc.
- see [ruby-dev:42627]
+ * ext/racc/cparse/depend: Ditto.
-Fri Nov 26 09:48:45 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+Sat Apr 13 00:15:54 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * re.c (rb_reg_initialize_str): should succeed the taint status from
- the origin. [ruby-core:33338]
+ * ext/etc/etc.c (Init_etc): move Passwd and Group under Etc namespace
+ as primary names.
-Fri Nov 26 09:32:37 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+Fri Apr 12 21:06:55 2013 Tanaka Akira <akr@fsij.org>
- * vm_dump.c (dump_thread): seems to be necessary the 3rd argument of
- SymGetLineFromAddr64(), even though MSDN says it can be zero.
+ * common.mk: pack.o depends on internal.h.
-Fri Nov 26 09:03:38 2010 NARUSE, Yui <naruse@ruby-lang.org>
+Fri Apr 12 20:59:24 2013 Tanaka Akira <akr@fsij.org>
- * regcomp.c (onig_is_prelude): added to check whether ruby is still
- in prelude (or other boot processes) or not.
+ * bignum.c (ones): Use __builtin_popcountl if available.
- * regcomp.c (optimize_node_left): use onig_is_prelude for printing.
+ * internal.h (GCC_VERSION_SINCE): Macro moved from pack.c.
- * regcomp.c (set_optimize_info_from_tree): ditto.
+ * pack.c: Include internal.h for GCC_VERSION_SINCE.
- * regcomp.c (onig_compile): ditto.
+Fri Apr 12 18:29:42 2013 Tanaka Akira <akr@fsij.org>
- * regcomp.c (print_compiled_byte_code_list): print its address.
+ * 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]
- * regcomp.c (print_indent_tree): print its contents tree of
- ANCHOR_PREC_READ(_NOT) and ANCHOR_PREC_BEHIND(_NOT).
+Fri Apr 12 15:21:24 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Thu Nov 25 23:10:49 2010 NARUSE, Yui <naruse@ruby-lang.org>
+ * vm_insnhelper.c (vm_callee_setup_keyword_arg): non-symbol key is not
+ a keyword argument, keep it as a positional argument.
- * regcomp.c (print_distance_range): use PRIuSIZE.
+Fri Apr 12 11:58:00 2013 Zachary Scott <zachary@zacharyscott.net>
- * regcomp.c (print_optimize_info): use %ld because the type of
- calculated value of integers is long.
+ * 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
- * regexec.c (onig_print_compiled_byte_code): add prototype.
+Thu Apr 11 23:41:46 2013 Tanaka Akira <akr@fsij.org>
- * regexec.c (match_at): add 2nd argument.
+ * common.mk: Add dependencies for include/ruby.h
-Thu Nov 25 10:29:55 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+ * tool/update-deps: Use "make -p all miniruby ruby golf" to extract
+ dependencies in makefiles.
- * ext/dl/callback/mkcallback.rb (gencallback): shouldn't assume that
- VALUE is the same size with long.
+Thu Apr 11 23:21:17 2013 Tanaka Akira <akr@fsij.org>
-Thu Nov 25 10:03:14 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+ * tool/update-deps: Use "make -p all golf" to extract dependencies in
+ makefiles.
- * test/win32ole/test_err_in_callback.rb (teardown): remove tmp file
- only when it exists.
+Thu Apr 11 21:02:19 2013 Tanaka Akira <akr@fsij.org>
-Thu Nov 25 01:38:25 2010 NARUSE, Yui <naruse@ruby-lang.org>
+ * common.mk: Dependency updated.
- * enc/trans/big5-hkscs-tbl.rb: Update table as HKSCS-2008.
- patched by oCameLo oTnTh [ruby-core:33256]
+ * tool/update-deps: Rewritten.
- * enc/big5.c: add alias Big5-HKSCS:2008 to Big5-HKSCS.
+Thu Apr 11 19:59:48 2013 NARUSE, Yui <naruse@ruby-lang.org>
-Wed Nov 24 15:18:07 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+ * 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)
- * vsnprintf (BSD_vfprintf): use QUADINT macro only when _HAVE_SANE_QUAD_
- macro is defined.
+Thu Apr 11 16:10:01 2013 NARUSE, Yui <naruse@ruby-lang.org>
-Wed Nov 24 12:47:16 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+ * ext/fiddle/closure.c (USE_FFI_CLOSURE_ALLOC): define 0 on
+ Mac OS X and Linux [Bug #3371]
- * vsnprintf (BSD_vfprintf): added VC++ compatible size specifications
- (I, I32, I64).
+Thu Apr 11 13:19:22 2013 NAKAMURA Usaku <usa@ruby-lang.org>
-Wed Nov 24 11:19:13 2010 NARUSE, Yui <naruse@ruby-lang.org>
+ * 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]
- * string.c (rb_str_inspect): treat UTF-16 and UTF-32 as BE or LE.
+Thu Apr 11 11:11:38 2013 Akinori MUSHA <knu@iDaemons.org>
-Wed Nov 24 06:35:32 2010 NARUSE, Yui <naruse@ruby-lang.org>
+ * dir.c: Fix a typo.
- * enc/trans/utf_16_32.trans: add the UTF-32 converter.
+Thu Apr 11 10:39:34 2013 NARUSE, Yui <naruse@ruby-lang.org>
-Wed Nov 24 05:40:33 2010 NARUSE, Yui <naruse@ruby-lang.org>
+ * ext/fiddle/closure.c (USE_FFI_CLOSURE_ALLOC): add missing case:
+ RUBY_LIBFFI_MODVERSION is not defined (usually on Windows).
-Wed Nov 24 06:13:32 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Thu Apr 11 09:27:04 2013 Konstantin Haase <me@rkh.im>
- * win32/win32.c (filecp, wstr_to_mbstr, mbstr_to_wstr):
- refactored.
+ * dir.c (file_s_fnmatch): Document File::FNM_EXTGLOB flag.
-Wed Nov 24 05:40:33 2010 NARUSE, Yui <naruse@ruby-lang.org>
+Thu Apr 11 09:17:00 2013 Zachary Scott <zachary@zacharyscott.net>
- * enc/trans/utf_16_32.trans: add a converter from UTF-8 to UTF-16.
+ * README: Fix typo by Benjamin Winkler [Fixes GH-281]
-Wed Nov 24 03:21:35 2010 NARUSE, Yui <naruse@ruby-lang.org>
+Thu Apr 11 06:15:51 2013 NARUSE, Yui <naruse@ruby-lang.org>
- * enc/trans/utf_16_32.trans: raise error on unpaired upper
- surrogates.
+ * regint.h: fix typo: _M_AMD86 -> _M_AMD64.
-Wed Nov 24 01:40:23 2010 NARUSE, Yui <naruse@ruby-lang.org>
+ * siphash.c: ditto.
- * enc/utf_16_32.h: add UTF-16 and UTF-32 as a dummy encoding.
+ * st.c: ditto.
- * enc/trans/utf_16_32.trans: add a converter from UTF-16 to UTF-8.
+Thu Apr 11 06:09:57 2013 NARUSE, Yui <naruse@ruby-lang.org>
-Tue Nov 23 21:59:47 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * ext/fiddle/extconf.rb: define RUBY_LIBFFI_MODVERSION macro.
- * win32/win32.c (wlink, rb_w32_getppid): use typedef instead of
- repeating complicated function prototypes.
+ * ext/fiddle/closure.c (USE_FFI_CLOSURE_ALLOC): define 0 or 1
+ with platform and libffi's version. [Bug #3371]
-Tue Nov 23 18:54:03 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Thu Apr 11 05:30:43 2013 NARUSE, Yui <naruse@ruby-lang.org>
- * vm.c (rb_thread_mark): should mark self in control
- frames. [ruby-core:33289]
+ * lib/mkmf.rb (pkg_config): Add optional argument "option".
+ If it is given, it returns the result of
+ `pkg-config --<option> <pkgname>`.
-Tue Nov 23 07:57:31 2010 Tadayoshi Funaba <tadf@dotrb.org>
+Thu Apr 11 03:33:05 2013 NARUSE, Yui <naruse@ruby-lang.org>
- * lib/date/delta/parser.{ry,rb}: fixed a bug of token scanner.
+ * 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
-Tue Nov 23 07:29:24 2010 Tadayoshi Funaba <tadf@dotrb.org>
+Wed Apr 10 17:39:13 2013 Tanaka Akira <akr@fsij.org>
- * complex.c, rational.c ({nucomp,nurat}_expt): added a check.
+ * ext/bigdecimal/bigdecimal.c (VpCtoV): Initialize a local variable
+ even when overflow.
-Tue Nov 23 07:27:27 2010 Tadayoshi Funaba <tadf@dotrb.org>
+Wed Apr 10 12:32:37 2013 Tanaka Akira <akr@fsij.org>
- * lib/date.rb (daynum): should be private.
+ * bignum.c (rb_ll2big): Don't overflow on signed integer negation.
-Tue Nov 23 07:22:54 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * 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.
- * ChangeLog (change-log-indent-text): hanging indent.
+Wed Apr 10 06:32:12 2013 Tanaka Akira <akr@fsij.org>
-Tue Nov 23 06:30:51 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * internal.h (MUL_OVERFLOW_INT_P): New macro.
- * 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]
+ * sprintf.c (GETNUM): Don't overflow on signed integer multiplication.
- * configure.in (rubylibprefix): No ruby, No libprefix.
+Tue Apr 9 20:38:20 2013 Tanaka Akira <akr@fsij.org>
-Tue Nov 23 01:05:27 2010 NARUSE, Yui <naruse@ruby-lang.org>
+ * internal.h (MUL_OVERFLOW_SIGNED_INTEGER_P): New macro.
+ (MUL_OVERFLOW_FIXNUM_P): Ditto.
+ (MUL_OVERFLOW_LONG_P): Ditto.
- * vsnprintf.c (BSD_vfprintf): don't output floating point
- when the precision is 0. [ruby-dev:42615]
+ * array.c (rb_ary_product): Don't overflow on signed integer
+ multiplication.
-Mon Nov 22 21:30:57 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * numeric.c (fix_mul): Ditto.
+ (int_pow): Ditto.
- * string.c (rb_str_inspect): fix for ascii-compatible external
- encoding and different encoding string. [ruby-core:33283]
+ * rational.c (f_imul): Ditto.
-Mon Nov 22 18:45:44 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * insns.def (opt_mult): Ditto.
- * lib/mkmf.rb (create_makefile): should not duplicate rules.
- bug fix of r29842.
+ * thread.c (sleep_timeval): Don't overflow on signed integer addition.
-Mon Nov 22 18:04:40 2010 NARUSE, Yui <naruse@ruby-lang.org>
+ * bignum.c (rb_int2big): Don't overflow on signed integer negation.
+ (rb_big2ulong): Ditto.
+ (rb_big2long): Ditto.
+ (rb_big2ull): Ditto.
+ (rb_big2ll): Ditto.
- * enc/big5.c: split CP950 from Big5.
+Tue Apr 9 19:45:44 2013 Tanaka Akira <akr@fsij.org>
- * enc/big5.c: split CP951 from Big5-HKSCS.
+ * 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.
- * 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/
+Tue Apr 9 15:26:12 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * tool/transcode-tblgen.rb (import_ucm): add to import ucm files.
+ * compile.c (iseq_compile_each): append keyword hash to argument array
+ to splat if needed. [ruby-core:54094] [Bug #8236]
-Mon Nov 22 18:33:30 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Tue Apr 9 10:02:39 2013 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]
+ * lib/mkmf.rb (timestamp_file): gather timestamp files in one
+ directory from each extension directories, with considering
+ target_prefix.
-Mon Nov 22 14:22:45 2010 NARUSE, Yui <naruse@ruby-lang.org>
+Tue Apr 9 04:57:59 JST 2013 Charles Oliver Nutter <headius@headius.com>
- * 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]
+ * 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.
-Mon Nov 22 11:58:11 2010 NARUSE, Yui <naruse@ruby-lang.org>
+Tue Apr 9 02:44:32 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * string.c (rb_str_concat): set ENC_CODERANGE_VALID when the
- receiver is 7BIT and the argument is non ASCII.
+ * ext/socket/extconf.rb: $defs needs -D or -U. nothing is added
+ otherwize.
-Mon Nov 22 01:48:58 2010 Tadayoshi Funaba <tadf@dotrb.org>
+ * ext/socket/extconf.rb: check struct in_addr6, which is defined in
+ VC6 instead of in6_addr.
- * lib/date.rb: some improvements for performance.
+ * ext/socket/option.c (optname_to_sym): fix macro name.
-Sat Nov 20 07:45:50 2010 Aaron Patterson <aaron@tenderlovemaking.com>
+ * ext/socket/constants.c (rsock_cmsg_type_arg): fix macro name.
- * lib/mkmf.rb: adding compilation support for ObjC/ObjC++ extensions.
- Thanks Scott Gonyea! [ruby-core:33260]
+Mon Apr 8 23:57:21 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Sat Nov 20 01:57:55 2010 Akio Tajima <artonx@yahoo.co.jp>
+ * object.c (id_for_setter): extract common code from const, class
+ variable, instance variable setters.
- * common.mk: add dependency(insns.inc) to compile.obj
+Mon Apr 8 23:55:53 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Fri Nov 19 23:05:48 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * ext/depend (ENCOBJS, TRANSOBJS): use explicit path to ruby.h for
+ nmake.
- * win32/Makefile.sub (insns_rules.mk): remove extra backslash.
+ * 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.
- * cygwin/GNUmakefile.in, win32/Makefile.sub (clean): rc files are
- made at compile time, so should be removed by clean.
+Mon Apr 8 20:30:37 2013 Yuki Yugui Sonoda <yugui@google.com>
-Fri Nov 19 22:09:46 2010 Kouhei Sutou <kou@cozmixng.org>
+ * ext/depend (ENCOBJS, TRANSOBJS): Add missing dependencies.
- * 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]
+Mon Apr 8 17:19:28 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Fri Nov 19 21:07:06 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * ext/win32ole/win32ole.c (fole_missing): should check actual argument
+ count before accessing.
- * lib/optparse.rb: shell completion support for zsh. based on
- <http://d.hatena.ne.jp/rubikitch/20071002/zshcomplete>
+Mon Apr 8 16:03:55 2013 Yuki Yugui Sonoda <yugui@google.com>
- * lib/optparse.rb: shell completion support for bash.
+ 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.
-Fri Nov 19 00:00:00 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Mon Apr 8 12:05:02 2013 NARUSE, Yui <naruse@ruby-lang.org>
- * cygwin/GNUmakefile.in (SCRIPTPROGRAMS): no needs on cygwin.
+ * 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.
- * win32/Makefile.sub (scriptbin): create script binaries.
+ * object.c (rb_mod_const_set): ditto.
-Thu Nov 18 23:21:23 2010 Kouhei Sutou <kou@cozmixng.org>
+ * object.c (rb_mod_cvar_set): ditto.
- * 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!!!
+Sun Apr 7 13:56:16 2013 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
- * test/rexml/test_core.rb: add a test for it.
+ * test/ruby/test_require.rb (TestRequire#test_require_nonascii_path):
+ RUBY_PLATFORM should escape as Regexp,
+ because RUBY_PLATFORM may contain '.'.
-Thu Nov 18 22:58:43 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Sun Apr 7 10:44:01 2013 Tanaka Akira <akr@fsij.org>
- * include/ruby/io.h (rb_io_buffer_t): extract from rb_io_t.
+ * include/ruby/defines.h: Simplify the logic to include sys/select.h.
+ This fixes a compilation error on Haiku (gcc2 and gcc4).
-Thu Nov 18 07:37:44 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * configure.in: Use shared linker as $(CC) for Haiku.
+ This fixes a build error on Haiku (gcc2).
- * Makefile.in (reconfig): force reconfigure with previous options.
+Sun Apr 7 10:41:30 2013 Tanaka Akira <akr@fsij.org>
- * common.mk (showconfig): show configure flags, like as
- `config.status --config' generated by recent autoconf.
+ * lib/resolv.rb (MDNSOneShot#sender): Delete an unused variable.
-Thu Nov 18 07:16:49 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Sun Apr 7 03:24:36 2013 NARUSE, Yui <naruse@ruby-lang.org>
- * missing/langinfo.c (strncasecmp): get rid of redefinition.
+ * 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
-Thu Nov 18 00:02:17 2010 James Edward Gray II <jeg2@ruby-lang.org>
+ * addr2line.c (imax): inline is defined by configure.
- * lib/csv.rb: Upgrading output encoding with ASCII content
- as needed. [ruby-core:33229]
+Sun Apr 7 01:40:39 2013 Akinori MUSHA <knu@iDaemons.org>
-Wed Nov 17 23:19:21 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * misc/ruby-electric.el (ruby-electric-hash): New electric
+ function that expands a hash sign inside a string or regexp to
+ "#{}".
- * win32/configure.bat: remove quotes from arguments to be quoted.
+ * misc/ruby-electric.el (ruby-electric-curlies): Do not insert
+ spaces inside when the curly brace is a delimiter of %r, %w,
+ etc.
- * lib/mkmf.rb (create_makefile): use forward slashes in messages.
+ * misc/ruby-electric.el (ruby-electric-curlies): Insert another
+ space before a closing curly brace when
+ ruby-electric-newline-before-closing-bracket is nil.
- * lib/mkmf.rb (create_makefile): make extension libraries messages
- brief.
+Sun Apr 7 01:01:26 2013 Tanaka Akira <akr@fsij.org>
- * win32/Makefile.sub (MAKEDIRS): should not include silent flag.
+ * strftime.c (rb_strftime_with_timespec): Test yday range.
+ [ruby-core:44088] [Bug #6247] reported by Ruby Submit.
- * common.mk (ext/ripper/ripper.c, ext/json/parser/parser.c): pass
- Q and ECHO. [ruby-core:33226]
+Sat Apr 6 23:46:54 2013 Naohisa Goto <ngotogenome@gmail.com>
-Wed Nov 17 16:09:52 2010 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+ * configure.in (AC_CHECK_HEADERS): atomic.h for Solaris atomic_ops.
- * test/test_tracer.rb: new test case.
- minimal regression test for r29280.
+ * ruby_atomic.h: Skip using Solaris10 atomic_ops on Solaris 9 or
+ earlier if atomic.h is not available. [ruby-dev:47229] [Bug #8228]
-Wed Nov 17 16:04:23 2010 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+Sat Apr 6 23:40:40 2013 Tanaka Akira <akr@fsij.org>
- * 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.
+ * lib/resolv.rb: Support LOC resources.
+ [ruby-core:23361] [Feature #1436] by JB Smith.
-Wed Nov 17 15:16:48 2010 NARUSE, Yui <naruse@ruby-lang.org>
+Sat Apr 6 23:38:09 2013 Naohisa Goto <ngotogenome@gmail.com>
- * regint.h (OnigOpInfoType): constify name.
+ * 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]
- * regcomp.c (op2name): constify return value.
+Sat Apr 6 23:31:38 2013 Tanaka Akira <akr@fsij.org>
- * regcomp.c (onig_print_compiled_byte_code): use PRIuPTR and
- uintptr_t to clean warnings.
+ * lib/resolv.rb: Add one-shot multicast DNS support.
+ [ruby-core:53387] [Feature #8089] by Eric Hodel.
- * regcomp.c (print_indent_tree): use PRIxPTR and intptr_t.
+Sat Apr 6 22:12:01 2013 Tanaka Akira <akr@fsij.org>
- * regexec.c (match_at): use PRIdPTR and intptr_t.
+ * lib/resolv.rb (Resolv::DNS.fetch_resource): New method to obtain
+ full result.
+ [ruby-dev:43587] [Feature #4788] proposed by Makoto Kishimoto.
-Wed Nov 17 09:49:10 2010 NARUSE, Yui <naruse@ruby-lang.org>
+Sat Apr 6 20:17:51 2013 Tanaka Akira <akr@fsij.org>
- * enc/shift_jis.c (property_name_to_ctype): fix memory leak.
+ * 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.
- * enc/euc_jp.c (property_name_to_ctype): ditto.
+ * ext/socket/rubysocket.h: Follow the above change.
-Wed Nov 17 08:54:04 2010 James Edward Gray II <jeg2@ruby-lang.org>
+Sat Apr 6 19:24:59 2013 Tanaka Akira <akr@fsij.org>
- * lib/csv.rb: Upgrading output encoding as needed. [ruby-core:33135]
+ * 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.
-Tue Nov 16 22:30:39 2010 Yusuke Endoh <mame@tsg.ne.jp>
+ * ext/socket/rubysocket.h (rsock_sys_fail_sockaddr): Follow the above
+ change.
- * vm_insnhelper.c (vm_throw): remove fear of undefined behavior :-)
- Coverity Scan found this bug.
+Sat Apr 6 14:28:23 2013 Tanaka Akira <akr@fsij.org>
-Tue Nov 16 09:33:00 2010 Kenta Murata <mrkn@mrkn.jp>
+ * 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.
- * ext/bigdecimal/lib/bigdecimal/util.rb (to_digits): avoid unused
- variables warning, reported by Aaron Patterson.
+ * 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.
-Tue Nov 16 06:39:31 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * 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.
- * pack.c (PACK_ITEM_ADJUST): return nil not result array and yield
- values if block is given. [ruby-core:33193]
+Sat Apr 6 13:34:20 2013 Tanaka Akira <akr@fsij.org>
-Tue Nov 16 00:21:20 2010 Yusuke Endoh <mame@tsg.ne.jp>
+ * ext/socket/socket.c (rsock_sys_fail_sockaddr): Delete 2nd argument.
- * regparse.c (and_cclass, or_cclass): fix memory leak. Coverity Scan
- found this bug. [ruby-dev:42579]
+ * ext/socket/rubysocket.h (rsock_sys_fail_sockaddr): Follow above
+ change.
-Tue Nov 16 00:07:32 2010 Yusuke Endoh <mame@tsg.ne.jp>
+Sat Apr 6 13:13:39 2013 Tanaka Akira <akr@fsij.org>
- * gc.c (assign_heap_slot): fix fear of memory leak and memory
- violation. Coverity Scan found this bug.
+ * ext/socket/socket.c (rsock_sys_fail_path): Use rb_str_inspect only
+ for String to avoid SEGV.
-Mon Nov 15 23:54:45 2010 Yusuke Endoh <mame@tsg.ne.jp>
+Sat Apr 6 12:40:16 2013 Tanaka Akira <akr@fsij.org>
- * eval_intern.h (CHECK_STACK_OVERFLOW): it was not intended to add
- size_t to a pointer typed VALUE*. Coverity Scan found this defect.
+ * ext/socket/rubysocket.h (rsock_sys_fail_host_port): Wrap by NORETURN.
+ (rsock_sys_fail_path): Ditto.
+ (rsock_sys_fail_sockaddr): Ditto.
-Mon Nov 15 23:41:21 2010 Yusuke Endoh <mame@tsg.ne.jp>
+Sat Apr 6 11:49:35 2013 Tanaka Akira <akr@fsij.org>
- * 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.
+ * ext/socket/socket.c (rsock_sys_fail_path): Use rb_str_inspect if the
+ path contains a NUL.
-Mon Nov 15 22:47:27 2010 Yusuke Endoh <mame@tsg.ne.jp>
+Sat Apr 6 11:39:19 2013 Tanaka Akira <akr@fsij.org>
- * vm_eval.c (rb_funcall): ensure va_end after va_init_list. Coverity
- Scan found this bug.
+ * ext/socket: Improve socket exception message to show socket address.
+ [ruby-core:45617] [Feature #6583] proposed Eric Hodel.
-Mon Nov 15 08:36:12 2010 Aaron Patterson <aaron@tenderlovemaking.com>
+ * ext/socket/rubysocket.h (rsock_sys_fail_host_port): Declared.
+ (rsock_sys_fail_path): Ditto.
+ (rsock_sys_fail_sockaddr): Ditto.
- * lib/racc/parser.rb (do_parse, yyparse): using class eval to define
- method and avoid __send__.
+ * ext/socket/udpsocket.c (udp_connect): Use rsock_sys_fail_host_port.
+ (udp_bind): Ditto.
+ (udp_send): Ditto.
-Mon Nov 15 06:43:48 2010 Aaron Patterson <aaron@tenderlovemaking.com>
+ * ext/socket/init.c (rsock_init_sock): Specify a string for rb_sys_fail
+ argument.
+ (make_fd_nonblock): Ditto.
+ (rsock_s_accept): Ditto.
- * etc/openssl/ossl_ssl.c (ossl_ssl_get_cert): raise exception if
- pointer is invalid. Thanks Ippei Obayashi! [ruby-dev:42573]
+ * ext/socket/ipsocket.c (init_inetsock_internal): Use
+ rsock_sys_fail_host_port.
-Sun Nov 14 17:57:45 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * 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.
- * enc/Makefile.in (distclean): should not remove sources which are
- distributed in tarball.
+ * 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.
-Sun Nov 14 16:48:56 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * 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.
- * parse.y (parser_set_token_info): turn on/off with directives.
- [ruby-core:25442]
+Sat Apr 6 11:23:18 2013 Hiroshi Shirosaki <h.shirosaki@gmail.com>
-Sun Nov 14 12:05:24 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * test/ruby/test_require.rb (TestRequire#test_require_nonascii_path):
+ fix load path for encoding to run the test as stand-alone.
- * io.c (argf_readlines): forward to current_file for arguments
- check. http://twitter.com/nagachika/status/3634254856589312
+Sat Apr 6 09:54:20 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Sun Nov 14 08:48:06 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * pack.c (NATINT_LEN): fix definition order, must be after
+ NATINT_PACK.
- * win32/setup.mak (-basic-vars-, -runtime-): suppress trailing
- space and compiler command line.
+Sat Apr 6 03:11:07 2013 Aaron Patterson <aaron@tenderlovemaking.com>
-Sun Nov 14 04:22:32 2010 Alexander Zavorine <alexandre.zavorine@nokia.com>
+ * ext/psych/lib/psych/visitors/yaml_tree.rb: fix symbol keys in coder
+ emission. Thanks @tjwallace
+ * test/psych/test_coder.rb: test for change
- * symbian/setup (config.h): Added HAVE_LABS and HAVE_LLABS to config.h.
+Sat Apr 6 02:54:08 2013 Aaron Patterson <aaron@tenderlovemaking.com>
- * symbian/configure.bat: Changed packaging version in line with API
- style 3 versioning.
+ * 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 Nov 13 16:37:56 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Sat Apr 6 02:30:28 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * common.mk (showflags, help): emit messages at once.
+ * parse.y (new_defined): remove all extra parentheses, and return
+ "nil" for defined? with empty expression.
+ [ruby-core:54024] [Bug #8224]
- * win32/Makefile.sub (MSG, EOM): remove surrounding quotes by %~I.
+Sat Apr 6 02:06:04 2013 Aaron Patterson <aaron@tenderlovemaking.com>
-Sat Nov 13 01:31:30 2010 Akio Tajima <artonx@yahoo.co.jp>
+ * ext/psych/lib/psych/visitors/to_ruby.rb: correctly register
+ self-referential strings. Fixes tenderlove/psych #135
- * win32/Makefile.sub: reorder variable End Of Message (don't display it)
+ * test/psych/test_string.rb: appropriate test.
-Fri Nov 12 20:52:34 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Sat Apr 6 01:21:56 2013 Tanaka Akira <akr@fsij.org>
- * common.mk (showflags, help): use caret to quote leading spaces on
- Windows.
+ * 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.
- * Makefile.in, common.mk, cygwin/GNUmakefile.in, enc/depend,
- ext/ripper/depend, lib/mkmf.rb, win32/Makefile.sub: caddle up.
+Sat Apr 6 00:19:30 2013 Hiroshi Shirosaki <h.shirosaki@gmail.com>
-Fri Nov 12 16:35:31 2010 NARUSE, Yui <naruse@ruby-lang.org>
+ * 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]
- * 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/
+ * test/ruby/test_require.rb (TestRequire#test_require_nonascii_path):
+ a test for the above.
-Fri Nov 12 09:58:30 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+Fri Apr 5 20:41:49 2013 Tanaka Akira <akr@fsij.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.
+ * include/ruby/defines.h (HAVE_TRUE_LONG_LONG): Defined to distinguish
+ availability of long long and availability of 64bit integer type.
-Fri Nov 12 00:30:19 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * pack.c: Use HAVE_TRUE_LONG_LONG to distinguish q! and Q! support.
- * win32/Makefile.sub (config.h): need PRI_LL_PREFIX.
+Fri Apr 5 20:19:42 2013 Tanaka Akira <akr@fsij.org>
-Thu Nov 11 23:38:32 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * addr2line.c: Include ruby/missing.h to fix compile error on Debian.
- * configure.in: ANSI C-conforming const and volatile are mandatory
+Fri Apr 5 19:39:52 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * configure.in (AC_C_CONST, AC_C_INLINE, AC_C_VOLATILE): check
- before used in other checks.
+ * compile.c (iseq_compile_each): fix of defined? with empty
+ expression. [ruby-core:53999] [Bug #8220]
- * configure.in (RUBY_CHECK_PRINTF_PREFIX): should not break from
- RUBY_WERROR_FLAG, so that ac_c_werror_flag gets restored.
+Fri Apr 5 13:22:59 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Thu Nov 11 23:04:44 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * ext/curses/curses.c (Init_curses): fix implementation function,
+ crmode should be same as cbreak. [ruby-core:54013] [Bug #8222]
- * ext/iconv/iconv.c (warn_deprecated): show caller position.
+Fri Apr 5 12:06:00 2013 Zachary Scott <zachary@zacharyscott.net>
-Thu Nov 11 23:03:12 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * ext/curses/hello.rb: Typo in Curses example by Drew Blas
+ [Fixes GH-273]
- * io.c (argf_close): untie tied io before closing.
+Thu Apr 4 23:45:13 2013 Tanaka Akira <akr@fsij.org>
- * io.c (argf_write): add ARGF.write and so on.
+ * 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.
- * io.c (argf_read_nonblock): add ARGF.read_nonblock.
+Thu Apr 4 23:24:45 2013 Tanaka Akira <akr@fsij.org>
-Thu Nov 11 21:49:06 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * ext/socket/extconf.rb: Remove condition for bcc.
- * lib/rdoc/stats.rb (RDoc#print): get rid of NaN.
+Thu Apr 4 22:53:23 2013 Tanaka Akira <akr@fsij.org>
-Thu Nov 11 21:47:12 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * include/ruby/ruby.h (FIX2LONG): Parenthesize the macro body.
- * common.mk (SHOWFLAGS): show compile flags.
+Thu Apr 4 22:32:32 2013 Tanaka Akira <akr@fsij.org>
- * 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
+ * time.c (time_strftime): Describe %L and %N truncates digits under
+ the specified length.
+ [ruby-core:52130] [Bug #7829]
-Thu Nov 11 21:32:09 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Thu Apr 4 22:08:46 2013 Tanaka Akira <akr@fsij.org>
- * lib/mkmf.rb (try_func): accept variable address.
+ * object.c (rb_mod_cvar_set): Reverted "avoid inadvertent
+ symbol creation" to avoid SEGV by
+ Class.new.class_variable_set(1, 2).
- * ext/win32ole/extconf.rb: libuuid is needed on cygwin.
+Thu Apr 4 20:07:19 2013 Tanaka Akira <akr@fsij.org>
-Thu Nov 11 21:24:36 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * ext/pathname/pathname.c (path_write): New method.
+ (path_binwrite): Ditto.
+ [ruby-core:49468] [Feature #7378]
- * file.c (file_expand_path): use cygwin_conv_path on cygwin 1.7 or
- later.
+Thu Apr 4 16:51:29 2013 Yuki Yugui Sonoda <yugui@google.com>
- * ruby.c (push_include_cygwin): ditto.
+ * thread_pthread.c: Fixes wrong scopes of #if USE_SLEEPY_TIMER_THREAD
+ .. #endif sections. This fixes a build error on NativeClient.
-Thu Nov 11 20:49:48 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Wed Apr 3 17:25:31 2013 Yuki Yugui Sonoda <yugui@google.com>
- * include/ruby/ruby.h (PRI_LL_PREFIX): format type specifier for
- LONG_LONG may vary on platforms.
+ * thread_pthread.c (ruby_init_stack): Avoid using uninitialized value.
+ stackaddr and size are not set if get_stack() fails.
-Thu Nov 11 20:45:23 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Thu Apr 4 16:55:08 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * configure.in (SYMBOL_PREFIX): separate from EXPORT_PREFIX.
+ * struct.c (make_struct): avoid inadvertent symbol creation.
+ (rb_struct_aref): ditto.
+ (rb_struct_aset): ditto.
- * win32/mkexports.rb (Exports#each_export): use SYMBOL_PREFIX.
+Thu Apr 4 16:54:40 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Wed Nov 10 07:20:10 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * object.c (rb_mod_const_set): avoid inadvertent symbol creation.
+ (rb_obj_ivar_set): ditto.
+ (rb_mod_cvar_set): ditto.
- * cygwin/GNUmakefile.in (scriptbin): make executable file from
- scripts with stub.
+Thu Apr 4 15:46:48 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * ruby.c (load_file_internal): assume xflag for exe file as well
- as no-shebang file.
+ * enum.c (enum_inject): avoid inadvertent symbol creation.
- * tool/rbinstall.rb: install script programs.
+Thu Apr 4 14:37:07 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * win32/mkexports.rb (Exports#initialize): alias ruby_sysinit for
- stub.
+ * thread.c (rb_thread_aref): avoid inadvertent symbol creation.
+ (rb_thread_variable_get): ditto.
+ (rb_thread_key_p): ditto.
+ (rb_thread_variable_p): ditto.
- * win32/stub.c: stub for scripts. [EXPERIMENTAL]
+Thu Apr 4 11:33:57 2013 NARUSE, Yui <naruse@ruby-lang.org>
-Tue Nov 9 21:57:45 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * ext/openssl/ossl_bn.c (ossl_bn_to_i): Use bn2hex to speed up.
+ In general, binary to/from decimal needs extra cost.
- * dln.c (init_funcname): allocate and build initialization
- funciton name at once.
+Thu Apr 4 07:24:18 2013 Tanaka Akira <akr@fsij.org>
-Tue Nov 9 21:14:54 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * ext/socket/extconf.rb: Specify arguments to test functions.
- * configure.in (AC_FUNC_GETPGRP, AC_FUNC_SETPGRP): no need when
- not used.
+Thu Apr 4 03:25:09 2013 NARUSE, Yui <naruse@ruby-lang.org>
- * configure.in (EXPORT_PREFIX): check generic prefix.
+ * ext/openssl/ossl_bn.c (ossl_bn_initialize): fix can't create from bn.
-Tue Nov 9 13:24:33 2010 NARUSE, Yui <naruse@ruby-lang.org>
+Wed Apr 3 22:09:25 2013 Tanaka Akira <akr@fsij.org>
- * regenc.c (onigenc_minimum_property_name_to_ctype):
- \p{...} should be case insensitive. [ruby-core:33000]
+ * ext/socket/extconf.rb: Test functions and libraries after headers.
- * regenc.c (onigenc_property_list_add_property):
- ditto.
+Wed Apr 3 21:23:29 2013 Tanaka Akira <akr@fsij.org>
- * enc/euc_jp.c (init_property_list, property_name_to_ctype):
- to lowercase property names.
+ * io.c (rb_io_seek_m): Accept :CUR, :END, :SET as "whence" argument.
+ (interpret_seek_whence): New function.
+ [ruby-dev:45818] [Feature #6643]
- * enc/shift_jis.c (init_property_list, property_name_to_ctype):
- ditto.
+Wed Apr 3 20:52:49 2013 Tanaka Akira <akr@fsij.org>
-Tue Nov 9 13:29:36 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+ * process.c: Describe the behavior which Ruby invokes a commandline
+ directly without shell if the commandline is simple enough.
+ [ruby-core:50459] [Bug #7489]
- * win32/win32.c (overlapped_socket_io): get rid of a warning of 64bit
- mingw.
+Wed Apr 3 20:27:37 2013 Tanaka Akira <akr@fsij.org>
-Tue Nov 9 10:44:19 2010 NARUSE, Yui <naruse@ruby-lang.org>
+ * ext/extmk.rb (extmake): Invoke Logging::log_close in a ensure
+ clause.
- * 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/
+Wed Apr 3 18:53:58 2013 Tanaka Akira <akr@fsij.org>
-Tue Nov 9 07:30:15 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * 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.
- * error.c (rb_syserr_new): new function to make SystemCallError
- instance without errno. [EXPERIMENTAL]
+ * lib/mkmf.rb (Logging.log_opened?): New method.
- * error.c (rb_syserr_fail, rb_mod_syserr_fail): ditto.
+ [ruby-dev:47215] [Bug #8209]
-Tue Nov 9 05:54:57 2010 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+Wed Apr 3 17:11:15 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * lib/*.rb: Remove unused variable warnings.
- Patch by Run Paint [ruby-core:30991]
+ * 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]
- * lib/rubygems/*, lib/rdoc/*.rb, lib/rake/*.rb: ditto
+Wed Apr 3 16:35:32 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Mon Nov 8 18:26:03 2010 NARUSE, Yui <naruse@ruby-lang.org>
+ * bignum.c (rb_big_eq): hide intermediate Bignums not just freeing
+ memory. [ruby-core:53893] [Bug #8204]
- * util.c (ruby_hdtoa): fix type cast and bufsize.
+ * object.c (rb_obj_hide): hide an object by clearing klass.
-Mon Nov 8 15:40:56 2010 NARUSE, Yui <naruse@ruby-lang.org>
+ * bignum.c (rb_big_eq): test as Fixnum if possible and get rid of zero
+ length Bignum. [ruby-core:53893] [Bug #8204]
- * vsnprintf.c (BSD_vfprintf): fix precision specifier doesn't
- work well on %f. [ruby-dev:42552]
+Tue Apr 2 23:56:03 2013 Tanaka Akira <akr@fsij.org>
-Mon Nov 8 14:41:40 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+ * 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]
- * win32/win32.c (get_wsa_extension_function): typos.
+Tue Apr 2 20:24:52 2013 Tanaka Akira <akr@fsij.org>
-Mon Nov 8 13:41:33 2010 NARUSE, Yui <naruse@ruby-lang.org>
+ * 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]
- * 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
+Tue Apr 2 19:24:26 2013 Tanaka Akira <akr@fsij.org>
-Mon Nov 8 12:16:39 2010 Ben Walton <bwalton@artsci.utoronto.ca>
+ * ext/-test-/num2int/num2int.c: Define utility methods
+ as module methods of Num2int.
- * configure.in: support -h for solaris linker when gcc not used
+ * test/-ext-/num2int/test_num2int.rb: Follow the above change.
-Mon Nov 8 11:47:39 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+Tue Apr 2 18:49:01 2013 Tanaka Akira <akr@fsij.org>
- * win32/win32.c (finish_overlapped_socket): refactoring.
+ * lib/securerandom.rb: Don't use Array#to_s.
+ [ruby-core:52058] [Bug #7811] fixed by zzak (Zachary Scott).
-Mon Nov 8 11:02:21 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+Tue Apr 2 17:38:20 2013 NARUSE, Yui <naruse@ruby-lang.org>
- * win32/win32.c (get_proc_address): refactoring.
+ * 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]
- * win32/win32.c (get_wsa_exetinsion_function): refactoring.
+Tue Apr 2 16:00:06 2013 NARUSE, Yui <naruse@ruby-lang.org>
-Mon Nov 8 09:45:35 2010 NARUSE, Yui <naruse@ruby-lang.org>
+ * vm_dump.c (rb_print_backtrace): separate to ease showing C backtrace.
- * 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
+ * internal.h (rb_print_backtrace): ditto.
-Mon Nov 8 07:26:20 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Tue Apr 2 15:22:09 2013 NARUSE, Yui <naruse@ruby-lang.org>
- * configure.in: check only the first symbol to get rid of
- duplication. [ruby-core:33084] #4031
+ * test/ruby/envutil.rb (assert_separately): stop_auto_run of
+ Test::Unit::Runner to prevent auto runner use ARGV.
-Sun Nov 7 10:13:30 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * test/ruby/envutil.rb (assert_separately): add $: to separate process.
- * configure.in (NM): check on all platforms. #4031
+ * test/ruby/envutil.rb (assert_separately): fail if stderr is not
+ empty and ignore_stderr is false.
-Sun Nov 7 06:16:33 2010 Aaron Patterson <aaron@tenderlovemaking.com>
+Tue Apr 2 06:46:59 2013 Tanaka Akira <akr@fsij.org>
- * test/openssl/test_ocsp.rb: adding test for r29699. Thanks Elise
- Huard! [ruby-core:32460]
+ * ext/-test-/num2int/num2int.c: Rename utility methods
+ to global functions to ease manual experiments.
-Sat Nov 6 07:33:08 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * test/-ext-/num2int/test_num2int.rb: Follow the above change.
- * configure.in (rb_cv_export_prefix): check for prefixed
- underscore of exported symbols
+Mon Apr 1 22:26:17 2013 Tanaka Akira <akr@fsij.org>
- * tool/rbinstall.rb (bin-comm): prepend prolog shell script if
- necessary.
+ * 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.
- * configure.in (LIBRUBY_RELATIVE): use rpath token expansion.
+Mon Apr 1 22:08:02 2013 Benoit Daloze <eregontp@gmail.com>
-Sat Nov 6 07:24:01 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * ext/zlib/zlib.c (Zlib::Inflate.new):
+ Fix documentation syntax and naming errors.
+ Based on patch by Robin Dupret. Fix GH-271.
- * template/ruby.pc.in (arch, sitearch): reordered.
+Mon Apr 1 21:22:31 2013 Tanaka Akira <akr@fsij.org>
- * configure.in: keep failed file.
+ * test/-ext-/num2int/test_num2int.rb: Test small bignums.
-Sat Nov 6 07:03:49 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Mon Apr 1 21:10:56 2013 Tanaka Akira <akr@fsij.org>
- * process.c (rb_fork_err): save errinfo before fdopen.
+ * 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.
-Sat Nov 6 00:43:58 2010 Aaron Patterson <aaron@tenderlovemaking.com>
+Mon Apr 1 20:57:57 2013 Tanaka Akira <akr@fsij.org>
- * 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]
+ * ext/-test-/num2int/num2int.c: Return string for result, instead of
+ printing.
-Fri Nov 5 12:23:01 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * test/-ext-/num2int/test_num2int.rb: updated to follow above change.
- * test/ruby/test_{process,system}.rb (test_fallback_to_sh):
- meaningless and wrong tests where /bin/sh does not exist.
+Mon Apr 1 20:08:07 2013 Tanaka Akira <akr@fsij.org>
- * process.c (proc_spawn_v): should spawn, not exec.
+ * 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.
-Fri Nov 5 01:21:31 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Mon Apr 1 18:41:35 2013 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]
+ * configure.in: skip autoconf 2.64 and 2.66, 2.67 seems short-lived
+ but stick on it for Debian Squeeze.
-Fri Nov 5 00:39:00 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Mon Apr 1 14:22:52 2013 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
+ * configure.in: check clang version by predefined macro values.
+ [Bug #8192]
-Fri Nov 5 00:14:15 2010 Aaron Patterson <aaron@tenderlovemaking.com>
+Mon Apr 1 12:05:15 2013 Tanaka Akira <akr@fsij.org>
- * ext/fiddle/extconf.rb: fixing ffi library location on windows.
- Thanks Usa! [ruby-core:32930]
+ * numeric.c (check_uint): Take the 1st argument as unsigned long,
+ instead of VALUE. Refine the validity test conditions.
+ (check_ushort): Ditto.
-Thu Nov 4 20:04:44 2010 Koichi Sasada <ko1@atdot.net>
+Mon Apr 1 07:15:03 2013 Ayumu AIZAWA <ayumu.aizawa@gmail.com>
- * gc.c (rb_newobj): force garbage_collect() if GC.stress == true.
+ * configure.in: use quadrigraph to put '[' or ']'. [Bug #8192]
-Thu Nov 4 19:48:22 2010 Koichi Sasada <ko1@atdot.net>
+Mon Apr 1 04:16:41 2013 NARUSE, Yui <naruse@ruby-lang.org>
- * ChangeLog: missed to write a last ChangeLog.
+ * configure.in: kick old clang. [ruby-dev:47204] [Bug #8192]
- * gc.c (gc_finalize_deferred): removed.
+Mon Apr 1 01:12:46 2013 Tanaka Akira <akr@fsij.org>
- * gc.c (rb_gc_finalize_deferred): Do not invoke a free_unused_heaps().
+ * include/ruby/ruby.h (FIX2ULONG): Make it consistent with NUM2ULONG.
-Thu Nov 4 19:45:27 2010 Koichi Sasada <ko1@atdot.net>
+ * ext/-test-/num2int/num2int.c: Add utility methods for FIX2XXX tests.
- * gc.c (run_final): do not need argument obj.
+ * test/-ext-/num2int/test_num2int.rb: Add tests for FIX2XXX.
-Thu Nov 4 19:26:10 2010 Koichi Sasada <ko1@atdot.net>
+Sun Mar 31 17:17:56 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * gc.c (before_gc_sweep): fix commit miss.
+ * proc.c (rb_mod_define_method): consider visibility in define_method.
+ patch by mashiro <mail AT mashiro.org>. fix GH-268.
-Thu Nov 4 19:20:46 2010 Koichi Sasada <ko1@atdot.net>
+Sun Mar 31 15:40:30 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * gc.c (after_gc_sweep, before_gc_sweep):
- invoke rb_sweep_method_entry() as soon as possible.
+ * win32/configure.bat: try to fix option arguments split by commas and
+ equals here. this batch file no longer run with old command.com.
-Thu Nov 4 19:13:58 2010 Koichi Sasada <ko1@atdot.net>
+ * tool/mkconfig.rb: no hacks for cmd.exe.
- * gc.c (after_gc_sweep, slot_sweep): finalizers should be invoked
- as soon as possible.
+Sun Mar 31 13:47:04 2013 Tanaka Akira <akr@fsij.org>
-Thu Nov 4 10:30:40 2010 URABE Shyouhei <shyouhei@ruby-lang.org>
+ * 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.
- * configure.in (--with-valgrind): Now this option is default on.
- You can still explicitly disable this feature by specifying
- --without-valgrind.
+Sun Mar 31 06:27:17 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Thu Nov 4 02:06:16 2010 Yusuke Endoh <mame@tsg.ne.jp>
+ * 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]
- * cont.c (fiber_t_alloc): raise an error when fiber is going to be
- initialized twice. [ruby-dev:42524]
+Sat Mar 30 14:11:28 2013 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
-Thu Nov 4 02:04:25 2010 Yusuke Endoh <mame@tsg.ne.jp>
+ * bcc32: removed. agreed at
+ http://bugs.ruby-lang.org/projects/ruby/wiki/DevelopersMeeting20130223Japan
- * cont.c (rb_fiber_resume): raise an "double resume" error when root
- fiber is going to be resumed. [ruby-dev:42523]
+Sat Mar 30 03:58:00 2013 NAKAMURA Usaku <usa@ruby-lang.org>
-Wed Nov 3 14:17:18 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * 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).
- * lib/ostruct.rb (OpenStruct#delete_field): also undefine
- accessor methods. [ruby-core:33010]
+Sat Mar 30 03:49:21 2013 NAKAMURA Usaku <usa@ruby-lang.org>
-Wed Nov 3 14:13:46 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * 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).
- * string.c (rb_enc_cr_str_buf_cat): concatenation of valid
- encoding string and invalid encoding string should result
- invalid encoding. [ruby-core:33027]
+Fri Mar 29 22:09:46 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Wed Nov 3 08:58:59 2010 Koichi Sasada <ko1@atdot.net>
+ * thread.c (rb_mutex_synchronize_m): yield no block params. patch by
+ splattael (Peter Suschlik) in [ruby-core:53773] [Bug #8097].
+ fix GH-266.
- * gc.c, vm.c, vm_core.h: remove USE_VALUE_CACHE option.
+Fri Mar 29 16:51:39 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Wed Nov 3 07:47:25 2010 Yukihiro Matsumoto <matz@ruby-lang.org>
+ * io.c (argf_next_argv): set init flag if succeeded to forward, after
+ skipping.
- * lib/irb/ruby-lex.rb (RubyLex#identify_string): parse multiple
- regex options. a patch from Heesob Park in [ruby-core:32988].
+ * io.c (argf_block_call_i, argf_block_call): no more forwarding if
+ forwarded after skipping. [ruby-list:49185]
-Wed Nov 3 07:33:57 2010 Tanaka Akira <akr@fsij.org>
+ * io.c (argf_close): deal with init flag.
- * vm_method.c (rb_clear_cache_by_class): just return if the class has
- no method. reported by Eric Wong. [ruby-core:32689]
+ * io.c (argf_block_call_i, argf_block_call): forward next file if
+ skipped while iteration, to get rid of IOError. [ruby-list:49185]
-Tue Nov 2 22:50:25 2010 Aaron Patterson <aaron@tenderlovemaking.com>
+Fri Mar 29 11:09:48 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * ext/psych/lib/psych/visitors/visitor.rb (initialize): push accessor
- methods to subclass that actually uses them.
+ * lib/mkmf.rb (configuration): not include all CFLAGS in CXXFLAGS, to
+ use different set than C for C++. [ruby-core:45273] [Bug #6504]
-Tue Nov 2 22:47:08 2010 Aaron Patterson <aaron@tenderlovemaking.com>
+Fri Mar 29 10:24:10 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * ext/psych/lib/psych/visitors/visitor.rb (accept): switch to
- a dispatch cache rather than case / when statement.
+ * 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]
-Tue Nov 2 21:46:52 2010 Kouhei Sutou <kou@cozmixng.org>
+Fri Mar 29 06:39:42 2013 Tanaka Akira <akr@fsij.org>
- * NEWS: fix a typo.
+ * 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
-Tue Nov 2 20:10:32 2010 Tajima Akio <artonx@yahoo.co.jp>
+Fri Mar 29 00:54:54 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * test/rake/test_tasks.rb: clear env var which is used by the test.
- [ruby-dev:42508]
+ * lib/mkmf.rb (MAIN_DOES_NOTHING): ensure symbols for tests to be
+ preserved. [ruby-core:53745] [Bug #8169]
-Tue Nov 2 00:25:54 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+Thu Mar 28 23:11:25 2013 Tanaka Akira <akr@fsij.org>
- * ext/socket/extconf.rb: win64 is just same with win32 about socket.
- notice: but wince is not same.
+ * 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.
-Mon Nov 1 21:25:57 2010 URABE Shyouhei <shyouhei@ruby-lang.org>
+Thu Mar 28 23:10:10 2013 Nobuyoshi Nakada <nobu@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().
+ * include/ruby/io.h: rename SVR3,4 member names as POSIX compliant,
+ to get rid of conflict on AIX. [ruby-core:53765] [Bug #8174]
-Sun Oct 31 23:27:09 2010 Koichi Sasada <ko1@atdot.net>
+Thu Mar 28 18:22:21 2013 Tanaka Akira <akr@fsij.org>
- * gc.c (finalizer_table, objspace->final.table):
- Create finalizer_table at Init_heap().
- Remove all null checks of finalizer_table.
+ * test/-ext-/num2int/test_num2int.rb: extract
+ assert_num2i_success_internal and assert_num2i_error_internal and
+ provide assertion messages as "NUM2XXX(NNN)".
- * gc.c (mark_tbl): skip if no table entries.
+Thu Mar 28 07:05:25 2013 Tanaka Akira <akr@fsij.org>
- * gc.c (slot_swee): remove useless need_call_final check.
+ * include/ruby/intern.h: Delete redundant inclusions caused by
+ AC_INCLUDES_DEFAULT in defines.h.
-Sun Oct 31 22:32:08 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * include/ruby/defines.h: Ditto.
- * gc.c (rb_objspace_free): finalizers should be called separately
- from freeing objspace. [ruby-dev:42479]
+ * include/ruby/ruby.h: Ditto.
-Sun Oct 31 22:24:14 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * include/ruby/st.h: Ditto.
- * eval.c (ruby_cleanup): free current VM and its objspace even
- when exiting by SystemExit.
+Thu Mar 28 06:51:31 2013 Tanaka Akira <akr@fsij.org>
-Sun Oct 31 22:10:56 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * 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.
- * compile.c (new_child_iseq): adjust argument types.
+Wed Mar 27 22:09:14 2013 Tanaka Akira <akr@fsij.org>
- * 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.
+ * 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.
- * compile.c (iseq_set_exception_table): suppress warnings.
+ * 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.
- * insns.def (putspecialobject, defined): ditto.
+Wed Mar 27 20:59:47 2013 Tanaka Akira <akr@fsij.org>
- * iseq.c (iseq_load): ditto.
+ * test/-ext-/num2int/test_num2int.rb (assert_num2i_success): New
+ utility method.
+ (assert_num2i_error): Ditto.
-Sun Oct 31 09:30:51 2010 Koichi Sasada <ko1@atdot.net>
+Wed Mar 27 20:37:59 2013 Tanaka Akira <akr@fsij.org>
- * 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.
+ * time.c (num_exact): Use to_r method only if to_int method is
+ available.
+ [ruby-core:53764] [Bug #8173] Reported by Hiro Asari.
- * 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.
+Wed Mar 27 12:07:40 2013 Tanaka Akira <akr@fsij.org>
- * iseq.h: define enum catch_type and enum defined_type.
+ * test/-ext-/num2int/test_num2int.rb (test_num2ll): test LLONG_MIN,
+ not LONG_MIN.
- * insns.def: apply above changes.
+Wed Mar 27 12:02:45 2013 Tanaka Akira <akr@fsij.org>
- * iseq.c: define ISEQ_MAJOR_VERSION and ISEQ_MINOR_VERSION.
+ * internal.h (TIMET_MAX_PLUS_ONE): definition simplified.
-Sat Oct 30 23:38:59 2010 Kouhei Sutou <kou@cozmixng.org>
+Wed Mar 27 06:39:41 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * lib/rexml/encoding.rb: untabify.
+ * lib/mkmf.rb (MAIN_DOES_NOTHING): force to refer symbols for tests
+ to be preserved. [ruby-core:53745] [Bug #8169]
-Sat Oct 30 21:06:37 2010 Kouhei Sutou <kou@cozmixng.org>
+Wed Mar 27 05:15:37 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * lib/rexml/encoding.rb: use Ruby native encoding mechanism.
- [ruby-dev:42464]
- * lib/rexml/encodings/: remove.
+ * configure.in (RUBY_REPLACE_TYPE): define SIGNEDNESS_OF_type same as
+ check_signedness of mkmf.rb.
- * 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.
+ * internal.h (TIMET_MAX, TIMET_MIN, TIMET_MAX_PLUS_ONE): use
+ SIGNEDNESS_OF_TIME_T.
- * test/rexml/, test/rss/: follow the above encoding changes.
+Wed Mar 27 00:28:45 2013 Tanaka Akira <akr@fsij.org>
- * NEWS: add REXML's incompatible change about encoding.
+ * internal.h (TIMET_MAX_PLUS_ONE): Defined.
-Sat Oct 30 17:23:19 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * thread.c (double2timeval): Saturate out-of-range values.
- * util.c (ruby_strtod): get rid of overflow/underflow as possible.
+Tue Mar 26 23:41:18 2013 Tanaka Akira <akr@fsij.org>
-Sat Oct 30 14:37:39 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * internal.h: Define TIMET_MAX and TIMET_MIN here.
- * configure.in (ruby_pc): erase runtime-defined variables and
- check if generated pc file is valid.
+ * time.c: Remove TIMET_MAX and TIMET_MIN definitions.
- * template/ruby.pc.in (DEFFILE): need for mingw.
+ * thread.c: Ditto.
- * template/ruby.pc.in (LIBRUBY): fix the order.
+ * thread_pthread.c: Remove TIMET_MAX definition.
-Sat Oct 30 11:33:54 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * thread_win32.c: Ditto.
- * win32/Makefile.sub (ruby_pc): ignore missing variables.
+Tue Mar 26 22:31:10 2013 Tanaka Akira <akr@fsij.org>
- * template/ruby.pc.in: add missing variables for mswin.
+ * ext/socket/socket.c (sockaddr_len): return the shortest length for
+ unknown socket address.
-Sat Oct 30 10:24:35 2010 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+Tue Mar 26 22:14:46 2013 Tanaka Akira <akr@fsij.org>
- * object.c: Make BasicObject.new accept no parameter.
- Revert of r26135 [ruby-core:27080], as per [ruby-core:32952].
+ * thread.c (double2timeval): convert the infinity to TIME_MAX to avoid
+ SEGV by Thread.new {}.join(Float::INFINITY) on
+ Debian GNU/Linux (amd64).
-Sat Oct 30 09:40:54 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Mon Mar 25 07:09:20 2013 Eric Hodel <drbrain@segment7.net>
- * enum.c: use constants in id.h.
+ * 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]
-Sat Oct 30 09:08:27 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Mon Mar 25 06:59:01 2013 Eric Hodel <drbrain@segment7.net>
- * ext/fiddle/closure.c (fiddle_closure): embed cif not reference
- so that the content surely get initialized. [ruby-dev:42480]
+ * 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]
-Sat Oct 30 07:01:53 2010 Tanaka Akira <akr@fsij.org>
+Sun Mar 24 10:38:24 2013 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
- * lib/resolv-replace.rb: suppress warning.
+ * addr2line.c (putce): suppress unused return value warning.
- * lib/open-uri.rb: ditto.
+Mon Mar 25 02:01:03 2013 Narihiro Nakamura <authornari@gmail.com>
-Sat Oct 30 06:32:52 2010 Tanaka Akira <akr@fsij.org>
+ * proc.c (bm_free): need to clean up the mark flag of a free and
+ unlinked method entry. [Bug #8100] [ruby-core:53439]
- * 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]
+Sun Mar 24 22:13:51 2013 NARUSE, Yui <naruse@ruby-lang.org>
-Sat Oct 30 05:58:54 2010 Tanaka Akira <akr@fsij.org>
+ * 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]
- * lib/resolv.rb: retry via TCP if UDP reply is truncated.
- fixed by Julian Mehnle. [ruby-core:32407]
+Sun Mar 24 18:29:46 2013 Akinori MUSHA <knu@iDaemons.org>
-Sat Oct 30 00:35:13 2010 Koichi Sasada <ko1@atdot.net>
+ * string.c (rb_str_rpartition): Fix String#rpartition(/re/)
+ against a multibyte string. [Bug #8138] [ruby-dev:47183]
- * iseq.c (iseq_s_compile): fix optional argument.
- a patch from Yutaka HARA [ruby-core:32953] [Ruby 1.9-Bug#4001]
+Sun Mar 24 13:42:24 2013 Narihiro Nakamura <authornari@gmail.com>
-Sat Oct 30 00:24:42 2010 Koichi Sasada <ko1@atdot.net>
+ * gc.c (GC_ENABLE_LAZY_SWEEP): new macro to switch lazy sweeping
+ for debugging. [Feature #8024] [ruby-dev:47135]
- * ext/objspace/objspace.c (memsize_of): take care of
- T_CLASS/const_tbl.
- a patch from nagachika <nagachika00@gmail.com> [ruby-dev:42490]
+Sun Mar 24 12:55:47 2013 Narihiro Nakamura <authornari@gmail.com>
-Fri Oct 29 23:32:36 2010 Koichi Sasada <ko1@atdot.net>
+ * 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.
- * 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.
+Sun Mar 24 11:03:31 2013 Tanaka Akira <akr@fsij.org>
- * test/runner.rb: ditto.
+ * test/ruby/test_require.rb: Remove temporally files in the tests.
-Fri Oct 29 10:02:03 2010 NARUSE, Yui <naruse@ruby-lang.org>
+ * test/ruby/test_rubyoptions.rb: Ditto.
- * 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
+ * test/logger/test_logger.rb: Ditto.
-Fri Oct 29 05:13:34 2010 Koichi Sasada <ko1@atdot.net>
+ * test/psych/test_psych.rb: Ditto.
- * 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/readline/test_readline.rb: Ditto.
- * test/objspace/test_objspace.rb: fix test for above change.
+ * test/syslog/test_syslog_logger.rb: Ditto.
-Fri Oct 29 03:04:16 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * test/webrick/test_httpauth.rb: Ditto.
- * string.c (rb_str_dump): fix expected length. [ruby-core:32935]
+ * test/zlib/test_zlib.rb: Ditto.
-Thu Oct 28 23:31:39 2010 Koichi Sasada <ko1@atdot.net>
+Sun Mar 24 05:36:29 2013 Eric Hodel <drbrain@segment7.net>
- * gc.c (before_gc_sweep, run_final): fix decrement timing of final_num.
+ * lib/rinda/ring.rb: Added documentation for multicast support.
-Thu Oct 28 20:11:30 2010 NARUSE, Yui <naruse@ruby-lang.org>
+ * NEWS: Point to above documentation.
- * 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
+Sun Mar 24 05:32:39 2013 Eric Hodel <drbrain@segment7.net>
-Thu Oct 28 20:06:25 2010 NARUSE, Yui <naruse@ruby-lang.org>
+ * test/rinda/test_rinda.rb: Restore tests commented out while fixing
+ test slowdown bug before r39895.
- * include/ruby/oniguruma.h (ONIGENC_CTYPE_SPECIAL_MASK):
- change mask from 128 to 256. [ruby-core:32931]
+Sun Mar 24 05:03:36 2013 Eric Hodel <drbrain@segment7.net>
-Thu Oct 28 12:06:54 2010 NARUSE, Yui <naruse@ruby-lang.org>
+ * 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.
- * 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]
+ * NEWS: Update with Rinda multicast support
-Thu Oct 28 04:00:08 2010 Koichi Sasada <ko1@atdot.net>
+Sun Mar 24 04:13:27 2013 Eric Hodel <drbrain@segment7.net>
- * gc.c (GC.stat): added. [ruby-dev:38607]
+ * test/rinda/test_rinda.rb: Fixed test failures in r39890 and r39891
+ due to stopping DRb service.
- * test/ruby/test_gc.rb: add a test for above.
+Sun Mar 24 03:34:02 2013 Eric Hodel <drbrain@segment7.net>
-Thu Oct 28 03:13:06 2010 Koichi Sasada <ko1@atdot.net>
+ * 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.
- * ext/objspace/objspace.c (memsize_of): fix rdoc.
+Sun Mar 24 02:14:53 2013 Tanaka Akira <akr@fsij.org>
- * ext/objspace/objspace.c (total_memsize_of_all_objects): added.
+ * test/mkmf/test_have_macro.rb: remove temporally files in the tests.
- * 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).
+Sat Mar 23 23:50:04 2013 NARUSE, Yui <naruse@ruby-lang.org>
-Wed Oct 27 23:55:27 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * addr2line.c (kprintf): added from FreeBSD libstand's printf.
+ this is consided as async signal safe function.
- * ext/iconv/iconv.c (Init_iconv): warn deprecated use.
+ * addr2line.c (rb_dump_backtrace_with_lines): use kfprintf.
+ [Bug #8144] [ruby-core:53632]
-Wed Oct 27 18:50:17 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+Sat Mar 23 23:28:00 2013 Kenta Murata <mrkn@mrkn.jp>
- * 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
+ * ext/bigdecimal/bigdecimal.c (BigDecimal_divide): Use Qnil and NIL_P
+ instead of (VALUE)0 as a return value.
-Wed Oct 27 18:27:17 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+ * ext/bigdecimal/bigdecimal.c (BigDecimal_div): ditto.
- * test/ruby/test_io.rb (TestIO#pipe): should close write end of pipe
- before closing read end, to get rid of timing problem.
+ * ext/bigdecimal/bigdecimal.c (BigDecimal_divremain): ditto.
- * test/ruby/test_io_m17n.rb (TestIO_M17N#pipe): ditto.
+ * ext/bigdecimal/bigdecimal.c (BigDecimal_remainder): ditto.
-Wed Oct 27 18:14:27 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+Sat Mar 23 17:39:49 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * win32/win32.c (rb_w32_getppid): support Win64.
+ * 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]
-Wed Oct 27 15:07:19 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+Fri Mar 22 17:48:34 2013 Nobuyoshi Nakada <nobu@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.
+ * 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].
-Wed Oct 27 13:51:25 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+Fri Mar 22 17:38:42 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * test/ruby/test_io.rb (TestIO#pipe): need to propagate exceptions
- in read/write thread. fix r29541.
+ * 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]
- * test/ruby/test_io_m17n.rb (TestIO_M17N#pipe): ditto.
+Fri Mar 22 10:29:00 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Wed Oct 27 12:05:40 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+ * ext/bigdecimal/bigdecimal.c: Fix style.
- * class.c (clone_const): need to return value. fix r29602.
+Fri Mar 22 05:30:49 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Wed Oct 27 11:58:58 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+ * parse.y (ambiguous_operator): refine warning message, since this
+ warning is shown after literal too.
- * include/ruby/ruby.h (NUM2LONG_internal): add cast to get rid of a
- non GCC compiler warning. this is intentional type conversion.
+Fri Mar 22 04:51:14 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Wed Oct 27 09:25:46 2010 NARUSE, Yui <naruse@ruby-lang.org>
+ * vm_insnhelper.c (vm_callee_setup_keyword_arg): should check required
+ keyword arguments even if rest hash is defined. [ruby-core:53608]
+ [Bug #8139]
- * cont.c: apply documentation patch by Run Paint Run Run.
- [ruby-core:32915]
+Fri Mar 22 01:00:17 2013 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
-Wed Oct 27 02:12:10 2010 Yusuke Endoh <mame@tsg.ne.jp>
+ * process.c (rb_execarg_addopt, run_exec_pgroup): use rb_pid_t
+ instead of pid_t.
- * 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]
+ * ext/pty/pty.c (raise_from_check, pty_check): ditto.
- * test/ruby/test_module.rb: add tests for above.
+Fri Mar 22 00:04:15 2013 NARUSE, Yui <naruse@ruby-lang.org>
-Wed Oct 27 02:02:54 2010 Yusuke Endoh <mame@tsg.ne.jp>
+ * addr2line.c (rb_dump_backtrace_with_lines): output line at once.
- * 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]).
+Thu Mar 21 23:17:08 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Wed Oct 27 01:56:34 2010 Yusuke Endoh <mame@tsg.ne.jp>
+ * thread.c (ruby_kill): get rid of deadlock on signal 0.
+ [ruby-dev:47182] [Bug #8137]
- * 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]).
+Thu Mar 21 22:39:46 2013 Naohisa Goto <ngotogenome@gmail.com>
-Tue Oct 26 18:51:00 2010 NARUSE, Yui <naruse@ruby-lang.org>
+ * 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]
- * lib/scanf.rb (extract_float): allow 2.e+2 style.
- [ruby-dev:42452] #3978
+Thu Mar 21 16:48:06 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Tue Oct 26 18:09:36 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * parse.y (simple_re_meta): escape all closing characters, not only
+ round parenthesis. [ruby-core:53578] [Bug #8133]
- * Makefile.in (ASFLAGS): needs INCFLAGS.
+Thu Mar 21 13:50:46 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * configure.in (rb_cv_dynamic_alloca): check if extra source for
- dynamic size alloca.
+ * vm_core.h (UNINITIALIZED_VAR): suppress warnings by clang 4.2.
+ [ruby-core:51742] [Bug #7756]
- * missing/x86_64-chkstk.s (___chkstk): necessary for alloca of
- amd64-mingw32msvc-gcc on Ubuntu.
+Thu Mar 21 07:34:00 2013 Zachary Scott <zachary@zacharyscott.net>
- * thread_win32.c (ruby_alloca_chkstk): check stack overflow
+ * ext/date/date_core.c: Typo in Date::MONTHNAMES by Matt Gauger
+ [GH fixes #261]
-Tue Oct 26 18:04:53 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Wed Mar 20 22:53:14 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * template/ruby.pc.in (Libs): needs DLDFLAGS.
+ * lib/mkmf.rb (find_library): fix to format message.
+ [ruby-core:53568] [Bug #8130]
-Tue Oct 26 12:47:10 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Wed Mar 20 22:52:52 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * common.mk (pkgconfig-data): moved from Makefile.in.
+ * lib/mkmf.rb (install_dirs, with_destdir): prefix with DESTDIR
+ directories to install only unless bundled extension libraries.
+ [ruby-core:53502] [Bug #8115]
- * tool/rbinstall.rb: install pc file only if non-empty.
- [ruby-core:32901] #3983
+Wed Mar 20 17:47:53 2013 NAKAMURA Usaku <usa@ruby-lang.org>
- * win32/Makefile.sub (ruby_pc): create pc file.
+ * 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.
-Tue Oct 26 09:13:34 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Wed Mar 20 16:40:48 2013 Hiroshi Shirosaki <h.shirosaki@gmail.com>
- * configure.in (rb_cv_gcc_atomic_builtins): check for atomic
- builtins, all are not available in Apple derivative gcc.
+ * test/ruby/test_signal.rb (test_hup_me): skip if HUP isn't supported.
+ On Windows this test causes ArgumentError.
-Tue Oct 26 00:29:26 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Wed Mar 20 16:24:12 2013 Hiroshi Shirosaki <h.shirosaki@gmail.com>
- * Makefile.in (pkgconfig-data): create pkg-config metadata file.
+ * 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]
- * tool/rbinstall.rb: install pkg-config metadata file.
+Wed Mar 20 15:22:07 2013 NAKAMURA Usaku <usa@ruby-lang.org>
- * template/ruby.pc.in: template of pkg-config metadata file.
+ * test/win32ole/test_err_in_callback.rb (TestErrInCallBack#setup): use
+ relative path to get rid of "too long commandline" error.
-Mon Oct 25 16:38:07 2010 URABE Shyouhei <shyouhei@ruby-lang.org>
+Wed Mar 20 04:27:42 2013 Ayumu AIZAWA <ayumu.aizawa@gmail.com>
- * 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.
+ * test/rinda/test_rinda.rb: remove unused variables.
+ patched by Vipul A M <vipulnsward@gmail.com>
-Mon Oct 25 06:21:35 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Wed Mar 20 04:15:32 2013 Ayumu AIZAWA <ayumu.aizawa@gmail.com>
- * vsnprintf.c (BSD_vfprintf): prec digits fractal part should be
- appended to 0 if prec is given. [ruby-dev:42453] #3979
+ * ext/bigdecimal/bigdecimal.c: fixed typo.
+ patched by Vipul A M <vipulnsward@gmail.com>
-Mon Oct 25 02:57:21 2010 Koichi Sasada <ko1@atdot.net>
+Sat Mar 16 03:40:49 2013 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
- * common.mk (run.gdb): Quit gdb on 'make gdb' when
- no signals are received.
+ * test/ruby/test_signal.rb (test_hup_me): added a few comments.
-Mon Oct 25 00:25:23 2010 Tadayoshi Funaba <tadf@dotrb.org>
+Sat Mar 16 03:39:38 2013 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
- * lib/date.rb: some corrections of documentation.
+ * thread.c (ruby_kill): added a few comments.
-Sun Oct 24 17:14:00 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Sat Mar 16 03:36:56 2013 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
- * 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]
+ * thread.c (ruby_kill): release GVL while waiting signal delivered.
- * include/ruby/intern.h (rb_check_frozen): optimize.
- [ruby-core:32878]
+Tue Mar 19 19:50:48 2013 NAKAMURA Usaku <usa@ruby-lang.org>
-Sun Oct 24 15:16:30 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * ruby_kill (internal.h, thread.c): use rb_pid_t instead of pid_t.
+ this fixes the build failure of mswin introduced at r39819.
- * lib/test/unit.rb (Test::Unit::Mini#run): abort if interrupted.
+Tue Mar 19 17:09:30 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * lib/test/unit.rb (Test::Unit::Mini#run_test_suites): show the
- result even when interrupted on the way.
+ * string.c (rb_str_conv_enc_opts): convert with one converter, instead
+ of re-creating converters for each buffer expansion.
- * lib/test/unit.rb (Test::Unit::Mini#run_test_suites): ensure
- output sync mode to be restored.
+Tue Mar 19 17:06:50 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Sun Oct 24 14:11:16 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * dir.c (glob_helper): compose HFS file names from UTF8-MAC.
+ [ruby-core:48745] [Bug #7267]
- * vm.c (vm_define_method): defined method is run with the default
- public visibility regardless the visibility context of definition.
- [ruby-core:30638]
+Sat Mar 16 01:44:29 2013 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-Sun Oct 24 12:08:54 2010 Aaron Patterson <aaron@tenderlovemaking.com>
+ * internal.h: added a declaration of ruby_kill().
+ * thread.c (ruby_kill): helper function of kill().
- * lib/test/unit.rb: make test/unit play nicely with the rake test
- loader. [ruby-core:32864]
+ * 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]
-Sun Oct 24 00:25:13 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * 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.
- * test/ruby/test_rubyoptions.rb (test_segv_test): follow up the
- change at r29556.
+ * test/ruby/test_signal.rb (TestSignal#test_hup_me): test for
+ the above.
-Sat Oct 23 14:39:58 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Sat Mar 16 00:42:39 2013 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
- * lib/mkmf.rb: $extmk should be true for test/runner.
+ * io.c (linux_iocparm_len): enable only exist _IOC_SIZE().
+ Because musl libc doesn't have it. [Bug #8051] [ruby-core:53229]
-Sat Oct 23 10:55:37 2010 Koichi Sasada <ko1@atdot.net>
+Tue Mar 19 10:05:04 2013 Shota Fukumori <her@sorah.jp>
- * vm_dump.c (rb_vm_bugreport): fix to add bug outputs.
- - loaded script ($0)
- - loaded features ($")
- - process memory map on Linux (/proc/self/maps)
+ * ext/objspace/objspace.c: Fix typo in doc. Patch by Sho Hashimoto.
+ [Bug #8116] [ruby-dev:47177]
- * vm_dump.c (rb_vmdebug_stack_dump_raw): fix header message.
+Tue Mar 19 02:13:00 2013 Kenta Murata <mrkn@mrkn.jp>
-Fri Oct 22 14:50:13 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * configure.in: set ac_cv_prog_cxx if CXX is supplied.
- * lib/test/unit/assertions.rb (Test::Unit::Assertions#assert):
- assertion message must not be nil.
+Tue Mar 19 01:18:00 2013 Kenta Murata <mrkn@mrkn.jp>
-Fri Oct 22 13:59:50 2010 NARUSE, Yui <naruse@ruby-lang.org>
+ * configure.in: Fix c++ compiler auto-selection not only for
+ Darwin 11.x, but also the other versions of Darwin.
- * lib/test/unit/assertions.rb (Test::Unit::Assertions#assert):
- treat nil case. Please run test-all before commit such change.
+Tue Mar 19 00:26:22 2013 Narihiro Nakamura <authornari@gmail.com>
-Thu Oct 21 23:58:14 2010 Koichi Sasada <ko1@atdot.net>
+ * gc.c: Improve accuracy of objspace_live_num() and
+ allocated/freed counters. patched by tmm1(Aman Gupta).
+ [Bug #8092] [ruby-core:53392]
- * gc.c (gc_lazy_sweep): Variable declarations should be at
- the head of block.
+Mon Mar 18 21:42:48 2013 Narihiro Nakamura <authornari@gmail.com>
-Thu Oct 21 23:56:54 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * gc.c: Avoid unnecessary heap growth. patched by tmm1(Aman Gupta).
+ [Bug #8093] [ruby-core:53393]
- * gc.c (objspace_each_objects, rb_objspace_each_objects): use
- struct.
+Mon Mar 18 17:58:36 2013 Narihiro Nakamura <authornari@gmail.com>
- * gc.c (objspace_each_objects): fix return with no value.
+ * gc.c: Fix unlimited memory growth with large values of
+ RUBY_FREE_MIN. patched by tmm1(Aman Gupta).
+ [Bug #8095] [ruby-core:53405]
-Thu Oct 21 23:47:12 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Mon Mar 18 14:46:19 2013 NAKAMURA Usaku <usa@ruby-lang.org>
- * dir.c (dir_initialize): remove useless intermediate variable.
+ * test/win32ole/test_err_in_callback.rb
+ (TestErrInCallBack#test_err_in_callback): shouldn't create a file in
+ the top of build directory.
-Thu Oct 21 16:07:20 2010 NARUSE, Yui <naruse@ruby-lang.org>
+Mon Mar 18 13:29:52 2013 NARUSE, Yui <naruse@ruby-lang.org>
- * io.c (rb_f_select): change rdoc.
- patched by Eito Katagiri [ruby-core:31805]
+ * vm_dump.c (backtrace): on darwin use custom backtrace() to trace
+ beyond _sigtramp. darwin's backtrace can't trace beyond signal
+ trampoline with sigaltstack.
-Thu Oct 21 15:55:21 2010 NARUSE, Yui <naruse@ruby-lang.org>
+ * configure.in: check execinfo.h on darwin.
- * lib/webrick/httpauth/digestauth.rb
- (WEBrick::HTTPAuth::ProxyDigestAuth#check_uri): privated.
- [ruby-dev:42344]
+Mon Mar 18 11:03:23 2013 NARUSE, Yui <naruse@ruby-lang.org>
-Thu Oct 21 15:50:25 2010 NARUSE, Yui <naruse@ruby-lang.org>
+ * vm_exec.h (END_INSN): revert r39517 because the segv seems fixed by
+ r39806.
- * io.c (rb_f_select): add correct rdoc.
- patched by Dave Thomas [ruby-core:32467]
+Mon Mar 18 10:41:06 2013 NARUSE, Yui <naruse@ruby-lang.org>
-Thu Oct 21 15:42:01 2010 NARUSE, Yui <naruse@ruby-lang.org>
+ * vm_exec.c: Correct predefined macro name. This typo is introduced by
+ r36534 and should be backported to ruby_2_0_0.
- * lib/net/telnet.rb (Net::Telnet#close): added.
- patched by Erik Hollensbe [ruby-dev:42260] #3830
+Mon Mar 18 03:18:00 2013 Zachary Scott <zachary@zacharyscott.net>
-Thu Oct 21 13:08:00 2010 Narihiro Nakamura <authornari@gmail.com>
+ * array.c: Typo in Array#delete by Timo Sand [GH fixes #258]
- * gc.c (rb_objspace_each_objects): don't lazy sweep in
- rb_objspace_each_objects. [Bug #3940] [ruby-dev:42369]
+Mon Mar 18 01:14:56 2013 NARUSE, Yui <naruse@ruby-lang.org>
-Thu Oct 21 00:05:45 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * io.c (io_fillbuf): show fd number on failure to debug.
+ http://c5632.rubyci.org/~chkbuild/ruby-trunk/log/20130316T050302Z.diff.html.gz
- * test/ruby/test_io.rb (TestIO#pipe): get rid of deadlock on pipe.
- a patch from Tomoyuki Chikanaga at [ruby-dev:42435]. #3970
+Sun Mar 17 02:38:21 2013 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
- * test/ruby/test_io_m17n.rb (TestIO_M17N#pipe): ditto.
+ * ext/date/date_core.c: include sys/time.h for avoiding implicit
+ declaration of gettimeofday().
-Wed Oct 20 23:54:36 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Sun Mar 17 00:55:31 2013 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
- * ext/dbm/dbm.c: rdoc based on a patch by mathew meta AT
- pobox.com, at [ruby-core:32853].
+ * include/ruby/missing.h: removed __linux__. it's unnecessary.
-Wed Oct 20 10:47:21 2010 NARUSE, Yui <naruse@ruby-lang.org>
+Fri Mar 15 14:57:16 2013 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
- * util.c (ruby_strtod): reject 0x1.p+0. [ruby-dev:42432] #3966
+ * 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.
-Wed Oct 20 10:00:57 2010 NARUSE, Yui <naruse@ruby-lang.org>
+Wed Mar 13 15:16:35 2013 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
- * vsnprintf.c (BSD_vfprintf): print floating point on "%#a".
- [ruby-dev:42431] Bug#3965
+ * include/ruby/missing.h (__syscall): moved to...
+ * io.c: here. because __syscall() is only used from io.c.
-Tue Oct 19 19:30:11 2010 NARUSE, Yui <naruse@ruby-lang.org>
+ * 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].
- * vsnprintf.c (BSD_vfprintf): clear ALT flag for %a.
- [ruby-core:32841] [ruby-core:32848]
+Wed Mar 13 14:38:53 2013 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-Tue Oct 19 12:19:25 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * include/ruby/missing.h (struct timespec): include <sys/time.h>
- * vsnprintf.c (BSD_vfprintf): fix over-count of field size.
+Wed Mar 13 13:54:45 2013 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-Tue Oct 19 03:08:52 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * 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.
- * vsnprintf.c (BSD_vfprintf): use HEXPREFIX flag for prefix of %a.
- [ruby-core:32841]
+ * file.c: include sys/time.h explicitly.
+ * random.c: ditto.
+ * thread_pthread.c: ditto.
+ * time.c: ditto.
+ * ext/date/date_strftime.c: ditto.
-Mon Oct 18 13:18:01 2010 Akinori MUSHA <knu@iDaemons.org>
+Fri Mar 15 14:45:02 2013 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
- * ext/digest/digest.c (rb_digest_class_init): Define
- Digest::Class.new(). [Feature #3954]
+ * configure.in (_FORTIFY_SOURCE): added a few comments.
-Mon Oct 18 12:58:40 2010 Tanaka Akira <akr@fsij.org>
+Fri Mar 15 14:17:55 2013 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
- * pack.c (pack_pack): refine the document. [ruby-dev:42397]
- (pack_unpack): ditto.
+ * thread_pthread.c (numberof): renamed from ARRAY_SIZE() because
+ other all files use numberof().
-Mon Oct 18 10:19:00 2010 NARUSE, Yui <naruse@ruby-lang.org>
+Say Mar 15 01:33:00 2013 Charles Oliver Nutter <headius@headius.com>
- * lib/net/http.rb (transport_request): @socket may be nil.
- patched by Egbert Eich [ruby-core:32829]
+ * 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.
-Mon Oct 18 09:57:28 2010 NARUSE, Yui <naruse@ruby-lang.org>
+Fri Mar 15 23:06:18 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * sprintf.c (BSD_vfprintf): wrong padding around prefix and
- floating point with %a. [ruby-dev:42403] Bug #3956
+ * time.c (GetTimeval): check if already initialized instance.
-Sun Oct 17 22:36:33 2010 Tadayoshi Funaba <tadf@dotrb.org>
+ * time.c (GetNewTimeval): check if newly created instance.
- * lib/date/delta.rb: added an rdoc tag.
+ * time.c (time_init_0, time_init_1, time_init_copy, time_mload): must
+ be newly created instance. [ruby-core:53436] [Bug #8099]
-Sun Oct 17 10:47:12 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Fri Mar 15 14:51:33 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * variable.c (rb_mod_remove_const): update rdoc.
- [ruby-core:31957]
+ * file.c (rb_sys_fail_path_with_func): share same function, and path
+ may be nil.
-Sun Oct 17 10:40:17 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Fri Mar 15 08:24:51 2013 NARUSE, Yui <naruse@ruby-lang.org>
- * class.c (rb_define_{class,module}_id_under): register to be
- marked, which probably are defined and used internally.
+ * io.c (rb_sys_fail_path): define & use rb_sys_fail_path0 like r39752
-Sat Oct 16 11:10:55 2010 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+Fri Mar 15 04:08:00 2013 Zachary Scott <zachary@zacharyscott.net>
- * ext/win32ole/win32ole.c (ole_encoding2cp): set codepage 20936
- according to GB2312. [Bug #3937] [ruby-core:32758]
+ * proc.c: Typo in Proc.arity found by Jack Nagel [Bug #8094]
-Sat Oct 16 10:54:57 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Thu Mar 14 16:59:09 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * Makefile.in (CPP): already used in .c.i rule.
+ * configure.in (rb_cv_function_name_string): macro for function name
+ string predefined identifier, __func__ in C99, or __FUNCTION__ in
+ gcc.
- * cygwin/GNUmakefile.in (DLLWRAP, WINDRES): add --driver-name and
- --preprocessor options explicitly. [ruby-core:32776]
+ * file.c (rb_sys_fail_path): use RUBY_FUNCTION_NAME_STRING.
-Sat Oct 16 10:06:08 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Thu Mar 14 14:12:34 2013 NARUSE, Yui <naruse@ruby-lang.org>
- * ext/sdbm/_sdbm.c (SEEDUPS, BADMESS): make settable using command
- line options.
+ * file.c (rb_sys_fail_path): use rb_sys_fail_path0 only on GCC.
+ __func__ is C99 feature.
- * ext/sdbm/_sdbm.c (makroom): suppress unused result warning.
+Thu Mar 14 12:59:59 2013 NARUSE, Yui <naruse@ruby-lang.org>
- * ext/sdbm/extconf.rb: disable BADMESS, a library should not emit
- messages directly.
+ * 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
-Sat Oct 16 08:39:03 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * file.c (rb_sys_fail_path): use rb_sys_fail_path0.
- * dln.c (dln_strerror): get English message first, instead of
- system default. see [ruby-dev:42358].
+Thu Mar 14 12:53:15 2013 Luis Lavena <luislavena@gmail.com>
-Sat Oct 16 00:08:00 2010 Koichi Sasada <ko1@atdot.net>
+ * 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]
- * hash.c (rb_hash_aref): skip calling "default" method
- if it is not needed, for speed-up.
+Thu Mar 14 11:53:01 2013 Narihiro Nakamura <authornari@gmail.com>
-Fri Oct 15 23:36:25 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * NEWS: describe RUBY_HEAP_SLOTS_GROWTH_FACTOR.
- * file.c (NUM2DEVT, DEVT2NUM, PRI_DEVT_PREFIX): fallback to
- unsigned int.
+Thu Mar 14 10:01:12 2013 Eric Hodel <drbrain@segment7.net>
-Fri Oct 15 22:54:46 2010 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+ * doc/globals.rdoc: $? is thread-local
- * ext/win32ole/win32ole.c (ole_hresult2msg): get English message first,
- instead of system default. [ruby-core:32765]
+Wed Mar 13 23:25:59 2013 Narihiro Nakamura <authornari@gmail.com>
-Fri Oct 15 22:47:31 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * 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]
- * include/ruby/ruby.h (VALUE): prefer long over uintptr_t,
- FIX2LONG expects VALUE to be long at least.
+Wed Mar 13 19:43:46 2013 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
- * include/ruby/ruby.h (FIX2LONG): parenthesize the argument.
+ * doc/irb/irb.rd.ja: fix typo
-Fri Oct 15 20:30:30 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * ext/tk/MANUAL_tcltklib.eng: fix typos
- * configure.in (dev_t): use RUBY_REPLACE_TYPE.
+ * ext/tk/sample/tktextframe.rb (Tk#component_delegates): fix typo
- * file.c (rb_stat_inspect): use PRI_DEVT_PREFIX.
+Wed Mar 13 15:13:04 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Fri Oct 15 17:26:57 2010 NARUSE, Yui <naruse@ruby-lang.org>
+ * class.c (rb_obj_singleton_methods): collect methods from the origin
+ class. [ruby-core:53207] [Bug #8044]
- * pack.c (pack_pack): simplify comparison of explicit_endian
- as pointed by nobu.
+Wed Mar 13 14:51:26 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * pack.c (pack_unpack): ditto.
+ * 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]
-Fri Oct 15 16:40:37 2010 NARUSE, Yui <naruse@ruby-lang.org>
+Wed Mar 13 13:06:26 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * pack.c (pack_pack): fix more than one modifiers appear in the
- format string. [ruby-core:32793]
+ * configure.in (rm, shvar_to_cpp, unexpand_shvar): local is not
+ available on old shells.
- * pack.c (pack_unpack): ditto.
+ * configure.in (shvar_to_cpp): escape quotes for old shells.
+ [Bug #7959] [Bug #8071]
-Thu Oct 14 23:20:42 2010 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+Wed Mar 13 11:11:07 2013 Shugo Maeda <shugo@ruby-lang.org>
- * test/win32ole/test_folderitem2_invokeverb.rb: refactoring.
+ * object.c (Init_Object): remove Module#used, which has been
+ introduced in Ruby 2.0 by mistake. [Bug #7916] [ruby-core:52719]
-Thu Oct 14 22:18:29 2010 Koichi Sasada <ko1@atdot.net>
+Wed Mar 13 05:49:29 2013 Eric Hodel <drbrain@segment7.net>
- * insns.def, iseq.c, vm_insnhelper.c: rename variable name
- (ip -> iseq).
+ * lib/irb.rb: Fix typo
-Thu Oct 14 20:41:27 2010 NARUSE, Yui <naruse@ruby-lang.org>
+Tue Mar 12 22:20:47 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * pack.c (pack_pack): support endian modifiers: < and >.
- [ruby-dev:42376] Feature #3491
+ * compile.c (iseq_set_arguments, iseq_compile_each): support required
+ keyword arguments. [ruby-core:51454] [Feature #7701]
- * pack.c (pack_unpack): ditto.
+ * iseq.c (rb_iseq_parameters): ditto.
-Thu Oct 14 20:50:51 2010 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+ * parse.y (f_kw, f_block_kw): ditto. this syntax is still
+ experimental, the notation may change.
- * ext/win32ole/win32ole.c (reg_get_val): expand environment in
- the pathname. [Bug #3907]
+ * vm_core.h (rb_iseq_struct): ditto.
-Thu Oct 14 07:35:07 2010 NARUSE, Yui <naruse@ruby-lang.org>
+ * vm_insnhelper.c (vm_callee_setup_keyword_arg): ditto.
- * 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.
+Tue Mar 12 17:02:53 2013 TAKANO Mitsuhiro <tak@no32.tk>
- * file.c (rb_stat_dev): use DEVT2NUM.
+ * date_core.c: clearly specify operator precedence.
- * file.c (rb_stat_dev_major): dev_t is not long. major(3)'s return
- value is int.
+Tue Mar 12 17:00:45 2013 TAKANO Mitsuhiro <tak@no32.tk>
- * file.c (rb_stat_dev_minor): dev_t is not long. minor(3)'s return
- value is int.
+ * insns.def: fix condition.
- * configure.in: check size of dev_t.
+Tue Mar 12 16:48:19 2013 TAKANO Mitsuhiro <tak@no32.tk>
-Thu Oct 14 07:22:12 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * rational.c: fix dangling if, else-if and else.
- * 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.
+Tue Mar 12 06:27:59 2013 Eric Hodel <drbrain@segment7.net>
-Thu Oct 14 04:16:41 2010 NARUSE, Yui <naruse@ruby-lang.org>
+ * 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.
- * numeric.c (ruby_float_step): fix Numeric#step with infinity unit
- doesn't works well. [ruby-core:32779]
+ * lib/rubygems/ext/ext_conf_builder.rb: Use full path to siteconf.rb
+ in case the extconf.rb changes directories (like memcached does).
-Wed Oct 13 23:16:46 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * 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.
- * tool/enc-unicode.rb: get rid of lots of warnings.
+ * 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.
- * iseq.c (insn_operand_intern, rb_iseq_disasm): fix format specifiers.
+Tue Mar 12 02:25:19 2013 Eric Hodel <drbrain@segment7.net>
- * vm.c (thread_free): ditto.
+ * 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.
- * numeric.c (check_uint): get rid of overflow on LLP64 platforms.
+Mon Mar 11 22:44:57 2013 Tanaka Akira <akr@fsij.org>
- * insns.def (opt_case_dispatch): use st_data_t.
+ * 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.
-Wed Oct 13 22:32:34 2010 Takeyuki FUJIOKA <xibbar@ruby-lang.org>
+Mon Mar 11 19:22:54 2013 NAKAMURA Usaku <usa@ruby-lang.org>
- * lib/cgi/util.rb (CGI::unescape): bugfix to unescape the multibyte
- string. Thanks nobu and tDiary dev members. [Bug #3909]
+ * test/mkmf/base.rb: class name conflict.
-Wed Oct 13 21:13:00 2010 NARUSE, Yui <naruse@ruby-lang.org>
+Mon Mar 11 18:45:09 2013 NARUSE, Yui <naruse@ruby-lang.org>
- * numeric.c (int_chr): raise error when the value is negative.
+ * enumerator.c (enumerator_with_index): try to convert given offset to
+ integer. fix bug introduced in r39594.
-Wed Oct 13 19:24:08 2010 URABE Shyouhei <shyouhei@ruby-lang.org>
+Mon Mar 11 17:27:57 2013 NARUSE, Yui <naruse@ruby-lang.org>
- * vm.c (ruby_vm_destruct): This function type was wrong; correct to the prototype.
+ * test/ruby/envutil.rb (EnvUtil.with_default_external): add for
+ changing Encoding.default_external without warnings.
-Wed Oct 13 14:58:09 2010 NARUSE, Yui <naruse@ruby-lang.org>
+ * test/ruby/envutil.rb (EnvUtil.with_default_internal): ditto.
- * numeric.c (rb_num_to_uint): fix 32bit logic.
+ * test/ruby/test_io_m17n.rb: use above with_default_external.
-Wed Oct 13 12:53:43 2010 NARUSE, Yui <naruse@ruby-lang.org>
+Mon Mar 11 16:57:00 2013 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.
+ * io.c (extract_binmode): raise error even if binmode and textmode
+ don't conflict. [Bug #5918] [ruby-core:42199]
- * string.c (rb_str_concat): use rb_num_to_uint.
+Mon Mar 11 12:25:12 2013 NARUSE, Yui <naruse@ruby-lang.org>
-Wed Oct 13 12:10:02 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+ * Merge Onigmo d4bad41e16e3eccd97ccce6f1f96712e557c4518.
+ fix lookbehind assertion fails with /m mode enabled. [Bug #8023]
+ fix \Z matches where it shouldn't. [Bug #8001]
- * thread_win32.c (w32_error): get English message first, instead
- of system default. see [ruby-core:32765].
- [experimental]
+Mon Mar 11 11:53:35 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Wed Oct 13 11:04:03 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * lib/mkmf.rb (MakeMakefile#dir_config, MakeMakefile#_libdir_basename):
+ defer use of instance variable until needed. [Bug #8074]
- * debug.c (ruby_set_debug_option): define always for binary
- compatibility with debug env enabled binary.
+Thu Mar 7 10:42:28 2013 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
- * signal.c (ruby_enable_coredump): ditto.
+ * 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.
-Wed Oct 13 10:52:51 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Thu Mar 7 10:40:49 2013 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
- * include/ruby/ruby.h (ruby_executable_node): missing prototype.
+ * tool/change_maker.rb (#diff2index): check Encoding::BINARY.
+ BASERUBY may still be 1.8.x.
-Wed Oct 13 05:23:04 2010 NARUSE, Yui <naruse@ruby-lang.org>
+Thu Mar 7 08:47:42 2013 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
- * missing/strchr.c: add strlen's prototype.
+ * NEWS (Mutex#owned?): no longer experimental.
- * missing/strstr.c: ditto.
+Sun Mar 10 23:38:15 2013 Luis Lavena <luislavena@gmail.com>
-Wed Oct 13 00:21:17 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * 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.
- * ext/syck/rubyext.c (struct mktime_arg): constified.
+Sun Mar 10 23:27:05 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * ext/syck/rubyext.c (mktime_do, mktime_r, rb_syck_mktime): fix
- function signatures.
+ * 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]
-Wed Oct 13 00:18:18 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Sun Mar 10 17:00:22 2013 Tadayoshi Funaba <tadf@dotrb.org>
- * st.c (MurmurMagic): get rid of literal overflow.
+ * complex.c: edited rdoc.
+ * rational.c: ditto.
- * configure.in (RUBY_CHECK_PRINTF_PREFIX): check for printf format
- specifier if possible.
+Sun Mar 10 15:02:39 2013 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-Tue Oct 12 23:58:19 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * process.c (setup_communication_pipe): remove unused function.
+ it was unintentionally added r39683.
- * win32/win32.c (rb_w32_open_osfhandle, rb_w32_wopen, rb_w32_pipe):
- use uintptr_t instead of long for win64.
+Wed Mar 6 00:30:40 2013 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
- * win32/win32.c (socketpair_internal): suppress warnings.
+ * tool/gen_ruby_tapset.rb: add tapset generator.
- * win32/win32.c (ftruncate): use HANDLE instead of long for win64.
+Wed Mar 6 03:27:43 2013 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
- * vsnprintf.c (BSD_vfprintf): fix cast.
+ * probes.d (symbol-create): change argument name `string' to
+ `str'. `string' is a keyword for systemtap.
- * numeric.c (rb_num2fix): result of rb_num2long is SIGNED_VALUE.
+Tue Mar 5 22:23:01 2013 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
- * 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.
+ * probes.d: added argument name
- * compile.c (iseq_build_body), insns.def (getglobal, setglobal),
- iseq.c (iseq_load, iseq_data_to_ary), util.c (valid_filename):
- use VALUE.
+Thu Mar 7 01:17:00 2013 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
- * gc.c (obj_free, rb_objspace_call_finalizer): fix truncating
- cast.
+ * 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.
- * gc.c (mark_current_machine_context): suppress warnings.
+Thu Mar 7 00:14:51 2013 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
- * compile.c (iseq_compile_each): fix truncating cast.
+ * io.c (rb_update_max_fd): use ATOMIC_CAS because this function
+ is used from timer thread too.
- * cont.c (fiber_setcontext): missing variable definition.
+Wed Mar 6 23:30:21 2013 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-Tue Oct 12 19:25:13 2010 NARUSE, Yui <naruse@ruby-lang.org>
+ * 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.
- * error.c (exc_to_s): use OBJ_INFECT.
+Wed Mar 6 22:36:19 2013 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
- * error.c (name_err_to_s): ditto.
+ * 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.
- * error.c (name_err_mesg_to_str): ditto.
+ * thread_pthread.c (timer_thread_sleep): adjust the above changes.
- * error.c (syserr_initialize): ditto.
+ * thread_pthread.c (setup_communication_pipe_internal): factor
+ out pipe initialize logic.
-Tue Oct 12 19:07:55 2010 NARUSE, Yui <naruse@ruby-lang.org>
+Wed Mar 6 22:56:14 2013 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
- * error.c (syserr_initialize): taint message if mesg is given
- and it is tainted.
+ * thread_pthread.c (ubf_select): add to small comments why we
+ need to call rb_thread_wakeup_timer_thread().
-Tue Oct 12 18:25:43 2010 NARUSE, Yui <naruse@ruby-lang.org>
+Wed Mar 6 21:42:24 2013 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
- * io.c (rb_io_ungetc): always see Bignum. On 32bit valid value
- may be a Bignum. On 64bit for errors. [ruby-dev:42366]
+ * 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 Oct 12 18:25:04 2010 NARUSE, Yui <naruse@ruby-lang.org>
+Sun Mar 3 02:42:29 2013 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
- * string.c (rb_str_concat): use unsigned int for GB18030.
+ * thread_pthread.c (consume_communication_pipe): retry when
+ read returned CCP_READ_BUFF_SIZE.
-Tue Oct 12 17:53:49 2010 NARUSE, Yui <naruse@ruby-lang.org>
+Wed Mar 6 21:31:35 2013 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
- * numeric (check_uint): the mask must refer to VALUE.
+ * 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.
-Tue Oct 12 17:47:10 2010 NARUSE, Yui <naruse@ruby-lang.org>
+Wed Mar 6 21:00:23 2013 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
- * numeric (check_uint): set MSB for negative value.
+ * thread_pthread.c (USE_SLEEPY_TIMER_THREAD): use more accurate
+ ifdef conditions.
- * numeric (rb_num2uint): return value's type of rb_num2ulong
- is VALUE.
+Sun Mar 3 02:30:36 2013 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
- * numeric (int_chr): variable i can't be negative.
+ * 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.
-Tue Oct 12 16:04:37 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+Sun Mar 10 09:12:51 2013 Tadayoshi Funaba <tadf@dotrb.org>
- * win32/win32.c (rb_w32_strerror): get English message first, instead
- of system default. see [ruby-dev:42358].
- [experimental]
+ * complex.c: described syntax of string form.
+ * rational.c: ditto.
-Tue Oct 12 15:52:35 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+Sat Mar 9 11:58:39 2013 Nobuyoshi Nakada <nobu@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].
+ * marshal.c (w_extended): check for prepended object.
+ [ruby-core:53206] [Bug #8043]
-Tue Oct 12 15:36:09 2010 NARUSE, Yui <naruse@ruby-lang.org>
+Sat Mar 9 08:36:58 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * io.c (rb_io_ungetc): use unsigned int for GB18030.
+ * 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].
-Tue Oct 12 15:14:21 2010 NARUSE, Yui <naruse@ruby-lang.org>
+Sat Mar 9 00:25:57 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * io.c (rb_io_putc): support multibyte characters.
- [ruby-core:30697]
+ * 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]
-Tue Oct 12 15:10:31 2010 NARUSE, Yui <naruse@ruby-lang.org>
+Fri Mar 8 19:44:00 2013 Akinori MUSHA <knu@iDaemons.org>
- * numeric.c (rb_enc_uint_chr): split from int_chr.
+ * man/rake.1, man/ruby.1: Use the Pa macro to make URLs stand out.
- * numeric.c (int_chr): use rb_enc_uint_chr.
+Fri Mar 8 13:20:00 2013 Zachary Scott <zachary@zacharyscott.net>
- * include/ruby/encoding.h (rb_enc_uint_chr): added.
+ * ext/pathname/pathname.c (path_f_pathname): rdoc for Pathname()
-Tue Oct 12 14:04:41 2010 NARUSE, Yui <naruse@ruby-lang.org>
+Fri Mar 8 12:00:00 2013 Zachary Scott <zachary@zacharyscott.net>
- * 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.
+ * man/rake.1: Document ENVIRONMENT variables on RAKE(1) manpage
-Tue Oct 12 12:20:54 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+Fri Mar 8 10:44:00 2013 Zachary Scott <zachary@zacharyscott.net>
- * vm_dump.c (dump_thread): foolish mistake.
+ * lib/webrick/httpproxy.rb: Fix typos in HTTPProxyServer [Bug #8013]
+ Patch by Nobuhiro IMAI [ruby-core:53127]
-Tue Oct 12 10:39:08 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Fri Mar 8 03:16:15 2013 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
- * configure.in (RUBY_MINGW32): canonicalize only on mingw.
+ * class.c (rb_mod_ancestors): Include singleton_class in ancestors
+ list [Feature #8035]
-Mon Oct 11 20:20:23 2010 NARUSE, Yui <naruse@ruby-lang.org>
+ * test/ruby/test_module.rb (class): test for above
- * 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
+ * test/ruby/marshaltestlib.rb (module): adapt test
-Mon Oct 11 17:42:54 2010 NARUSE, Yui <naruse@ruby-lang.org>
+ * NEWS: list change
- * 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]
+Thu Mar 7 14:21:37 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Mon Oct 11 14:03:54 2010 NARUSE, Yui <naruse@ruby-lang.org>
+ * compile.c (iseq_compile_each): pass keyword arguments to zsuper,
+ with current values. [ruby-core:53114] [Bug #8008]
- * error.c (syserr_initialize): set the encoding of Errno::*#message
- as locale. [ruby-dev:42358]
+Thu Mar 7 12:53:47 2013 Eric Hodel <drbrain@segment7.net>
-Mon Oct 11 06:38:27 2010 NARUSE, Yui <naruse@ruby-lang.org>
+ * lib/rubygems/commands/setup_command.rb: Install .pem files.
+ * test/rubygems/test_gem_commands_setup_command.rb: Test for the
+ above.
- * 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]
+ * 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.
-Mon Oct 11 06:11:30 2010 NARUSE, Yui <naruse@ruby-lang.org>
+ * lib/rubygems.rb: Version 2.0.2
- * io.c (rb_io_set_encoding): use rb_funcall2 when the io is not
- a T_FILE. [ruby-dev:42356]
+ * lib/rubygems/test_utilities.rb: Ensure scheme and uri class match.
-Sun Oct 10 18:42:23 2010 Akinori MUSHA <knu@iDaemons.org>
+Thu Mar 7 10:39:04 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * lib/set.rb (Set#replace): Apply a bit of optimization.
+ * tool/rbinstall.rb (gem): Gem.ensure_gem_subdirectories now has mode
+ option since r39607. refix of r38870.
-Sun Oct 10 10:20:07 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Wed Mar 6 13:14:28 2013 Eric Hodel <drbrain@segment7.net>
- * configure.in (RUBY_MINGW32): canonicalize as like mswin version.
+ * test/rubygems/test_gem_spec_fetcher.rb: Removed unused variable.
-Sun Oct 10 05:33:14 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Wed Mar 6 08:10:15 2013 Eric Hodel <drbrain@segment7.net>
- * vm_core.h (rb_signal_buff_size, rb_signal_exec): moved
- declarations from thread.c.
+ * test/rubygems/test_require.rb: Fix tests when 'a.rb' exists.
+ [ruby-trunk - Bug #7749]
-Sat Oct 9 16:54:28 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Wed Mar 6 08:00:59 2013 Eric Hodel <drbrain@segment7.net>
- * configure.in (RSHIFT): quote to get rid of argument expansion
- for autoconf 2.68.
+ * lib/rubygems.rb: Allow specification of directory permissions.
+ [ruby-trunk - Bug #7713]
+ * test/rubygems/test_gem.rb: Test for the above.
-Sat Oct 9 11:00:06 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Wed Mar 6 07:40:21 2013 Eric Hodel <drbrain@segment7.net>
- * thread.c (thread_reset_event_flags, exec_event_hooks): ignore
- hooks marked as removed.
+ * 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.
- * thread.c (thread_exec_event_hooks): remove hooks to be removed.
+ * lib/rubygems/security.rb: Make OpenSSL optional for RubyGems.
+ * lib/rubygems/commands/cert_command.rb: ditto.
- * thread.c (rb_threadptr_remove_event_hook, rb_remove_event_hook):
- defer removing hooks if running the hooks. [ruby-dev:42350]
+ * lib/rubygems/config_file.rb: Display file with YAML error, not
+ ~/.gemrc
-Sat Oct 9 10:51:00 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * 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.
- * thread.c (rb_threadptr_exec_event_hooks): suppress each event
- hooks separately.
+ * 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.
- * thread.c (thread_suppress_tracing): split from
- ruby_suppress_tracing, accepting thread pointer and event mask.
+ * lib/rubygems.rb: Update win_platform? check for JRuby compatibility.
-Sat Oct 9 08:16:01 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * test/rubygems/test_gem_installer.rb: Update for Ruby 1.9.2
+ compatibility
- * thread.c (rb_threadptr_remove_event_hook): fix typo.
+Wed Mar 6 01:19:28 2013 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
-Fri Oct 8 10:52:25 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * enumerator.c (enumerator_with_index, lazy_take): use INT2FIX(0)
+ instead of INT2NUM(0).
- * common.mk (RBCONFIG): depends on version.h due to
- RUBY_PATCHLEVEL. [ruby-core:32709]
+ * ext/bigdecimal/bigdecimal.c (BigMath_s_exp): ditto.
-Fri Oct 8 00:24:54 2010 James Edward Gray II <jeg2@ruby-lang.org>
+ * ext/fiddle/function.c (function_call): ditto.
- * lib/csv.rb: Fixing documentation typos. [ruby-core:32712]
+ * ext/openssl/ossl_x509store.c (ossl_x509store_initialize): ditto.
-Thu Oct 7 09:14:28 2010 NARUSE, Yui <naruse@ruby-lang.org>
+ * process.c (proc_getsid): ditto.
- * vm_exec.c (vm_exec_core): Treat clang as non gcc on this
- context: It has __asm__ but doesn't works well.
+ * transcode.c (econv_finish): ditto.
-Wed Oct 6 12:28:22 2010 Tanaka Akira <akr@fsij.org>
+Tue Mar 5 21:36:43 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * lib/uri/generic.rb (URI::Generic#hostname): new method.
- (URI::Generic#hostname=): ditto.
+ * class.c (rb_prepend_module): check redefinition of built-in optimized
+ methods. [ruby-dev:47124] [Bug #7983]
- * lib/open-uri.rb: use URI#hostname
+ * vm.c (rb_vm_check_redefinition_by_prepend): ditto.
- * lib/net/http.rb: ditto.
+Tue Mar 5 20:29:25 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- reported by Adam Majer. [ruby-core:32056]
+ * proc.c (mnew): revert r39224. [ruby-core:53038] [Bug #7988]
-Wed Oct 6 11:52:12 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Tue Mar 5 20:23:54 2013 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.
+ * 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.
-Tue Oct 5 22:17:02 2010 wanabe <s.wanabe@gmail.com>
+Tue Mar 5 12:30:55 2013 Eric Hodel <drbrain@segment7.net>
- * win32/mkexports.rb: revert r29320 and r29402.
+ * lib/rubygems.rb: Bump version to 2.0.1 for upcoming bugfix release
-Mon Oct 4 12:43:47 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * lib/rubygems/ext/ext_conf_builder.rb: Restore ruby 1.8 compatibility
+ for [Bug #7698]
+ * test/rubygems/test_gem_installer.rb: Ditto.
- * parse.y (regexp): dregexp has literal string only at the head
- and successors are array. [ruby-core:32682]
+ * lib/rubygems/package.rb: Restore ruby 1.8 compatibility.
-Mon Oct 4 10:22:21 2010 NARUSE, Yui <naruse@ruby-lang.org>
+ * test/rubygems/test_gem_dependency_installer.rb: Fix warnings
- * random.c (rand_init): This checks the value is in 32bit or not,
- so use int32_t, not int.
+Tue Mar 5 12:24:23 2013 Eric Hodel <drbrain@segment7.net>
-Mon Oct 4 09:47:39 2010 NARUSE, Yui <naruse@ruby-lang.org>
+ * enumerator.c (enumerator_with_index): Restore handling of a nil memo
+ from r39594.
- * random.c (rand_init): remove useless assignment.
+Tue Mar 5 10:40:22 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * re.c (update_char_offset): remove unused variable.
+ * 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]
- * re.c (read_escaped_byte): ditto.
+Tue Mar 5 10:20:16 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Mon Oct 4 09:30:42 2010 NARUSE, Yui <naruse@ruby-lang.org>
+ * enumerator.c (enumerator_with_index_i): allow Bignum as offset, to
+ get rid of conversion exception and integer overflow.
+ [ruby-dev:47131] [Bug #8010]
- * 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]
+ * numeric.c (rb_int_succ, rb_int_pred): shortcut optimization for
+ Bignum.
-Mon Oct 4 07:57:51 2010 NARUSE, Yui <naruse@ruby-lang.org>
+Tue Mar 5 10:02:48 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * cont.c (fiber_memsize): Return size.
- Before this change, fiber_memsize always returns 0.
+ * lib/rubygems/ext/ext_conf_builder.rb (Gem::Ext::ExtConfBuilder.build):
+ clear DESTDIR so RUBYARCHDIR and RUBYLIBDIR are not be overridden.
+ [Bug #7698]
-Mon Oct 4 07:16:55 2010 NARUSE, Yui <naruse@ruby-lang.org>
+Mon Mar 4 15:33:40 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * enc/unicode.c (onigenc_unicode_property_name_to_ctype):
- remove useless assignment.
+ * 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]
- * vm.c (vm_make_proc_from_block): ditto.
+Mon Mar 4 14:13:36 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * variable.c (rb_ivar_count): ditto.
+ * 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]
-Mon Oct 4 06:40:24 2010 NARUSE, Yui <naruse@ruby-lang.org>
+Mon Mar 4 10:23:00 2013 Zachary Scott <zachary@zacharyscott.net>
- * Makefile.in (clean-rdoc): Don't use \ in variable expansion.
- BSD make treats it as an escape character.
+ * encoding.c: Typo in Encoding overview by Tom Wardrop [GH fixes #255]
-Mon Oct 4 00:01:53 2010 wanabe <s.wanabe@gmail.com>
+Sun Mar 3 12:35:08 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * tool/config.sub: revert r29320, r29324, r29347, r29354, r29365
- to automake-1.11.1. [ruby-core:32634]
+ * lib/mkmf.rb (MakeMakefile#libpath_env): set runtime library path for
+ the case rpath is disabled.
- * win32/mkexports.rb: no longer use 'mingw64'. a patch from Luis Lavena
- at [ruby-core:32678].
+Sun Mar 3 12:17:47 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Sun Oct 3 20:36:37 2010 Akio Tajima (arton) <artonx@yahoo.co.jp>
+ * 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]
- * test/win32ole/test_folderitem2_invokeverb.rb: Change creating
- shortcut verb to 'Link' [Bug #3339]
+Sun Mar 3 07:33:00 2013 Zachary Scott <zachary@zacharyscott.net>
-Sun Oct 3 19:44:23 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * ext/socket/tcpserver.c: Grammar for TCPServer.new from r39554
- * configure.in (Makefile): get rid of duplicated ruby target when
- already there it was.
+Sun Mar 3 01:17:20 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Sat Oct 2 22:59:32 2010 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+ * 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]
- * test/win32ole/test_thread.rb: add for win32ole with Thread.
+ * lib/rubygems/ext/ext_conf_builder.rb (Gem::Ext::ExtConfBuilder.build):
+ use RUBYOPT instead of -r option, and revert some tests. [Bug #7698]
-Fri Oct 1 17:03:00 2010 URABE Shyouhei <shyouhei@ruby-lang.org>
+ * 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]
- * test/webrick/test_httpproxy.rb (TestWEBrickHTTPProxy::test_upstream_proxy):
- My machine fails this test at this line, saying 503 service unavailable.
+Sun Mar 3 00:04:20 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Thu Sep 30 16:11:08 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+ * enc/depend (CPPFLAGS), lib/mkmf.rb (MakeMakefile#create_makefile):
+ define RUBY_EXPORT for static-linked-ext mswin. [Bug #7960]
- * win32/win32.c (rb_w32_getenv): should return NULL if specified name
- is empty. a patch from Heesob Park at [ruby-core:32650]
+Sat Mar 2 22:49:47 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Thu Sep 30 15:18:23 2010 Yukihiro Matsumoto <matz@ruby-lang.org>
+ * win32/Makefile.sub (ENCOBJS, EXTOBJS, config.h): definitions for
+ static-linked-ext. [Bug #7960]
- * parse.y (command_asgn): allow command_call to be right hand side
- expression of chained assignment. [ruby-dev:42313]
+Sat Mar 2 17:34:19 2013 Tanaka Akira <akr@fsij.org>
-Thu Sep 30 10:55:38 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+ * 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).
- * hash.c (ruby_setenv): workaround for old Windows. a patch from
- Heesob Park. [ruby-core:32353]
+Sat Mar 2 02:45:00 2013 Zachary Scott <zachary@zacharyscott.net>
-Thu Sep 30 09:29:06 2010 NARUSE, Yui <naruse@ruby-lang.org>
+ * array.c: typo in comment patch by Nami-Doc [Github fixes #253]
- * 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
+Sat Mar 2 01:33:17 2013 NARUSE, Yui <naruse@ruby-lang.org>
-Thu Sep 30 09:34:03 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+ * Merge Onigmo 0fe387da2fee089254f6b04990541c731a26757f
+ v5.13.3 [Bug#7972] [Bug#7974]
- * vm_dump.c (dump_thread): fixed wrong type of return value of
- SymGetModuleBase64(). [ruby-dev:42306]
+Fri Mar 1 11:09:06 2013 Eric Hodel <drbrain@segment7.net>
-Wed Sep 29 21:04:05 2010 URABE Shyouhei <shyouhei@ruby-lang.org>
+ * lib/fileutils.rb: Revert r34669 which altered the way
+ metaprogramming in FileUtils occurred. [ruby-trunk - Bug #7958]
- * test/ruby/test_rubyoptions.rb (TestRubyOptions::test_script_from_stdin):
- As usual, PTY is not always available.
+ * 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.
-Wed Sep 29 18:38:14 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Fri Mar 1 09:18:00 2013 Zachary Scott <zachary@zacharyscott.net>
- * tool/config.sub (x64): regularize only for pc vendor, and strip
- useless 64 suffix.
+ * lib/psych.rb: specify in rdoc what object is returned in parser
+ By Adam Stankiewicz [Github tenderlove/psych#133]
-Wed Sep 29 17:53:02 2010 Kenta Murata <mrkn@mrkn.jp>
+Fri Mar 1 07:21:41 2013 Eric Hodel <drbrain@segment7.net>
- * ext/bigdecimal/bigdecimal.c (BIGDECIMAL_ENABLE_VPRINT):
- VPrint is usually disabled. It's only used in debugging.
+ * 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.
-Wed Sep 29 17:41:34 2010 Kenta Murata <mrkn@mrkn.jp>
+ * 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.
- * ext/bigdecimal/bigdecimal.c (BigDecimal_save_limit):
- return the result of a block.
+Fri Mar 1 03:25:00 2013 Zachary Scott <zachary@zacharyscott.net>
- * test/bigdecimal/test_bigdecimal.rb (test_save_limit):
- add a test for the above change.
+ * ext/psych/lib/psych.rb: rdoc for Psych overview by Adam Stankiewicz
+ [Github tenderlove/psych#134]
-Wed Sep 29 16:18:03 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+Thu Feb 28 22:57:48 2013 Koichi Sasada <ko1@atdot.net>
- * vm_dump.c (dump_thread): remove unused optional arguments.
+ * 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.
-Wed Sep 29 13:26:30 2010 Kenta Murata <mrkn@mrkn.jp>
+ * test/ruby/test_iseq.rb: add a test.
- * ext/bigdecimal/bigdecimal.c (BigDecimal_save_rounding_mode):
- return the result of a block.
+Thu Feb 28 22:23:27 2013 Tanaka Akira <akr@fsij.org>
- * test/bigdecimal/test_bigdecimal.rb (test_save_rounding_mode):
- add a test for the above change.
+ * 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.
- * test/bigdecimal/test_bigdecimal.rb (test_save_exception_mode):
- add a test for the return value of BigDecimal.save_exception_mode.
+Thu Feb 28 21:33:01 2013 WATANABE Hirofumi <eban@ruby-lang.org>
-Wed Sep 29 12:45:30 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+ * configure.in(AC_DISABLE_OPTION_CHECKING): avoid warning "WARNING:
+ Unrecognized options: --with-PACKAGE".
- * ext/bigdecimal/bigdecimal.c (BigDecimal_div2, BigDecimal_add2,
- BigDecimal_sub2, BigDecimal_mult2, VpLimitRound): remove meaningless
- casts to get rid of compiler warnings.
+Thu Feb 28 20:22:04 2013 Koichi Sasada <ko1@atdot.net>
-Wed Sep 29 12:35:13 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * 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.
- * ext/bigdecimal/bigdecimal.c (VPrint, VpToString): fix format.
+ * test/ruby/test_iseq.rb: add a test of lines after ISeq#to_a.
-Wed Sep 29 12:31:12 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Thu Feb 28 08:20:33 2013 Eric Hodel <drbrain@segment7.net>
- * lib/rdoc/known_classes.rb (RDoc::KNOWN_CLASSES): add Encoding.
+ * lib/rubygems/available_set.rb: Undent for style
-Tue Sep 28 20:50:23 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * 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.
- * tool/config.sub (x64): regularize same as mswin.
+ * lib/rubygems/dependency_installer.rb: Don't display "Done installing
+ documentation" if documentation will not be installed.
+ * lib/rubygems/rdoc.rb: ditto
-Tue Sep 28 20:06:14 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+ * lib/rubygems/dependency_list.rb: Use Array#concat for Ruby 1.x
+ performance.
- * vm_dump.c (rb_vm_bugreport): add windows support.
- based on patches from Peter Weldon at [ruby-core:32551]
+ * 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.
-Mon Sep 27 23:30:34 2010 Koichi Sasada <ko1@atdot.net>
+ * lib/rubygems/package.rb: Use more explicit feature check to work
+ around JRuby bug #552
- * 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]
+ * lib/rubygems/ssl_certs/GeoTrust_Global_CA.pem: Added GeoTrust root
+ certificate.
-Mon Sep 27 15:54:03 2010 URABE Shyouhei <shyouhei@ruby-lang.org>
+ * test/rubygems/test_gem_source_list.rb: Use "example" instead of real
+ hostname
- * 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.
+Thu Feb 28 05:57:00 2013 Zachary Scott <zachary@zacharyscott.net>
-Mon Sep 27 15:25:05 2010 URABE Shyouhei <shyouhei@ruby-lang.org>
+ * thread.c: rdoc formatting for Thread, ThreadGroup, and ThreadError
- * test/net/imap/test_imap.rb: resurrection of r29259.
- this change depends on minitest 1.7.1.
+Thu Feb 28 02:42:00 2013 Zachary Scott <zachary@zacharyscott.net>
- * lib/test/unit/assertions.rb: ditto.
+ * vm.c: Typo in overview for example of Thread#status returning false
+ Reported by Lee Jarvis
-Sun Sep 26 22:59:45 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Wed Feb 27 22:54:27 2013 Tanaka Akira <akr@fsij.org>
- * tool/config.sub (x86_64-pc-mingw64): regularize.
+ * ext/socket/rubysocket.h (union_sockaddr): make it longer for SunOS
+ and Darwin.
-Sun Sep 26 22:21:07 2010 wanabe <s.wanabe@gmail.com>
+Wed Feb 27 21:14:34 2013 Kouhei Sutou <kou@cozmixng.org>
- * 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]
+ * 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.
-Sun Sep 26 10:25:24 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Wed Feb 27 19:53:32 2013 Benoit Daloze <eregontp@gmail.com>
- * tool/config.{guess,sub}: updated to automake-1.11.1.
+ * vm.c (Thread): fix typos in overview
-Sat Sep 25 22:48:30 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Wed Feb 27 13:21:00 2013 Zachary Scott <zachary@zacharyscott.net>
- * configure.in (LIBRUBY_DLDFLAGS): fix quoting.
+ * vm.c (Thread): Typo in overview, swap setting and getting
-Sat Sep 25 10:30:37 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Wed Feb 27 13:02:00 2013 Zachary Scott <zachary@zacharyscott.net>
- * configure.in (LIBRUBY_DLDFLAGS): use -unexported_symbol only
- when available. http://trac.macports.org/ticket/26341
+ * vm.c (Thread): Documentation overview of Thread class
-Sat Sep 25 10:05:49 2010 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+Wed Feb 27 12:57:00 2013 Zachary Scott <zachary@zacharyscott.net>
- * configure.in: Always add -mieee for Renesas SH4.
- Thanks, Nobuhiro Iwamatsu. [Feature #3874] [ruby-core:32548]
+ * thread.c (rb_thread_wakeup): rdoc formatting
-Sat Sep 25 01:34:41 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Wed Feb 27 12:53:00 2013 Zachary Scott <zachary@zacharyscott.net>
- * Makefile.in (install-cross): target to install cross-compiling
- stuff.
+ * thread.c (rb_thread_group): rdoc formatting
-Fri Sep 24 23:44:59 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Wed Feb 27 12:33:00 2013 Zachary Scott <zachary@zacharyscott.net>
- * string.c (sym_call), vm.c (invoke_block_from_c),
- vm_insnhelper.c (vm_yield_with_cfunc): pass given block.
- [ruby-core:32075]
+ * lib/ostruct.rb: Typo in OpenStruct overview [Github Fixes #251]
+ Patch by Chun-wei Kuo
- * vm_eval.c (rb_funcall_passing_block): new function to call
- method with passing given block.
+Wed Feb 27 12:13:32 2013 NARUSE, Yui <naruse@ruby-lang.org>
-Fri Sep 24 15:50:43 2010 NARUSE, Yui <naruse@ruby-lang.org>
+ * 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 (rb_str_to_i): fix rdoc: String#to_i raises an
- exception when base is invalid. [ruby-core:31685]
+Wed Feb 27 10:23:00 2013 Zachary Scott <zachary@zacharyscott.net>
-Fri Sep 24 15:28:35 2010 NARUSE, Yui <naruse@ruby-lang.org>
+ * thread.c (thread_raise_m): rdoc formatting
- * string.c (rb_str_rindex): use rb_enc_prev_char instead of repeated
- str_nth.
- patched by Michael Selig [ruby-core:32498]
+Tue Feb 26 23:32:44 2013 Kouhei Sutou <kou@cozmixng.org>
-Fri Sep 24 14:19:12 2010 URABE Shyouhei <shyouhei@ruby-lang.org>
+ * 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.
- * test/test_pty.rb: Same as 229281; existence of PTY class do not
- guarantee a successful pty operation.
+Tue Feb 26 23:26:13 2013 Kouhei Sutou <kou@cozmixng.org>
-Fri Sep 24 06:25:55 2010 Ryan Davis <ryand-ruby@zenspider.com>
+ * 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]
- * lib/minitest/*.rb: Imported minitest 1.7.2 r5879.
- * test/minitest/*.rb: ditto.
+Tue Feb 26 15:12:11 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Thu Sep 23 23:09:08 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * 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.
- * vm_insnhelper.c (vm_get_cref0): cref is stacked only in normal
- iseqs, so check if it is the case first.
+Tue Feb 26 15:04:19 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Thu Sep 23 23:08:41 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * configure.in (unexpand_shvar): get rid of non-portable shell
+ behavior on OpenBSD, so no extra quotes. [Bug #7959]
- * tool/config.sub: mingw64 should use x86_64. [ruby-core:32514]
+Tue Feb 26 10:24:49 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Thu Sep 23 21:40:40 2010 wanabe <s.wanabe@gmail.com>
+ * parse.y (IS_LABEL_POSSIBLE): allow labels for keyword arguments just
+ after method definition without a parenthesis. [ruby-core:52820]
+ [Bug #7942]
- * ext/socket/raddrinfo.c (init_addrinfo, inspect_sockaddr): suppress
- warnings. see [ruby-core:31932].
+Tue Feb 26 04:50:00 2013 Zachary Scott <zachary@zacharyscott.net>
-Thu Sep 23 19:27:57 2010 wanabe <s.wanabe@gmail.com>
+ * error.c: clarify reason for sleep in SignalException example
- * thread_win32.c (w32_wait_events, w32_close_handle): suppress warnings.
- see [ruby-core:31932].
+Tue Feb 26 03:47:00 2013 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-Thu Sep 23 18:54:39 2010 wanabe <s.wanabe@gmail.com>
+ * error.c: clarify a document of SignalException. Process.kill()
+ doesn't have any guarantee when signal will be delivered.
+ [Bug #7951] [ruby-core:52864]
- * tool/config.sub: add mingw64.
+Mon Feb 25 23:51:04 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * win32/mkexports.rb (Exports::Mingw64): added.
+ * include/ruby/version.h: bump RUBY_API_VERSION same as RUBY_VERSION.
- * win32/mkexports.rb (Exports::Mingw32): renamed from Exports::Mingw.
+Mon Feb 25 21:03:34 2013 NARUSE, Yui <naruse@ruby-lang.org>
-Thu Sep 23 09:01:28 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * string.c (str_byte_substr): don't set coderange if it's not known.
+ [Bug #7954] [ruby-dev:47108]
- * vm_insnhelper.c (vm_cref_push): no outer cref is needed for proc
- from method. Bug #3786, Bug #3860, [ruby-core:32501]
+Mon Feb 25 16:47:02 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Wed Sep 22 17:12:01 2010 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+ * common.mk (realclean-local): miniprelude.c is made by srcs, so it
+ should not removed by distclean but by realclean. [Bug #6807]
- * test/openssl/utils.rb (OpenSSL#silent): always restore $VERBOSE.
- [ruby-dev:42285]
+Mon Feb 25 16:30:30 2013 Eric Hodel <drbrain@segment7.net>
-Wed Sep 22 16:59:40 2010 Yuki Sonoda (Yugui) <yugui@yugui.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.
- * 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.
+ * test/rubygems/test_gem_commands_push_command.rb: Remove duplicated
+ test.
-Wed Sep 22 01:55:48 2010 Koichi Sasada <ko1@atdot.net>
+Mon Feb 25 15:47:18 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * bootstraptest/test_method.rb: fix last commit.
+ * enc/depend (ARFLAGS): VisualC++ linker does not allow spaces between
+ output option and the output file name. [Bug #7950]
-Wed Sep 22 01:49:52 2010 Koichi Sasada <ko1@atdot.net>
+ * enc/depend (RANLIB): set default command to do nothing, or make the
+ entire line a label on Windows.
- * bootstraptest/test_method.rb: add a test for [ruby-core:30534].
+Mon Feb 25 14:41:07 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Wed Sep 22 00:52:44 2010 WATANABE Hirofumi <eban@ruby-lang.org>
+ * lib/mkmf.rb (MakeMakefile#init_mkmf): default libdirname to libdir.
- * lib/rdoc/ri/store.rb (save_cache): remove duplicate entries.
+ * tool/rbinstall.rb: ditto.
-Wed Sep 22 00:00:05 2010 Tanaka Akira <akr@fsij.org>
+Mon Feb 25 13:12:39 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * ext/pathname/pathname.c (path_f_pathname): Pathname() translated
- from pathname.rb.
+ * 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.
-Tue Sep 21 22:18:30 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+Mon Feb 25 12:48:00 2013 Zachary Scott <zachary@zacharyscott.net>
- * tool/mkconfig.rb: fixed build problem on mswin64 introduced in r29278.
+ * thread.c: Document Thread::new, clean up ::fork and mention calling
+ super if subclassing Thread
-Tue Sep 21 02:42:35 2010 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+Mon Feb 25 12:38:50 2013 Tanaka Akira <akr@fsij.org>
- * test/pathname/test_pathname.rb (TestPathname#test_mkdir): fix typo.
+ * 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.
-Mon Sep 20 23:23:05 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Mon Feb 25 11:03:38 2013 Akinori MUSHA <knu@iDaemons.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]
+ * configure.in (unexpand_shvar): Use the numeric comparison
+ operator instead of '==' which is a ksh extension. [Bug #7941]
-Mon Sep 20 11:25:49 2010 Tanaka Akira <akr@fsij.org>
+Mon Feb 25 02:37:56 2013 Tanaka Akira <akr@fsij.org>
- * ext/pathname/pathname.c (Init_pathname): Pathname#=~ undefinition
- translated from pathname.rb.
+ * ext/socket: define and use union_sockaddr instead of struct
+ sockaddr_storage for less casts.
-Mon Sep 20 02:34:11 2010 Kenta Murata <mrkn@mrkn.jp>
+ * ext/socket/rubysocket.h (union_sockaddr): defined.
- * ext/bigdecimal/bigdecimal.c (check_rounding_mode, BigDecimal_mode):
- raise ArgumentError instead of TypeError passing invalid modes.
+ * ext/socket/socket.c (sock_accept): use union_sockaddr.
+ (sock_accept_nonblock): ditto.
+ (sock_sysaccept): ditto.
+ (sock_s_getnameinfo): ditto.
- * test/bigdecimal/test_bigdecimal.rb (test_mode, test_round):
- change against the above modifications.
+ * ext/socket/basicsocket.c (bsock_getsockname): ditto.
+ (bsock_getpeername): ditto.
+ (bsock_local_address): ditto.
+ (bsock_remote_address): ditto.
-Sun Sep 19 22:08:39 2010 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+ * ext/socket/ancdata.c (bsock_recvmsg_internal): ditto.
- * lib/mkmf.rb (try_link): rdoc
- (try_compile): ditto
- (try_cpp): ditto
- (try_func): ditto
- (try_var): ditto
- (try_run): ditto
- (egrep_cpp): ditto
+ * ext/socket/init.c (recvfrom_arg): ditto.
+ (recvfrom_blocking): ditto.
+ (rsock_s_recvfrom): ditto.
+ (rsock_s_recvfrom_nonblock): ditto.
+ (rsock_getfamily): ditto.
-Sun Sep 19 20:43:33 2010 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+ * 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.
- * 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.
+ * ext/socket/tcpserver.c (tcp_accept): ditto.
+ (tcp_accept_nonblock): ditto.
+ (tcp_sysaccept): ditto.
-Sun Sep 19 20:37:45 2010 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+ * ext/socket/ipsocket.c (ip_addr): ditto.
+ (ip_peeraddr): ditto.
+ (ip_s_getaddress): ditto.
- * common.mk (clean): removes all documents on cleaning.o
- (CAPIOUT): new variable.
- (clean-capi, distclean-capi, realclean-capi): new targets
+Sun Feb 24 21:15:05 2013 Tadayoshi Funaba <tadf@dotrb.org>
- * Makefile.in (clean-capi, distclean-capi, realclean-capi): ditto.
+ * ext/date/date_core.c: [ruby-core:52303]
- * win32/Makefile.sub (clean-capi, distclean-capi, realclean-capi):
- ditto.
+Sun Feb 24 15:33:46 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Sun Sep 19 13:44:24 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * 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]
- * 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 Feb 24 15:32:36 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Sun Sep 19 07:48:20 2010 Tanaka Akira <akr@fsij.org>
+ * 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]
- * ext/pathname/pathname.c (path_unlink): Pathname#unlink and
- Pathname#delete translated from pathname.rb.
+Sun Feb 24 15:14:43 2013 Eric Hodel <drbrain@segment7.net>
-Sun Sep 19 06:06:07 2010 Kenta Murata <mrkn@mrkn.jp>
+ * 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.
- * ext/bigdecimal/bigdecimal.c (check_rounding_mode): added for
- converting symbol to rounding mode number.
+Wed Feb 20 14:28:00 2013 Zachary Scott <zachary@zacharyscott.net>
- * ext/bigdecimal/bigdecimal.c (BigDecimal_mode, BigDecimal_round):
- support to specify rounding mode by symbol.
+ * thread.c: Document ThreadGroup::Default
- * test/bigdecimal/test_bigdecimal.rb (test_mode, test_round):
- add tests for above changes.
+Wed Feb 20 14:23:00 2013 Zachary Scott <zachary@zacharyscott.net>
-Sun Sep 19 05:14:35 2010 Kenta Murata <mrkn@mrkn.jp>
+ * thread.c: Grammar for #backtrace_locations and ::handle_interrupt
- * 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]
+Sun Feb 24 13:35:57 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * test/bigdecimal/test_bigdecimal.rb: add tests for above changes.
+ * 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]
-Sat Sep 18 20:09:51 2010 Tanaka Akira <akr@fsij.org>
+Wed Feb 20 13:23:00 2013 Zachary Scott <zachary@zacharyscott.net>
- * ext/pathname/pathname.c (path_each_entry): Pathname#each_entry
- translated from pathname.rb.
+ * object.c: Document methods receiving string and convert to symbol
+ Patch by Stefan Rusterholz
+ * vm_eval.c: ditto
+ * vm_method.c: ditto
-Fri Sep 17 23:44:07 2010 Kouhei Sutou <kou@cozmixng.org>
+Wed Feb 20 07:20:56 2013 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
- * lib/rexml/xpath_parser.rb, test/rexml/test_xpath.rb:
- add missing method availability check. [ruby-core:32447]
- Reported by Wiebe Cazemier. Thanks!!!
+ * signal.c (sigsegv): suppress unused result warning. Because
+ write(2) is marked __warn_unused_result__ on Linux glibc.
-Fri Sep 17 23:23:26 2010 Kouhei Sutou <kou@cozmixng.org>
+Sun Feb 24 07:50:53 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * test/rexml/test_sax.rb: don't use thread and sleep to avoid slow test.
+ * compile.c (iseq_set_arguments): no keyword check if any keyword rest
+ argument exists, even unnamed. [ruby-core:52744] [Bug #7922]
-Fri Sep 17 23:10:44 2010 Kouhei Sutou <kou@cozmixng.org>
+Sat Feb 23 16:51:00 2013 Zachary Scott <zachary@zacharyscott.net>
- * test/rexml/test_core.rb: enable.
+ * thread.c: Documentation for Thread#backtrace_locations
-Fri Sep 17 22:46:02 2010 Kouhei Sutou <kou@cozmixng.org>
+Sat Feb 23 16:05:00 2013 Zachary Scott <zachary@zacharyscott.net>
- * test/rexml/: untabify.
+ * vm.c: Typo in ObjectSpace::WeakMap overview
-Fri Sep 17 22:29:56 2010 Kouhei Sutou <kou@cozmixng.org>
+Sat Feb 23 16:00:00 2013 Zachary Scott <zachary@zacharyscott.net>
- * test/rexml/: fix fixture data path. All REXML tests are worked.
+ * thread.c: Improved rdoc for ::handle_interrupt, ::pending_interrupt?
+ and #pending_interrupt?
-Fri Sep 17 22:15:15 2010 Kouhei Sutou <kou@cozmixng.org>
+Sat Feb 23 12:26:43 2013 Akinori MUSHA <knu@iDaemons.org>
- * test/rexml/test_listener.rb: remove needless codes.
+ * misc/ruby-electric.el (ruby-electric-curlies)
+ (ruby-electric-matching-char, ruby-electric-bar): Avoid electric
+ insertion when there is a prefix argument.
-Fri Sep 17 22:12:23 2010 Kouhei Sutou <kou@cozmixng.org>
+ * 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.
- * 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.
+Sat Feb 23 12:35:00 2013 Zachary Scott <zachary@zacharyscott.net>
-Fri Sep 17 16:48:49 2010 URABE Shyouhei <shyouhei@ruby-lang.org>
+ * 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
- * 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.
+Sat Feb 23 10:50:00 2013 Zachary Scott <zachary@zacharyscott.net>
-Fri Sep 17 08:30:27 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * array.c (rb_ary_diff, rb_ary_and, rb_ary_or): Document return order
+ [RubySpec #7803]
- * lib/tracer.rb: count only non-internal libraries in stack trace,
- ignoring custom_require. [ruby-core:31858]
+Sat Feb 23 10:17:00 2013 Zachary Scott <zachary@zacharyscott.net>
-Fri Sep 17 02:18:41 2010 Akinori MUSHA <knu@iDaemons.org>
+ * object.c (rb_obj_comp): Documenting Object#<=> return values
+ Patch by Stefan Rusterholz
- * 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.
+Sat Feb 23 09:48:41 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Thu Sep 16 23:47:59 2010 Tanaka Akira <akr@fsij.org>
+ * dir.c (file_s_fnmatch, fnmatch_brace): encoding-incompatible pattern
+ and string do not match, instead of exception. [ruby-dev:47069]
+ [Bug #7911]
- * ext/pathname/pathname.c (path_opendir): Pathname#opendir translated
- from pathname.rb.
+Sat Feb 23 08:57:46 2013 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
-Thu Sep 16 21:40:37 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * doc/NEWS-*: Update NEWS from their respective branches
- * lib/test/unit.rb (Test::Unit::GlobOption): merged RejectOption.
+Sat Feb 23 08:14:43 2013 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
- * test/runner.rb: utilize GlobOption.
+ * NEWS: many additions for Ruby 2.0.0
-Thu Sep 16 21:31:24 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * object.c: Add doc for Module.prepended
- * 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.
+Sat Feb 23 07:52:53 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Thu Sep 16 21:02:30 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * template/ruby.pc.in: reorder library flags which may refer library
+ names. [Bug #7913]
- * lib/rdoc/ri/paths.rb (RDoc::RI::Paths.each): HOMEDIR can be nil
- if $HOME is unset.
+Fri Feb 22 23:46:20 2013 CHIKANAGA Tomoyuki <nagachika@ruby-lang.org>
-Thu Sep 16 14:50:42 2010 URABE Shyouhei <shyouhei@ruby-lang.org>
+ * lib/rexml/document.rb (REXML::Document.entity_expansion_text_limit):
+ fix a typo in comment in r39384.
- * 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.
+Fri Feb 22 18:31:46 2013 Aaron Patterson <aaron@tenderlovemaking.com>
-Thu Sep 16 08:30:28 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * lib/rexml/document.rb (REXML::Document.entity_expansion_text_limit):
+ new attribute to read/write entity expansion text limit. the default
+ limit is 10Kb.
- * 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].
+ * lib/rexml/text.rb (REXML::Text.unnormalize): check above attribute.
-Thu Sep 16 08:27:36 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Fri Feb 22 17:36:23 2013 NARUSE, Yui <naruse@ruby-lang.org>
- * ext/etc/extconf.rb: use expanded sysconfdir with empty DESTDIR.
- [ruby-core:32394]
+ * test/test_rbconfig.rb (TestRbConfig): fix r39372.
+ It must see RbConfig::CONFIG instead of CONFIG.
-Thu Sep 16 06:07:24 2010 Tanaka Akira <akr@fsij.org>
+Fri Feb 22 14:55:41 2013 Naohisa Goto <ngotogenome@gmail.com>
- * ext/pathname/pathname.c (path_rmdir): Pathname#rmdir translated
- from pathname.rb.
+ * signal.c (ruby_abort): fix typo in r39354 [Bug #5014]
-Thu Sep 16 00:36:25 2010 NARUSE, Yui <naruse@ruby-lang.org>
+Fri Feb 22 12:46:41 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * ext/readline/extconf.rb: Remove Readline 6 check because
- Ruby's license is now GPLv3 compatible. [ruby-core:28736]
+ * random.c (rb_random_ulong_limited): fix error message for negative
+ value. [ruby-dev:47061] [Bug #7903]
-Thu Sep 16 00:26:00 2010 NARUSE, Yui <naruse@ruby-lang.org>
+Fri Feb 22 11:36:45 2013 Nobuyoshi Nakada <nobu@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]
+ * test/test_rbconfig.rb (TestRbConfig): skip user defined values by
+ configuration options. [Bug #7902]
- * COPYING.ja: ditto.
+Fri Feb 22 11:33:42 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * BSDL: added. this is from The FreeBSD License.
+ * lib/mkmf.rb (MakeMakefile#init_mkmf): adjust default library path
+ for multiarch. [Bug #7874]
-Wed Sep 15 21:07:06 2010 Tanaka Akira <akr@fsij.org>
+Fri Feb 22 11:10:00 2013 Zachary Scott <zachary@zacharyscott.net>
- * ext/pathname/pathname.c (path_mkdir): Pathname#mkdir translated
- from pathname.rb.
+ * enum.c (Enumerable#chunk: Improved examples, grammar, and formatting
+ Patch by Dan Bernier and Rich Bruchal of newhaven.rb
+ [Github documenting-ruby/ruby#8]
-Wed Sep 15 13:37:00 2010 URABE Shyouhei <shyouhei@ruby-lang.org>
+Fri Feb 22 11:00:00 2013 Zachary Scott <zachary@zacharyscott.net>
- * 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.
+ * 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]
-Wed Sep 15 09:12:03 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Fri Feb 22 07:04:41 2013 Eric Hodel <drbrain@segment7.net>
- * io.c (rb_io_puts): fix for wide char encoding strings.
- [ruby-dev:42212]
+ * 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.
-Wed Sep 15 07:27:52 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Fri Feb 22 06:30:57 2013 Eric Hodel <drbrain@segment7.net>
- * string.c (rb_str_format_m): mentioned about Hash argument. a patch
- from Daniel Bovensiepen at [ruby-core:32386].
+ * doc/globals.rdoc: Document what setting $DEBUG does.
- * sprintf.c (get_hash): ditto, and fix typo.
+ * doc/globals.rdoc: Added pointer to $-d for full documentation.
-Wed Sep 15 07:22:20 2010 Tanaka Akira <akr@fsij.org>
+Fri Feb 22 06:27:07 2013 Eric Hodel <drbrain@segment7.net>
- * ext/pathname/pathname.c (path_entries): Pathname#entries translated
- from pathname.rb.
+ * doc/globals.rdoc: Document what setting $VERBOSE does. [Bug #7899]
-Wed Sep 15 02:13:44 2010 Aaron Patterson <aaron@tenderlovemaking.com>
+ * doc/globals.rdoc: Added pointer to $-w and $-v for full
+ documentation.
- * ext/fiddle/closure.c : Don't use FFI closure alloc on OpenBSD.
- Thanks Jeremy Evans! [ruby-core:32384]
+Fri Feb 22 02:33:00 2013 Zachary Scott <zachary@zacharyscott.net>
-Tue Sep 14 20:17:48 2010 Tanaka Akira <akr@fsij.org>
+ * lib/abbrev.rb: Add words parameter to Abbrev::abbrev
+ Patch by Devin Weaver [Github documenting-ruby/ruby#7]
- * ext/pathname/pathname.c (path_s_getwd): Pathname.getwd and
- Pathname.pwd translated from pathname.rb.
+Thu Feb 21 17:28:14 2013 NARUSE, Yui <naruse@ruby-lang.org>
-Tue Sep 14 05:13:04 2010 Tanaka Akira <akr@fsij.org>
+ * tool/merger.rb: add interaction when only ChangeLog is modified.
- * ext/pathname/pathname.c (path_s_glob): Pathname.glob translated
- from pathname.rb.
+Thu Feb 21 16:34:46 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Tue Sep 14 01:24:51 2010 Yutaka Kanemoto <kanemoto@ruby-lang.org>
+ * signal.c (check_stack_overflow): extract duplicated code and get rid
+ of declaration-after-statement. [Bug #5014]
- * ext/socket/raddrinfo.c (ruby_getaddrinfo__aix): suppress a
- warning.
+Thu Feb 21 14:14:13 2013 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-Mon Sep 13 20:48:30 2010 Tanaka Akira <akr@fsij.org>
+ * signal.c (sigsegv): avoid to use async signal unsafe functions
+ when nested sigsegv is happen.
+ [Bug #5014] [ruby-dev:44082]
- * ext/pathname/pathname.c (path_zero_p): Pathname#zero? translated
- from pathname.rb.
+Thu Feb 21 13:47:59 2013 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-Mon Sep 13 19:56:50 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * file.c (rb_group_member): added an error check. SUS says,
+ getgroups(small_value) may return EINVAL.
- * ext/socket/rubysocket.h (__DARWIN_ALIGNBYTES): workaround of a
- bug in system header of darwin 9. [ruby-core:32341]
+Thu Feb 21 13:37:07 2013 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-Mon Sep 13 18:11:55 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * process.c (RB_MAX_GROUPS): moved to
+ * internal.h (RB_MAX_GROUPS): here.
- * lib/mkmf.rb (try_do): fix typo. a patch from Peter Weldon
- at [ruby-core:32327].
+ * file.c (rb_group_member): use RB_MAX_GROUPS instead of
+ RUBY_GROUP_MAX. They are the same.
-Mon Sep 13 10:12:09 2010 NARUSE, Yui <naruse@ruby-lang.org>
+Thu Feb 21 13:15:40 2013 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
- * util.c (ruby_strtod): reject Float('0x0.').
- [ruby-dev:42239] Bug #3820
+ * 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.
-Mon Sep 13 09:23:58 2010 NARUSE, Yui <naruse@ruby-lang.org>
+Thu Feb 21 13:04:59 2013 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
- * 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]
+ * file.c (eaccess): use access() when not using setuid nor setgid.
+ This is minor optimization.
-Mon Sep 13 06:45:24 2010 Tanaka Akira <akr@fsij.org>
+Thu Feb 21 12:56:19 2013 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
- * ext/pathname/pathname.c (path_writable_real_p):
- Pathname#writable_real? translated from pathname.rb.
+ * file.c (rb_group_member): get rid of NGROUPS dependency.
+ [Bug #7886] [ruby-core:52537]
-Sun Sep 12 21:21:50 2010 Tadayoshi Funaba <tadf@dotrb.org>
+Thu Feb 21 12:45:03 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * lib/date.rb: [ruby-core:32096] Thanks Colin Bartlett.
+ * ruby.c (ruby_init_loadpath_safe): try two levels upper for stripping
+ libdir name. [Bug #7874]
-Sun Sep 12 19:30:27 2010 Tanaka Akira <akr@fsij.org>
+ * configure.in (libdir_basename): expand with multiarch in configure,
+ not to defer the expansion till ruby.pc.in and mkmf.rb. [Bug #7874]
- * ext/pathname/pathname.c (path_world_writable_p):
- Pathname#world_writable? translated from pathname.rb.
+ * configure.in (libdir_basename): also -rpath and -install_name flags
+ are affected when libruby directory changes. [Bug #7874]
-Sun Sep 12 09:16:06 2010 Tanaka Akira <akr@fsij.org>
+Wed Feb 20 19:27:02 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * ext/pathname/pathname.c (path_writable_p): Pathname#writable?
- translated from pathname.rb.
+ * include/ruby/ruby.h (HAVE_RB_SCAN_ARGS_OPTIONAL_HASH): for
+ rb_scan_args() optional hash feature. [Bug #7861]
-Sun Sep 12 08:36:15 2010 Tanaka Akira <akr@fsij.org>
+Wed Feb 20 18:02:26 2013 Nobuyoshi Nakada <nobu@ruby-lang.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]
+ * configure.in (target_os): do not strip -gnu suffix on Linux if
+ --target is given explicitly. [Bug #7874]
-Sun Sep 12 04:27:13 2010 Tanaka Akira <akr@fsij.org>
+ * configure.in (libdirname): adjust library path name which libruby
+ files will be installed. [Bug #7874]
- * process.c (rlimit_resource_name2int): use STRCASECMP to avoid
- ALLOCA_N.
+ * tool/rbinstall.rb (libdir): ditto.
-Sat Sep 11 16:47:41 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Wed Feb 20 13:37:00 2013 Zachary Scott <zachary@zacharyscott.net>
- * 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]
+ * ext/pty/pty.c: Documentation for the PTY module
-Sat Sep 11 15:19:57 2010 Eric Hodel <drbrain@segment7.net>
+Wed Feb 20 12:18:00 2013 Zachary Scott <zachary@zacharyscott.net>
- * lib/webrick/httpauth/digestauth.rb (WEBrick::Config::DigestAuth):
- Add documentation
+ * object.c: Document Data class [Bug #7890] [ruby-core:52549]
+ Patch by Matthew Mongeau
- * lib/webrick/config.rb (WEBrick::Config::DigestAuth): Add
- documentation
+Wed Feb 20 11:50:00 2013 Zachary Scott <zachary@zacharyscott.net>
-Sat Sep 11 12:32:05 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * lib/mutex_m.rb: Add rdoc for Mutex_m module
- * include/ruby/intern.h (rb_set_kcode, rb_get_kcode): removed
- zombie prototype declarations. a patch from Eric Hodel
- at [ruby-core:32305].
+Wed Feb 20 09:34:43 2013 Eric Hodel <drbrain@segment7.net>
-Sat Sep 11 06:53:12 2010 Tanaka Akira <akr@fsij.org>
+ * 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.
- * ext/pathname/pathname.c (path_symlink_p): Pathname#symlink?
- translated from pathname.rb.
+Wed Feb 20 07:51:19 2013 Eric Hodel <drbrain@segment7.net>
-Fri Sep 10 23:03:43 2010 Tanaka Akira <akr@fsij.org>
+ * lib/rubygems/installer.rb: Use gsub instead of gsub! to avoid
+ altering @bin_dir. Fixes tests on windows. [ruby-trunk - Bug #7885]
- * ext/pathname/pathname.c (path_sticky_p): Pathname#sticky? translated
- from pathname.rb.
+Tue Feb 19 20:50:00 2013 Kenta MURATA <mrkn@mrkn.jp>
-Fri Sep 10 19:11:13 2010 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+ * ext/bigdecimal/bigdecimal.gemspec: bump to 1.2.0.
+ [ruby-core:51777] [Bug #7761]
- * 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.
+Tue Feb 19 13:07:25 2013 Akinori MUSHA <knu@iDaemons.org>
- * test/webrick/test_httprequest.rb: test added.
+ * ext/syslog/syslog.c (Init_syslog): Define inspect as a singleton
+ method and remove it as an instance method. [Bug #6502]
-Fri Sep 10 17:49:34 2010 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+Tue Feb 19 12:30:00 2013 Zachary Scott <zachary@zacharyscott.net>
- * ext/openssl/lib/openssl/x509-internal.rb: removed unused local
- variable.
+ * object.c: rdoc formatting for Kernel#Array()
+ * array.c: Add rdoc for Array() method to Creating Arrays section
- * test/openssl/*: less warnings while test running with -w.
+Tue Feb 19 10:35:52 2013 Eric Hodel <drbrain@segment7.net>
-Fri Sep 10 16:49:20 2010 Akinori MUSHA <knu@iDaemons.org>
+ * ext/openssl/ossl.c (class OpenSSL): Use only inner parenthesis in
+ create_extension examples.
- * class.c (rb_scan_args): Add support for optional keyword
- argument hash. [ruby-dev:42221] [ruby-dev:38048]
+Tue Feb 19 10:27:12 2013 Eric Hodel <drbrain@segment7.net>
- * README.EXT, README.EXT.ja: Update documentation accordingly.
+ * ext/openssl/ossl.c (class OpenSSL): Fixed ExtensionFactory example.
+ Patch by Richard Bradley. [ruby-trunk - Bug #7551]
- * dir.c (dir_initialize): Make use of the new rb_scan_args()
- feature.
+Tue Feb 19 08:32:11 2013 Koichi Sasada <ko1@atdot.net>
- * 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.
+ * vm_eval.c (vm_call0_body): check interrupts after method dispatch
+ from C methods. [Bug #7878]
- * transcode.c (str_transcode, econv_args)
- (econv_primitive_convert): Ditto.
+Tue Feb 19 08:14:40 2013 Eric Hodel <drbrain@segment7.net>
- * ext/zlib/zlib.c (rb_gzreader_initialize): Ditto.
+ * lib/rubygems/installer.rb: Fixed placement of executables with
+ --user-install. [ruby-trunk - Bug #7779]
+ * test/rubygems/test_gem_installer.rb: Test for above.
-Fri Sep 10 10:33:18 2010 NARUSE, Yui <naruse@ruby-lang.org>
+Tue Feb 19 06:04:06 2013 NARUSE, Yui <naruse@ruby-lang.org>
- * random.c (rb_genrand_ulong_limited): renamed from
- rb_rand_internal and now this is public API.
+ * 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).
- * include/ruby/ruby.h (rb_genrand_ulong_limited): added.
+ * configure.in: remove r38342's hack and check libunwind.
- * bignum.c (big_sparse_p): use rb_genrand_ulong_limited.
+Tue Feb 19 04:26:29 2013 NARUSE, Yui <naruse@ruby-lang.org>
-Fri Sep 10 13:07:22 2010 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+ * configure.in: check whether backtrace(3) works well or not.
- * ext/digest/lib/digest.rb: removed unused exception variable
- assignment to avoid a warning.
+ * vm_dump.c: set HAVE_BACKTRACE 0 if BROKEN_BACKTRACE.
-Fri Sep 10 07:29:14 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Mon Feb 18 16:30:18 2013 Akinori MUSHA <knu@iDaemons.org>
- * ext/etc/etc.c (etc_systmpdir): assume system default tmpdir
- safe. [ruby-dev:42089]
+ * lib/ipaddr.rb (IPAddr#in6_addr): Fix a typo with the closing
+ parenthesis.
-Fri Sep 10 07:03:23 2010 Tanaka Akira <akr@fsij.org>
+Mon Feb 18 12:32:24 2013 Akinori MUSHA <knu@iDaemons.org>
- * ext/pathname/pathname.c (path_size_p): Pathname#size? translated from
- pathname.rb.
+ * 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]
-Fri Sep 10 02:15:29 2010 Tanaka Akira <akr@fsij.org>
+Mon Feb 18 10:09:54 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * ext/socket/option.c (inspect_peercred): support OpenBSD-current.
- patch by Jeremy Evans. [ruby-core:32240]
+ * configure.in (unexpand_shvar): regularize a shell variable by
+ unexpanding shell variables in it.
-Thu Sep 9 23:25:53 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Sun Feb 17 20:55:44 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * vm.c (vm_backtrace_each): skip allocator frames which have no
- name. [ruby-core:32231]
+ * compar.c (rb_invcmp): compare by inversed comparison, with preventing
+ from infinite recursion. [ruby-core:52305] [Bug #7870]
-Thu Sep 9 22:39:08 2010 Tanaka Akira <akr@fsij.org>
+ * string.c (rb_str_cmp_m), time.c (time_cmp): get rid of infinite
+ recursion.
- * ext/pathname/pathname.c (path_size): Pathname#size translated from
- pathname.rb.
+Sun Feb 17 17:23:22 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Thu Sep 9 22:34:48 2010 wanabe <s.wanabe@gmail.com>
+ * 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]
- * 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]
+Sun Feb 17 01:19:00 2013 Zachary Scott <zachary@zacharyscott.net>
- * insns.def (opt_case_dispatch): ditto.
+ * ext/psych/lib/psych/y.rb: Document Kernel#y by Adam Stankiewicz
+ [Github tenderlove/psych#127]
- * test/ruby/test_case.rb: add tests.
+Sun Feb 17 00:52:14 2013 NARUSE, Yui <naruse@ruby-lang.org>
-Thu Sep 9 17:15:15 2010 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+ * 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.
- * test/net/http/test_https.rb (test_identity_verify_failure): follows
- the SSL hostname check error message of openssl.
+Sat Feb 16 20:51:17 2013 Kazuki Tsujimoto <kazuki@callcc.net>
-Thu Sep 9 10:44:46 2010 NARUSE, Yui <naruse@ruby-lang.org>
+ * vm.c (ENV_IN_HEAP_P): fix off-by-one error.
- * 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]
+Sat Feb 16 20:47:16 2013 Akinori MUSHA <knu@iDaemons.org>
-Thu Sep 9 09:02:01 2010 NARUSE, Yui <naruse@ruby-lang.org>
+ * 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.
- * tool/rbinstall.rb (install?): gemspec filename should include
- its version. patched by Luis Lavena [ruby-core:32165]
+Sat Feb 16 20:43:20 2013 Tanaka Akira <akr@fsij.org>
-Wed Sep 8 22:46:31 2010 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+ * ext/socket/ancdata.c (rsock_recvmsg): ignore truncated part of
+ socket address returned from recvmsg().
- * 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.
+ * ext/socket/init.c (recvfrom_blocking): ignore truncated part of
+ socket address returned from recvfrom().
+ (rsock_s_recvfrom_nonblock): ditto.
-Wed Sep 8 20:56:57 2010 Tanaka Akira <akr@fsij.org>
+Sat Feb 16 20:05:26 2013 Ayumu AIZAWA <ayumu.aizawa@gmail.com>
- * ext/pathname/pathname.c (path_setgid_p): Pathname#setgid? translated
- from pathname.rb.
+ * test/ruby/test_thread.rb: fixed typo
+ patched by Hiroki Matsue via https://github.com/ruby/ruby/pull/248
-Wed Sep 8 06:25:41 2010 Tanaka Akira <akr@fsij.org>
+Sat Feb 16 16:08:35 2013 Koichi Sasada <ko1@atdot.net>
- * ext/pathname/pathname.c (path_setuid_p): Pathname#setuid? translated
- from pathname.rb.
+ * 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]
-Tue Sep 7 21:03:35 2010 Tanaka Akira <akr@fsij.org>
+ 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.
- * ext/pathname/pathname.c (path_readable_real_p):
- Pathname#readable_real? translated from pathname.rb.
+ * test/ruby/test_method.rb: add a test.
-Mon Sep 6 23:07:25 2010 Tanaka Akira <akr@fsij.org>
+Sat Feb 16 15:45:56 2013 Koichi Sasada <ko1@atdot.net>
- * ext/pathname/pathname.c (path_world_readable_p):
- Pathname#world_readable? translated from pathname.rb.
+ * 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]
-Mon Sep 6 11:03:13 2010 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+ * test/ruby/test_settracefunc.rb: add a test.
- * 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.
+Sat Feb 16 13:40:13 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Mon Sep 6 10:46:55 2010 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+ * configure.in (shvar_to_cpp): do not substitute exec_prefix itself
+ with RUBY_EXEC_PREFIX, which cause recursive definition.
+ [ruby-core:52296] [Bug #7860]
- * Fixed exception message for SSL post connection check failure. Patch
- by Paul Betteridge. ref [Bug #3704]
+Sat Feb 16 13:13:04 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Mon Sep 6 10:31:59 2010 NARUSE, Yui <naruse@ruby-lang.org>
+ * ext/io/console/io-console.gemspec: bump to 0.4.2. now explicitly
+ requires ruby 1.9.3 or later. [Bug #7847]
- * ext/readline/readline.c (readline_s_get_line_buffer):
- Readline.line_buffer should return locale string.
- [ruby-dev:42184] #3791
+ * ext/io/console/console.c (console_dev): compatibility with ruby 1.8.
-Mon Sep 6 09:47:24 2010 NARUSE, Yui <naruse@ruby-lang.org>
+ * ext/io/console/console.c (rawmode_opt, console_dev): compatibility
+ with ruby 1.9. [ruby-core:52220] [Bug #7847]
- * util.c (ruby_strtod): check there is at least 1 digit after
- "0x" before ".". [ruby-dev:42183] #3790
+Sat Feb 16 12:45:50 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Mon Sep 6 09:44:50 2010 NARUSE, Yui <naruse@ruby-lang.org>
+ * 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]
- * util.c (ruby_strtod): check integer overflow.
- [ruby-dev:42180] #3789
+Sat Feb 16 12:15:20 2013 Aaron Patterson <aaron@tenderlovemaking.com>
-Mon Sep 6 06:17:21 2010 Tanaka Akira <akr@fsij.org>
+ * parse.y: add dtrace probe for symbol create.
- * ext/pathname/pathname.c (path_readable_p): Pathname#readable?
- translated from pathname.rb.
+ * probes.d: ditto
-Sun Sep 5 23:02:34 2010 Tanaka Akira <akr@fsij.org>
+Sat Feb 16 09:27:37 2013 Tanaka Akira <akr@fsij.org>
- * ext/pathname/pathname.c (path_owned_p): Pathname#owned?
- translated from pathname.rb.
+ * 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 ?".
-Sat Sep 4 23:48:47 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Sat Feb 16 09:24:37 2013 Tanaka Akira <akr@fsij.org>
- * file.c (rb_file_s_readlink): symlink target should be in
- filesystem encoding.
+ * ext/socket/extconf.rb: reorder header tests to consider inclusion
+ order in rubysocket.h.
-Sat Sep 4 10:40:50 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Sat Feb 16 08:42:58 2013 Tanaka Akira <akr@fsij.org>
- * load.c (ruby_init_ext): export for golfers.
+ * configure.in, ext/socket/extconf.rb: test netinet/in_systm.h in
+ ext/socket/extconf.rb instead of configure.in.
- * vm_core.h (rb_iseq_eval, rb_iseq_compile_with_option): ditto.
+ Originally, netinet/in_systm.h is included for NextStep, OpenStep,
+ and Rhapsody. [ruby-core:1596]
-Sun May 23 17:29:41 2010 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+Sat Feb 16 07:55:40 2013 Tanaka Akira <akr@fsij.org>
- * common.mk (capi): uses a timestamp file to get rid of
- generating twice.
+ * configure.in: don't test xti.h here.
-Fri Jun 18 01:33:21 2010 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+ * ext/socket/extconf.rb: test xti.h here.
- * enc/Makefile.in (realclean): has been missing. necessary
- for make realclean-enc.
+ Originally, xti.h is included for IRIX [ruby-core:14447].
-Fri Sep 3 23:51:26 2010 Tanaka Akira <akr@fsij.org>
+Sat Feb 16 07:16:49 2013 Tanaka Akira <akr@fsij.org>
- * ext/pathname/pathname.c (path_socket_p): Pathname#socket?
- translated from pathname.rb.
+ * ext/socket/extconf.rb: test struct sockaddr_un and its member,
+ sun_len.
-Fri Sep 3 06:40:44 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * ext/socket/sockport.h (INIT_SOCKADDR_UN): new macro defined.
- * ext/pty/pty.c (chfunc): pass through exceptions.
+ * ext/socket/socket.c (sock_s_pack_sockaddr_un): use INIT_SOCKADDR_UN.
- * io.c (rb_io_bufwrite, rb_io_bufread): added.
+ * ext/socket/unixsocket.c (rsock_init_unixsock): ditto.
- * process.c (rb_fork_err): protect from exceptions.
+ * ext/socket/raddrinfo.c (init_unix_addrinfo): ditto.
+ (addrinfo_mload): ditto.
-Fri Sep 3 06:16:07 2010 Tanaka Akira <akr@fsij.org>
+Sat Feb 16 07:05:59 2013 Tanaka Akira <akr@fsij.org>
- * ext/pathname/pathname.c (path_pipe_p): Pathname#pipe?
- translated from pathname.rb.
+ * ext/socket/sockport.h (INIT_SOCKADDR_IN): don't need family
+ argument. it is always AF_INET.
-Fri Sep 3 06:14:40 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * ext/socket/raddrinfo.c (make_inetaddr): follow INIT_SOCKADDR_IN
+ change.
+ (addrinfo_ipv6_to_ipv4): ditto.
- * ext/pty/pty.c (chfunc): restore errno from SystemCallError and
- propagate proper exception to the parent. [ruby-dev:41965]
+Sat Feb 16 04:21:07 2013 NAKAMURA Usaku <usa@ruby-lang.org>
-Thu Sep 2 22:10:38 2010 Tanaka Akira <akr@fsij.org>
+ * ext/socket/extconf.rb: workaround for mswin/mingw build problem.
+ sendmsg emulation in win32/win32.c is not enough.
- * ext/pathname/pathname.c (path_file_p): Pathname#file?
- translated from pathname.rb.
+Sat Feb 16 00:19:20 2013 Tanaka Akira <akr@fsij.org>
-Thu Sep 2 09:12:02 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+ * ext/socket/extconf.rb: use all all tested available headers for
+ have_func.
- * win32/win32.c (rb_w32_spawn, rb_w32_aspawn): don't forget to free
- memory.
+Fri Feb 15 22:21:37 2013 Akinori MUSHA <knu@iDaemons.org>
-Thu Sep 2 09:01:13 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+ * 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]
- * win32/win32.c (CreateChild): unicodize.
+Fri Feb 15 20:29:11 2013 Tanaka Akira <akr@fsij.org>
- * win32/win32.c (rb_w32_spawn, rb_w32_aspawn): convert arguments of
- CreateChild() from ACP to WideChar.
+ * ext/socket/sockport.h (SET_SIN_LEN): defined for strict-aliasing
+ rule.
+ (INIT_SOCKADDR_IN): ditto.
-Thu Sep 2 06:53:43 2010 Tanaka Akira <akr@fsij.org>
+ * ext/socket/raddrinfo.c (make_inetaddr): use INIT_SOCKADDR_IN.
+ (addrinfo_ipv6_to_ipv4): ditto.
- * ext/pathname/pathname.c (path_directory_p): Pathname#directory?
- translated from pathname.rb.
+Fri Feb 15 18:24:48 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Wed Sep 1 22:03:41 2010 Tanaka Akira <akr@fsij.org>
+ * lib/mkmf.rb (MakeMakefile#try_run): bail out explicitly if cross
+ compiling, because it cannot work of course.
- * ext/pathname/pathname.c (path_grpowned_p): Pathname#grpowned?
- translated from pathname.rb.
+Fri Feb 15 12:34:58 2013 Tanaka Akira <akr@fsij.org>
-Wed Sep 1 17:39:02 2010 Ryan Davis <ryand-ruby@zenspider.com>
+ * ext/socket/extconf.rb: test struct sockaddr_storage directly.
- * lib/minitest/*.rb: Imported minitest 1.7.1 r5835.
- * test/minitest/*.rb: ditto.
+ * ext/socket/rubysocket.h: use HAVE_TYPE_STRUCT_SOCKADDR_STORAGE.
-Wed Sep 1 16:50:42 2010 NARUSE, Yui <naruse@ruby-lang.org>
+Fri Feb 15 12:26:13 2013 Tanaka Akira <akr@fsij.org>
- * string.c (tr_setup_table): optimized. don't create hash objects
- when given pattern is ASCII only.
+ * ext/socket/getaddrinfo.c (GET_AI): don't cast 1st argument for
+ INIT_SOCKADDR.
- * string.c (tr_find): ditto.
+Fri Feb 15 08:12:11 2013 Tanaka Akira <akr@fsij.org>
-Wed Sep 1 14:35:29 2010 NARUSE, Yui <naruse@ruby-lang.org>
+ * ext/socket/sockport.h (SET_SS_LEN): removed.
+ (SET_SIN_LEN): removed.
+ (INIT_SOCKADDR): new macro.
- * array.c (rb_ary_rotate_m): fix typo of rdoc.
- patched by Andrei Kulakov [ruby-core:31975]
+ * ext/socket/ancdata.c (extract_ipv6_pktinfo): use INIT_SOCKADDR.
-Wed Sep 1 14:33:36 2010 NARUSE, Yui <naruse@ruby-lang.org>
+ * ext/socket/raddrinfo.c (make_inetaddr): use INIT_SOCKADDR.
+ (addrinfo_ipv6_to_ipv4): ditto.
- * enum.c (enum_zip): fix typo of rdoc.
- patched by Andrei Kulakov [ruby-core:31974]
+ * ext/socket/getaddrinfo.c (GET_AI): use INIT_SOCKADDR.
-Wed Sep 1 12:56:36 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Fri Feb 15 07:49:27 2013 Eric Hodel <drbrain@segment7.net>
- * 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]
+ * lib/rdoc.rb: Update to release version of 4.0.0
-Tue Aug 31 21:10:23 2010 Tanaka Akira <akr@fsij.org>
+ * lib/rubygems.rb: Update to release version of 2.0.0
- * ext/pathname/pathname.c (path_exist_p): Pathname#exist? translated
- from pathname.rb.
+Fri Feb 15 07:07:27 2013 Tanaka Akira <akr@fsij.org>
-Tue Aug 31 17:32:34 2010 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+ * ext/socket/sockport.h (SA_LEN): removed because unused now.
+ (SS_LEN): ditto.
+ (SIN_LEN): ditto.
- * ext/tk/stubs.c: fix [Bug #3771] "VC++ can't make ext/tk with enabling
- stubs". Thanks, Akio Tajima [ruby-dev:42159].
+Thu Feb 14 10:45:31 2013 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-Tue Aug 31 03:42:14 2010 NARUSE, Yui <naruse@ruby-lang.org>
+ * test/ruby/test_process.rb (test_setsid): Added a workaround for
+ MacOS X. Patch by nagachika. [Bug #7826] [ruby-core:52126]
- * 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.
+Fri Feb 15 00:15:31 2013 Tanaka Akira <akr@fsij.org>
- * string.c (tr_find): nodel can't be NULL; if NULL, it means
- it is not specified.
+ * ext/socket/sockport.h (VALIDATE_SOCKLEN): new macro to validate
+ sa_len member of 4.4BSD socket address.
-Mon Aug 30 21:29:21 2010 Tanaka Akira <akr@fsij.org>
+ * ext/socket/getnameinfo.c (getnameinfo): use VALIDATE_SOCKLEN,
+ instead of SA_LEN.
- * ext/pathname/pathname.c (path_executable_real_p):
- Pathname#executable_real? translated from pathname.rb.
+ * ext/socket/socket.c (sock_s_getnameinfo): use VALIDATE_SOCKLEN
+ instead of SS_LEN.
-Mon Aug 30 15:00:13 2010 NARUSE, Yui <naruse@ruby-lang.org>
+Thu Feb 14 22:25:54 2013 Tanaka Akira <akr@fsij.org>
- * string.c (tr_setup_table): initialize negating table when
- negating string is given. [ruby-core:31851]
+ * 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.
- * string.c (tr_find): add a sentence for the time when
- target characters include negating one.
+Thu Feb 14 20:11:23 2013 Tanaka Akira <akr@fsij.org>
- * string.c (rb_str_count): move definition.
+ * ext/socket: always operate length of socket address companion with
+ socket address.
-Mon Aug 30 07:32:41 2010 Tanaka Akira <akr@fsij.org>
+ * ext/socket/rubysocket.h (rsock_make_ipaddr): add an argument for
+ socket address length.
+ (rsock_ipaddr): ditto.
- * ext/pathname/pathname.c (path_executable_p): Pathname#executable?
- translated from pathname.rb.
+ * ext/socket/ipsocket.c (ip_addr): pass length to rsock_ipaddr.
+ (ip_peeraddr): ditto.
+ (ip_s_getaddress): pass length to rsock_make_ipaddr.
-Sun Aug 29 23:54:10 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * 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.
- * lib/rdoc/parser/ruby.rb (RDoc#parse_call_parameters): don't
- include assignment. [Bug #3759], [ruby-dev:42154]
+ * ext/socket/init.c (rsock_s_recvfrom): pass length to rsock_ipaddr.
+ (rsock_s_recvfrom_nonblock): ditto.
- * lib/rdoc/parser/ruby.rb (RDoc#parse_class): ignore non-constant
- name singleton class. [Bug #3759], [ruby-dev:42154]
+ * ext/socket/tcpsocket.c (tcp_sockaddr): pass length to
+ rsock_make_ipaddr.
-Sun Aug 29 23:25:18 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * 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.
- * file.c (rb_get_path_check): clarify error message for
- ASCII-incompatible path name.
+Thu Feb 14 14:31:43 2013 Eric Hodel <drbrain@segment7.net>
-Sun Aug 29 16:02:54 2010 NARUSE, Yui <naruse@ruby-lang.org>
+ * lib/net/http.rb: Removed OpenSSL dependency from Net::HTTP.
- * 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.
+ * test/net/http/test_http.rb: Remove Zlib dependency from tests.
+ * test/net/http/test_http_request.rb: ditto.
- * tool/node_name.rb: read stdin with while gets.
+Thu Feb 14 11:08:15 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Sun Aug 29 13:22:43 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * class.c (include_modules_at): detect cyclic prepend with original
+ method table. [ruby-core:52205] [Bug #7841]
- * vm.c (rb_thread_method_id_and_class): curried proc has no
- method. [ruby-core:31871]
+Thu Feb 14 10:30:41 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Sun Aug 29 12:51:33 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * vm_method.c: call method_removed hook on called class, not on
+ prepending iclass. [ruby-core:52207] [Bug #7843]
- * 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].
+Thu Feb 14 10:05:57 2013 Eric Hodel <drbrain@segment7.net>
-Sun Aug 29 12:19:58 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * 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.
- * load.c (load_failed): should honor encoding. [ruby-core:31915]
+Thu Feb 14 08:18:47 2013 Tanaka Akira <akr@fsij.org>
-Sun Aug 29 09:35:10 2010 NARUSE, Yui <naruse@ruby-lang.org>
+ * 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.
- * common.mk (clean): exclude *.inc. [ruby-dev:41931]
+Wed Feb 13 20:59:48 2013 Tanaka Akira <akr@fsij.org>
- * common.mk (distclean): include *.inc.
+ * ext/socket/extconf.rb: don't define socklen_t here, just test.
- * common.mk (help): change description about clean and distclean.
+ * ext/socket/rubysocket.h: define socklen_t if not available.
-Sat Aug 29 06:34:52 2010 Tanaka Akira <akr@fsij.org>
+Wed Feb 13 18:37:50 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * ext/pathname/pathname.c (path_chardev_p): Pathname#chardev?
- translated from pathname.rb.
+ * proc.c (mnew): skip prepending modules and return the method bound
+ on the given class. [ruby-core:52160] [Bug #7836]
-Sat Aug 28 17:39:33 2010 Kenta Murata <mrkn@mrkn.jp>
+Wed Feb 13 18:11:59 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * ext/bigdecimal/bigdecimal.c (BigDecimal_save_exception_mode,
- BigDecimal_save_rounding_mode, BigDecimal_save_limit): added.
+ * proc.c (method_original_name): new methods Method#original_name and
+ UnboundMethod#original_name. [ruby-core:52048] [Bug #7806]
+ [EXPERIMENTAL]
- * test/bigdecimal/test_bigdecimal.rb: added tests for the above
- features.
+ * proc.c (method_inspect): show the given name primarily, and
+ original_id if aliased. [ruby-core:52048] [Bug #7806]
-Sat Aug 28 08:11:05 2010 Tanaka Akira <akr@fsij.org>
+Wed Feb 13 17:56:39 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * ext/pathname/pathname.c (path_blockdev_p): Pathname#blockdev?
- translated from pathname.rb.
+ * configure.in (warnflags): disable -Werror by default unless
+ development. [ruby-core:52131] [Bug #7830]
-Fri Aug 27 16:20:01 2010 URABE Shyouhei <shyouhei@ruby-lang.org>
+Wed Feb 13 06:05:52 2013 Eric Hodel <drbrain@segment7.net>
- * string.c (rb_str_prepend): new method by Shota Fukumori (sora_h)
- [Feature #3765]
+ * 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.
-Fri Aug 27 15:24:20 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+Wed Feb 13 05:49:21 2013 Tanaka Akira <akr@fsij.org>
- * math.c (math_atan2): you should know that M_PI is not the feature
- of C90.
- fixed build failure caused by r29115.
+ * ext/socket/extconf.rb: test functions just after struct members.
-Fri Aug 27 15:26:33 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Tue Feb 12 12:02:35 2013 NARUSE, Yui <naruse@ruby-lang.org>
- * file.c (null_device): move from io.c.
+ * 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
-Fri Aug 27 12:47:44 2010 Kenta Murata <mrkn@mrkn.jp>
+Mon Feb 11 23:08:48 2013 Tanaka Akira <akr@fsij.org>
- * math.c (math_atan2): change the behavior when x and y are zero.
- [ruby-dev:42090] [Bug #3736] [ruby-dev:42116]
+ * configure.in: enable rb_cv_page_size_log test for MirOS BSD.
- * test/ruby/test_math.rb (test_atan2): add tests for the above
- changes.
+Mon Feb 11 20:06:38 2013 Tanaka Akira <akr@fsij.org>
-Fri Aug 27 12:26:23 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+ * configure.in: use -pthread on mirbsd*.
- * object.c (rb_obj_class): remove mention of obsolete method.
- a patch from Run Paint Run Run at [ruby-core:31842].
+Mon Feb 11 16:07:09 2013 Tanaka Akira <akr@fsij.org>
-Fri Aug 27 12:25:03 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * configure.in: add SOLIBS and LIBRUBY_SO definition for mirbsd*.
- * io.c (null_device): the name of null device. [ruby-dev:41791]
+Mon Feb 11 13:17:20 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Fri Aug 27 07:57:34 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * configure.in (rubysitearchprefix): sitearchdir and vendorarchdir
+ should use sitearch, not arch. [ruby-dev:46964] [Bug #7823]
- * array.c (rb_ary_shuffle_bang): bail out from modification during
- shuffle.
+ * win32/Makefile.sub (config.status): site and vendor directories
+ should use sitearch, not arch. [ruby-dev:46964] [Bug #7823]
- * array.c (rb_ary_sample): ditto.
+Mon Feb 11 12:31:25 2013 Tanaka Akira <akr@fsij.org>
-Fri Aug 27 05:11:51 2010 Tanaka Akira <akr@fsij.org>
+ * configure.in: move OS specific header/function knowledge before
+ automatic header tests.
- * ext/pathname/pathname.c (path_sysopen): Pathname#sysopen translated
- from pathname.rb.
+Mon Feb 11 11:04:29 2013 Tanaka Akira <akr@fsij.org>
-Thu Aug 26 22:53:56 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * configure.in: move the test for -march=i486 just after
+ RUBY_UNIVERSAL_ARCH/RUBY_DEFAULT_ARCH.
- * array.c (rb_ary_shuffle): rdoc fix. argument name was missing.
- a patch from Run Paint Run Run at [ruby-core:31848].
+Sun Feb 10 23:42:26 2013 Tanaka Akira <akr@fsij.org>
-Thu Aug 26 21:49:46 2010 Tanaka Akira <akr@fsij.org>
+ * ext/socket/extconf.rb: test structure members just after types test.
- * ext/pathname/pathname.c (path_readlines): Pathname#readlines
- translated from pathname.rb.
+Sun Feb 10 20:58:17 2013 Tanaka Akira <akr@fsij.org>
-Thu Aug 26 10:37:00 2010 NARUSE, Yui <naruse@ruby-lang.org>
+ * ext/socket/extconf.rb: test types just after headers test.
- * 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]
+Sun Feb 10 16:00:00 2013 Zachary Scott <zachary@zacharyscott.net>
-Thu Aug 26 10:38:11 2010 Yutaka Kanemoto <kanemoto@ruby-lang.org>
+ * 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
- * test/dl/test_base.rb: AIX does not have dynamically loadable lib[cm].
+Sun Feb 10 15:26:00 2013 Zachary Scott <zachary@zacharyscott.net>
- * test/fiddle/helper.rb: AIX does not have dynamically loadable lib[cm].
+ * lib/rake/doc/*: Sync Rake rdoc files from upstream
-Thu Aug 26 09:49:50 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Sun Feb 10 15:50:02 2013 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
- * array.c (rb_ary_shuffle_bang): check number of argument.
+ * vm_exec.h (DISPATCH_ARCH_DEPEND_WAY): use __asm__ __volatile__
+ instead of asm volatile.
-Tue Aug 26 09:11:40 2010 Kenta Murata <mrkn@mrkn.jp>
+Sun Feb 10 15:50:02 2013 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
- * ext/bigdecimal/bigdecimal.c (Init_bigdecimal,
- rmpd_set_thread_local_exception_mode, VpGetException,
- VpSetException): thread-local exception mode.
+ * gc.h (SET_MACHINE_STACK_END): use __volatile__ instead of volatile.
- * ext/bigdecimal/bigdecimal.c (Init_bigdecimal,
- rmpd_set_thread_local_precision_limit, VpGetPrecLimit,
- VpSetPrecLimit): thread-local precision limit.
+Sun Feb 10 14:25:00 2013 Zachary Scott <zachary@zacharyscott.net>
- * ext/bigdecimal/bigdecimal.c (Init_bigdecimal,
- rmpd_set_thread_local_rounding_mode, VpGetRoundMode,
- VpSetRoundMode, VpException, VpInternalRound):
- thread-local rounding mode.
+ * doc/rake/, lib/rake/doc/: Move Rake rdoc files to lib/rake
- * ext/bigdecimal/bigdecimal.c (BigDecimal_mode, BigDecimal_round,
- VpIsRoundMode, VpGetRoundMode, VpSetRoundMode, VpActiveRound,
- VpMidRound, VpLeftRound), ext/bigdecimal/bigdecimal.h:
- use unsigned short for rounding mode.
+Sun Feb 10 12:10:25 2013 Tanaka Akira <akr@fsij.org>
- * test/bigdecimal/test_bigdecimal.rb (test_mode): add test for
- setting rounding mode.
+ * ext/socket/extconf.rb: test headers at first.
- * test/bigdecimal/test_bigdecimal.rb (test_thread_local_mode):
- add test for setting mode thread-locally.
+Sun Feb 10 12:00:00 2013 Zachary Scott <zachary@zacharyscott.net>
-Thu Aug 26 07:29:54 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * doc/rake/*: Removed stale Rake static files
- * array.c (rb_ary_{shuffle_bang,sample}): use Random class object.
+Sun Feb 10 09:10:00 2013 Zachary Scott <zachary@zacharyscott.net>
- * random.c (try_get_rnd): use default_rand for Random as same as
- singleton methods.
+ * lib/pp.rb, lib/prettyprint.rb: Documentation for PP and PrettyPrint
+ Based on a patch by Vincent Batts [ruby-core:51253] [Bug #7656]
- * random.c (rb_random_real): check the range of result.
+Sat Feb 9 21:11:21 2013 Tanaka Akira <akr@fsij.org>
-Wed Aug 25 22:11:11 2010 Tanaka Akira <akr@fsij.org>
+ * 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.
- * ext/pathname/pathname.c (path_binread): Pathname#binread translated
- from pathname.rb.
+Sat Feb 9 17:45:58 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Wed Aug 25 03:42:43 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+ * configure.in, version.c: prevent duplicated load paths by empty
+ version string, it does not work right now.
- * ext/dl/cfunc.c (rb_dlcfunc_call): workaround for VC9 for x64.
- reported by kuwamoto shintaro in [ruby-dev:42125].
+Sat Feb 9 17:38:41 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Tue Aug 24 23:28:50 2010 Yusuke Endoh <mame@tsg.ne.jp>
+ * configure.in: fix arch parameters in help message. [Bug #7804]
- * .gitignore: updated.
+Sat Feb 9 13:13:00 2013 Zachary Scott <zachary@zacharyscott.net>
-Tue Aug 24 22:07:28 2010 Tanaka Akira <akr@fsij.org>
+ * vm_trace.c: Note about TracePoint events set, and comment on
+ Kernel#set_trace_func to prefer new TracePoint API
- * ext/pathname/pathname.c (path_read): Pathname#read translated from
- pathname.rb.
+Sat Feb 9 10:07:47 2013 Kazuki Tsujimoto <kazuki@callcc.net>
-Tue Aug 24 10:11:04 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * BSDL: update copyright notice for 2013.
- * configure.in: read API version from include/ruby/version.h.
+Sat Feb 9 09:24:38 2013 Eric Hodel <drbrain@segment7.net>
- * {bcc,win}32/setup.mak (-version-): ditto.
+ * lib/rubygems/package/old.rb: Fix behavior only on ruby 1.8.
- * version.h (RUBY_LIB_VERSION): use API version numbers.
+ * lib/rubygems/package.rb: Include checksums.yaml.gz signatures for
+ verification.
+ * test/rubygems/test_gem_package.rb: Test for the above.
-Tue Aug 24 07:07:28 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Sat Feb 9 01:23:24 2013 Tanaka Akira <akr@fsij.org>
- * array.c (rb_ary_shuffle_bang, rb_ary_sample): add optional
- argument random. [ruby-dev:41923] [EXPERIMENTAL]
+ * test/fiddle/helper.rb: specify libc and libm locations for MirOS BSD.
- * random.c (rb_random_{int32,real,bytes}): fallback to normal
- method invocation.
+ * test/dl/test_base.rb: ditto.
-Tue Aug 24 06:08:10 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Fri Feb 8 23:25:33 2013 Tanaka Akira <akr@fsij.org>
- * include/ruby/version.h (RUBY_API_VERSION_*): renamed and moved
- from version.h. [ruby-dev:42103]
+ * configure.in: change CFLAGS temporally to test
+ ARCH_FLAG="-march=i486".
-Tue Aug 24 05:58:18 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Fri Feb 8 21:19:41 2013 Tanaka Akira <akr@fsij.org>
- * ChangeLog: flushed. [ruby-dev:42050]
+ * configure.in: don't define ARCH_FLAG="-march=i486" if it causes
+ compilation problem.
+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
diff --git a/GPL b/GPL
index 5b6e7c66c2..d159169d10 100644
--- a/GPL
+++ b/GPL
@@ -1,12 +1,12 @@
- GNU GENERAL PUBLIC LICENSE
- Version 2, June 1991
+ GNU GENERAL PUBLIC LICENSE
+ Version 2, June 1991
- Copyright (C) 1989, 1991 Free Software Foundation, Inc.
- 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ 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
+ Preamble
The licenses for most software are designed to take away your
freedom to share and change it. By contrast, the GNU General Public
@@ -15,7 +15,7 @@ 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 Library General Public License instead.) You can apply it to
+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
@@ -55,8 +55,8 @@ 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
+
+ GNU GENERAL PUBLIC LICENSE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
0. This License applies to any program or other work which contains
@@ -110,7 +110,7 @@ above, provided that you also meet all of these conditions:
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
@@ -168,7 +168,7 @@ 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
@@ -225,7 +225,7 @@ 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
@@ -255,7 +255,7 @@ 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
+ 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
@@ -277,9 +277,9 @@ 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
+ 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
@@ -303,10 +303,9 @@ the "copyright" line and a pointer to where the full notice is found.
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
-
+ 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.
@@ -336,5 +335,5 @@ necessary. Here is a sample; alter the names:
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 Library General
+library. If this is what you want to do, use the GNU Lesser General
Public License instead of this License.
diff --git a/Makefile.in b/Makefile.in
index df521cae94..98749dec61 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -1,9 +1,13 @@
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. ####
@@ -14,6 +18,7 @@ PLATFORM_DIR = @PLATFORM_DIR@
CC = @CC@
CPP = @CPP@
+LD = @LD@
YACC = bison
PURIFY =
AUTOCONF = autoconf
@@ -21,6 +26,7 @@ AUTOCONF = autoconf
MKFILES = @MAKEFILES@
BASERUBY = @BASERUBY@
TEST_RUNNABLE = @TEST_RUNNABLE@
+CROSS_COMPILING = @CROSS_COMPILING@
DOXYGEN = @DOXYGEN@
prefix = @prefix@
@@ -34,6 +40,7 @@ datadir = @datadir@
arch = @arch@
sitearch = @sitearch@
sitedir = @sitedir@
+archlibdir = @archlibdir@
ruby_version = @ruby_version@
TESTUI = console
@@ -46,6 +53,7 @@ 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@
@@ -53,36 +61,49 @@ CFLAGS = @CFLAGS@ $(ARCH_FLAG)
cflags = @cflags@
optflags = @optflags@
debugflags = @debugflags@
-warnflags = @warnflags@
+warnflags = @warnflags@ @strict_warnflags@
INCFLAGS = -I. -I$(arch_hdrdir) -I$(hdrdir) -I$(srcdir)
XCFLAGS = @XCFLAGS@
CPPFLAGS = @CPPFLAGS@ $(INCFLAGS)
LDFLAGS = @STATIC@ $(CFLAGS) @LDFLAGS@
-EXTLDFLAGS =
+EXTLDFLAGS = @EXTLDFLAGS@
XLDFLAGS = @XLDFLAGS@ $(EXTLDFLAGS)
-EXTLIBS =
+EXTLIBS =
LIBS = @LIBS@ $(EXTLIBS)
MISSING = @LIBOBJS@ @ALLOCA@
LDSHARED = @LIBRUBY_LDSHARED@
-DLDFLAGS = @LIBRUBY_DLDFLAGS@ $(EXTLDFLAGS) $(ARCH_FLAG)
+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 = @RUNRUBY@ $(RUNRUBYOPT) -- $(RUN_OPTS)
+# 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@
@@ -91,7 +112,7 @@ XRUBY_LIBDIR = @XRUBY_LIBDIR@
XRUBY_RUBYLIBDIR = @XRUBY_RUBYLIBDIR@
XRUBY_RUBYHDRDIR = @XRUBY_RUBYHDRDIR@
-DEFAULT_PRELUDES = $(@USE_RUBYGEMS@_GEM_PRELUDE)
+DEFAULT_PRELUDES = $(GEM_PRELUDE)
#### End of system configuration section. ####
@@ -106,6 +127,8 @@ 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@
@@ -134,6 +157,10 @@ 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
@@ -145,14 +172,25 @@ 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
@@ -163,12 +201,13 @@ all:
miniruby$(EXEEXT):
@-if test -f $@; then $(MV) -f $@ $@.old; $(RM) $@.old; fi
$(ECHO) linking $@
- $(Q) $(PURIFY) $(CC) $(LDFLAGS) $(XLDFLAGS) $(MAINLIBS) $(NORMALMAINOBJ) $(MINIOBJS) $(COMMONOBJS) $(DMYEXT) $(LIBS) $(OUTFLAG)$@
+ $(Q) $(PURIFY) $(CC) $(LDFLAGS) $(XLDFLAGS) $(NORMALMAINOBJ) $(MINIOBJS) $(COMMONOBJS) $(DMYEXT) $(DTRACE_OBJ) $(MAINLIBS) $(LIBS) $(OUTFLAG)$@
$(PROGRAM):
@$(RM) $@
$(ECHO) linking $@
- $(Q) $(PURIFY) $(CC) $(LDFLAGS) $(XLDFLAGS) $(MAINLIBS) $(MAINOBJ) $(EXTOBJS) $(LIBRUBYARG) $(LIBS) $(OUTFLAG)$@
+ $(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
@@ -176,19 +215,21 @@ $(PROGRAM):
$(LIBRUBY_A):
@$(RM) $@
$(ECHO) linking static-library $@
- $(Q) $(AR) $(ARFLAGS) $@ $(OBJS) $(DMYEXT)
+ $(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) $(SOLIBS) $(OUTFLAG)$@
+ $(Q) $(LDSHARED) $(DLDFLAGS) $(OBJS) $(DLDOBJS) $(DTRACE_OBJ) $(SOLIBS) $(EXTSOLIBS) $(OUTFLAG)$@
-$(Q) $(OBJCOPY) -w -L '$(SYMBOL_PREFIX)Init_*' -L '$(SYMBOL_PREFIX)*_threadptr_*' $@
- @-$(MINIRUBY) -e 'ARGV.each{|link| File.delete link if File.exist? link; \
+ $(Q) $(POSTLINK)
+ @-$(MINIRUBY) -e 'ARGV.each{|link| File.delete link rescue nil; \
File.symlink "$(LIBRUBY_SO)", link}' \
$(LIBRUBY_ALIASES) || true
-
-fake: $(arch)-fake.rb
$(arch)-fake.rb: config.status $(srcdir)/template/fake.rb.in
@./config.status --file=$@:$(srcdir)/template/fake.rb.in
@chmod +x $@
@@ -217,14 +258,16 @@ install-cross: $(arch)-fake.rb $(RBCONFIG) rbconfig.rb $(arch_hdrdir)/ruby/confi
Makefile: $(srcdir)/Makefile.in $(srcdir)/enc/Makefile.in
$(MKFILES): config.status
- MAKE=$(MAKE) $(SHELL) ./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 "Makefile updated, restart."; exit 1; }
+ { echo "$@ updated, restart."; exit 1; }
uncommon.mk: $(srcdir)/common.mk
sed 's/{\$$([^(){}]*)[^{}]*}//g' $< > $@
@@ -235,7 +278,8 @@ 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
+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))
@@ -243,6 +287,7 @@ $(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
@@ -276,7 +321,7 @@ enc/unicode/name2ctype.h: enc/unicode/name2ctype.kwd
trap '$(RM) $@-1.h $@-2.h' 0 && \
set -x; \
sed '/^#ifdef USE_UNICODE_PROPERTIES/,/^#endif/d' $? | gperf $(NAME2CTYPE_OPTIONS) > $@-1.h && \
- gperf $(NAME2CTYPE_OPTIONS) < $? > $@-2.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) && \
@@ -297,16 +342,47 @@ enc/unicode/name2ctype.h: enc/unicode/name2ctype.kwd
.c.i:
@$(ECHO) preprocessing $<
- $(Q) $(CPP) $(XCFLAGS) $(CPPFLAGS) $(COUTFLAG)$@ -E $< > $@
+ $(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
+ $(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
+ -$(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::
@@ -324,8 +400,10 @@ clean-ext 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:
@@ -351,9 +429,16 @@ 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 \
@@ -386,4 +471,9 @@ $(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) -Ks $(srcdir)/tool/insns2vm.rb $(INSNS2VMOPT) $@
+ $(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
index 30fec33fdd..ae44d7effb 100644
--- a/NEWS
+++ b/NEWS
@@ -1,5 +1,6 @@
-# -*- rd -*-
-= NEWS
+# -*- rdoc -*-
+
+= NEWS for Ruby 2.1.0
This document is a list of user visible feature changes made between
releases except for bug fixes.
@@ -8,334 +9,304 @@ 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.9.2 release
-=== License
+== Changes since the 2.0.0 release
-* Ruby's License is changed from a dual license with GPLv2
- to a dual license with 2-clause BSDL.
+=== Language changes
-=== Known platform dependent issues
-==== OS X Lion
+* 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.
-* You have to configure ruby with '--with-gcc=gcc-4.2' if you're using
- Xcode 4.1, or, if you're using Xcode 4.2, you have to configure ruby
- with '--with-gcc=clang'.
+* Mutex
+ * misc
+ * Mutex#owned? is no longer experimental.
-=== C API updates
+* 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.
-* rb_scan_args() is enhanced with support for option hash argument
- extraction.
-
-* ruby_vm_at_exit() added. This enables extension libs to hook a VM
- termination.
-
-* rb_reserved_fd_p() added. If you want to close all file descriptors,
- check using this API. [ruby-core:37759]
-
-=== Library updates (outstanding ones only)
-
-* builtin classes
-
- * ARGF
- * new methods:
- * ARGF.print
- * ARGF.printf
- * ARGF.putc
- * ARGF.puts
- * ARGF.read_nonblock
- * ARGF.to_write_io
- * ARGF.write
+* Symbol
+ * All symbols are now frozen.
- * Array
- * extended method:
- * Array#pack supports endian modifiers
+* pack/unpack (Array/String)
+ * Q! and q! directives for long long type if platform has the type.
- * Bignum
- * Multiplication algorithm for Bignums with a large number of digits over
- 150 BDIGITs is changed in order to reduce its calculation time.
- Now such large Bignums are multiplied by using Toom-3 algorithm.
+* 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.
- * Encoding
- * new encodings:
- * CP950
- * CP951
- * UTF-16
- * UTF-32
- * change alias:
- * SJIS is Windows-31J
+=== Core classes compatibility issues (excluding feature bug fixes)
- * File
- * new constant:
- * File::NULL
- name of NULL device.
- * File::DIRECT
- name of O_DIRECT.
+* IO
+ * incompatible changes:
+ * open ignore internal encoding if external encoding is ASCII-8BIT.
- * IO
- * extended method:
- * IO#putc supports multibyte characters
- * new methods:
- * IO#advise
- * IO.write(name, string, [offset] )
- Write `string` to file `name`.
- Opposite with File.read.
- * IO.binwrite(name, string, [offset] )
- binary version of IO.write.
+* 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
- * move #__id__ to BasicObject.
- * extended method:
- * Kernel#rand supports range argument
+* 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
- * new methods:
- * Module#private_constant
- * Module#public_constant
+* Module#ancestors
+ * The ancestors of a singleton class now include singleton classes,
+ in particular itself.
- * Random
- * extended method:
- * Random.rand supports range argument
+* Module#define_method and Object#define_singleton_method
+ * Now they return the symbols of the defined methods, not the methods/procs
+ themselves.
- * String
- * extended method:
- * String#unpack supports endian modifiers
- * new method:
- * String#prepend
- * String#byteslice
+* Numeric#quo
+ * Raises TypeError instead of ArgumentError if the receiver doesn't have
+ to_r method.
- * Time
- * extended method:
- * Time#strftime supports %:z and %::z.
-
- * Process
- * Process#maxgroups and Process#maxgroups= now raise NotImplementedError if
- the platform don't support supplementary groups concept.
-
-* bigdecimal
-
- * BigDecimal#power and BigDecimal#** support non-integral exponent.
-
- * Kernel.BigDecimal and BigDecimal.new now accept instances of Integer,
- Rational, Float, and BigDecimal. If you pass a Rational or a Float to
- them, you must specify the precision to produce the digits of a BigDecimal.
-
- * The behavior of BigDecimal#coerce with a Rational is changed. It uses
- the precision of the receiver BigDecimal to produce the digits of a
- BigDecimal from the given Rational.
-
-* bigdecimal/util
-
- * BigDecimal#to_d and Integer#to_d are added.
-
- * Float#to_d accepts a precision.
-
- * Rational#to_d raises ArgumentError when passing zero or negative
- precision.
-
- * Rational#to_d
-
- * Zero and an implicit precision is deprecated.
- This feature is removed at the next release of bigdecimal.
-
- * A negative precision isn't supported.
- Be careful it is an incompatible change.
-
-* date
-
- * Accepts flonum explicitly with limitations.
- * If the given offset is flonum, DateTime assumes its precision is
- at most second.
-
- DateTime.new(2001,2,3,0,0,0,3.0/24) ==
- DateTime.new(2001,2,3,0,0,0,'+03:00')
- #=> true
-
- * If the given operand for -/+ is flonum, DateTime assumes its
- precision is at most nanosecond.
-
- DateTime.new(2001,2,3) + 0.5 == DateTime.new(2001,2,3,12)
- #=> true
-
- * Precision of offset is always at most second.
-
- Rational('0.5') == Rational('0.500001') #=> false
- DateTime.new(2001,2,3,0,0,0,Rational('0.5')) ==
- DateTime.new(2001,2,3,0,0,0,Rational('0.500001'))
- #=> true
-
- * Ignores long offset and far reform day (with warning).
-
- * Now accepts only:
-
- -1<=offset<=1 (-24:00..+24:00)
- 2298874<=start<=2426355 or -/+oo
- (proleptic Gregorian/Julian mean -/+oo)
-
- * A method strftime cannot produce huge output (same as Time's one).
-
- * Even though Date/DateTime can handle far dates, the following causes
- an exception.
-
- DateTime.new(1<<10000).strftime('%Y') # Errno::ERANGE
-
- * Changed the format of inspect.
- * Changed the format of marshal (but, can load old dumps).
+* 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.
-* io/console
- * new methods:
- * IO#noecho {|io| }
- * IO#echo=
- * IO#echo?
- * IO#raw {|io| }
- * IO#raw!
- * IO#getch
- * IO#winsize
- * IO.console
+=== Stdlib updates (outstanding ones only)
-* json
- * updated to v1.5.4.
+* CGI::Util
+ * All class methods modulized.
-* matrix
- * new classes:
- * Matrix::EigenvalueDecomposition
- * Matrix::LUPDecomposition
- * new methods:
- * Matrix#diagonal?
- * Matrix#eigen
- * Matrix#eigensystem
- * Matrix#hermitian?
- * Matrix#lower_triangular?
- * Matrix#lup
- * Matrix#lup_decomposition
- * Matrix#normal?
- * Matrix#orthogonal?
- * Matrix#permutation?
- * Matrix#round
- * Matrix#symmetric?
- * Matrix#unitary?
- * Matrix#upper_triangular?
- * Matrix#zero?
- * Vector#magnitude, #norm
- * Vector#normalize
+* Digest
* extended methods:
- * Matrix#each and #each_with_index can iterate on a subset of the elements
- * Matrix#find_index returns [row, column] and can iterate on a subset
- of the elements
- * Matrix#** implements Numeric exponents (using the eigensystem)
- * Matrix.zero can build rectangular matrices
-
-* minitest
- * Minitest has been updated to version 2.2.2.
- * For full details, see https://github.com/seattlerb/minitest/blob/master/History.txt
-
-* net/http
- * SNI (Server Name Indication) supported for HTTPS.
-
- * Allow to configure to wait server returning '100 continue' response
- before sending HTTP request body. Set Net::HTTP#continue_timeout AND pass
- 'expect' => '100-continue' to a extra HTTP header.
-
- For example, the following code sends HTTP header and waits for getting
- '100 continue' response before sending HTTP request body. When 0.5 [sec]
- timeout occurs or the server send '100 continue', the client sends HTTP
- request body.
- http.continue_timeout = 0.5
- http.request_post('/continue', 'body=BODY', 'expect' => '100-continue')
+ * Digest::Class.file takes optional arguments for its constructor
- * new method:
- * Net::HTTPRequest#set_form): Added to support
- both application/x-www-form-urlencoded and multipart/form-data.
+* Matrix
+ * Added Vector#cross_product.
+
+* Net::SMTP
+ * Added Net::SMTP#rset to implement the RSET command
* objspace
* new method:
- * ObjectSpace::memsize_of_all
-
-* openssl
- * PKey::RSA and PKey::DSA now use the generic X.509 encoding scheme
- (e.g. used in a X.509 certificate's Subject Public Key Info) when
- exporting public keys to DER or PEM. Backward compatibility is
- ensured by (already existing) fallbacks during creation.
- * OpenSSL::ASN1::Constructive#new and OpenSSL::ASN1::Primitive#new
- (and the constructors of their sub-classes) will no longer force
- tagging to be set to :EXPLICIT when tag and/or tag_class are passed
- as parameters. tagging must be set explicitly.
- * Support for infinite length encodings via infinite_length attribute.
- * OpenSSL::PKey.read( file | string [, pwd] ) allows to read arbitrary
- public/private keys in DER-/PEM-encoded form with an optional password
- for encrypted PEM encodings.
- * Add new method OpenSSL::X509::Name#hash_old as a wrapper of
- X509_NAME_hash_old() defined from OpenSSL 1.0.0. It returns OpenSSL 0.9.8
- compatible hash value.
-
-* optparse
- * support for bash/zsh completion.
-
-* Rake
- * Rake has been upgraded from 0.8.7 to 0.9.2.2. For full release notes see
- https://github.com/jimweirich/rake/blob/master/CHANGES
+ * 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.
-* RDoc
- * RDoc has been upgraded to version 3.9.4. For full release notes see
- http://docs.seattlerb.org/rdoc/History_txt.html
+* open-uri
+ * Support multiple fields with same field name (like Set-Cookie).
-* rexml
- * Support Ruby native encoding mechanism and iconv dependency is dropped.
+* Pathname
+ * New methods:
+ * Pathname#write
+ * Pathname#binwrite
-* RubyGems
- * RubyGems has been upgraded to version 1.8.10. For full release notes see
- http://rubygems.rubyforge.org/rubygems-update/History_txt.html
-
-* stringio
- * extended method:
- * StringIO#set_encoding can get 2nd argument and optional hash.
-
-* test/unit
- * New arguments:
- * -j N, --jobs=N: Allow run N testcases at once.
- * --jobs-status: Show status of jobs when parallel running.
- * --no-retry: Don't retry testcases which failed when parallel running.
- * --ruby=RUBY: path to ruby for job(worker) process. optional.
- * --hide-skip: Hide skip messages. You'll see the number of skips at end of
- test result.
-
-* uri
- * new methods:
- * URI::Generic#hostname
- * URI::Generic#hostname=
-
-* webrick
- * new method:
- * WEBrick::HTTPRequest#continue for generating '100 continue' response.
- * new logging directive:
- * %{remote}p for remote (client) port number.
+* 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.
-* yaml
- * The default YAML engine is now Psych. You may downgrade to syck by setting
- YAML::ENGINE.yamler = 'syck'.
+ For a complete list of changes since rake 0.9.6 see:
-* zlib
- * new methods:
- * Zlib.deflate
- * Zlib.inflate
+ http://rake.rubyforge.org/doc/release_notes/rake-10_1_0_rdoc.html
-* FileUtils
- * extended method:
- * FileUtils#chmod supports symbolic mode argument.
+ http://rake.rubyforge.org/doc/release_notes/rake-10_0_3_rdoc.html
-=== Language changes
+* 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
-* Regexps now support Unicode 6.0. (new characters and scripts)
+* 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.
-* [experimental] Regexps now support Age property.
- Unlike Perl, current implementation takes interpretation of the
- interpretation of UTS #18.
- http://www.unicode.org/reports/tr18/
+* REXML::Parsers::StreamParser
+ * Supports "entity" event.
-* Turning on/off indentation warnings with directives.
- ("# -*- warn-indent: true -*-" / "# -*- warn-indent: false -*-")
+* REXML::Text
+ * REXML::Text#<< supports method chain like 'text << "XXX" << "YYY"'.
+ * REXML::Text#<< supports not "raw" mode.
-=== Compatibility issues (excluding feature bug fixes)
+* Rinda::RingServer, Rinda::RingFinger
+ * Rinda now supports multicast sockets. See Rinda::RingServer and
+ Rinda::RingFinger for details.
- * Rational#to_d
+* 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
- See above.
+* 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 3d2e636e4d..3ffe3553a8 100644
--- a/README
+++ b/README
@@ -1,4 +1,4 @@
-* What's Ruby
+= What's Ruby
Ruby is the interpreted scripting language for quick and
easy object-oriented programming. It has many features to
@@ -6,113 +6,130 @@ process text files and to do system management tasks (as in
Perl). It is simple, straight-forward, and extensible.
-* Features of Ruby
+== 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-like/POSIX compatible platforms
+* 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://redmine.ruby-lang.org/wiki/ruby-19/SupportedPlatforms
+ cf. http://bugs.ruby-lang.org/projects/ruby-trunk/wiki/SupportedPlatforms
-* How to get Ruby
+== How to get Ruby
+
+For a complete list of ways to install Ruby, including using third party
+tools like rvm, see:
+
+http://www.ruby-lang.org/en/downloads/
The Ruby distribution files can be found in the following FTP site:
- ftp://ftp.ruby-lang.org/pub/ruby/
+ftp://ftp.ruby-lang.org/pub/ruby/
The trunk of the Ruby source tree can be checked out with the
following command:
$ svn co http://svn.ruby-lang.org/repos/ruby/trunk/ ruby
+Or if you are using git then use the following command:
+
+ $ git clone git://github.com/ruby/ruby.git
+
There are some other branches under development. Try the following
command and see the list of branches:
$ svn ls http://svn.ruby-lang.org/repos/ruby/branches/
+Or if you are using git then use the following command:
+
+ $ git ls-remote git://github.com/ruby/ruby.git
-* Ruby home-page
+== Ruby home-page
The URL of the Ruby home-page is:
- http://www.ruby-lang.org/
+http://www.ruby-lang.org/
-* Mailing list
+== Mailing list
There is a mailing list to talk about Ruby.
To subscribe this list, please send the following phrase
- subscribe YourFirstName YourFamilyName
+ subscribe YourFirstName YourFamilyName
e.g.
subscribe Joseph Smith
-in the mail body (not subject) to the address <ruby-talk-ctl@ruby-lang.org>.
+in the mail body (not subject) to the address <mailto:ruby-talk-ctl@ruby-lang.org>.
-* How to compile and install
+== How to compile and install
This is what you need to do to compile and install Ruby:
- 1. If ./configure does not exist or is older than configure.in,
+0. If you want to use Microsoft Visual C++ to compile ruby,
+ read win32/README.win32 instead of this document.
+
+1. If +./configure+ does not exist or is older than configure.in,
run autoconf to (re)generate configure.
- 2. Run ./configure, which will generate config.h and Makefile.
+2. Run +./configure+, which will generate config.h and Makefile.
Some C compiler flags may be added by default depending on your
- environment. Specify optflags=.. and warnflags=.. as necessary
- to override them.
+ environment. Specify <tt>optflags=..</tt> and <tt>warnflags=..</tt> as
+ necessary to override them.
- 3. Edit defines.h if you need. Usually this step will not be needed.
+3. Edit +defines.h+ if you need. Usually this step will not be needed.
- 4. Remove comment mark(#) before the module names from ext/Setup (or
- add module names if not present), if you want to link modules
+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 "#option nodynamic" in
- ext/Setup.
+ remove comment mark from the line "<tt>#option nodynamic</tt>" in
+ +ext/Setup+.
+
+ Usually this step will not be needed.
- 5. Run make.
+5. Run +make+.
- 6. Optionally, run 'make test' to check whether the compiled Ruby
- interpreter works well. If you see the message "test succeeded",
+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 'make install'
+7. Run '<tt>make install</tt>'
This command will create following directories and install files
onto them.
- * ${DESTDIR}${prefix}/bin
- * ${DESTDIR}${prefix}/include/ruby-${MAJOR}.${MINOR}.${TEENY}
- * ${DESTDIR}${prefix}/include/ruby-${MAJOR}.${MINOR}.${TEENY}/${PLATFORM}
- * ${DESTDIR}${prefix}/lib
- * ${DESTDIR}${prefix}/lib/ruby
- * ${DESTDIR}${prefix}/lib/ruby/${MAJOR}.${MINOR}.${TEENY}
- * ${DESTDIR}${prefix}/lib/ruby/${MAJOR}.${MINOR}.${TEENY}/${PLATFORM}
- * ${DESTDIR}${prefix}/lib/ruby/site_ruby
- * ${DESTDIR}${prefix}/lib/ruby/site_ruby/${MAJOR}.${MINOR}.${TEENY}
- * ${DESTDIR}${prefix}/lib/ruby/site_ruby/${MAJOR}.${MINOR}.${TEENY}/${PLATFORM}
- * ${DESTDIR}${prefix}/lib/ruby/vendor_ruby
- * ${DESTDIR}${prefix}/lib/ruby/vendor_ruby/${MAJOR}.${MINOR}.${TEENY}
- * ${DESTDIR}${prefix}/lib/ruby/vendor_ruby/${MAJOR}.${MINOR}.${TEENY}/${PLATFORM}
- * ${DESTDIR}${prefix}/lib/ruby/gems/${MAJOR}.${MINOR}.${TEENY}
- * ${DESTDIR}${prefix}/share/man/man1
- * ${DESTDIR}${prefix}/share/ri/${MAJOR}.${MINOR}.${TEENY}/system
-
- If Ruby's API version is `x.y.z', the ((|${MAJOR}|)) is `x', the
- ((|${MINOR}|)) is `y', and the ((|${TEENY}|)) is `z'.
-
- NOTE: teeny of the API version may be different from one of
+ * <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.
@@ -120,21 +137,30 @@ This is what you need to do to compile and 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.
+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.
+
+== Copying
+
+See the file +COPYING+.
-* Copying
+== Feedback
-See the file COPYING.
+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).
+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.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 de63f54699..b7a1728110 100644
--- a/README.EXT
+++ b/README.EXT
@@ -1,8 +1,8 @@
-.\" 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 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 a static type, and data themselves have
@@ -13,47 +13,46 @@ 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
+1. Identify the VALUE's data type
+2. Convert the VALUE into C data
Converting to the wrong data type may cause serious problems.
-
-1.1 Data-types
+== 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
+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
- T_MATCH
- T_UNDEF
- T_NODE
- T_ZOMBIE
+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 the data type of the VALUE.
TYPE() returns the constant number T_XXXX described above. To handle
@@ -87,7 +86,7 @@ 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.
@@ -126,30 +125,33 @@ 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".
+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)'. For arrays,
-use `RARRAY_LEN(ary)' and `RARRAY_PTR(ary)' respectively.
+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.
-1.4 Convert C data into VALUE
+== Convert C Data into VALUE
To convert C data to Ruby values:
- * FIXNUM
+FIXNUM ::
- left shift 1 bit, and turn on LSB.
+ left shift 1 bit, and turn on LSB.
- * Other pointer values
+Other pointer values::
- cast to VALUE.
+ cast to VALUE.
-You can determine whether a VALUE is pointer or not by checking its LSB.
+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
@@ -157,146 +159,161 @@ structures are defined in <ruby.h>.
To convert C numbers to Ruby values, use these macros.
- INT2FIX() for integers within 31bits.
- INT2NUM() for arbitrary sized integer.
+INT2FIX() :: for integers within 31bits.
+INT2NUM() :: for arbitrary sized integer.
INT2NUM() converts an integer into a Bignum if it is out of the FIXNUM
range, but is a bit slower.
-1.5 Manipulating Ruby data
+== Manipulating Ruby Data
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:
- String functions
+=== String Functions
+
+rb_str_new(const char *ptr, long len) ::
+
+ Creates a new Ruby string.
+
+rb_str_new2(const char *ptr) ::
+rb_str_new_cstr(const char *ptr) ::
- rb_str_new(const char *ptr, long len)
+ Creates a new Ruby string from a C string. This is equivalent to
+ rb_str_new(ptr, strlen(ptr)).
- Creates a new Ruby string.
+rb_tainted_str_new(const char *ptr, long len) ::
- rb_str_new2(const char *ptr)
- rb_str_new_cstr(const char *ptr)
+ Creates a new tainted Ruby string. Strings from external data
+ sources should be tainted.
- Creates a new Ruby string from a C string. This is equivalent to
- rb_str_new(ptr, strlen(ptr)).
+rb_tainted_str_new2(const char *ptr) ::
+rb_tainted_str_new_cstr(const char *ptr) ::
- rb_tainted_str_new(const char *ptr, long len)
+ Creates a new tainted Ruby string from a C string.
- Creates a new tainted Ruby string. Strings from external data
- sources should be tainted.
+rb_sprintf(const char *format, ...) ::
+rb_vsprintf(const char *format, va_list ap) ::
- rb_tainted_str_new2(const char *ptr)
- rb_tainted_str_new_cstr(const char *ptr)
+ Creates a new Ruby string with printf(3) format.
- Creates a new tainted Ruby string from a C string.
+ 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.
- rb_sprintf(const char *format, ...)
- rb_vsprintf(const char *format, va_list ap)
+rb_str_cat(VALUE str, const char *ptr, long len) ::
- Creates a new Ruby string with printf(3) format.
+ Appends len bytes of data from ptr to the Ruby string.
- rb_str_cat(VALUE str, const char *ptr, long len)
+rb_str_cat2(VALUE str, const char* ptr) ::
- Appends len bytes of data from ptr to the Ruby string.
+ Appends C string ptr to Ruby string str. This function is
+ equivalent to rb_str_cat(str, ptr, strlen(ptr)).
- rb_str_cat2(VALUE str, const char* ptr)
+rb_str_catf(VALUE str, const char* format, ...) ::
+rb_str_vcatf(VALUE str, const char* format, va_list ap) ::
- Appends C string ptr to Ruby string str. This function is
- equivalent to rb_str_cat(str, ptr, strlen(ptr)).
+ 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.
- rb_str_catf(VALUE str, const char* format, ...)
- rb_str_vcatf(VALUE str, const char* format, va_list ap)
+rb_enc_str_new(const char *ptr, long len, rb_encoding *enc) ::
+rb_enc_str_new_cstr(const char *ptr, rb_encoding *enc) ::
- 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 with the specified encoding.
- rb_enc_str_new(const char *ptr, long len, rb_encoding *enc)
-
- Creates a new Ruby string with the specified encoding.
-
- rb_usascii_str_new(const char *ptr, long len)
- rb_usascii_str_new_cstr(const char *ptr)
+rb_usascii_str_new(const char *ptr, long len) ::
+rb_usascii_str_new_cstr(const char *ptr) ::
- Creates a new Ruby string with encoding US-ASCII.
+ Creates a new Ruby string with encoding US-ASCII.
- rb_str_resize(VALUE str, long len)
+rb_str_resize(VALUE str, long len) ::
- 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.
+ 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.
- rb_str_set_len(VALUE str, long len)
+rb_str_set_len(VALUE str, long len) ::
- 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.
+ 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.
- Array functions
+=== Array Functions
- rb_ary_new()
+rb_ary_new() ::
- Creates an array with no elements.
+ Creates an array with no elements.
- rb_ary_new2(long len)
+rb_ary_new2(long len) ::
+rb_ary_new_capa(long len) ::
- Creates an array with no elements, allocating internal buffer
- for len elements.
+ Creates an array with no elements, allocating internal buffer
+ for len elements.
- rb_ary_new3(long n, ...)
+rb_ary_new3(long n, ...) ::
+rb_ary_new_from_args(long n, ...) ::
- Creates an n-element array from the arguments.
+ Creates an n-element array from the arguments.
- rb_ary_new4(long n, VALUE *elts)
+rb_ary_new4(long n, VALUE *elts) ::
+rb_ary_new_from_values(long n, VALUE *elts) ::
- Creates an n-element array from a C array.
+ Creates an n-element array from a C array.
- rb_ary_to_ary(VALUE obj)
+rb_ary_to_ary(VALUE obj) ::
- Converts the object into an array.
- Equivalent to Object#to_ary.
+ Converts the object into an array.
+ Equivalent to Object#to_ary.
- There are many functions to operate an array.
- They may dump core if other types are given.
+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)
+rb_ary_aref(argc, VALUE *argv, VALUE ary) ::
- Equivaelent to Array#[].
+ Equivalent to Array#[].
- rb_ary_entry(VALUE ary, long offset)
+rb_ary_entry(VALUE ary, long offset) ::
- ary[offset]
+ ary[offset]
- rb_ary_subseq(VALUE ary, long beg, long len)
+rb_ary_store(VALUE ary, long offset, VALUE obj) ::
- ary[beg, len]
+ ary[offset] = obj
- 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_subseq(VALUE ary, long beg, long len) ::
+ ary[beg, len]
-2. Extending Ruby with C
+rb_ary_push(VALUE ary, VALUE val) ::
+rb_ary_pop(VALUE ary) ::
+rb_ary_shift(VALUE ary) ::
+rb_ary_unshift(VALUE ary, VALUE val) ::
-2.1 Adding new features to Ruby
+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
+* Classes, Modules
+* Methods, Singleton Methods
+* Constants
-2.1.1 Class/module definition
+=== Class and Module Definition
To define a class or module, use the functions below:
@@ -311,21 +328,21 @@ 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)
-2.1.2 Method/singleton method definition
+=== Method and Singleton Method Definition
To define methods or singleton methods, use these functions:
- void rb_define_method(VALUE klass, 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,
+ 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.
If `argc' is negative, it specifies the calling sequence, not number of
-the arguments.
+the arguments.
If argc is -1, the function will be called as:
@@ -343,16 +360,16 @@ where obj is the receiver, and args is the Ruby array containing
actual arguments.
There are some more functions to define methods. One takes an ID
-as the name of method to be defined. See 2.2.2 for IDs.
+as the name of method to be defined. See also ID or Symbol below.
- void rb_define_method_id(VALUE klass, ID name,
+ 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,
+ void rb_define_private_method(VALUE klass, const char *name,
VALUE (*func)(), int argc)
- void rb_define_protected_method(VALUE klass, const char *name,
+ void rb_define_protected_method(VALUE klass, const char *name,
VALUE (*func)(), int argc)
At last, rb_define_module_function defines a module functions,
@@ -369,7 +386,7 @@ or
To define module functions, use:
- void rb_define_module_function(VALUE module, const char *name,
+ void rb_define_module_function(VALUE module, const char *name,
VALUE (*func)(), int argc)
In addition, function-like methods, which are private methods defined
@@ -394,7 +411,7 @@ 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.
-2.1.3 Constant definition
+=== Constant Definition
We have 2 functions to define constants:
@@ -404,11 +421,11 @@ We have 2 functions to define constants:
The former is to define a constant under specified class/module. The
latter is to define a global constant.
-2.2 Use Ruby features from C
+== Use Ruby Features from C
There are several ways to invoke Ruby's features from C code.
-2.2.1 Evaluate Ruby Programs in a String
+=== Evaluate Ruby Programs in a String
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:
@@ -418,7 +435,7 @@ evaluate the string as Ruby program. This function will do the job:
Evaluation is done under the current context, thus current local variables
of the innermost method (which is defined by Ruby) can be accessed.
-Note that the evaluation can raise an exception. There is a safer
+Note that the evaluation can raise an exception. There is a safer
function:
VALUE rb_eval_string_protect(const char *str, int *state)
@@ -426,8 +443,7 @@ function:
It returns nil when an error occur. Moreover, *state is zero if str was
successfully evaluated, or nonzero otherwise.
-
-2.2.2 ID or Symbol
+=== ID or Symbol
You can invoke methods directly, without parsing the string. First I
need to explain about ID. ID is the integer number to represent
@@ -435,18 +451,30 @@ 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:
- :Identifier
+ :Identifier
+
or
- :"any kind of string"
+
+ :"any kind of string"
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
@@ -456,7 +484,7 @@ and to convert Ruby Symbol object to ID, use
ID SYM2ID(VALUE symbol)
-2.2.3 Invoke Ruby method from C
+=== Invoke Ruby Method from C
To invoke methods directly, you can use the function below
@@ -465,7 +493,7 @@ To invoke methods directly, you can use the function below
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
+=== Accessing the Variables and Constants
You can access class variables and instance variables using access
functions. Also, global variables can be shared between both
@@ -482,11 +510,11 @@ To access the constants of the class/module:
VALUE rb_const_get(VALUE obj, ID id)
-See 2.1.3 for defining new constant.
+See also Constant Definition above.
-3. Information sharing between Ruby and C
+= Information Sharing Between Ruby and C
-3.1 Ruby constants that C can be accessed from C
+=== Ruby Constants That C Can Be Accessed From C
As stated in section 1.3,
the following Ruby constants can be referred from C.
@@ -500,7 +528,7 @@ Boolean values. Qfalse is false in C also (i.e. 0).
Ruby nil in C scope.
-3.2 Global variables shared between C and Ruby
+== Global Variables Shared Between C and Ruby
Information can be shared between the two environments using shared global
variables. To define them, you can use functions listed below:
@@ -544,12 +572,12 @@ The prototypes of the getter and setter functions are as follows:
void (*setter)(VALUE val, ID id);
-3.3 Encapsulate C data into a Ruby object
+== Encapsulate C Data into a Ruby Object
To wrap and objectify a C pointer as a Ruby object (so called
DATA), use Data_Wrap_Struct().
- Data_Wrap_Struct(klass, mark, free, ptr)
+ Data_Wrap_Struct(klass, mark, free, sval)
Data_Wrap_Struct() returns a created DATA object. The klass argument
is the class for the DATA object. The mark argument is the function
@@ -582,25 +610,25 @@ Data_Get_Struct().
A pointer to the structure will be assigned to the variable sval.
-See the example below for details.
+See the example below for details.
-4. Example - Creating dbm extension
+= Example - Creating dbm Extension
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
Make a directory for the extension library under ext directory.
-(2) design the library
+== Design the Library
You need to design the library features, before making it.
-(3) write C code.
+== 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
@@ -617,41 +645,37 @@ 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.
+ 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);
+
+ /* ... */
---
-struct dbmdata {
- int di_size;
- DBM *di_dbm;
-};
+ /* 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);
---
+ obj = Data_Make_Struct(klass, struct dbmdata, 0, free_dbm, dbmp);
This code wraps the dbmdata structure into a Ruby object. We avoid
wrapping DBM* directly, because we want to cache size information.
@@ -659,12 +683,10 @@ wrapping DBM* directly, because we want to cache size information.
To retrieve the dbmdata structure from a Ruby object, we define the
following macro:
---
-#define GetDBM(obj, dbmp) {\
- Data_Get_Struct(obj, struct dbmdata, dbmp);\
- if (dbmp->di_dbm == 0) closed_dbm();\
-}
---
+ #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.
@@ -672,13 +694,11 @@ 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)
-{
- :
-}
---
+ 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.
@@ -686,17 +706,15 @@ 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 */
- }
- :
-}
---
+ 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
@@ -711,25 +729,21 @@ references.
The following is an example of a method that takes arguments by Ruby's
array:
---
-static VALUE
-thread_initialize(VALUE thread, VALUE args)
-{
- :
-}
---
+ static VALUE
+ thread_initialize(VALUE thread, VALUE args)
+ {
+ /* ... */
+ }
The first argument is the receiver, the second one is the Ruby array
which contains the arguments to the method.
-** 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
+*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)
-(4) prepare extconf.rb
+== Prepare extconf.rb
If the file named extconf.rb exists, it will be executed to generate
Makefile.
@@ -742,10 +756,26 @@ need to put
at the top of the file. You can use the functions below to check
various conditions.
- have_library(lib, func): check whether library containing function exists.
- have_func(func, header): check whether function exists
- have_header(header): check whether header file exists
- create_makefile(target): generate Makefile
+ 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
+
+See MakeMakefile for full documentation of these functions.
The value of the variables below will affect the Makefile.
@@ -762,7 +792,7 @@ If a compilation condition is not fulfilled, you should not call
``create_makefile''. The Makefile will not be generated, compilation will
not be done.
-(5) prepare depend (optional)
+== Prepare Depend (Optional)
If the file named depend exists, Makefile will include that file to
check dependencies. You can make this file by invoking
@@ -771,7 +801,7 @@ check dependencies. You can make this file by invoking
It's harmless. Prepare it.
-(6) generate Makefile
+== Generate Makefile
Try generating the Makefile by:
@@ -786,7 +816,7 @@ 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.
-(7) make
+== Run make
Type
@@ -795,36 +825,38 @@ Type
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.
-(8) debug
+== 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.
-(9) done, now you have the extension library
+== 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
+= Appendix A. Ruby Source Files Overview
-ruby language core
+== 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
+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
- -> parse.c : automatically generated
- keywords : reserved keywords
- -> lex.c : automatically generated
+== 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)
-ruby evaluator (a.k.a. YARV)
compile.c
eval.c
eval_error.c
@@ -832,7 +864,7 @@ ruby evaluator (a.k.a. YARV)
eval_safe.c
insns.def : definition of VM instructions
iseq.c : implementation of VM::ISeq
- thread.c : thread management and context swiching
+ thread.c : thread management and context switching
thread_win32.c : thread implementation
thread_pthread.c : ditto
vm.c
@@ -849,7 +881,8 @@ ruby evaluator (a.k.a. YARV)
-> opt*.inc : automatically generated
-> vm.inc : automatically generated
-regular expression engine (oniguruma)
+== Regular Expression Engine (Oniguruma)
+
regex.c
regcomp.c
regenc.c
@@ -858,18 +891,18 @@ regular expression engine (oniguruma)
regparse.c
regsyntax.c
-utility functions
+== Utility Functions
- debug.c : debug symbols for C debuggger
- dln.c : dynamic loading
- st.c : general purpose hash table
- strftime.c : formatting times
- util.c : misc utilities
+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
+== Ruby Interpreter Implementation
dmyext.c
- dmydln.c
+ dmydln.c
dmyencoding.c
id.c
inits.c
@@ -880,587 +913,584 @@ ruby interpreter implementation
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
-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.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
+= Appendix B. Ruby Extension API Reference
-** Types
+== Types
- VALUE
+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).
+ 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
+== Variables and Constants
- Qnil
+Qnil::
+ nil object
-const: nil object
+Qtrue::
+ true object (default true value)
- Qtrue
+Qfalse::
+ false object
-const: true object(default true value)
+== C Pointer Wrapping
- Qfalse
+Data_Wrap_Struct(VALUE klass, void (*mark)(), void (*free)(), void *sval) ::
-const: false object
+ 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.
-** C pointer wrapping
+Data_Make_Struct(klass, type, mark, free, sval) ::
- Data_Wrap_Struct(VALUE klass, void (*mark)(), void (*free)(), void *sval)
+ This macro allocates memory using malloc(), assigns it to the variable
+ sval, and returns the DATA encapsulating the pointer to memory region.
-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_Get_Struct(data, type, sval) ::
- Data_Make_Struct(klass, type, mark, free, sval)
+ This macro retrieves the pointer value from DATA, and assigns it to
+ the variable sval.
-This macro allocates memory using malloc(), assigns it to the variable
-sval, and returns the DATA encapsulating the pointer to memory region.
+== Checking Data Types
- Data_Get_Struct(data, type, sval)
+TYPE(value) ::
-This macro retrieves the pointer value from DATA, and assigns it to
-the variable sval.
+ Internal type (T_NIL, T_FIXNUM, etc.)
-** Checking data types
+FIXNUM_P(value) ::
-TYPE(value)
-FIXNUM_P(value)
-NIL_P(value)
-void Check_Type(VALUE value, int type)
-void Check_SafeStr(VALUE value)
+ Is +value+ a Fixnum?
-** Data type conversion
+NIL_P(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)
-NUM2DBL(value)
-rb_float_new(f)
-StringValue(value)
-StringValuePtr(value)
-StringValueCStr(value)
-rb_str_new2(s)
+ Is +value+ nil?
-** defining class/module
+void Check_Type(VALUE value, int type) ::
- VALUE rb_define_class(const char *name, VALUE super)
+ Ensures +value+ is of the given internal +type+ or raises a TypeError
-Defines a new Ruby class as a subclass of super.
+SaveStringValue(value) ::
- VALUE rb_define_class_under(VALUE module, const char *name, VALUE super)
+ Checks that +value+ is a String and is not tainted
-Creates a new Ruby class as a subclass of super, under the module's
-namespace.
+== Data Type Conversion
- VALUE rb_define_module(const char *name)
+FIX2INT(value), INT2FIX(i) ::
-Defines a new Ruby module.
+ Fixnum <-> integer
- VALUE rb_define_module_under(VALUE module, const char *name)
+FIX2LONG(value), LONG2FIX(l) ::
-Defines a new Ruby module under the module's namespace.
+ Fixnum <-> long
- void rb_include_module(VALUE klass, VALUE module)
+NUM2INT(value), INT2NUM(i) ::
-Includes module into class. If class already includes it, just
-ignored.
+ Numeric <-> integer
- void rb_extend_object(VALUE object, VALUE module)
+NUM2UINT(value), UINT2NUM(ui) ::
-Extend the object with the module's attributes.
+ Numeric <-> unsigned integer
-** Defining Global Variables
+NUM2LONG(value), LONG2NUM(l) ::
- void rb_define_variable(const char *name, VALUE *var)
+ Numeric <-> long
-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.
+NUM2ULONG(value), ULONG2NUM(ul) ::
- void rb_define_readonly_variable(const char *name, VALUE *var)
+ Numeric <-> unsigned long
-Defines a read-only global variable. Works just like
-rb_define_variable(), except the defined variable is read-only.
+NUM2LL(value), LL2NUM(ll) ::
- void rb_define_virtual_variable(const char *name,
- VALUE (*getter)(), VALUE (*setter)())
+ Numeric <-> long long
-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:
+NUM2ULL(value), ULL2NUM(ull) ::
- VALUE getter(ID id)
- void setter(VALUE val, ID id)
+ Numeric <-> unsigned long long
-The getter function must return the value for the access.
+NUM2OFFT(value), OFFT2NUM(off) ::
- void rb_define_hooked_variable(const char *name, VALUE *var,
- VALUE (*getter)(), VALUE (*setter)())
+ Numeric <-> off_t
-Defines hooked variable. It's a virtual variable with a C variable.
-The getter is called as
+NUM2SIZET(value), SIZET2NUM(size) ::
- VALUE getter(ID id, VALUE *var)
+ Numeric <-> size_t
-returning a new value. The setter is called as
+NUM2SSIZET(value), SSIZET2NUM(ssize) ::
- void setter(VALUE val, ID id, VALUE *var)
+ Numeric <-> ssize_t
-GC requires C global variables which hold Ruby values to be marked.
+rb_integer_pack(value, words, numwords, wordsize, nails, flags), rb_integer_unpack(words, numwords, wordsize, nails, flags) ::
- void rb_global_variable(VALUE *var)
+ Numeric <-> Arbitrary size integer buffer
-Tells GC to protect these variables.
+NUM2DBL(value) ::
-** Constant Definition
+ Numeric -> double
- void rb_define_const(VALUE klass, const char *name, VALUE val)
+rb_float_new(f) ::
-Defines a new constant under the class/module.
+ double -> Float
- void rb_define_global_const(const char *name, VALUE val)
+StringValue(value) ::
-Defines a global constant. This is just the same as
+ Object with #to_str -> String
- rb_define_const(cKernal, name, val)
+StringValuePtr(value) ::
-** Method Definition
+ Object with #to_str -> pointer to String data
- rb_define_method(VALUE klass, const char *name, VALUE (*func)(), int argc)
+StringValueCStr(value) ::
-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.
+ Object with #to_str -> pointer to String data without NULL bytes
- rb_define_private_method(VALUE klass, const char *name, VALUE (*func)(), int argc)
+rb_str_new2(s) ::
-Defines a private method for the class. Arguments are same as
-rb_define_method().
+ char * -> String
- rb_define_singleton_method(VALUE klass, const char *name, VALUE (*func)(), int argc)
+== Defining Class and Module
-Defines a singleton method. Arguments are same as rb_define_method().
+VALUE rb_define_class(const char *name, VALUE super) ::
- rb_scan_args(int argc, VALUE *argv, const char *fmt, ...)
+ Defines a new Ruby class as a subclass of super.
-Retrieve argument from argc and argv to given VALUE references
-according to the format string. The format can be described in ABNF
-as follows:
+VALUE rb_define_class_under(VALUE module, const char *name, VALUE super) ::
---
-scan-arg-spec := param-arg-spec [option-hash-arg-spec] [block-arg-spec]
+ Creates a new Ruby class as a subclass of super, under the module's
+ namespace.
-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
+VALUE rb_define_module(const char *name) ::
-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
---
+ Defines a new Ruby module.
-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.
+VALUE rb_define_module_under(VALUE module, const char *name) ::
-The number of given arguments, excluding an option hash or iterator
-block, is returned.
+ Defines a new Ruby module under the module's namespace.
-** Invoking Ruby method
+void rb_include_module(VALUE klass, VALUE module) ::
- VALUE rb_funcall(VALUE recv, ID mid, int narg, ...)
+ Includes module into class. If class already includes it, just ignored.
-Invokes a method. To retrieve mid from a method name, use rb_intern().
+void rb_extend_object(VALUE object, VALUE module) ::
- VALUE rb_funcall2(VALUE recv, ID mid, int argc, VALUE *argv)
+ Extend the object with the module's attributes.
-Invokes a method, passing arguments by an array of values.
+== Defining Global Variables
- VALUE rb_eval_string(const char *str)
+void rb_define_variable(const char *name, VALUE *var) ::
-Compiles and executes the string as a Ruby program.
+ 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.
- ID rb_intern(const char *name)
+void rb_define_readonly_variable(const char *name, VALUE *var) ::
-Returns ID corresponding to the name.
+ Defines a read-only global variable. Works just like
+ rb_define_variable(), except the defined variable is read-only.
- char *rb_id2name(ID id)
+void rb_define_virtual_variable(const char *name, VALUE (*getter)(), VALUE (*setter)()) ::
-Returns the name corresponding ID.
+ 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:
- char *rb_class2name(VALUE klass)
+ VALUE getter(ID id)
+ void setter(VALUE val, ID id)
-Returns the name of the class.
+ The getter function must return the value for the access.
- int rb_respond_to(VALUE object, ID id)
+void rb_define_hooked_variable(const char *name, VALUE *var, VALUE (*getter)(), VALUE (*setter)()) ::
-Returns true if the object responds to the message specified by id.
+ Defines hooked variable. It's a virtual variable with a C variable.
+ The getter is called as
-** Instance Variables
+ VALUE getter(ID id, VALUE *var)
- VALUE rb_iv_get(VALUE obj, const char *name)
+ returning a new value. The setter is called as
-Retrieve the value of the instance variable. If the name is not
-prefixed by `@', that variable shall be inaccessible from Ruby.
+ void setter(VALUE val, ID id, VALUE *var)
- VALUE rb_iv_set(VALUE obj, const char *name, VALUE val)
+ GC requires C global variables which hold Ruby values to be marked.
-Sets the value of the instance variable.
+void rb_global_variable(VALUE *var)
-** Control Structure
+ Tells GC to protect these variables.
- VALUE rb_block_call(VALUE recv, ID mid, int argc, VALUE * argv,
- VALUE (*func) (ANYARGS), VALUE data2)
+== Constant Definition
-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 klass, const char *name, VALUE val) ::
- [OBSOLETE] VALUE rb_iterate(VALUE (*func1)(), void *arg1, VALUE (*func2)(), void *arg2)
+ Defines a new constant under the class/module.
-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.
-
-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.
+void rb_define_global_const(const char *name, VALUE val) ::
- VALUE rb_yield(VALUE val)
+ Defines a global constant. This is just the same as
-Evaluates the block with value val.
+ rb_define_const(cKernal, name, val)
- VALUE rb_rescue(VALUE (*func1)(), VALUE arg1, VALUE (*func2)(), VALUE arg2)
+== Method Definition
-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 klass, const char *name, VALUE (*func)(), int argc) ::
- VALUE rb_ensure(VALUE (*func1)(), VALUE arg1, VALUE (*func2)(), VALUE arg2)
+ 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.
-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 occured.
+rb_define_private_method(VALUE klass, const char *name, VALUE (*func)(), int argc) ::
- VALUE rb_protect(VALUE (*func) (VALUE), VALUE arg, int *state)
+ Defines a private method for the class. Arguments are same as
+ rb_define_method().
-Calls the function func with arg as the argument. If no exception
-occured 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.
+rb_define_singleton_method(VALUE klass, const char *name, VALUE (*func)(), int argc) ::
- void rb_jump_tag(int state)
+ Defines a singleton method. Arguments are same as 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 argc, VALUE *argv, const char *fmt, ...) ::
-** Exceptions and Errors
+ Retrieve argument from argc and argv to given VALUE references
+ according to the format string. The format can be described in ABNF
+ as follows:
- void rb_warn(const char *fmt, ...)
+ scan-arg-spec := param-arg-spec [option-hash-arg-spec] [block-arg-spec]
-Prints a warning message according to a printf-like format.
+ 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
- void rb_warning(const char *fmt, ...)
+ 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
-Prints a warning message according to a printf-like format, if
-$VERBOSE is true.
+ 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.
-void rb_raise(rb_eRuntimeError, const char *fmt, ...)
+ The number of given arguments, excluding an option hash or iterator
+ block, is returned.
-Raises RuntimeError. The fmt is a format string just like printf().
+== Invoking Ruby method
- void rb_raise(VALUE exception, const char *fmt, ...)
+VALUE rb_funcall(VALUE recv, ID mid, int narg, ...) ::
-Raises a class exception. The fmt is a format string just like printf().
+ Invokes a method. To retrieve mid from a method name, use rb_intern().
+ Able to call even private/protected methods.
- void rb_fatal(const char *fmt, ...)
+VALUE rb_funcall2(VALUE recv, ID mid, int argc, VALUE *argv) ::
+VALUE rb_funcallv(VALUE recv, ID mid, int argc, VALUE *argv) ::
-Raises a fatal error, terminates the interpreter. No exception handling
-will be done for fatal errors, but ensure blocks will be executed.
+ Invokes a method, passing arguments as an array of values.
+ Able to call even private/protected methods.
- void rb_bug(const char *fmt, ...)
+VALUE rb_funcallv_public(VALUE recv, ID mid, int argc, VALUE *argv) ::
-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.
+ Invokes a method, passing arguments as an array of values.
+ Able to call only public methods.
-** Initialize and Start the Interpreter
+VALUE rb_eval_string(const char *str) ::
-The embedding API functions are below (not needed for extension libraries):
+ Compiles and executes the string as a Ruby program.
- void ruby_init()
+ID rb_intern(const char *name) ::
-Initializes the interpreter.
+ Returns ID corresponding to the name.
- void ruby_options(int argc, char **argv)
+char *rb_id2name(ID id) ::
-Process command line arguments for the interpreter.
+ Returns the name corresponding ID.
- void ruby_run()
+char *rb_class2name(VALUE klass) ::
-Starts execution of the interpreter.
+ Returns the name of the class.
- void ruby_script(char *name)
+int rb_respond_to(VALUE object, ID id) ::
-Specifies the name of the script ($0).
+ Returns true if the object responds to the message specified by id.
-** Hooks for the Interpreter Events
+== Instance Variables
- void rb_add_event_hook(rb_event_hook_func_t func, rb_event_flag_t events, VALUE data)
+VALUE rb_iv_get(VALUE obj, const char *name) ::
-Adds a hook function for the specified interpreter events.
-events should be Or'ed value of:
-
- 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
+ Retrieve the value of the instance variable. If the name is not
+ prefixed by `@', that variable shall be inaccessible from Ruby.
-The definition of rb_event_hook_func_t is below:
+VALUE rb_iv_set(VALUE obj, const char *name, VALUE val) ::
- typedef void (*rb_event_hook_func_t)(rb_event_t event, VALUE data,
- VALUE self, ID id, VALUE klass)
+ Sets the value of the instance variable.
-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.
+== Control Structure
- int rb_remove_event_hook(rb_event_hook_func_t func)
+VALUE rb_block_call(VALUE recv, ID mid, int argc, VALUE * argv, VALUE (*func) (ANYARGS), VALUE data2) ::
-Removes the specified hook function.
+ 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.
-** Macros for the Compatibilities
+[OBSOLETE] VALUE rb_iterate(VALUE (*func1)(), void *arg1, VALUE (*func2)(), void *arg2) ::
-Some macros to check API compatibilities are available by default.
+ 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.
+
+ 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) ::
+
+ Evaluates the block with value val.
+
+VALUE rb_rescue(VALUE (*func1)(), VALUE arg1, VALUE (*func2)(), VALUE arg2) ::
- NORETURN_STYLE_NEW
+ 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.
-Means that NORETURN macro is functional style instead of prefix.
+VALUE rb_ensure(VALUE (*func1)(), VALUE arg1, VALUE (*func2)(), VALUE arg2) ::
- HAVE_RB_DEFINE_ALLOC_FUNC
+ 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.
-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").
+VALUE rb_protect(VALUE (*func) (VALUE), VALUE arg, int *state) ::
- HAVE_RB_REG_NEW_STR
+ 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.
-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").
+void rb_jump_tag(int state) ::
- HAVE_RB_IO_T
+ 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.
-Means that type rb_io_t is provided.
+void rb_iter_break() ::
- USE_SYMBOL_AS_METHOD_NAME
+ Exits from the current innermost block. This function never return to
+ the caller.
-Means that Symbols will be returned as method names, e.g.,
-Module#methods, #singleton_methods and so on.
+void rb_iter_break_value(VALUE value) ::
- HAVE_RUBY_*_H
+ Exits from the current innermost block with the value. The block will
+ return the given argument value. This function never return to the
+ caller.
-Defined in ruby.h and means correspoinding header is available. For
-instance, when HAVE_RUBY_ST_H is defined you should use ruby/st.h not
-mere st.h.
+== Exceptions and Errors
- RB_EVENT_HOOKS_HAVE_CALLBACK_DATA
+void rb_warn(const char *fmt, ...) ::
-Means that rb_add_event_hook() takes the third argument `data', to be
-passed to the given event hook function.
+ Prints a warning message according to a printf-like format.
-Appendix C. Functions Available in extconf.rb
+void rb_warning(const char *fmt, ...) ::
-These functions are available in extconf.rb:
+ Prints a warning message according to a printf-like format, if
+ $VERBOSE is true.
- have_macro(macro, headers)
+void rb_raise(rb_eRuntimeError, const char *fmt, ...) ::
-Checks whether macro is defined with header. Returns true if the macro
-is defined.
+ Raises RuntimeError. The fmt is a format string just like printf().
- have_library(lib, func)
+void rb_raise(VALUE exception, const char *fmt, ...) ::
-Checks whether the library exists, containing the specified function.
-Returns true if the library exists.
+ Raises a class exception. The fmt is a format string just like printf().
- find_library(lib, func, path...)
+void rb_fatal(const char *fmt, ...) ::
+
+ 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, ...) ::
+
+ 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.
+
+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.
+
+== Initialize and Start the Interpreter
+
+The embedding API functions are below (not needed for extension libraries):
-Checks whether a library which contains the specified function exists in
-path. Returns true if the library exists.
+void ruby_init() ::
- have_func(func, header)
+ Initializes the interpreter.
-Checks whether func exists with header. Returns true if the function
-exists. To check functions in an additional library, you need to
-check that library first using have_library().
+void ruby_options(int argc, char **argv) ::
- have_var(var, header)
+ Process command line arguments for the interpreter.
-Checks whether var exists with header. Returns true if the variable
-exists. To check variables in an additional library, you need to
-check that library first using have_library().
+void ruby_run() ::
- have_header(header)
+ Starts execution of the interpreter.
-Checks whether header exists. Returns true if the header file exists.
+void ruby_script(char *name) ::
- find_header(header, path...)
+ Specifies the name of the script ($0).
-Checks whether header exists in path. Returns true if the header file
-exists.
+== Hooks for the Interpreter Events
- have_struct_member(type, member, header)
+ void rb_add_event_hook(rb_event_hook_func_t func, rb_event_flag_t events,
+ VALUE data)
-Checks whether type has member with header. Returns true if the type
-is defined and has the member.
+Adds a hook function for the specified interpreter events.
+events should be OR'ed value of:
+
+ 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
+
+The definition of rb_event_hook_func_t is below:
+
+ typedef void (*rb_event_hook_func_t)(rb_event_t event, VALUE data,
+ VALUE self, ID id, VALUE klass)
+
+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.
+
+ int rb_remove_event_hook(rb_event_hook_func_t func)
+
+Removes the specified hook function.
+
+== Macros for Compatibility
+
+Some macros to check API compatibilities are available by default.
- have_type(type, header, opt)
+NORETURN_STYLE_NEW ::
-Checks whether type is defined with header. Returns true if the type
-is defined.
+ Means that NORETURN macro is functional style instead of prefix.
- check_sizeof(type, header)
+HAVE_RB_DEFINE_ALLOC_FUNC ::
-Checks the size of type in char with header. Returns the size if the
-type is defined, otherwise nil.
+ 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").
- create_makefile(target)
+HAVE_RB_REG_NEW_STR ::
-Generates the Makefile for the extension library. If you don't invoke
-this method, the compilation will not be done.
+ 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").
- find_executable(bin, path)
+HAVE_RB_IO_T ::
-Finds command in path, which is File::PATH_SEPARATOR-separated list of
-directories. If path is nil or omitted, environment variable PATH
-will be used. Returns the path name of the command if it is found,
-otherwise nil.
+ Means that type rb_io_t is provided.
- with_config(withval[, default=nil])
+USE_SYMBOL_AS_METHOD_NAME ::
-Parses the command line options and returns the value specified by
---with-<withval>.
+ Means that Symbols will be returned as method names, e.g.,
+ Module#methods, #singleton_methods and so on.
- enable_config(config, *defaults)
- disable_config(config, *defaults)
+HAVE_RUBY_*_H ::
-Parses the command line options for boolean. Returns true if
---enable-<config> is given, or false if --disable-<config> is given.
-Otherwise, yields defaults to the given block and returns the result
-if it is called with a block, or returns defaults.
+ 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.
- dir_config(target[, default_dir])
- dir_config(target[, default_include, default_lib])
+RB_EVENT_HOOKS_HAVE_CALLBACK_DATA ::
-Parses the command line options and adds the directories specified by
---with-<target>-dir, --with-<target>-include, and/or --with-<target>-lib
-to $CFLAGS and/or $LDFLAGS. --with-<target>-dir=/path is equivalent to
---with-<target>-include=/path/include --with-<target>-lib=/path/lib.
-Returns an array of the added directories ([include_dir, lib_dir]).
+ Means that rb_add_event_hook() takes the third argument `data', to be
+ passed to the given event hook function.
- pkg_config(pkg)
+= Appendix C. Functions available for use in extconf.rb
-Obtains the information for pkg by pkg-config command. The actual
-command name can be overridden by --with-pkg-config command line
-option.
+See documentation for {mkmf}[rdoc-ref:MakeMakefile].
/*
* Local variables:
diff --git a/README.EXT.ja b/README.EXT.ja
index f2d7609ff5..9bba51a0d0 100644
--- a/README.EXT.ja
+++ b/README.EXT.ja
@@ -1,941 +1,963 @@
-.\" README.EXT.ja - -*- Text -*- created at: Mon Aug 7 16:45:54 JST 1995
+# README.EXT.ja - -*- RDoc -*- created at: Mon Aug 7 16:45:54 JST 1995
-Ruby¤Î³ÈÄ¥¥é¥¤¥Ö¥é¥ê¤Îºî¤êÊý¤òÀâÌÀ¤·¤Þ¤¹¡¥
+Rubyã®æ‹¡å¼µãƒ©ã‚¤ãƒ–ラリã®ä½œã‚Šæ–¹ã‚’説明ã—ã¾ã™ï¼Ž
-1¡¥´ðÁÃÃμ±
+= 基礎知識
-C¤ÎÊÑ¿ô¤Ë¤Ï·¿¤¬¤¢¤ê¡¤¥Ç¡¼¥¿¤Ë¤Ï·¿¤¬¤¢¤ê¤Þ¤»¤ó¡¥¤Ç¤¹¤«¤é¡¤¤¿
-¤È¤¨¤Ð¥Ý¥¤¥ó¥¿¤òint¤ÎÊÑ¿ô¤ËÂåÆþ¤¹¤ë¤È¡¤¤½¤ÎÃͤÏÀ°¿ô¤È¤·¤Æ¼è
-¤ê°·¤ï¤ì¤Þ¤¹¡¥µÕ¤ËRuby¤ÎÊÑ¿ô¤Ë¤Ï·¿¤¬¤Ê¤¯¡¤¥Ç¡¼¥¿¤Ë·¿¤¬¤¢¤ê¤Þ
-¤¹¡¥¤³¤Î°ã¤¤¤Î¤¿¤á¡¤C¤ÈRuby¤ÏÁê¸ß¤ËÊÑ´¹¤·¤Ê¤±¤ì¤Ð¡¤¤ª¸ß¤¤¤Î
-¥Ç¡¼¥¿¤ò¥¢¥¯¥»¥¹¤Ç¤­¤Þ¤»¤ó¡¥
+Cã®å¤‰æ•°ã«ã¯åž‹ãŒã‚り,データã«ã¯åž‹ãŒã‚りã¾ã›ã‚“.ã§ã™ã‹ã‚‰ï¼ŒãŸ
+ã¨ãˆã°ãƒã‚¤ãƒ³ã‚¿ã‚’intã®å¤‰æ•°ã«ä»£å…¥ã™ã‚‹ã¨ï¼Œãã®å€¤ã¯æ•´æ•°ã¨ã—ã¦å–
+り扱ã‚れã¾ã™ï¼Žé€†ã«Rubyã®å¤‰æ•°ã«ã¯åž‹ãŒãªã,データã«åž‹ãŒã‚りã¾
+ã™ï¼Žã“ã®é•ã„ã®ãŸã‚,Cã¨Rubyã¯ç›¸äº’ã«å¤‰æ›ã—ãªã‘れã°ï¼ŒãŠäº’ã„ã®
+データをアクセスã§ãã¾ã›ã‚“.
-Ruby¤Î¥Ç¡¼¥¿¤ÏVALUE¤È¤¤¤¦C¤Î·¿¤Çɽ¸½¤µ¤ì¤Þ¤¹¡¥VALUE·¿¤Î¥Ç¡¼
-¥¿¤Ï¤½¤Î¥Ç¡¼¥¿¥¿¥¤¥×¤ò¼«Ê¬¤ÇÃΤäƤ¤¤Þ¤¹¡¥¤³¤Î¥Ç¡¼¥¿¥¿¥¤¥×¤È
-¤¤¤¦¤Î¤Ï¥Ç¡¼¥¿(¥ª¥Ö¥¸¥§¥¯¥È)¤Î¼ÂºÝ¤Î¹½Â¤¤ò°ÕÌ£¤·¤Æ¤¤¤Æ¡¤Ruby
-¤Î¥¯¥é¥¹¤È¤Ï¤Þ¤¿°ã¤Ã¤¿¤â¤Î¤Ç¤¹¡¥
+Rubyã®ãƒ‡ãƒ¼ã‚¿ã¯VALUEã¨ã„ã†Cã®åž‹ã§è¡¨ç¾ã•れã¾ã™ï¼ŽVALUEåž‹ã®ãƒ‡ãƒ¼
+ã‚¿ã¯ãã®ãƒ‡ãƒ¼ã‚¿ã‚¿ã‚¤ãƒ—を自分ã§çŸ¥ã£ã¦ã„ã¾ã™ï¼Žã“ã®ãƒ‡ãƒ¼ã‚¿ã‚¿ã‚¤ãƒ—ã¨
+ã„ã†ã®ã¯ãƒ‡ãƒ¼ã‚¿(オブジェクト)ã®å®Ÿéš›ã®æ§‹é€ ã‚’æ„味ã—ã¦ã„ã¦ï¼ŒRuby
+ã®ã‚¯ãƒ©ã‚¹ã¨ã¯ã¾ãŸé•ã£ãŸã‚‚ã®ã§ã™ï¼Ž
-VALUE¤«¤éC¤Ë¤È¤Ã¤Æ°ÕÌ£¤Î¤¢¤ë¥Ç¡¼¥¿¤ò¼è¤ê½Ð¤¹¤¿¤á¤Ë¤Ï
+VALUEã‹ã‚‰Cã«ã¨ã£ã¦æ„味ã®ã‚るデータをå–り出ã™ãŸã‚ã«ã¯
- (1) VALUE¤Î¥Ç¡¼¥¿¥¿¥¤¥×¤òÃΤë
- (2) VALUE¤òC¤Î¥Ç¡¼¥¿¤ËÊÑ´¹¤¹¤ë
+1. VALUEã®ãƒ‡ãƒ¼ã‚¿ã‚¿ã‚¤ãƒ—を知る
+2. VALUEã‚’Cã®ãƒ‡ãƒ¼ã‚¿ã«å¤‰æ›ã™ã‚‹
-¤ÎξÊý¤¬É¬ÍפǤ¹¡¥(1)¤ò˺¤ì¤ë¤È´Ö°ã¤Ã¤¿¥Ç¡¼¥¿¤ÎÊÑ´¹¤¬¹Ô¤ï¤ì
-¤Æ¡¤ºÇ°­¥×¥í¥°¥é¥à¤¬core dump¤·¤Þ¤¹¡¥
+ã®ä¸¡æ–¹ãŒå¿…è¦ã§ã™ï¼Ž(1)を忘れるã¨é–“é•ã£ãŸãƒ‡ãƒ¼ã‚¿ã®å¤‰æ›ãŒè¡Œã‚れ
+ã¦ï¼Œæœ€æ‚ªãƒ—ログラムãŒcore dumpã—ã¾ã™ï¼Ž
-1.1 ¥Ç¡¼¥¿¥¿¥¤¥×
+== データタイプ
-Ruby¤Ë¤Ï¥æ¡¼¥¶¤¬»È¤¦²ÄǽÀ­¤Î¤¢¤ë°Ê²¼¤Î¥¿¥¤¥×¤¬¤¢¤ê¤Þ¤¹¡¥
+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_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
+ T_ICLASS
+ T_MATCH
+ T_UNDEF
+ T_NODE
+ T_ZOMBIE
-¤Û¤È¤ó¤É¤Î¥¿¥¤¥×¤ÏC¤Î¹½Â¤ÂΤǼÂÁõ¤µ¤ì¤Æ¤¤¤Þ¤¹¡¥
+ã»ã¨ã‚“ã©ã®ã‚¿ã‚¤ãƒ—ã¯Cã®æ§‹é€ ä½“ã§å®Ÿè£…ã•れã¦ã„ã¾ã™ï¼Ž
-1.2 VALUE¤Î¥Ç¡¼¥¿¥¿¥¤¥×¤ò¥Á¥§¥Ã¥¯¤¹¤ë
+== VALUEã®ãƒ‡ãƒ¼ã‚¿ã‚¿ã‚¤ãƒ—ã‚’ãƒã‚§ãƒƒã‚¯ã™ã‚‹
-ruby.h¤Ç¤ÏTYPE()¤È¤¤¤¦¥Þ¥¯¥í¤¬ÄêµÁ¤µ¤ì¤Æ¤¤¤Æ¡¤VALUE¤Î¥Ç¡¼¥¿
-¥¿¥¤¥×¤òÃΤ뤳¤È¤¬½ÐÍè¤Þ¤¹¡¥TYPE()¥Þ¥¯¥í¤Ï¾å¤Ç¾Ò²ð¤·¤¿T_XXXX
-¤Î·Á¼°¤ÎÄê¿ô¤òÊÖ¤·¤Þ¤¹¡¥VALUE¤Î¥Ç¡¼¥¿¥¿¥¤¥×¤Ë±þ¤¸¤Æ½èÍý¤¹¤ë
-¾ì¹ç¤Ë¤Ï¡¤TYPE()¤ÎÃͤÇʬ´ô¤¹¤ë¤³¤È¤Ë¤Ê¤ê¤Þ¤¹¡¥
+ruby.hã§ã¯TYPE()ã¨ã„ã†ãƒžã‚¯ãƒ­ãŒå®šç¾©ã•れã¦ã„ã¦ï¼ŒVALUEã®ãƒ‡ãƒ¼ã‚¿
+タイプを知るã“ã¨ãŒå‡ºæ¥ã¾ã™ï¼ŽTYPE()マクロã¯ä¸Šã§ç´¹ä»‹ã—ãŸT_XXXX
+ã®å½¢å¼ã®å®šæ•°ã‚’è¿”ã—ã¾ã™ï¼ŽVALUEã®ãƒ‡ãƒ¼ã‚¿ã‚¿ã‚¤ãƒ—ã«å¿œã˜ã¦å‡¦ç†ã™ã‚‹
+å ´åˆã«ã¯ï¼ŒTYPE()ã®å€¤ã§åˆ†å²ã™ã‚‹ã“ã¨ã«ãªã‚Šã¾ã™ï¼Ž
switch (TYPE(obj)) {
case T_FIXNUM:
- /* 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¤Î¥Ç¡¼¥¿¥¿¥¤¥×¤¬Àµ¤·¤¤¤«¤É¤¦¤«¥Á¥§¥Ã¥¯¤¹
-¤ë¤¿¤á¤Ë¤Ï¡¤¤³¤Î´Ø¿ô¤ò»È¤¤¤Þ¤¹¡¥
+ã“ã®é–¢æ•°ã¯valueãŒtypeã§ç„¡ã‘れã°ï¼Œä¾‹å¤–を発生ã•ã›ã¾ã™ï¼Žå¼•æ•°ã¨
+ã—ã¦ä¸Žãˆã‚‰ã‚ŒãŸVALUEã®ãƒ‡ãƒ¼ã‚¿ã‚¿ã‚¤ãƒ—ãŒæ­£ã—ã„ã‹ã©ã†ã‹ãƒã‚§ãƒƒã‚¯ã™
+ã‚‹ãŸã‚ã«ã¯ï¼Œã“ã®é–¢æ•°ã‚’使ã„ã¾ã™ï¼Ž
-FIXNUM¤ÈNIL¤Ë´Ø¤·¤Æ¤Ï¤è¤ê¹â®¤ÊȽÊÌ¥Þ¥¯¥í¤¬ÍѰդµ¤ì¤Æ¤¤¤Þ¤¹¡¥
+FIXNUMã¨NILã«é–¢ã—ã¦ã¯ã‚ˆã‚Šé«˜é€Ÿãªåˆ¤åˆ¥ãƒžã‚¯ãƒ­ãŒç”¨æ„ã•れã¦ã„ã¾ã™ï¼Ž
FIXNUM_P(obj)
NIL_P(obj)
-1.3 VALUE¤òC¤Î¥Ç¡¼¥¿¤ËÊÑ´¹¤¹¤ë
-
-¥Ç¡¼¥¿¥¿¥¤¥×¤¬T_NIL¡¤T_FALSE¡¤T_TRUE¤Ç¤¢¤ë»þ¡¤¥Ç¡¼¥¿¤Ï¤½¤ì¤¾
-¤ìnil¡¤false¡¤true¤Ç¤¹¡¥¤³¤Î¥Ç¡¼¥¿¥¿¥¤¥×¤Î¥ª¥Ö¥¸¥§¥¯¥È¤Ï¤Ò¤È
-¤Ä¤º¤Ä¤·¤«Â¸ºß¤·¤Þ¤»¤ó¡¥
+== 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()ã€ãŒã‚りã¾ã™ï¼Ž
-¥Ç¡¼¥¿¥¿¥¤¥×¤¬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 文字ãŒå«ã¾ã‚Œã¦ã„ã‚‹å¯èƒ½æ€§ã‚‚ã‚りã¾ã™ï¼Ž
-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ã¯ãã®ã¾ã¾ã‚­ãƒ£ã‚¹ãƒˆ(型変æ›)ã™ã‚Œã°æ§‹é€ ä½“ã®
+ãƒã‚¤ãƒ³ã‚¿ã«å¤‰æ›ã§ãã¾ã™ï¼Ž
-¤½¤ì°Ê³°¤Î¥Ç¡¼¥¿¥¿¥¤¥×¤ÏÂбþ¤¹¤ëC¤Î¹½Â¤ÂΤ¬¤¢¤ê¤Þ¤¹¡¥Âбþ¤¹
-¤ë¹½Â¤ÂΤΤ¢¤ëVALUE¤Ï¤½¤Î¤Þ¤Þ¥­¥ã¥¹¥È(·¿ÊÑ´¹)¤¹¤ì¤Ð¹½Â¤ÂΤÎ
-¥Ý¥¤¥ó¥¿¤ËÊÑ´¹¤Ç¤­¤Þ¤¹¡¥
+構造体ã¯ã€Œstruct RXxxxxã€ã¨ã„ã†åå‰ã§ruby.hã§å®šç¾©ã•れã¦ã„ã¾
+ã™ï¼Žä¾‹ãˆã°æ–‡å­—列ã¯ã€Œstruct RStringã€ã§ã™ï¼Žå®Ÿéš›ã«ä½¿ã†å¯èƒ½æ€§ãŒ
+ã‚ã‚‹ã®ã¯æ–‡å­—列ã¨é…列ãらã„ã ã¨æ€ã„ã¾ã™ï¼Ž
-¹½Â¤ÂΤϡÖstruct RXxxxx¡×¤È¤¤¤¦Ì¾Á°¤Çruby.h¤ÇÄêµÁ¤µ¤ì¤Æ¤¤¤Þ
-¤¹¡¥Î㤨¤Ðʸ»úÎó¤Ï¡Östruct RString¡×¤Ç¤¹¡¥¼ÂºÝ¤Ë»È¤¦²ÄǽÀ­¤¬
-¤¢¤ë¤Î¤Ïʸ»úÎó¤ÈÇÛÎ󤯤餤¤À¤È»×¤¤¤Þ¤¹¡¥
+ruby.hã§ã¯æ§‹é€ ä½“ã¸ã‚­ãƒ£ã‚¹ãƒˆã™ã‚‹ãƒžã‚¯ãƒ­ã‚‚「RXXXXX()ã€(全部大文
+å­—ã«ã—ãŸã‚‚ã®)ã¨ã„ã†åå‰ã§æä¾›ã•れã¦ã„ã¾ã™(例: RSTRING()).ãŸ
+ã ã—ã€æ§‹é€ ä½“ã¸ã®ç›´æŽ¥ã®ã‚¢ã‚¯ã‚»ã‚¹ã¯ã§ãã‚‹ã ã‘é¿ã‘,対応ã™ã‚‹
+rb_xxxx() ã¨ã„ã£ãŸé–¢æ•°ã‚’使ã†ã‚ˆã†ã«ã—ã¦ä¸‹ã•ã„.例ãˆã°ï¼Œé…列ã®
+è¦ç´ ã¸ã‚¢ã‚¯ã‚»ã‚¹ã™ã‚‹å ´åˆã¯ï¼Œrb_ary_entry(ary, offset),
+rb_ary_store(ary, offset, obj) を利用ã™ã‚‹ã‚ˆã†ã«ã—ã¦ä¸‹ã•ã„.
-ruby.h¤Ç¤Ï¹½Â¤ÂΤإ­¥ã¥¹¥È¤¹¤ë¥Þ¥¯¥í¤â¡ÖRXXXXX()¡×(Á´ÉôÂçʸ
-»ú¤Ë¤·¤¿¤â¤Î)¤È¤¤¤¦Ì¾Á°¤ÇÄ󶡤µ¤ì¤Æ¤¤¤Þ¤¹(Îã: RSTRING())¡¥
+構造体ã‹ã‚‰ãƒ‡ãƒ¼ã‚¿ã‚’å–り出ã™ãƒžã‚¯ãƒ­ãŒæä¾›ã•れã¦ã„ã¾ã™ï¼Žæ–‡å­—列
+strã®é•·ã•ã‚’å¾—ã‚‹ãŸã‚ã«ã¯ã€ŒRSTRING_LEN(str)ã€ã¨ã—,文字列strã‚’
+char*ã¨ã—ã¦å¾—ã‚‹ãŸã‚ã«ã¯ã€ŒRSTRING_PTR(str)ã€ã¨ã—ã¾ã™ï¼Ž
-¹½Â¤ÂΤ«¤é¥Ç¡¼¥¿¤ò¼è¤ê½Ð¤¹¥Þ¥¯¥í¤¬Ä󶡤µ¤ì¤Æ¤¤¤Þ¤¹¡¥Ê¸»úÎó
-str¤ÎŤµ¤òÆÀ¤ë¤¿¤á¤Ë¤Ï¡ÖRSTRING_LEN(str)¡×¤È¤·¡¤Ê¸»úÎóstr¤ò
-char*¤È¤·¤ÆÆÀ¤ë¤¿¤á¤Ë¤Ï¡ÖRSTRING_PTR(str)¡×¤È¤·¤Þ¤¹¡¥ÇÛÎó¤Î
-¾ì¹ç¤Ë¤Ï¡¤¤½¤ì¤¾¤ì¡ÖRARRAY_LEN(ary)¡×¡¤¡ÖRARRAY_PTR(ary)¡×¤È
-¤Ê¤ê¤Þ¤¹¡¥
+Rubyã®æ§‹é€ ä½“を直接アクセスã™ã‚‹æ™‚ã«æ°—ã‚’ã¤ã‘ãªã‘れã°ãªã‚‰ãªã„ã“
+ã¨ã¯ï¼Œé…åˆ—ã‚„æ–‡å­—åˆ—ã®æ§‹é€ ä½“ã®ä¸­èº«ã¯å‚ç…§ã™ã‚‹ã ã‘ã§ï¼Œç›´æŽ¥å¤‰æ›´ã—
+ãªã„ã“ã¨ã§ã™ï¼Žç›´æŽ¥å¤‰æ›´ã—ãŸå ´åˆï¼Œã‚ªãƒ–ジェクトã®å†…å®¹ã®æ•´åˆæ€§ãŒ
+ã¨ã‚Œãªããªã£ã¦ï¼Œæ€ã‚ã¬ãƒã‚°ã®åŽŸå› ã«ãªã‚Šã¾ã™ï¼Ž
-Ruby¤Î¹½Â¤ÂΤòľÀÜ¥¢¥¯¥»¥¹¤¹¤ë»þ¤Ëµ¤¤ò¤Ä¤±¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¤³
-¤È¤Ï¡¤ÇÛÎó¤äʸ»úÎó¤Î¹½Â¤ÂΤÎÃæ¿È¤Ï»²¾È¤¹¤ë¤À¤±¤Ç¡¤Ä¾ÀÜÊѹ¹¤·
-¤Ê¤¤¤³¤È¤Ç¤¹¡¥Ä¾ÀÜÊѹ¹¤·¤¿¾ì¹ç¡¤¥ª¥Ö¥¸¥§¥¯¥È¤ÎÆâÍÆ¤ÎÀ°¹çÀ­¤¬
-¤È¤ì¤Ê¤¯¤Ê¤Ã¤Æ¡¤»×¤ï¤Ì¥Ð¥°¤Î¸¶°ø¤Ë¤Ê¤ê¤Þ¤¹¡¥
+== Cã®ãƒ‡ãƒ¼ã‚¿ã‚’VALUEã«å¤‰æ›ã™ã‚‹
-1.4 C¤Î¥Ç¡¼¥¿¤òVALUE¤ËÊÑ´¹¤¹¤ë
+VALUEã®å®Ÿéš›ã®æ§‹é€ ã¯
-VALUE¤Î¼ÂºÝ¤Î¹½Â¤¤Ï
+FIXNUMã®å ´åˆ ::
- * FIXNUM¤Î¾ì¹ç
+ 1bit左シフトã—ã¦ï¼ŒLSBã‚’ç«‹ã¦ã‚‹ï¼Ž
- 1bitº¸¥·¥Õ¥È¤·¤Æ¡¤LSB¤òΩ¤Æ¤ë¡¥
+ãã®ä»–ã®ãƒã‚¤ãƒ³ã‚¿ã®å ´åˆ ::
- * ¤½¤Î¾¤Î¥Ý¥¤¥ó¥¿¤Î¾ì¹ç
+ ãã®ã¾ã¾VALUEã«ã‚­ãƒ£ã‚¹ãƒˆã™ã‚‹ï¼Ž
- ¤½¤Î¤Þ¤ÞVALUE¤Ë¥­¥ã¥¹¥È¤¹¤ë¡¥
+ã¨ãªã£ã¦ã„ã¾ã™ï¼Žã‚ˆã£ã¦ï¼ŒLSBã‚’ãƒã‚§ãƒƒã‚¯ã™ã‚Œã°VALUEãŒFIXNUMã‹ã©
+ã†ã‹ã‚ã‹ã‚‹ã‚ã‘ã§ã™(ãƒã‚¤ãƒ³ã‚¿ã®LSBãŒç«‹ã£ã¦ã„ãªã„ã“ã¨ã‚’仮定ã—ã¦
+ã„ã‚‹).
-¤È¤Ê¤Ã¤Æ¤¤¤Þ¤¹¡¥¤è¤Ã¤Æ¡¤LSB¤ò¥Á¥§¥Ã¥¯¤¹¤ì¤ÐVALUE¤¬FIXNUM¤«¤É
-¤¦¤«¤ï¤«¤ë¤ï¤±¤Ç¤¹(¥Ý¥¤¥ó¥¿¤ÎLSB¤¬Î©¤Ã¤Æ¤¤¤Ê¤¤¤³¤È¤ò²¾Äꤷ¤Æ
-¤¤¤ë)¡¥
+ã§ã™ã‹ã‚‰ï¼ŒFIXNUM以外ã®Rubyã®ã‚ªãƒ–ã‚¸ã‚§ã‚¯ãƒˆã®æ§‹é€ ä½“ã¯å˜ã«VALUE
+ã«ã‚­ãƒ£ã‚¹ãƒˆã™ã‚‹ã ã‘ã§VALUEã«å¤‰æ›å‡ºæ¥ã¾ã™ï¼ŽãŸã ã—,任æ„ã®æ§‹é€ 
+体ãŒVALUEã«ã‚­ãƒ£ã‚¹ãƒˆå‡ºæ¥ã‚‹ã‚ã‘ã§ã¯ã‚りã¾ã›ã‚“.キャストã™ã‚‹ã®
+ã¯Rubyã®çŸ¥ã£ã¦ã„る構造体(ruby.hã§å®šç¾©ã•れã¦ã„ã‚‹struct RXxxx
+ã®ã‚‚ã®)ã ã‘ã§ã™ï¼Ž
-¤Ç¤¹¤«¤é¡¤FIXNUM°Ê³°¤ÎRuby¤Î¥ª¥Ö¥¸¥§¥¯¥È¤Î¹½Â¤ÂΤÏñ¤ËVALUE
-¤Ë¥­¥ã¥¹¥È¤¹¤ë¤À¤±¤ÇVALUE¤ËÊÑ´¹½ÐÍè¤Þ¤¹¡¥¤¿¤À¤·¡¤Ç¤°Õ¤Î¹½Â¤
-ÂΤ¬VALUE¤Ë¥­¥ã¥¹¥È½ÐÍè¤ë¤ï¤±¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó¡¥¥­¥ã¥¹¥È¤¹¤ë¤Î
-¤ÏRuby¤ÎÃΤäƤ¤¤ë¹½Â¤ÂÎ(ruby.h¤ÇÄêµÁ¤µ¤ì¤Æ¤¤¤ëstruct RXxxx
-¤Î¤â¤Î)¤À¤±¤Ç¤¹¡¥
+FIXNUMã«é–¢ã—ã¦ã¯å¤‰æ›ãƒžã‚¯ãƒ­ã‚’経由ã™ã‚‹å¿…è¦ãŒã‚りã¾ã™ï¼ŽCã®æ•´æ•°
+ã‹ã‚‰VALUEã«å¤‰æ›ã™ã‚‹ãƒžã‚¯ãƒ­ã¯ä»¥ä¸‹ã®ã‚‚ã®ãŒã‚りã¾ã™ï¼Žå¿…è¦ã«å¿œã˜
+ã¦ä½¿ã„分ã‘ã¦ãã ã•ã„.
-FIXNUM¤Ë´Ø¤·¤Æ¤ÏÊÑ´¹¥Þ¥¯¥í¤ò·Ðͳ¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡¥C¤ÎÀ°¿ô
-¤«¤éVALUE¤ËÊÑ´¹¤¹¤ë¥Þ¥¯¥í¤Ï°Ê²¼¤Î¤â¤Î¤¬¤¢¤ê¤Þ¤¹¡¥É¬Íפ˱þ¤¸
-¤Æ»È¤¤Ê¬¤±¤Æ¤¯¤À¤µ¤¤¡¥
+INT2FIX() :: ã‚‚ã¨ã®æ•´æ•°ãŒ31bitã¾ãŸã¯63bit以内ã«åŽã¾ã‚‹è‡ªä¿¡
+ ãŒã‚る時
+INT2NUM() :: ä»»æ„ã®æ•´æ•°ã‹ã‚‰VALUEã¸
- INT2FIX() ¤â¤È¤ÎÀ°¿ô¤¬31bit¤Þ¤¿¤Ï63bit°ÊÆâ¤Ë¼ý¤Þ¤ë¼«¿®
- ¤¬¤¢¤ë»þ
- INT2NUM() Ǥ°Õ¤ÎÀ°¿ô¤«¤éVALUE¤Ø
+INT2NUM()ã¯æ•´æ•°ãŒFIXNUMã®ç¯„囲ã«åŽã¾ã‚‰ãªã„å ´åˆï¼ŒBignumã«å¤‰æ›
+ã—ã¦ãれã¾ã™(ãŒï¼Œå°‘ã—é…ã„).
-INT2NUM()¤ÏÀ°¿ô¤¬FIXNUM¤ÎÈϰϤ˼ý¤Þ¤é¤Ê¤¤¾ì¹ç¡¤Bignum¤ËÊÑ´¹
-¤·¤Æ¤¯¤ì¤Þ¤¹(¤¬¡¤¾¯¤·ÃÙ¤¤)¡¥
+== Rubyã®ãƒ‡ãƒ¼ã‚¿ã‚’æ“作ã™ã‚‹
-1.5 Ruby¤Î¥Ç¡¼¥¿¤òÁàºî¤¹¤ë
+先程も述ã¹ãŸé€šã‚Šï¼ŒRubyã®æ§‹é€ ä½“をアクセスã™ã‚‹æ™‚ã«å†…å®¹ã®æ›´æ–°ã‚’
+行ã†ã“ã¨ã¯å‹§ã‚られã¾ã›ã‚“.ã§ï¼ŒRubyã®ãƒ‡ãƒ¼ã‚¿ã‚’æ“作ã™ã‚‹æ™‚ã«ã¯
+RubyãŒç”¨æ„ã—ã¦ã„る関数を用ã„ã¦ãã ã•ã„.
-ÀèÄø¤â½Ò¤Ù¤¿Ä̤ꡤRuby¤Î¹½Â¤ÂΤò¥¢¥¯¥»¥¹¤¹¤ë»þ¤ËÆâÍÆ¤Î¹¹¿·¤ò
-¹Ô¤¦¤³¤È¤Ï´«¤á¤é¤ì¤Þ¤»¤ó¡¥¤Ç¡¤Ruby¤Î¥Ç¡¼¥¿¤òÁàºî¤¹¤ë»þ¤Ë¤Ï
-Ruby¤¬ÍѰդ·¤Æ¤¤¤ë´Ø¿ô¤òÍѤ¤¤Æ¤¯¤À¤µ¤¤¡¥
+ã“ã“ã§ã¯ã‚‚ã£ã¨ã‚‚使ã‚れるã§ã‚ã‚ã†æ–‡å­—列ã¨é…列ã®ç”Ÿæˆ/æ“作を行
+ã†é–¢æ•°ã‚’ã‚ã’ã¾ã™(全部ã§ã¯ãªã„ã§ã™).
-¤³¤³¤Ç¤Ï¤â¤Ã¤È¤â»È¤ï¤ì¤ë¤Ç¤¢¤í¤¦Ê¸»úÎó¤ÈÇÛÎó¤ÎÀ¸À®/Áàºî¤ò¹Ô
-¤¤´Ø¿ô¤ò¤¢¤²¤Þ¤¹(Á´Éô¤Ç¤Ï¤Ê¤¤¤Ç¤¹)¡¥
+=== 文字列ã«å¯¾ã™ã‚‹é–¢æ•°
- ʸ»úÎó¤ËÂФ¹¤ë´Ø¿ô
+rb_str_new(const char *ptr, long len) ::
- rb_str_new(const char *ptr, long len)
+ æ–°ã—ã„Rubyã®æ–‡å­—列を生æˆã™ã‚‹ï¼Ž
- ¿·¤·¤¤Ruby¤Îʸ»úÎó¤òÀ¸À®¤¹¤ë¡¥
+rb_str_new2(const char *ptr)
+rb_str_new_cstr(const char *ptr)
- rb_str_new2(const char *ptr)
- rb_str_new_cstr(const char *ptr)
+ Cã®æ–‡å­—列ã‹ã‚‰Rubyã®æ–‡å­—列を生æˆã™ã‚‹ï¼Žã“ã®é–¢æ•°ã®æ©Ÿèƒ½ã¯
+ rb_str_new(ptr, strlen(ptr))ã¨åŒç­‰ã§ã‚る.
- C¤Îʸ»úÎ󤫤éRuby¤Îʸ»úÎó¤òÀ¸À®¤¹¤ë¡¥¤³¤Î´Ø¿ô¤Îµ¡Ç½¤Ï
- rb_str_new(ptr, strlen(ptr))¤ÈƱÅù¤Ç¤¢¤ë¡¥
+rb_tainted_str_new(const char *ptr, long len)
- rb_tainted_str_new(const char *ptr, long len)
+ 汚染マークãŒä»˜åŠ ã•ã‚ŒãŸæ–°ã—ã„Rubyã®æ–‡å­—列を生æˆã™ã‚‹ï¼Žå¤–部
+ ã‹ã‚‰ã®ãƒ‡ãƒ¼ã‚¿ã«åŸºã¥ã文字列ã«ã¯æ±šæŸ“マークãŒä»˜åŠ ã•れるã¹ã
+ ã§ã‚る.
- ±øÀ÷¥Þ¡¼¥¯¤¬Éղ䵤줿¿·¤·¤¤Ruby¤Îʸ»úÎó¤òÀ¸À®¤¹¤ë¡¥³°Éô
- ¤«¤é¤Î¥Ç¡¼¥¿¤Ë´ð¤Å¤¯Ê¸»úÎó¤Ë¤Ï±øÀ÷¥Þ¡¼¥¯¤¬Éղ䵤ì¤ë¤Ù¤­
- ¤Ç¤¢¤ë¡¥
+rb_tainted_str_new2(const char *ptr)
+rb_tainted_str_new_cstr(const char *ptr)
- rb_tainted_str_new2(const char *ptr)
- rb_tainted_str_new_cstr(const char *ptr)
+ Cã®æ–‡å­—列ã‹ã‚‰æ±šæŸ“マークãŒä»˜åŠ ã•れãŸRubyã®æ–‡å­—列を生æˆã™ã‚‹ï¼Ž
- C¤Îʸ»úÎ󤫤鱸À÷¥Þ¡¼¥¯¤¬Éղ䵤줿Ruby¤Îʸ»úÎó¤òÀ¸À®¤¹¤ë¡¥
+rb_sprintf(const char *format, ...)
+rb_vsprintf(const char *format, va_list ap)
- rb_sprintf(const char *format, ...)
- rb_vsprintf(const char *format, va_list ap)
+ Cã®æ–‡å­—列formatã¨ç¶šã引数をprintf(3)ã®ãƒ•ォーマットã«ã—ãŸãŒã£ã¦
+ æ•´å½¢ã—,Rubyã®æ–‡å­—列を生æˆã™ã‚‹ï¼Ž
- C¤Îʸ»úÎóformat¤È³¤¯°ú¿ô¤òprintf(3)¤Î¥Õ¥©¡¼¥Þ¥Ã¥È¤Ë¤·¤¿¤¬¤Ã¤Æ
- À°·Á¤·¡¤Ruby¤Îʸ»úÎó¤òÀ¸À®¤¹¤ë¡¥
+ 注æ„: %iã¯Object#to_s('+'ãƒ•ãƒ©ã‚°ãŒæŒ‡å®šã•れã¦ã„ã‚‹ã¨ãã¯Object#inspect)ã‚’
+ 使ã£ãŸVALUEã®å‡ºåŠ›ã«ä½¿ç”¨ã•れã¦ã„ã‚‹ãŸã‚,整数ã«ã¯%dを使用ã™ã‚‹ã“ã¨ï¼Ž
- rb_str_cat(VALUE str, const char *ptr, long len)
+rb_str_cat(VALUE str, const char *ptr, long len)
- Ruby¤Îʸ»úÎóstr¤Ëlen¥Ð¥¤¥È¤Îʸ»úÎóptr¤òÄɲ乤롥
+ Rubyã®æ–‡å­—列strã«lenãƒã‚¤ãƒˆã®æ–‡å­—列ptrを追加ã™ã‚‹ï¼Ž
- rb_str_cat2(VALUE str, const char* ptr)
+rb_str_cat2(VALUE str, const char* ptr)
- Ruby¤Îʸ»úÎóstr¤ËC¤Îʸ»úÎóptr¤òÄɲ乤롥¤³¤Î´Ø¿ô¤Îµ¡Ç½¤Ï
- rb_str_cat(str, ptr, strlen(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)
+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)) ¤ÈƱÅù¤Ç¤¢¤ë¡¥
+ 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)
-
- »ØÄꤵ¤ì¤¿¥¨¥ó¥³¡¼¥Ç¥£¥ó¥°¤ÇRuby¤Îʸ»úÎó¤òÀ¸À®¤¹¤ë.
-
- rb_usascii_str_new(const char *ptr, long len)
- rb_usascii_str_new_cstr(const char *ptr)
+rb_enc_str_new(const char *ptr, long len, rb_encoding *enc)
+rb_enc_str_new_cstr(const char *ptr, rb_encoding *enc)
- ¥¨¥ó¥³¡¼¥Ç¥£¥ó¥°¤¬US-ASCII¤ÎRuby¤Îʸ»úÎó¤òÀ¸À®¤¹¤ë.
+ 指定ã•れãŸã‚¨ãƒ³ã‚³ãƒ¼ãƒ‡ã‚£ãƒ³ã‚°ã§Rubyã®æ–‡å­—列を生æˆã™ã‚‹.
- rb_str_resize(VALUE str, long len)
+rb_usascii_str_new(const char *ptr, long len)
+rb_usascii_str_new_cstr(const char *ptr)
- Ruby¤Îʸ»úÎó¤Î¥µ¥¤¥º¤òlen¥Ð¥¤¥È¤ËÊѹ¹¤¹¤ë¡¥str¤ÎŤµ¤ÏÁ°
- °Ê¤Æ¥»¥Ã¥È¤µ¤ì¤Æ¤¤¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡¥len¤¬¸µ¤ÎŤµ¤è¤ê¤âû
- ¤¤»þ¤Ï¡¤len¥Ð¥¤¥È¤ò±Û¤¨¤¿Éôʬ¤ÎÆâÍÆ¤Ï¼Î¤Æ¤é¤ì¤ë¡¥len¤¬¸µ
- ¤ÎŤµ¤è¤ê¤âŤ¤»þ¤Ï¡¤¸µ¤ÎŤµ¤ò±Û¤¨¤¿Éôʬ¤ÎÆâÍÆ¤ÏÊݸ¤µ
- ¤ì¤Ê¤¤¤Ç¥´¥ß¤Ë¤Ê¤ë¤À¤í¤¦¡¥¤³¤Î´Ø¿ô¤Î¸Æ¤Ó½Ð¤·¤Ë¤è¤Ã¤Æ
- RSTRING_PTR(str)¤¬Êѹ¹¤µ¤ì¤ë¤«¤â¤·¤ì¤Ê¤¤¤³¤È¤ËÃí°Õ¡¥
+ エンコーディングãŒUS-ASCIIã®Rubyã®æ–‡å­—列を生æˆã™ã‚‹.
- rb_str_set_len(VALUE str, long len)
+rb_str_resize(VALUE str, long len)
- Ruby¤Îʸ»úÎó¤Î¥µ¥¤¥º¤òlen¥Ð¥¤¥È¤Ë¥»¥Ã¥È¤¹¤ë¡¥str¤¬Êѹ¹²Ä
- ǽ¤Ç¤Ê¤±¤ì¤ÐÎã³°¤¬È¯À¸¤¹¤ë¡¥RSTRING_LEN(str)¤È¤Ï̵´Ø·¸¤Ë¡¤
- len¥Ð¥¤¥È¤Þ¤Ç¤ÎÆâÍÆ¤ÏÊݸ¤µ¤ì¤ë¡¥len¤Ïstr¤ÎÍÆÎ̤ò±Û¤¨¤Æ¤¤
- ¤Æ¤Ï¤Ê¤é¤Ê¤¤¡¥
+ 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()
- Í×ÁǤ¬0¤ÎÇÛÎó¤òÀ¸À®¤¹¤ë¡¥lenÍ×ÁÇʬ¤ÎÎΰè¤ò¤¢¤é¤«¤¸¤á³ä¤ê
- Åö¤Æ¤Æ¤ª¤¯¡¥
+ è¦ç´ ãŒ0ã®é…列を生æˆã™ã‚‹ï¼Ž
- rb_ary_new3(long n, ...)
+rb_ary_new2(long len)
+rb_ary_new_capa(long len)
- °ú¿ô¤Ç»ØÄꤷ¤¿nÍ×ÁǤò´Þ¤àÇÛÎó¤òÀ¸À®¤¹¤ë¡¥
+ è¦ç´ ãŒ0ã®é…列を生æˆã™ã‚‹ï¼Žlenè¦ç´ åˆ†ã®é ˜åŸŸã‚’ã‚らã‹ã˜ã‚割り
+ 当ã¦ã¦ãŠã.
- rb_ary_new4(long n, VALUE *elts)
+rb_ary_new3(long n, ...)
+rb_ary_new_from_args(long n, ...)
- ÇÛÎó¤ÇÍ¿¤¨¤¿nÍ×ÁǤÎÇÛÎó¤òÀ¸À®¤¹¤ë¡¥
+ å¼•æ•°ã§æŒ‡å®šã—ãŸnè¦ç´ ã‚’å«ã‚€é…列を生æˆã™ã‚‹ï¼Ž
- rb_ary_to_ary(VALUE obj)
+rb_ary_new4(long n, VALUE *elts)
+rb_ary_new_from_values(long n, VALUE *elts)
- ¥ª¥Ö¥¸¥§¥¯¥È¤òÇÛÎó¤ËÊÑ´¹¤¹¤ë.
- Object#to_ary¤ÈƱÅù¤Ç¤¢¤ë.
+ é…列ã§ä¸ŽãˆãŸnè¦ç´ ã®é…列を生æˆã™ã‚‹ï¼Ž
- ¾¤Ë¤âÇÛÎó¤òÁàºî¤¹¤ë´Ø¿ô¤¬Â¿¿ô¤¢¤ë. ¤³¤ì¤é¤Ï
- °ú¿ôary¤ËÇÛÎó¤òÅϤµ¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤. ¤µ¤â¤Ê¤¤¤È
- ¥³¥¢¤òÅǤ¯.
+rb_ary_to_ary(VALUE obj)
- rb_ary_aref(argc, VALUE *argv, VALUE ary)
+ オブジェクトをé…列ã«å¤‰æ›ã™ã‚‹.
+ Object#to_aryã¨åŒç­‰ã§ã‚ã‚‹.
- Array#[]¤ÈƱÅù.
+ä»–ã«ã‚‚é…列をæ“作ã™ã‚‹é–¢æ•°ãŒå¤šæ•°ã‚ã‚‹. ã“れらã¯
+引数aryã«é…列を渡ã•ãªã‘れã°ãªã‚‰ãªã„. ã•ã‚‚ãªã„ã¨
+コアをåã.
- rb_ary_entry(VALUE ary, long offset)
+rb_ary_aref(argc, VALUE *argv, VALUE ary)
- ary[offset]
+ Array#[]ã¨åŒç­‰.
- rb_ary_subseq(VALUE ary, long beg, long len)
+rb_ary_entry(VALUE ary, long offset)
- ary[beg, len]
+ ary[offset]
- 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_store(VALUE ary, long offset, VALUE obj) ::
-2¡¥Ruby¤Îµ¡Ç½¤ò»È¤¦
+ ary[offset] = obj
-¸¶ÍýŪ¤ËRuby¤Ç½ñ¤±¤ë¤³¤È¤ÏC¤Ç¤â½ñ¤±¤Þ¤¹¡¥Ruby¤½¤Î¤â¤Î¤¬C¤Çµ­
-½Ò¤µ¤ì¤Æ¤¤¤ë¤ó¤Ç¤¹¤«¤é¡¤ÅöÁ³¤È¤¤¤¨¤ÐÅöÁ³¤Ê¤ó¤Ç¤¹¤±¤É¡¥¤³¤³¤Ç
-¤ÏRuby¤Î³ÈÄ¥¤Ë»È¤¦¤³¤È¤¬Â¿¤¤¤À¤í¤¦¤Èͽ¬¤µ¤ì¤ëµ¡Ç½¤òÃæ¿´¤Ë¾Ò
-²ð¤·¤Þ¤¹¡¥
+rb_ary_subseq(VALUE ary, long beg, long len)
-2.1 Ruby¤Ëµ¡Ç½¤òÄɲ乤ë
+ ary[beg, len]
-Ruby¤ÇÄ󶡤µ¤ì¤Æ¤¤¤ë´Ø¿ô¤ò»È¤¨¤ÐRuby¥¤¥ó¥¿¥×¥ê¥¿¤Ë¿·¤·¤¤µ¡Ç½
-¤òÄɲ乤뤳¤È¤¬¤Ç¤­¤Þ¤¹¡¥Ruby¤Ç¤Ï°Ê²¼¤Îµ¡Ç½¤òÄɲä¹¤ë´Ø¿ô¤¬
-Ä󶡤µ¤ì¤Æ¤¤¤Þ¤¹¡¥
+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個ã®ã‚ªãƒ–ジェクトを追加ã™ã‚‹ï¼Ž
-2.1.1 ¥¯¥é¥¹/¥â¥¸¥å¡¼¥ëÄêµÁ
+= 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)
-2.1.2 ¥á¥½¥Ã¥É/ÆÃ°Û¥á¥½¥Ã¥ÉÄêµÁ
+=== メソッド/特異メソッド定義
-¥á¥½¥Ã¥É¤äÆÃ°Û¥á¥½¥Ã¥É¤òÄêµÁ¤¹¤ë¤Ë¤Ï°Ê²¼¤Î´Ø¿ô¤ò»È¤¤¤Þ¤¹¡¥
+メソッドや特異メソッドを定義ã™ã‚‹ã«ã¯ä»¥ä¸‹ã®é–¢æ•°ã‚’使ã„ã¾ã™ï¼Ž
- void rb_define_method(VALUE klass, const char *name,
- VALUE (*func)(), int argc)
+ 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)
+ void rb_define_singleton_method(VALUE object, const char *name,
+ VALUE (*func)(), int argc)
-ǰ¤Î¤¿¤áÀâÌÀ¤¹¤ë¤È¡ÖÆÃ°Û¥á¥½¥Ã¥É¡×¤È¤Ï¡¤¤½¤ÎÆÃÄê¤Î¥ª¥Ö¥¸¥§¥¯
-¥È¤ËÂФ·¤Æ¤À¤±Í­¸ú¤Ê¥á¥½¥Ã¥É¤Ç¤¹¡¥Ruby¤Ç¤Ï¤è¤¯Smalltalk¤Ë¤ª
-¤±¤ë¥¯¥é¥¹¥á¥½¥Ã¥É¤È¤·¤Æ¡¤¥¯¥é¥¹¤ËÂФ¹¤ëÆÃ°Û¥á¥½¥Ã¥É¤¬»È¤ï¤ì
-¤Þ¤¹¡¥
+念ã®ãŸã‚説明ã™ã‚‹ã¨ã€Œç‰¹ç•°ãƒ¡ã‚½ãƒƒãƒ‰ã€ã¨ã¯ï¼Œãã®ç‰¹å®šã®ã‚ªãƒ–ジェク
+トã«å¯¾ã—ã¦ã ã‘有効ãªãƒ¡ã‚½ãƒƒãƒ‰ã§ã™ï¼ŽRubyã§ã¯ã‚ˆãSmalltalkã«ãŠ
+ã‘るクラスメソッドã¨ã—ã¦ï¼Œã‚¯ãƒ©ã‚¹ã«å¯¾ã™ã‚‹ç‰¹ç•°ãƒ¡ã‚½ãƒƒãƒ‰ãŒä½¿ã‚れ
+ã¾ã™ï¼Ž
-¤³¤ì¤é¤Î´Ø¿ô¤Î argc¤È¤¤¤¦°ú¿ô¤ÏC¤Î´Ø¿ô¤ØÅϤµ¤ì¤ë°ú¿ô¤Î¿ô(¤È
-·Á¼°)¤ò·è¤á¤Þ¤¹¡¥argc¤¬0°Ê¾å¤Î»þ¤Ï´Ø¿ô¤Ë°ú¤­ÅϤ¹°ú¿ô¤Î¿ô¤ò°Õ
-Ì£¤·¤Þ¤¹¡¥16¸Ä°Ê¾å¤Î°ú¿ô¤Ï»È¤¨¤Þ¤»¤ó(¤¬¡¤Íפê¤Þ¤»¤ó¤è¤Í¡¤¤½
-¤ó¤Ê¤Ë)¡¥¼ÂºÝ¤Î´Ø¿ô¤Ë¤ÏÀèÆ¬¤Î°ú¿ô¤È¤·¤Æself¤¬Í¿¤¨¤é¤ì¤Þ¤¹¤Î
-¤Ç¡¤»ØÄꤷ¤¿¿ô¤è¤ê1¿¤¤°ú¿ô¤ò»ý¤Ä¤³¤È¤Ë¤Ê¤ê¤Þ¤¹¡¥
+ã“れらã®é–¢æ•°ã® argcã¨ã„ã†å¼•æ•°ã¯Cã®é–¢æ•°ã¸æ¸¡ã•ã‚Œã‚‹å¼•æ•°ã®æ•°(ã¨
+å½¢å¼)を決ã‚ã¾ã™ï¼ŽargcãŒ0ä»¥ä¸Šã®æ™‚ã¯é–¢æ•°ã«å¼•ãæ¸¡ã™å¼•æ•°ã®æ•°ã‚’æ„
+味ã—ã¾ã™ï¼Ž16個以上ã®å¼•æ•°ã¯ä½¿ãˆã¾ã›ã‚“(ãŒï¼Œè¦ã‚Šã¾ã›ã‚“よã­ï¼Œã
+ã‚“ãªã«).実際ã®é–¢æ•°ã«ã¯å…ˆé ­ã®å¼•æ•°ã¨ã—ã¦selfãŒä¸Žãˆã‚‰ã‚Œã¾ã™ã®
+ã§ï¼ŒæŒ‡å®šã—ãŸæ•°ã‚ˆã‚Š1多ã„引数をæŒã¤ã“ã¨ã«ãªã‚Šã¾ã™ï¼Ž
-argc¤¬Éé¤Î»þ¤Ï°ú¿ô¤Î¿ô¤Ç¤Ï¤Ê¤¯¡¤·Á¼°¤ò»ØÄꤷ¤¿¤³¤È¤Ë¤Ê¤ê¤Þ¤¹¡¥
-argc¤¬-1¤Î»þ¤Ï°ú¿ô¤òÇÛÎó¤ËÆþ¤ì¤ÆÅϤµ¤ì¤Þ¤¹¡¥argc¤¬-2¤Î»þ¤Ï°ú
-¿ô¤ÏRuby¤ÎÇÛÎó¤È¤·¤ÆÅϤµ¤ì¤Þ¤¹¡¥
+argcãŒè² ã®æ™‚ã¯å¼•æ•°ã®æ•°ã§ã¯ãªã,形å¼ã‚’指定ã—ãŸã“ã¨ã«ãªã‚Šã¾ã™ï¼Ž
+argcãŒ-1ã®æ™‚ã¯å¼•æ•°ã‚’é…列ã«å…¥ã‚Œã¦æ¸¡ã•れã¾ã™ï¼ŽargcãŒ-2ã®æ™‚ã¯å¼•
+æ•°ã¯Rubyã®é…列ã¨ã—ã¦æ¸¡ã•れã¾ã™ï¼Ž
-¥á¥½¥Ã¥É¤òÄêµÁ¤¹¤ë´Ø¿ô¤Ï¤Þ¤À¤¤¤¯¤Ä¤«¤¢¤ê¤Þ¤¹. ¤Ò¤È¤Ä¤Ï¥á¥½¥Ã¥É
-̾¤È¤·¤ÆID¤ò¼è¤ê¤Þ¤¹. ID¤Ë¤Ä¤¤¤Æ¤Ï2.2.2¤ò»²¾È.
+メソッドを定義ã™ã‚‹é–¢æ•°ã¯ã¾ã ã„ãã¤ã‹ã‚りã¾ã™. ã²ã¨ã¤ã¯ãƒ¡ã‚½ãƒƒãƒ‰
+åã¨ã—ã¦IDã‚’å–りã¾ã™. IDã«ã¤ã„ã¦ã¯2.2.2ã‚’å‚ç…§.
- void rb_define_method_id(VALUE klass, ID name,
+ void rb_define_method_id(VALUE klass, ID name,
VALUE (*func)(ANYARGS), int argc)
-private/protected¤Ê¥á¥½¥Ã¥É¤òÄêµÁ¤¹¤ë¤Õ¤¿¤Ä¤Î´Ø¿ô¤¬¤¢¤ê¤Þ¤¹.
+private/protectedãªãƒ¡ã‚½ãƒƒãƒ‰ã‚’定義ã™ã‚‹ãµãŸã¤ã®é–¢æ•°ãŒã‚りã¾ã™.
- void rb_define_private_method(VALUE klass, const char *name,
+ void rb_define_private_method(VALUE klass, const char *name,
VALUE (*func)(), int argc)
- void rb_define_protected_method(VALUE klass, const char *name,
+ void rb_define_protected_method(VALUE klass, const char *name,
VALUE (*func)(), int argc)
-private¥á¥½¥Ã¥É¤È¤Ï´Ø¿ô·Á¼°¤Ç¤·¤«¸Æ¤Ó½Ð¤¹¤³¤È¤Î½ÐÍè¤Ê¤¤¥á¥½¥Ã
-¥É¤Ç¤¹¡¥
+privateメソッドã¨ã¯é–¢æ•°å½¢å¼ã§ã—ã‹å‘¼ã³å‡ºã™ã“ã¨ã®å‡ºæ¥ãªã„メソッ
+ドã§ã™ï¼Ž
-ºÇ¸å¤Ë¡¤ rb_define_module´Ø¿ô¤Ï¥â¥¸¥å¡¼¥ë´Ø¿ô¤òÄêµÁ¤·¤Þ¤¹¡¥
-¥â¥¸¥å¡¼¥ë´Ø¿ô¤È¤Ï¥â¥¸¥å¡¼¥ë¤ÎÆÃ°Û¥á¥½¥Ã¥É¤Ç¤¢¤ê¡¤Æ±»þ¤Ë
-private¥á¥½¥Ã¥É¤Ç¤â¤¢¤ë¤â¤Î¤Ç¤¹¡¥Îã¤ò¤¢¤²¤ë¤ÈMath¥â¥¸¥å¡¼¥ë
-¤Îsqrt()¤Ê¤É¤¬¤¢¤²¤é¤ì¤Þ¤¹¡¥¤³¤Î¥á¥½¥Ã¥É¤Ï
+最後ã«ï¼Œ rb_define_module関数ã¯ãƒ¢ã‚¸ãƒ¥ãƒ¼ãƒ«é–¢æ•°ã‚’定義ã—ã¾ã™ï¼Ž
+モジュール関数ã¨ã¯ãƒ¢ã‚¸ãƒ¥ãƒ¼ãƒ«ã®ç‰¹ç•°ãƒ¡ã‚½ãƒƒãƒ‰ã§ã‚ã‚Šï¼ŒåŒæ™‚ã«
+privateメソッドã§ã‚‚ã‚ã‚‹ã‚‚ã®ã§ã™ï¼Žä¾‹ã‚’ã‚ã’ã‚‹ã¨Mathモジュール
+ã®sqrt()ãªã©ãŒã‚ã’られã¾ã™ï¼Žã“ã®ãƒ¡ã‚½ãƒƒãƒ‰ã¯
Math.sqrt(4)
-¤È¤¤¤¦·Á¼°¤Ç¤â
+ã¨ã„ã†å½¢å¼ã§ã‚‚
include Math
sqrt(4)
-¤È¤¤¤¦·Á¼°¤Ç¤â»È¤¨¤Þ¤¹¡¥¥â¥¸¥å¡¼¥ë´Ø¿ô¤òÄêµÁ¤¹¤ë´Ø¿ô¤Ï°Ê²¼¤Î
-Ä̤ê¤Ç¤¹¡¥
+ã¨ã„ã†å½¢å¼ã§ã‚‚使ãˆã¾ã™ï¼Žãƒ¢ã‚¸ãƒ¥ãƒ¼ãƒ«é–¢æ•°ã‚’定義ã™ã‚‹é–¢æ•°ã¯ä»¥ä¸‹ã®
+通りã§ã™ï¼Ž
- void rb_define_module_function(VALUE module, const char *name,
+ void rb_define_module_function(VALUE module, const char *name,
VALUE (*func)(), int argc)
-´Ø¿ôŪ¥á¥½¥Ã¥É(Kernel¥â¥¸¥å¡¼¥ë¤Îprivate method)¤òÄêµÁ¤¹¤ë¤¿
-¤á¤Î´Ø¿ô¤Ï°Ê²¼¤ÎÄ̤ê¤Ç¤¹¡¥
+関数的メソッド(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¤òÄêµÁ¤·¤¿¤êºï½ü¤·¤¿¤ê¤¹¤ë¤¿¤á¤Î´Ø¿ô¤Ï
-°Ê²¼¤ÎÄ̤ê¤Ç¤¹¡¥
+クラスメソッドallocateを定義ã—ãŸã‚Šå‰Šé™¤ã—ãŸã‚Šã™ã‚‹ãŸã‚ã®é–¢æ•°ã¯
+以下ã®é€šã‚Šã§ã™ï¼Ž
void rb_define_alloc_func(VALUE klass, VALUE (*func)(VALUE klass));
void rb_undef_alloc_func(VALUE klass);
-func¤Ï¥¯¥é¥¹¤ò°ú¿ô¤È¤·¤Æ¼õ¤±¼è¤Ã¤Æ¡¤¿·¤·¤¯³ä¤êÅö¤Æ¤é¤ì¤¿¥¤¥ó
-¥¹¥¿¥ó¥¹¤òÊÖ¤µ¤Ê¤¯¤Æ¤Ï¤Ê¤ê¤Þ¤»¤ó¡¥¤³¤Î¥¤¥ó¥¹¥¿¥ó¥¹¤Ï¡¤³°Éô¥ê
-¥½¡¼¥¹¤Ê¤É¤ò´Þ¤Þ¤Ê¤¤¡¤¤Ç¤­¤ë¤À¤±¡Ö¶õ¡×¤Î¤Þ¤Þ¤Ë¤·¤Æ¤ª¤¤¤¿¤Û¤¦
-¤¬¤è¤¤¤Ç¤·¤ç¤¦¡¥
+funcã¯ã‚¯ãƒ©ã‚¹ã‚’引数ã¨ã—ã¦å—ã‘å–ã£ã¦ï¼Œæ–°ã—ã割り当ã¦ã‚‰ã‚ŒãŸã‚¤ãƒ³
+スタンスを返ã•ãªãã¦ã¯ãªã‚Šã¾ã›ã‚“.ã“ã®ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ã¯ï¼Œå¤–部リ
+ソースãªã©ã‚’å«ã¾ãªã„,ã§ãã‚‹ã ã‘「空ã€ã®ã¾ã¾ã«ã—ã¦ãŠã„ãŸã»ã†
+ãŒã‚ˆã„ã§ã—ょã†ï¼Ž
-2.1.3 Äê¿ôÄêµÁ
+=== 定数定義
-³ÈÄ¥¥é¥¤¥Ö¥é¥ê¤¬É¬ÍפÊÄê¿ô¤Ï¤¢¤é¤«¤¸¤áÄêµÁ¤·¤Æ¤ª¤¤¤¿Êý¤¬Îɤ¤
-¤Ç¤·¤ç¤¦¡¥Äê¿ô¤òÄêµÁ¤¹¤ë´Ø¿ô¤ÏÆó¤Ä¤¢¤ê¤Þ¤¹¡¥
+拡張ライブラリãŒå¿…è¦ãªå®šæ•°ã¯ã‚らã‹ã˜ã‚定義ã—ã¦ãŠã„ãŸæ–¹ãŒè‰¯ã„
+ã§ã—ょã†ï¼Žå®šæ•°ã‚’定義ã™ã‚‹é–¢æ•°ã¯äºŒã¤ã‚りã¾ã™ï¼Ž
void rb_define_const(VALUE klass, const char *name, VALUE val)
void rb_define_global_const(const char *name, VALUE val)
-Á°¼Ô¤ÏÆÃÄê¤Î¥¯¥é¥¹/¥â¥¸¥å¡¼¥ë¤Ë°¤¹¤ëÄê¿ô¤òÄêµÁ¤¹¤ë¤â¤Î¡¤¸å
-¼Ô¤Ï¥°¥í¡¼¥Ð¥ë¤ÊÄê¿ô¤òÄêµÁ¤¹¤ë¤â¤Î¤Ç¤¹¡¥
+å‰è€…ã¯ç‰¹å®šã®ã‚¯ãƒ©ã‚¹/モジュールã«å±žã™ã‚‹å®šæ•°ã‚’定義ã™ã‚‹ã‚‚ã®ï¼Œå¾Œ
+者ã¯ã‚°ãƒ­ãƒ¼ãƒãƒ«ãªå®šæ•°ã‚’定義ã™ã‚‹ã‚‚ã®ã§ã™ï¼Ž
-2.2 Ruby¤Îµ¡Ç½¤òC¤«¤é¸Æ¤Ó½Ð¤¹
+== Rubyã®æ©Ÿèƒ½ã‚’Cã‹ã‚‰å‘¼ã³å‡ºã™
-´û¤Ë¡Ø1.5 Ruby¤Î¥Ç¡¼¥¿¤òÁàºî¤¹¤ë¡Ù¤Ç°ìÉô¾Ò²ð¤·¤¿¤è¤¦¤Ê´Ø¿ô¤ò
-»È¤¨¤Ð¡¤Ruby¤Îµ¡Ç½¤ò¼Â¸½¤·¤Æ¤¤¤ë´Ø¿ô¤òľÀܸƤӽФ¹¤³¤È¤¬½ÐÍè
-¤Þ¤¹¡¥
+æ—¢ã«ã€Ž1.5 Rubyã®ãƒ‡ãƒ¼ã‚¿ã‚’æ“作ã™ã‚‹ã€ã§ä¸€éƒ¨ç´¹ä»‹ã—ãŸã‚ˆã†ãªé–¢æ•°ã‚’
+使ãˆã°ï¼ŒRubyã®æ©Ÿèƒ½ã‚’実ç¾ã—ã¦ã„る関数を直接呼ã³å‡ºã™ã“ã¨ãŒå‡ºæ¥
+ã¾ã™ï¼Ž
-# ¤³¤Î¤è¤¦¤Ê´Ø¿ô¤Î°ìÍ÷ɽ¤Ï¤¤¤Þ¤Î¤È¤³¤í¤¢¤ê¤Þ¤»¤ó¡¥¥½¡¼¥¹¤ò¸«
-# ¤ë¤·¤«¤Ê¤¤¤Ç¤¹¤Í¡¥
+# ã“ã®ã‚ˆã†ãªé–¢æ•°ã®ä¸€è¦§è¡¨ã¯ã„ã¾ã®ã¨ã“ã‚ã‚りã¾ã›ã‚“.ソースを見
+# ã‚‹ã—ã‹ãªã„ã§ã™ã­ï¼Ž
-¤½¤ì°Ê³°¤Ë¤âRuby¤Îµ¡Ç½¤ò¸Æ¤Ó½Ð¤¹ÊýË¡¤Ï¤¤¤¯¤Ä¤«¤¢¤ê¤Þ¤¹¡¥
+ãれ以外ã«ã‚‚Rubyã®æ©Ÿèƒ½ã‚’呼ã³å‡ºã™æ–¹æ³•ã¯ã„ãã¤ã‹ã‚りã¾ã™ï¼Ž
-2.2.1 Ruby¤Î¥×¥í¥°¥é¥à¤òeval¤¹¤ë
+=== Rubyã®ãƒ—ログラムをevalã™ã‚‹
-C¤«¤éRuby¤Îµ¡Ç½¤ò¸Æ¤Ó½Ð¤¹¤â¤Ã¤È¤â´Êñ¤ÊÊýË¡¤È¤·¤Æ¡¤Ê¸»úÎó¤Ç
-Í¿¤¨¤é¤ì¤¿Ruby¤Î¥×¥í¥°¥é¥à¤òɾ²Á¤¹¤ë°Ê²¼¤Î´Ø¿ô¤¬¤¢¤ê¤Þ¤¹¡¥
+Cã‹ã‚‰Rubyã®æ©Ÿèƒ½ã‚’呼ã³å‡ºã™ã‚‚ã£ã¨ã‚‚ç°¡å˜ãªæ–¹æ³•ã¨ã—ã¦ï¼Œæ–‡å­—列ã§
+与ãˆã‚‰ã‚ŒãŸRubyã®ãƒ—ログラムを評価ã™ã‚‹ä»¥ä¸‹ã®é–¢æ•°ãŒã‚りã¾ã™ï¼Ž
VALUE rb_eval_string(const char *str)
-¤³¤Îɾ²Á¤Ï¸½ºß¤Î´Ä¶­¤Ç¹Ô¤ï¤ì¤Þ¤¹¡¥¤Ä¤Þ¤ê¡¤¸½ºß¤Î¥í¡¼¥«¥ëÊÑ¿ô
-¤Ê¤É¤ò¼õ¤±·Ñ¤®¤Þ¤¹¡¥
+ã“ã®è©•価ã¯ç¾åœ¨ã®ç’°å¢ƒã§è¡Œã‚れã¾ã™ï¼Žã¤ã¾ã‚Šï¼Œç¾åœ¨ã®ãƒ­ãƒ¼ã‚«ãƒ«å¤‰æ•°
+ãªã©ã‚’å—ã‘ç¶™ãŽã¾ã™ï¼Ž
-ɾ²Á¤ÏÎã³°¤òȯÀ¸¤¹¤ë¤«¤â¤·¤ì¤Ê¤¤¤³¤È¤ËÃí°Õ¤·¤Þ¤·¤ç¤¦. ¤è¤ê°ÂÁ´
-¤Ê´Ø¿ô¤â¤¢¤ê¤Þ¤¹.
+評価ã¯ä¾‹å¤–を発生ã™ã‚‹ã‹ã‚‚ã—れãªã„ã“ã¨ã«æ³¨æ„ã—ã¾ã—ょã†. より安全
+ãªé–¢æ•°ã‚‚ã‚りã¾ã™.
VALUE rb_eval_string_protect(const char *str, int *state)
-¤³¤Î´Ø¿ô¤Ï¥¨¥é¡¼¤¬È¯À¸¤¹¤ë¤Ènil¤òÊÖ¤·¤Þ¤¹¡¥¤½¤·¤Æ¡¤À®¸ù»þ¤Ë¤Ï
-*state¤Ï¥¼¥í¤Ë¡¤¤µ¤â¤Ê¤¯¤ÐÈó¥¼¥í¤Ë¤Ê¤ê¤Þ¤¹¡¥
+ã“ã®é–¢æ•°ã¯ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã™ã‚‹ã¨nilã‚’è¿”ã—ã¾ã™ï¼Žãã—ã¦ï¼ŒæˆåŠŸæ™‚ã«ã¯
+*stateã¯ã‚¼ãƒ­ã«ï¼Œã•ã‚‚ãªãã°éžã‚¼ãƒ­ã«ãªã‚Šã¾ã™ï¼Ž
+=== IDã¾ãŸã¯ã‚·ãƒ³ãƒœãƒ«
-2.2.2 ID¤Þ¤¿¤Ï¥·¥ó¥Ü¥ë
+Cã‹ã‚‰æ–‡å­—列を経由ã›ãšã«Rubyã®ãƒ¡ã‚½ãƒƒãƒ‰ã‚’呼ã³å‡ºã™ã“ã¨ã‚‚ã§ãã¾
+ã™ï¼Žãã®å‰ã«ï¼ŒRubyインタプリタ内ã§ãƒ¡ã‚½ãƒƒãƒ‰ã‚„変数åを指定ã™ã‚‹
+時ã«ä½¿ã‚れã¦ã„ã‚‹IDã«ã¤ã„ã¦èª¬æ˜Žã—ã¦ãŠãã¾ã—ょã†ï¼Ž
-C¤«¤éʸ»úÎó¤ò·Ðͳ¤»¤º¤ËRuby¤Î¥á¥½¥Ã¥É¤ò¸Æ¤Ó½Ð¤¹¤³¤È¤â¤Ç¤­¤Þ
-¤¹¡¥¤½¤ÎÁ°¤Ë¡¤Ruby¥¤¥ó¥¿¥×¥ê¥¿Æâ¤Ç¥á¥½¥Ã¥É¤äÊÑ¿ô̾¤ò»ØÄꤹ¤ë
-»þ¤Ë»È¤ï¤ì¤Æ¤¤¤ëID¤Ë¤Ä¤¤¤ÆÀâÌÀ¤·¤Æ¤ª¤­¤Þ¤·¤ç¤¦¡¥
+IDã¨ã¯å¤‰æ•°å,メソッドåã‚’è¡¨ã™æ•´æ•°ã§ã™ï¼ŽRubyã®ä¸­ã§ã¯
-ID¤È¤ÏÊÑ¿ô̾¡¤¥á¥½¥Ã¥É̾¤òɽ¤¹À°¿ô¤Ç¤¹¡¥Ruby¤ÎÃæ¤Ç¤Ï
+ :識別å­
- :¼±ÊÌ»Ò
-¤Þ¤¿¤Ï
- :"Ǥ°Õ¤Îʸ»úÎó"
+ã¾ãŸã¯
-¤Ç¥¢¥¯¥»¥¹¤Ç¤­¤Þ¤¹¡¥C¤«¤é¤³¤ÎÀ°¿ô¤òÆÀ¤ë¤¿¤á¤Ë¤Ï´Ø¿ô
+ :"ä»»æ„ã®æ–‡å­—列"
+
+ã§ã‚¢ã‚¯ã‚»ã‚¹ã§ãã¾ã™ï¼ŽCã‹ã‚‰ã“ã®æ•´æ•°ã‚’å¾—ã‚‹ãŸã‚ã«ã¯é–¢æ•°
rb_intern(const char *name)
+ rb_intern_str(VALUE name)
-¤ò»È¤¤¤Þ¤¹¡¥Ruby¤«¤é°ú¿ô¤È¤·¤ÆÍ¿¤¨¤é¤ì¤¿¥·¥ó¥Ü¥ë(¤Þ¤¿¤Ïʸ»ú
-Îó)¤òID¤ËÊÑ´¹¤¹¤ë¤Ë¤Ï°Ê²¼¤Î´Ø¿ô¤ò»È¤¤¤Þ¤¹¡¥
+を使ã„ã¾ã™ï¼Ž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ã®æ–‡å­—列を使ã„ã¾ã™ï¼Ž
-2.2.3 C¤«¤éRuby¤Î¥á¥½¥Ã¥É¤ò¸Æ¤Ó½Ð¤¹
+=== Cã‹ã‚‰Rubyã®ãƒ¡ã‚½ãƒƒãƒ‰ã‚’呼ã³å‡ºã™
-C¤«¤éʸ»úÎó¤ò·Ðͳ¤»¤º¤ËRuby¤Î¥á¥½¥Ã¥É¤ò¸Æ¤Ó½Ð¤¹¤¿¤á¤Ë¤Ï°Ê²¼
-¤Î´Ø¿ô¤ò»È¤¤¤Þ¤¹¡¥
+Cã‹ã‚‰æ–‡å­—列を経由ã›ãšã«Rubyã®ãƒ¡ã‚½ãƒƒãƒ‰ã‚’呼ã³å‡ºã™ãŸã‚ã«ã¯ä»¥ä¸‹
+ã®é–¢æ•°ã‚’使ã„ã¾ã™ï¼Ž
VALUE rb_funcall(VALUE recv, ID mid, int argc, ...)
-¤³¤Î´Ø¿ô¤Ï¥ª¥Ö¥¸¥§¥¯¥Èrecv¤Îmid¤Ç»ØÄꤵ¤ì¤ë¥á¥½¥Ã¥É¤ò¸Æ¤Ó½Ð
-¤·¤Þ¤¹¡¥¤½¤Î¾¤Ë°ú¿ô¤Î»ØÄê¤Î»ÅÊý¤¬°ã¤¦°Ê²¼¤Î´Ø¿ô¤â¤¢¤ê¤Þ¤¹¡¥
+ã“ã®é–¢æ•°ã¯ã‚ªãƒ–ジェクト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¤ÎÇÛÎó¤òÍ¿¤¨¤Þ¤¹¡¥
+applyã«ã¯å¼•æ•°ã¨ã—ã¦Rubyã®é…列を与ãˆã¾ã™ï¼Ž
-2.2.4 ÊÑ¿ô/Äê¿ô¤ò»²¾È/¹¹¿·¤¹¤ë
+=== 変数/定数をå‚ç…§/æ›´æ–°ã™ã‚‹
-C¤«¤é´Ø¿ô¤ò»È¤Ã¤Æ»²¾È¡¦¹¹¿·¤Ç¤­¤ë¤Î¤Ï¡¤Äê¿ô¡¤¥¤¥ó¥¹¥¿¥ó¥¹ÊÑ
-¿ô¤Ç¤¹¡¥Âç°èÊÑ¿ô¤Ï°ìÉô¤Î¤â¤Î¤ÏC¤ÎÂç°èÊÑ¿ô¤È¤·¤Æ¥¢¥¯¥»¥¹¤Ç¤­
-¤Þ¤¹¡¥¥í¡¼¥«¥ëÊÑ¿ô¤ò»²¾È¤¹¤ëÊýË¡¤Ï¸ø³«¤·¤Æ¤¤¤Þ¤»¤ó¡¥
+Cã‹ã‚‰é–¢æ•°ã‚’使ã£ã¦å‚照・更新ã§ãã‚‹ã®ã¯ï¼Œå®šæ•°ï¼Œã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹å¤‰
+æ•°ã§ã™ï¼Žå¤§åŸŸå¤‰æ•°ã¯ä¸€éƒ¨ã®ã‚‚ã®ã¯Cã®å¤§åŸŸå¤‰æ•°ã¨ã—ã¦ã‚¢ã‚¯ã‚»ã‚¹ã§ã
+ã¾ã™ï¼Žãƒ­ãƒ¼ã‚«ãƒ«å¤‰æ•°ã‚’å‚ç…§ã™ã‚‹æ–¹æ³•ã¯å…¬é–‹ã—ã¦ã„ã¾ã›ã‚“.
-¥ª¥Ö¥¸¥§¥¯¥È¤Î¥¤¥ó¥¹¥¿¥ó¥¹ÊÑ¿ô¤ò»²¾È¡¦¹¹¿·¤¹¤ë´Ø¿ô¤Ï°Ê²¼¤ÎÄÌ
-¤ê¤Ç¤¹¡¥
+オブジェクトã®ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹å¤‰æ•°ã‚’å‚照・更新ã™ã‚‹é–¢æ•°ã¯ä»¥ä¸‹ã®é€š
+りã§ã™ï¼Ž
VALUE rb_ivar_get(VALUE obj, ID id)
VALUE rb_ivar_set(VALUE obj, ID id, VALUE val)
-id¤Ïrb_intern()¤ÇÆÀ¤é¤ì¤ë¤â¤Î¤ò»È¤Ã¤Æ¤¯¤À¤µ¤¤¡¥
+idã¯rb_intern()ã§å¾—られるもã®ã‚’使ã£ã¦ãã ã•ã„.
-Äê¿ô¤ò»²¾È¤¹¤ë¤Ë¤Ï°Ê²¼¤Î´Ø¿ô¤ò»È¤Ã¤Æ¤¯¤À¤µ¤¤¡¥
+定数をå‚ç…§ã™ã‚‹ã«ã¯ä»¥ä¸‹ã®é–¢æ•°ã‚’使ã£ã¦ãã ã•ã„.
VALUE rb_const_get(VALUE obj, ID id)
-Äê¿ô¤ò¿·¤·¤¯ÄêµÁ¤¹¤ë¤¿¤á¤Ë¤Ï¡Ø2.1.3 Äê¿ôÄêµÁ¡Ù¤Ç¾Ò²ð¤µ
-¤ì¤Æ¤¤¤ë´Ø¿ô¤ò»È¤Ã¤Æ¤¯¤À¤µ¤¤¡¥
+定数を新ã—ã定義ã™ã‚‹ãŸã‚ã«ã¯ã€Ž2.1.3 定数定義ã€ã§ç´¹ä»‹ã•
+れã¦ã„る関数を使ã£ã¦ãã ã•ã„.
-3¡¥Ruby¤ÈC¤È¤Î¾ðÊó¶¦Í­
+= Rubyã¨Cã¨ã®æƒ…報共有
-C¸À¸ì¤ÈRuby¤Î´Ö¤Ç¾ðÊó¤ò¶¦Í­¤¹¤ëÊýË¡¤Ë¤Ä¤¤¤Æ²òÀ⤷¤Þ¤¹¡¥
+C言語ã¨Rubyã®é–“ã§æƒ…報を共有ã™ã‚‹æ–¹æ³•ã«ã¤ã„ã¦è§£èª¬ã—ã¾ã™ï¼Ž
-3.1 C¤«¤é»²¾È¤Ç¤­¤ëRuby¤ÎÄê¿ô
+== Cã‹ã‚‰å‚ç…§ã§ãã‚‹Rubyã®å®šæ•°
-°Ê²¼¤ÎRuby¤ÎÄê¿ô¤ÏC¤Î¥ì¥Ù¥ë¤«¤é»²¾È¤Ç¤­¤Þ¤¹¡¥
+以下ã®Rubyã®å®šæ•°ã¯Cã®ãƒ¬ãƒ™ãƒ«ã‹ã‚‰å‚ç…§ã§ãã¾ã™ï¼Ž
Qtrue
Qfalse
- ¿¿µ¶ÃÍ¡¥Qfalse¤ÏC¸À¸ì¤Ç¤âµ¶¤È¤ß¤Ê¤µ¤ì¤Þ¤¹(¤Ä¤Þ¤ê0)¡¥
+真å½å€¤ï¼ŽQfalseã¯C言語ã§ã‚‚å½ã¨ã¿ãªã•れã¾ã™(ã¤ã¾ã‚Š0).
Qnil
- C¸À¸ì¤«¤é¸«¤¿¡Önil¡×¡¥
+C言語ã‹ã‚‰è¦‹ãŸã€Œnilã€ï¼Ž
-3.2 C¤ÈRuby¤Ç¶¦Í­¤µ¤ì¤ëÂç°èÊÑ¿ô
+== Cã¨Rubyã§å…±æœ‰ã•れる大域変数
-C¤ÈRuby¤ÇÂç°èÊÑ¿ô¤ò»È¤Ã¤Æ¾ðÊó¤ò¶¦Í­¤Ç¤­¤Þ¤¹¡¥¶¦Í­¤Ç¤­¤ëÂç°è
-ÊÑ¿ô¤Ë¤Ï¤¤¤¯¤Ä¤«¤Î¼ïÎब¤¢¤ê¤Þ¤¹¡¥¤½¤Î¤Ê¤«¤Ç¤â¤Ã¤È¤âÎɤ¯»È¤ï
-¤ì¤ë¤È»×¤ï¤ì¤ë¤Î¤Ïrb_define_variable()¤Ç¤¹¡¥
+Cã¨Rubyã§å¤§åŸŸå¤‰æ•°ã‚’使ã£ã¦æƒ…報を共有ã§ãã¾ã™ï¼Žå…±æœ‰ã§ãる大域
+変数ã«ã¯ã„ãã¤ã‹ã®ç¨®é¡žãŒã‚りã¾ã™ï¼Žãã®ãªã‹ã§ã‚‚ã£ã¨ã‚‚良ã使ã‚
+ã‚Œã‚‹ã¨æ€ã‚れるã®ã¯rb_define_variable()ã§ã™ï¼Ž
void rb_define_variable(const char *name, VALUE *var)
-¤³¤Î´Ø¿ô¤ÏRuby¤ÈC¤È¤Ç¶¦Í­¤¹¤ëÂç°èÊÑ¿ô¤òÄêµÁ¤·¤Þ¤¹¡¥ÊÑ¿ô̾¤¬
-`$'¤Ç»Ï¤Þ¤é¤Ê¤¤»þ¤Ë¤Ï¼«Æ°Åª¤ËÄɲ䵤ì¤Þ¤¹¡¥¤³¤ÎÊÑ¿ô¤ÎÃͤòÊÑ
-¹¹¤¹¤ë¤È¼«Æ°Åª¤ËRuby¤ÎÂбþ¤¹¤ëÊÑ¿ô¤ÎÃͤâÊѤï¤ê¤Þ¤¹¡¥
+ã“ã®é–¢æ•°ã¯Rubyã¨Cã¨ã§å…±æœ‰ã™ã‚‹å¤§åŸŸå¤‰æ•°ã‚’定義ã—ã¾ã™ï¼Žå¤‰æ•°åãŒ
+`$'ã§å§‹ã¾ã‚‰ãªã„時ã«ã¯è‡ªå‹•çš„ã«è¿½åŠ ã•れã¾ã™ï¼Žã“ã®å¤‰æ•°ã®å€¤ã‚’変
+æ›´ã™ã‚‹ã¨è‡ªå‹•çš„ã«Rubyã®å¯¾å¿œã™ã‚‹å¤‰æ•°ã®å€¤ã‚‚変ã‚りã¾ã™ï¼Ž
-¤Þ¤¿Ruby¦¤«¤é¤Ï¹¹¿·¤Ç¤­¤Ê¤¤ÊÑ¿ô¤â¤¢¤ê¤Þ¤¹¡¥¤³¤Îread only¤Î
-ÊÑ¿ô¤Ï°Ê²¼¤Î´Ø¿ô¤ÇÄêµÁ¤·¤Þ¤¹¡¥
+ã¾ãŸRubyå´ã‹ã‚‰ã¯æ›´æ–°ã§ããªã„変数もã‚りã¾ã™ï¼Žã“ã®read onlyã®
+変数ã¯ä»¥ä¸‹ã®é–¢æ•°ã§å®šç¾©ã—ã¾ã™ï¼Ž
void rb_define_readonly_variable(const char *name, VALUE *var)
-¤³¤ì¤éÊÑ¿ô¤Î¾¤Ëhook¤ò¤Ä¤±¤¿Âç°èÊÑ¿ô¤òÄêµÁ¤Ç¤­¤Þ¤¹¡¥hookÉÕ¤­
-¤ÎÂç°èÊÑ¿ô¤Ï°Ê²¼¤Î´Ø¿ô¤òÍѤ¤¤ÆÄêµÁ¤·¤Þ¤¹¡¥hookÉÕ¤­Âç°èÊÑ¿ô¤Î
-Ãͤλ²¾È¤äÀßÄê¤Ïhook¤Ç¹Ô¤¦É¬Íפ¬¤¢¤ê¤Þ¤¹¡¥
+ã“れら変数ã®ä»–ã«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()¤ÈƱ¤¸¤Ë¤Ê¤ë¡¥
+ã“ã®é–¢æ•°ã¯Cã®é–¢æ•°ã«ã‚ˆã£ã¦hookã®ã¤ã‘られãŸå¤§åŸŸå¤‰æ•°ã‚’定義ã—ã¾
+ã™ï¼Žå¤‰æ•°ãŒå‚ç…§ã•ã‚ŒãŸæ™‚ã«ã¯é–¢æ•°getterãŒï¼Œå¤‰æ•°ã«å€¤ãŒã‚»ãƒƒãƒˆã•れ
+ãŸæ™‚ã«ã¯é–¢æ•°setterãŒå‘¼ã°ã‚Œã‚‹ï¼Žhookを指定ã—ãªã„å ´åˆã¯getterã‚„
+setterã«0を指定ã—ã¾ã™ï¼Ž
+# getterã‚‚setterã‚‚0ãªã‚‰ã°rb_define_variable()ã¨åŒã˜ã«ãªã‚‹ï¼Ž
-getter¤Èsetter¤Î»ÅÍͤϼ¡¤ÎÄ̤ê¤Ç¤¹¡¥
+getterã¨setterã®ä»•æ§˜ã¯æ¬¡ã®é€šã‚Šã§ã™ï¼Ž
VALUE (*getter)(ID id, VALUE *var);
void (*setter)(VALUE val, ID id, VALUE *var);
-¤½¤ì¤«¤é¡¤Âбþ¤¹¤ëC¤ÎÊÑ¿ô¤ò»ý¤¿¤Ê¤¤Ruby¤ÎÂç°èÊÑ¿ô¤òÄêµÁ¤¹¤ë
-¤³¤È¤â¤Ç¤­¤Þ¤¹. ¤½¤ÎÊÑ¿ô¤ÎÃͤϥե寴ؿô¤Î¤ß¤Ë¤è¤Ã¤Æ¼èÆÀ¡¦ÀßÄê
-¤µ¤ì¤Þ¤¹.
+ãれã‹ã‚‰ï¼Œå¯¾å¿œã™ã‚‹Cã®å¤‰æ•°ã‚’æŒãŸãªã„Rubyã®å¤§åŸŸå¤‰æ•°ã‚’定義ã™ã‚‹
+ã“ã¨ã‚‚ã§ãã¾ã™. ãã®å¤‰æ•°ã®å€¤ã¯ãƒ•ック関数ã®ã¿ã«ã‚ˆã£ã¦å–得・設定
+ã•れã¾ã™.
void rb_define_virtual_variable(const char *name,
VALUE (*getter)(), void (*setter)())
-¤³¤Î´Ø¿ô¤Ë¤è¤Ã¤ÆÄêµÁ¤µ¤ì¤¿Ruby¤ÎÂç°èÊÑ¿ô¤¬»²¾È¤µ¤ì¤¿»þ¤Ë¤Ï
-getter¤¬¡¤ÊÑ¿ô¤ËÃͤ¬¥»¥Ã¥È¤µ¤ì¤¿»þ¤Ë¤Ïsetter¤¬¸Æ¤Ð¤ì¤Þ¤¹¡¥
+ã“ã®é–¢æ•°ã«ã‚ˆã£ã¦å®šç¾©ã•れãŸRubyã®å¤§åŸŸå¤‰æ•°ãŒå‚ç…§ã•ã‚ŒãŸæ™‚ã«ã¯
+getterãŒï¼Œå¤‰æ•°ã«å€¤ãŒã‚»ãƒƒãƒˆã•ã‚ŒãŸæ™‚ã«ã¯setterãŒå‘¼ã°ã‚Œã¾ã™ï¼Ž
-getter¤Èsetter¤Î»ÅÍͤϰʲ¼¤ÎÄ̤ê¤Ç¤¹¡¥
+getterã¨setterã®ä»•様ã¯ä»¥ä¸‹ã®é€šã‚Šã§ã™ï¼Ž
(*getter)(ID id);
(*setter)(VALUE val, ID id);
-3.3 C¤Î¥Ç¡¼¥¿¤òRuby¥ª¥Ö¥¸¥§¥¯¥È¤Ë¤¹¤ë
+== Cã®ãƒ‡ãƒ¼ã‚¿ã‚’Rubyオブジェクトã«ã™ã‚‹
-C¤ÎÀ¤³¦¤ÇÄêµÁ¤µ¤ì¤¿¥Ç¡¼¥¿(¹½Â¤ÂÎ)¤òRuby¤Î¥ª¥Ö¥¸¥§¥¯¥È¤È¤·¤Æ
-¼è¤ê°·¤¤¤¿¤¤¾ì¹ç¤¬¤¢¤ê¤¨¤Þ¤¹¡¥¤³¤Î¤è¤¦¤Ê¾ì¹ç¤Ë¤Ï¡¤Data¤È¤¤¤¦
-Ruby¥ª¥Ö¥¸¥§¥¯¥È¤ËC¤Î¹½Â¤ÂÎ(¤Ø¤Î¥Ý¥¤¥ó¥¿)¤ò¤¯¤ë¤à¤³¤È¤ÇRuby
-¥ª¥Ö¥¸¥§¥¯¥È¤È¤·¤Æ¼è¤ê°·¤¨¤ë¤è¤¦¤Ë¤Ê¤ê¤Þ¤¹¡¥
+Cã®ä¸–界ã§å®šç¾©ã•れãŸãƒ‡ãƒ¼ã‚¿(構造体)ã‚’Rubyã®ã‚ªãƒ–ジェクトã¨ã—ã¦
+å–り扱ã„ãŸã„å ´åˆãŒã‚りãˆã¾ã™ï¼Žã“ã®ã‚ˆã†ãªå ´åˆã«ã¯ï¼ŒDataã¨ã„ã†
+Rubyオブジェクトã«Cã®æ§‹é€ ä½“(ã¸ã®ãƒã‚¤ãƒ³ã‚¿)ã‚’ãã‚‹ã‚€ã“ã¨ã§Ruby
+オブジェクトã¨ã—ã¦å–り扱ãˆã‚‹ã‚ˆã†ã«ãªã‚Šã¾ã™ï¼Ž
-Data¥ª¥Ö¥¸¥§¥¯¥È¤òÀ¸À®¤·¤Æ¹½Â¤ÂΤòRuby¥ª¥Ö¥¸¥§¥¯¥È¤Ë¥«¥×¥»¥ë
-²½¤¹¤ë¤¿¤á¤Ë¤Ï¡¤°Ê²¼¤Î¥Þ¥¯¥í¤ò»È¤¤¤Þ¤¹¡¥
+Dataオブジェクトを生æˆã—ã¦æ§‹é€ ä½“ã‚’Rubyオブジェクトã«ã‚«ãƒ—セル
+化ã™ã‚‹ãŸã‚ã«ã¯ï¼Œä»¥ä¸‹ã®ãƒžã‚¯ãƒ­ã‚’使ã„ã¾ã™ï¼Ž
- Data_Wrap_Struct(klass, mark, free, ptr)
+ Data_Wrap_Struct(klass, mark, free, sval)
-¤³¤Î¥Þ¥¯¥í¤ÎÌá¤êÃͤÏÀ¸À®¤µ¤ì¤¿Data¥ª¥Ö¥¸¥§¥¯¥È¤Ç¤¹¡¥
+ã“ã®ãƒžã‚¯ãƒ­ã®æˆ»ã‚Šå€¤ã¯ç”Ÿæˆã•れãŸDataオブジェクトã§ã™ï¼Ž
-klass¤Ï¤³¤ÎData¥ª¥Ö¥¸¥§¥¯¥È¤Î¥¯¥é¥¹¤Ç¤¹¡¥ptr¤Ï¥«¥×¥»¥ë²½¤¹¤ë
-C¤Î¹½Â¤ÂΤؤΥݥ¤¥ó¥¿¤Ç¤¹¡¥mark¤Ï¤³¤Î¹½Â¤ÂΤ¬Ruby¤Î¥ª¥Ö¥¸¥§
-¥¯¥È¤Ø¤Î»²¾È¤¬¤¢¤ë»þ¤Ë»È¤¦´Ø¿ô¤Ç¤¹¡¥¤½¤Î¤è¤¦¤Ê»²¾È¤ò´Þ¤Þ¤Ê¤¤
-»þ¤Ë¤Ï0¤ò»ØÄꤷ¤Þ¤¹¡¥
+klassã¯ã“ã®Dataオブジェクトã®ã‚¯ãƒ©ã‚¹ã§ã™ï¼Žmarkã¯ã“ã®æ§‹é€ ä½“ãŒ
+Rubyã®ã‚ªãƒ–ジェクトã¸ã®å‚ç…§ãŒã‚る時ã«ä½¿ã†é–¢æ•°ã§ã™ï¼Žãã®ã‚ˆã†ãª
+å‚ç…§ã‚’å«ã¾ãªã„時ã«ã¯0を指定ã—ã¾ã™ï¼Ž
-# ¤½¤Î¤è¤¦¤Ê»²¾È¤Ï´«¤á¤é¤ì¤Þ¤»¤ó¡¥
+# ãã®ã‚ˆã†ãªå‚ç…§ã¯å‹§ã‚られã¾ã›ã‚“.
-free¤Ï¤³¤Î¹½Â¤ÂΤ¬¤â¤¦ÉÔÍפˤʤä¿»þ¤Ë¸Æ¤Ð¤ì¤ë´Ø¿ô¤Ç¤¹¡¥¤³¤Î
-´Ø¿ô¤¬¥¬¡¼¥Ù¡¼¥¸¥³¥ì¥¯¥¿¤«¤é¸Æ¤Ð¤ì¤Þ¤¹¡¥¤³¤ì¤¬-1¤Î¾ì¹ç¤Ï¡¤Ã±
-½ã¤Ë³«Êü¤µ¤ì¤Þ¤¹¡¥
+freeã¯ã“ã®æ§‹é€ ä½“ãŒã‚‚ã†ä¸è¦ã«ãªã£ãŸæ™‚ã«å‘¼ã°ã‚Œã‚‹é–¢æ•°ã§ã™ï¼Žã“ã®
+関数ãŒã‚¬ãƒ¼ãƒ™ãƒ¼ã‚¸ã‚³ãƒ¬ã‚¯ã‚¿ã‹ã‚‰å‘¼ã°ã‚Œã¾ã™ï¼Žã“れãŒ-1ã®å ´åˆã¯ï¼Œå˜
+ç´”ã«é–‹æ”¾ã•れã¾ã™ï¼Ž
-mark¤ª¤è¤Ófree´Ø¿ô¤ÏGC¼Â¹ÔÃæ¤Ë¸Æ¤Ó½Ð¤µ¤ì¤Þ¤¹.
-¤Ê¤ª, GC¼Â¹ÔÃæ¤ÏRuby¥ª¥Ö¥¸¥§¥¯¥È¤Î¥¢¥í¥±¡¼¥·¥ç¥ó¤Ï¶Ø»ß¤µ¤ì¤Þ
-¤¹. ¤è¤Ã¤Æ, mark¤ª¤è¤Ófree´Ø¿ô¤ÇRuby¥ª¥Ö¥¸¥§¥¯¥È¤Î¥¢¥í¥±¡¼¥·
-¥ç¥ó¤Ï¹Ô¤ï¤Ê¤¤¤Ç¤¯¤À¤µ¤¤.
+markãŠã‚ˆã³free関数ã¯GC実行中ã«å‘¼ã³å‡ºã•れã¾ã™.
+ãªãŠ, GC実行中ã¯Rubyオブジェクトã®ã‚¢ãƒ­ã‚±ãƒ¼ã‚·ãƒ§ãƒ³ã¯ç¦æ­¢ã•れã¾
+ã™. よã£ã¦, markãŠã‚ˆã³free関数ã§Rubyオブジェクトã®ã‚¢ãƒ­ã‚±ãƒ¼ã‚·
+ョンã¯è¡Œã‚ãªã„ã§ãã ã•ã„.
-C¤Î¹½Â¤ÂΤγäÅö¤ÈData¥ª¥Ö¥¸¥§¥¯¥È¤ÎÀ¸À®¤òƱ»þ¤Ë¹Ô¤¦¥Þ¥¯¥í¤È
-¤·¤Æ°Ê²¼¤Î¤â¤Î¤¬Ä󶡤µ¤ì¤Æ¤¤¤Þ¤¹¡¥
+Cã®æ§‹é€ ä½“ã®å‰²å½“ã¨Dataオブジェクトã®ç”Ÿæˆã‚’åŒæ™‚ã«è¡Œã†ãƒžã‚¯ãƒ­ã¨
+ã—ã¦ä»¥ä¸‹ã®ã‚‚ã®ãŒæä¾›ã•れã¦ã„ã¾ã™ï¼Ž
Data_Make_Struct(klass, type, mark, free, sval)
-¤³¤Î¥Þ¥¯¥í¤ÎÌá¤êÃͤÏÀ¸À®¤µ¤ì¤¿Data¥ª¥Ö¥¸¥§¥¯¥È¤Ç¤¹¡¥
+ã“ã®ãƒžã‚¯ãƒ­ã®æˆ»ã‚Šå€¤ã¯ç”Ÿæˆã•れãŸDataオブジェクトã§ã™ï¼Žã“ã®ãƒžã‚¯
+ロã¯ä»¥ä¸‹ã®å¼ã®ã‚ˆã†ã«åƒãã¾ã™:
-klass, mark, free¤ÏData_Wrap_Struct¤ÈƱ¤¸Æ¯¤­¤ò¤·¤Þ¤¹¡¥type
-¤Ï³ä¤êÅö¤Æ¤ëC¹½Â¤ÂΤη¿¤Ç¤¹¡¥³ä¤êÅö¤Æ¤é¤ì¤¿¹½Â¤ÂΤÏÊÑ¿ôsval
-¤ËÂåÆþ¤µ¤ì¤Þ¤¹¡¥¤³¤ÎÊÑ¿ô¤Î·¿¤Ï (type*) ¤Ç¤¢¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡¥
+ (sval = ALLOC(type), Data_Wrap_Struct(klass, mark, free, sval))
-Data¥ª¥Ö¥¸¥§¥¯¥È¤«¤é¥Ý¥¤¥ó¥¿¤ò¼è¤ê½Ð¤¹¤Î¤Ï°Ê²¼¤Î¥Þ¥¯¥í¤òÍѤ¤
-¤Þ¤¹¡¥
+klass, mark, freeã¯Data_Wrap_Structã¨åŒã˜åƒãã‚’ã—ã¾ã™ï¼Žtype
+ã¯å‰²ã‚Šå½“ã¦ã‚‹C構造体ã®åž‹ã§ã™ï¼Žå‰²ã‚Šå½“ã¦ã‚‰ã‚ŒãŸæ§‹é€ ä½“ã¯å¤‰æ•°sval
+ã«ä»£å…¥ã•れã¾ã™ï¼Žã“ã®å¤‰æ•°ã®åž‹ã¯ (type*) ã§ã‚ã‚‹å¿…è¦ãŒã‚りã¾ã™ï¼Ž
+
+Dataオブジェクトã‹ã‚‰ãƒã‚¤ãƒ³ã‚¿ã‚’å–り出ã™ã®ã¯ä»¥ä¸‹ã®ãƒžã‚¯ãƒ­ã‚’用ã„
+ã¾ã™ï¼Ž
Data_Get_Struct(obj, type, sval)
-C¤Î¹½Â¤ÂΤؤΥݥ¤¥ó¥¿¤ÏÊÑ¿ôsval¤ËÂåÆþ¤µ¤ì¤Þ¤¹¡¥
+Cã®æ§‹é€ ä½“ã¸ã®ãƒã‚¤ãƒ³ã‚¿ã¯å¤‰æ•°svalã«ä»£å…¥ã•れã¾ã™ï¼Ž
-¤³¤ì¤é¤ÎData¤Î»È¤¤Êý¤Ï¤Á¤ç¤Ã¤Èʬ¤«¤ê¤Ë¤¯¤¤¤Î¤Ç¡¤¸å¤ÇÀâÌÀ¤¹¤ë
-ÎãÂê¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡¥
+ã“れらã®Dataã®ä½¿ã„æ–¹ã¯ã¡ã‚‡ã£ã¨åˆ†ã‹ã‚Šã«ãã„ã®ã§ï¼Œå¾Œã§èª¬æ˜Žã™ã‚‹
+例題をå‚ç…§ã—ã¦ãã ã•ã„.
-4¡¥ÎãÂê - dbm¥Ñ¥Ã¥±¡¼¥¸¤òºî¤ë
+= 例題 - dbmパッケージを作る
-¤³¤³¤Þ¤Ç¤ÎÀâÌÀ¤Ç¤È¤ê¤¢¤¨¤º³ÈÄ¥¥é¥¤¥Ö¥é¥ê¤Ïºî¤ì¤ë¤Ï¤º¤Ç¤¹¡¥
-Ruby¤Îext¥Ç¥£¥ì¥¯¥È¥ê¤Ë¤¹¤Ç¤Ë´Þ¤Þ¤ì¤Æ¤¤¤ëdbm¥é¥¤¥Ö¥é¥ê¤òÎã¤Ë
-¤·¤ÆÃʳ¬Åª¤ËÀâÌÀ¤·¤Þ¤¹¡¥
+ã“ã“ã¾ã§ã®èª¬æ˜Žã§ã¨ã‚Šã‚ãˆãšæ‹¡å¼µãƒ©ã‚¤ãƒ–ãƒ©ãƒªã¯ä½œã‚Œã‚‹ã¯ãšã§ã™ï¼Ž
+Rubyã®extディレクトリã«ã™ã§ã«å«ã¾ã‚Œã¦ã„ã‚‹dbmライブラリを例ã«
+ã—ã¦æ®µéšŽçš„ã«èª¬æ˜Žã—ã¾ã™ï¼Ž
-(1) ¥Ç¥£¥ì¥¯¥È¥ê¤òºî¤ë
+== ディレクトリを作る
% mkdir ext/dbm
-Ruby 1.1¤«¤é¤ÏǤ°Õ¤Î¥Ç¥£¥ì¥¯¥È¥ê¤Ç¥À¥¤¥Ê¥ß¥Ã¥¯¥é¥¤¥Ö¥é¥ê¤òºî
-¤ë¤³¤È¤¬¤Ç¤­¤ë¤è¤¦¤Ë¤Ê¤ê¤Þ¤·¤¿¡¥Ruby¤ËÀÅŪ¤Ë¥ê¥ó¥¯¤¹¤ë¾ì¹ç¤Ë
-¤ÏRuby¤òŸ³«¤·¤¿¥Ç¥£¥ì¥¯¥È¥ê¤Î²¼¡¤ext¥Ç¥£¥ì¥¯¥È¥ê¤ÎÃæ¤Ë³ÈÄ¥
-¥é¥¤¥Ö¥é¥êÍѤΥǥ£¥ì¥¯¥È¥ê¤òºî¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡¥Ì¾Á°¤ÏŬÅö¤Ë
-Áª¤ó¤Ç¹½¤¤¤Þ¤»¤ó¡¥
-
-(2) À߷פ¹¤ë
-
-¤Þ¤¢¡¤ÅöÁ³¤Ê¤ó¤Ç¤¹¤±¤É¡¤¤É¤¦¤¤¤¦µ¡Ç½¤ò¼Â¸½¤¹¤ë¤«¤É¤¦¤«¤Þ¤ºÀß
-·×¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡¥¤É¤ó¤Ê¥¯¥é¥¹¤ò¤Ä¤¯¤ë¤«¡¤¤½¤Î¥¯¥é¥¹¤Ë¤Ï
-¤É¤ó¤Ê¥á¥½¥Ã¥É¤¬¤¢¤ë¤«¡¤¥¯¥é¥¹¤¬Ä󶡤¹¤ëÄê¿ô¤Ê¤É¤Ë¤Ä¤¤¤ÆÀß·×
-¤·¤Þ¤¹¡¥
-
-(3) 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¤Ç¥È¥é¥Ö¥ë¤òµ¯¤³¤·¤Þ¤¹¡¥
+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)
-(4) extconf.rb¤òÍѰդ¹¤ë
+== extconf.rbを用æ„ã™ã‚‹
-Makefile¤òºî¤ë¾ì¹ç¤Î¿÷·¿¤Ë¤Ê¤ëextconf.rb¤È¤¤¤¦¥Õ¥¡¥¤¥ë¤òºî¤ê
-¤Þ¤¹¡¥extconf.rb¤Ï¥é¥¤¥Ö¥é¥ê¤Î¥³¥ó¥Ñ¥¤¥ë¤ËɬÍפʾò·ï¤Î¥Á¥§¥Ã
-¥¯¤Ê¤É¤ò¹Ô¤¦¤³¤È¤¬ÌÜŪ¤Ç¤¹¡¥¤Þ¤º¡¤
+Makefileを作る場åˆã®é››åž‹ã«ãªã‚‹extconf.rbã¨ã„ã†ãƒ•ァイルを作り
+ã¾ã™ï¼Žextconf.rbã¯ãƒ©ã‚¤ãƒ–ラリã®ã‚³ãƒ³ãƒ‘イルã«å¿…è¦ãªæ¡ä»¶ã®ãƒã‚§ãƒƒ
+クãªã©ã‚’行ã†ã“ã¨ãŒç›®çš„ã§ã™ï¼Žã¾ãšï¼Œ
require 'mkmf'
-¤òextconf.rb¤ÎÀèÆ¬¤ËÃÖ¤­¤Þ¤¹¡¥extconf.rb¤ÎÃæ¤Ç¤Ï°Ê²¼¤ÎRuby´Ø
-¿ô¤ò»È¤¦¤³¤È¤¬½ÐÍè¤Þ¤¹¡¥
+ã‚’extconf.rbã®å…ˆé ­ã«ç½®ãã¾ã™ï¼Žextconf.rbã®ä¸­ã§ã¯ä»¥ä¸‹ã®Rubyé–¢
+数を使ã†ã“ã¨ãŒå‡ºæ¥ã¾ã™ï¼Ž
- have_library(lib, func): ¥é¥¤¥Ö¥é¥ê¤Î¸ºß¥Á¥§¥Ã¥¯
- have_func(func, header): ´Ø¿ô¤Î¸ºß¥Á¥§¥Ã¥¯
- have_header(header): ¥Ø¥Ã¥À¥Õ¥¡¥¤¥ë¤Î¸ºß¥Á¥§¥Ã¥¯
- create_makefile(target): Makefile¤ÎÀ¸À®
+ 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: ¥ê¥ó¥¯¤µ¤ì¤ë¥ª¥Ö¥¸¥§¥¯¥È¥Õ¥¡¥¤¥ë̾¤Î¥ê¥¹¥È
+ $CFLAGS: コンパイル時ã«è¿½åŠ çš„ã«æŒ‡å®šã™ã‚‹ãƒ•ラグ(-Oãªã©)
+ $CPPFLAGS: プリプロセッサã«è¿½åŠ çš„ã«æŒ‡å®šã™ã‚‹ãƒ•ラグ(-Iã‚„-Dãªã©)
+ $LDFLAGS: リンク時ã«è¿½åŠ çš„ã«æŒ‡å®šã™ã‚‹ãƒ•ラグ(-Lãªã©)
+ $objs: リンクã•れるオブジェクトファイルåã®ãƒªã‚¹ãƒˆ
-¥ª¥Ö¥¸¥§¥¯¥È¥Õ¥¡¥¤¥ë¤Î¥ê¥¹¥È¤Ï¡¤Ä̾ï¤Ï¥½¡¼¥¹¥Õ¥¡¥¤¥ë¤ò¸¡º÷¤·
-¤Æ¼«Æ°Åª¤ËÀ¸À®¤µ¤ì¤Þ¤¹¤¬¡¤make¤ÎÅÓÃæ¤Ç¥½¡¼¥¹¤òÀ¸À®¤¹¤ë¤è¤¦¤Ê
-¾ì¹ç¤ÏÌÀ¼¨Åª¤Ë»ØÄꤹ¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡¥
+オブジェクトファイルã®ãƒªã‚¹ãƒˆã¯ï¼Œé€šå¸¸ã¯ã‚½ãƒ¼ã‚¹ãƒ•ァイルを検索ã—
+ã¦è‡ªå‹•çš„ã«ç”Ÿæˆã•れã¾ã™ãŒï¼Œmakeã®é€”中ã§ã‚½ãƒ¼ã‚¹ã‚’生æˆã™ã‚‹ã‚ˆã†ãª
+å ´åˆã¯æ˜Žç¤ºçš„ã«æŒ‡å®šã™ã‚‹å¿…è¦ãŒã‚りã¾ã™ï¼Ž
-¥é¥¤¥Ö¥é¥ê¤ò¥³¥ó¥Ñ¥¤¥ë¤¹¤ë¾ò·ï¤¬Â·¤ï¤º¡¤¤½¤Î¥é¥¤¥Ö¥é¥ê¤ò¥³¥ó
-¥Ñ¥¤¥ë¤·¤Ê¤¤»þ¤Ë¤Ïcreate_makefile¤ò¸Æ¤Ð¤Ê¤±¤ì¤ÐMakefile¤ÏÀ¸
-À®¤µ¤ì¤º¡¤¥³¥ó¥Ñ¥¤¥ë¤â¹Ô¤ï¤ì¤Þ¤»¤ó¡¥
+ライブラリをコンパイルã™ã‚‹æ¡ä»¶ãŒæƒã‚ãšï¼Œãã®ãƒ©ã‚¤ãƒ–ラリをコン
+パイルã—ãªã„時ã«ã¯create_makefileを呼ã°ãªã‘れã°Makefileã¯ç”Ÿ
+æˆã•れãšï¼Œã‚³ãƒ³ãƒ‘イルも行ã‚れã¾ã›ã‚“.
-(5) depend¤òÍѰդ¹¤ë
+== dependを用æ„ã™ã‚‹
-¤â¤·¡¤¥Ç¥£¥ì¥¯¥È¥ê¤Ëdepend¤È¤¤¤¦¥Õ¥¡¥¤¥ë¤¬Â¸ºß¤¹¤ì¤Ð¡¤
-Makefile¤¬°Í¸´Ø·¸¤ò¥Á¥§¥Ã¥¯¤·¤Æ¤¯¤ì¤Þ¤¹¡¥
+ã‚‚ã—,ディレクトリã«dependã¨ã„ã†ãƒ•ァイルãŒå­˜åœ¨ã™ã‚Œã°ï¼Œ
+MakefileãŒä¾å­˜é–¢ä¿‚ã‚’ãƒã‚§ãƒƒã‚¯ã—ã¦ãれã¾ã™ï¼Ž
% gcc -MM *.c > depend
-¤Ê¤É¤Çºî¤ë¤³¤È¤¬½ÐÍè¤Þ¤¹¡¥¤¢¤Ã¤ÆÂ»¤Ï̵¤¤¤Ç¤·¤ç¤¦¡¥
+ãªã©ã§ä½œã‚‹ã“ã¨ãŒå‡ºæ¥ã¾ã™ï¼Žã‚ã£ã¦æã¯ç„¡ã„ã§ã—ょã†ï¼Ž
-(6) Makefile¤òÀ¸À®¤¹¤ë
+== Makefileを生æˆã™ã‚‹
-Makefile¤ò¼ÂºÝ¤ËÀ¸À®¤¹¤ë¤¿¤á¤Ë¤Ï
+Makefileを実際ã«ç”Ÿæˆã™ã‚‹ãŸã‚ã«ã¯
ruby extconf.rb
-¤È¤·¤Þ¤¹¡¥extconf.rb¤Ë require 'mkmf' ¤Î¹Ô¤¬¤Ê¤¤¾ì¹ç¤Ë¤Ï¥¨¥é¡¼
-¤Ë¤Ê¤ê¤Þ¤¹¤Î¤Ç¡¤°ú¿ô¤òÄɲä·¤Æ
+ã¨ã—ã¾ã™ï¼Žextconf.rbã« require 'mkmf' ã®è¡ŒãŒãªã„å ´åˆã«ã¯ã‚¨ãƒ©ãƒ¼
+ã«ãªã‚Šã¾ã™ã®ã§ï¼Œå¼•数を追加ã—ã¦
ruby -r mkmf extconf.rb
-¤È¤·¤Æ¤¯¤À¤µ¤¤¡¥
+ã¨ã—ã¦ãã ã•ã„.
-site_ruby ¥Ç¥£¥ì¥¯¥È¥ê¤Ç¤Ê¤¯¡¤
-vendor_ruby ¥Ç¥£¥ì¥¯¥È¥ê¤Ë¥¤¥ó¥¹¥È¡¼¥ë¤¹¤ë¾ì¹ç¤Ë¤Ï
-°Ê²¼¤Î¤è¤¦¤Ë --vendor ¥ª¥×¥·¥ç¥ó¤ò²Ã¤¨¤Æ¤¯¤À¤µ¤¤¡¥
+site_ruby ディレクトリã§ãªã,
+vendor_ruby ディレクトリã«ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã™ã‚‹å ´åˆã«ã¯
+以下ã®ã‚ˆã†ã« --vendor オプションを加ãˆã¦ãã ã•ã„.
ruby extconf.rb --vendor
-¥Ç¥£¥ì¥¯¥È¥ê¤òext°Ê²¼¤ËÍѰդ·¤¿¾ì¹ç¤Ë¤ÏRubyÁ´ÂΤÎmake¤Î»þ¤Ë
-¼«Æ°Åª¤ËMakefile¤¬À¸À®¤µ¤ì¤Þ¤¹¤Î¤Ç¡¤¤³¤Î¥¹¥Æ¥Ã¥×¤ÏÉÔÍפǤ¹¡¥
+ディレクトリをext以下ã«ç”¨æ„ã—ãŸå ´åˆã«ã¯Ruby全体ã®makeã®æ™‚ã«
+自動的ã«MakefileãŒç”Ÿæˆã•れã¾ã™ã®ã§ï¼Œã“ã®ã‚¹ãƒ†ãƒƒãƒ—ã¯ä¸è¦ã§ã™ï¼Ž
-(7) make¤¹¤ë
+== makeã™ã‚‹
-ưŪ¥ê¥ó¥¯¥é¥¤¥Ö¥é¥ê¤òÀ¸À®¤¹¤ë¾ì¹ç¤Ë¤Ï¤½¤Î¾ì¤Çmake¤·¤Æ¤¯¤À¤µ
-¤¤¡¥É¬ÍפǤ¢¤ì¤Ð make install ¤Ç¥¤¥ó¥¹¥È¡¼¥ë¤µ¤ì¤Þ¤¹¡¥
+動的リンクライブラリを生æˆã™ã‚‹å ´åˆã«ã¯ãã®å ´ã§makeã—ã¦ãã ã•
+ã„.必è¦ã§ã‚れ㰠make install ã§ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã•れã¾ã™ï¼Ž
-ext°Ê²¼¤Ë¥Ç¥£¥ì¥¯¥È¥ê¤òÍѰդ·¤¿¾ì¹ç¤Ï¡¤Ruby¤Î¥Ç¥£¥ì¥¯¥È¥ê¤Ç
-make¤ò¼Â¹Ô¤¹¤ë¤ÈMakefile¤òÀ¸À®¤«¤émake¡¤É¬Íפˤè¤Ã¤Æ¤Ï¤½¤Î¥â
-¥¸¥å¡¼¥ë¤ÎRuby¤Ø¤Î¥ê¥ó¥¯¤Þ¤Ç¼«Æ°Åª¤Ë¼Â¹Ô¤·¤Æ¤¯¤ì¤Þ¤¹¡¥
-extconf.rb¤ò½ñ¤­´¹¤¨¤ë¤Ê¤É¤·¤ÆMakefile¤ÎºÆÀ¸À®¤¬É¬Íפʻþ¤Ï¤Þ
-¤¿Ruby¥Ç¥£¥ì¥¯¥È¥ê¤Çmake¤·¤Æ¤¯¤À¤µ¤¤¡¥
+ext以下ã«ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã‚’用æ„ã—ãŸå ´åˆã¯ï¼ŒRubyã®ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã§
+makeを実行ã™ã‚‹ã¨Makefileを生æˆã‹ã‚‰make,必è¦ã«ã‚ˆã£ã¦ã¯ãã®ãƒ¢
+ジュールã®Rubyã¸ã®ãƒªãƒ³ã‚¯ã¾ã§è‡ªå‹•çš„ã«å®Ÿè¡Œã—ã¦ãれã¾ã™ï¼Ž
+extconf.rbã‚’æ›¸ãæ›ãˆã‚‹ãªã©ã—ã¦Makefileã®å†ç”ŸæˆãŒå¿…è¦ãªæ™‚ã¯ã¾
+ãŸRubyディレクトリã§makeã—ã¦ãã ã•ã„.
-³ÈÄ¥¥é¥¤¥Ö¥é¥ê¤Ïmake install¤ÇRuby¥é¥¤¥Ö¥é¥ê¤Î¥Ç¥£¥ì¥¯¥È¥ê¤Î
-²¼¤Ë¥³¥Ô¡¼¤µ¤ì¤Þ¤¹¡¥¤â¤·³ÈÄ¥¥é¥¤¥Ö¥é¥ê¤È¶¨Ä´¤·¤Æ»È¤¦Ruby¤Çµ­
-½Ò¤µ¤ì¤¿¥×¥í¥°¥é¥à¤¬¤¢¤ê¡¤Ruby¥é¥¤¥Ö¥é¥ê¤ËÃÖ¤­¤¿¤¤¾ì¹ç¤Ë¤Ï¡¤
-³ÈÄ¥¥é¥¤¥Ö¥é¥êÍѤΥǥ£¥ì¥¯¥È¥ê¤Î²¼¤Ë lib ¤È¤¤¤¦¥Ç¥£¥ì¥¯¥È¥ê
-¤òºî¤ê¡¤¤½¤³¤Ë ³ÈÄ¥»Ò .rb ¤Î¥Õ¥¡¥¤¥ë¤òÃÖ¤¤¤Æ¤ª¤±¤ÐƱ»þ¤Ë¥¤¥ó
-¥¹¥È¡¼¥ë¤µ¤ì¤Þ¤¹¡¥
+拡張ライブラリã¯make installã§Rubyライブラリã®ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã®
+下ã«ã‚³ãƒ”ーã•れã¾ã™ï¼Žã‚‚ã—æ‹¡å¼µãƒ©ã‚¤ãƒ–ラリã¨å”調ã—ã¦ä½¿ã†Rubyã§è¨˜
+è¿°ã•れãŸãƒ—ログラムãŒã‚り,Rubyライブラリã«ç½®ããŸã„å ´åˆã«ã¯ï¼Œ
+拡張ライブラリ用ã®ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã®ä¸‹ã« lib ã¨ã„ã†ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒª
+を作り,ãã“ã« æ‹¡å¼µå­ .rb ã®ãƒ•ァイルを置ã„ã¦ãŠã‘ã°åŒæ™‚ã«ã‚¤ãƒ³
+ストールã•れã¾ã™ï¼Ž
-(8) ¥Ç¥Ð¥Ã¥°
+== デãƒãƒƒã‚°
-¤Þ¤¢¡¤¥Ç¥Ð¥Ã¥°¤·¤Ê¤¤¤Èư¤«¤Ê¤¤¤Ç¤·¤ç¤¦¤Í¡¥ext/Setup¤Ë¥Ç¥£¥ì
-¥¯¥È¥ê̾¤ò½ñ¤¯¤ÈÀÅŪ¤Ë¥ê¥ó¥¯¤¹¤ë¤Î¤Ç¥Ç¥Ð¥Ã¥¬¤¬»È¤¨¤ë¤è¤¦¤Ë¤Ê
-¤ê¤Þ¤¹¡¥¤½¤Îʬ¥³¥ó¥Ñ¥¤¥ë¤¬ÃÙ¤¯¤Ê¤ê¤Þ¤¹¤±¤É¡¥
+ã¾ã‚,デãƒãƒƒã‚°ã—ãªã„ã¨å‹•ã‹ãªã„ã§ã—ょã†ã­ï¼Žext/Setupã«ãƒ‡ã‚£ãƒ¬
+クトリåを書ãã¨é™çš„ã«ãƒªãƒ³ã‚¯ã™ã‚‹ã®ã§ãƒ‡ãƒãƒƒã‚¬ãŒä½¿ãˆã‚‹ã‚ˆã†ã«ãª
+りã¾ã™ï¼Žãã®åˆ†ã‚³ãƒ³ãƒ‘イルãŒé…ããªã‚Šã¾ã™ã‘ã©ï¼Ž
-(9) ¤Ç¤­¤¢¤¬¤ê
+== ã§ãã‚ãŒã‚Š
-¸å¤Ï¤³¤Ã¤½¤ê»È¤¦¤Ê¤ê¡¤¹­¤¯¸ø³«¤¹¤ë¤Ê¤ê¡¤Çä¤ë¤Ê¤ê¡¤¤´¼«Í³¤Ë¤ª
-»È¤¤¤¯¤À¤µ¤¤¡¥Ruby¤Îºî¼Ô¤Ï³ÈÄ¥¥é¥¤¥Ö¥é¥ê¤Ë´Ø¤·¤Æ°ìÀڤθ¢Íø¤ò
-¼çÄ¥¤·¤Þ¤»¤ó¡¥
+後ã¯ã“ã£ãり使ã†ãªã‚Šï¼Œåºƒã公開ã™ã‚‹ãªã‚Šï¼Œå£²ã‚‹ãªã‚Šï¼Œã”自由ã«ãŠ
+使ã„ãã ã•ã„.Rubyã®ä½œè€…ã¯æ‹¡å¼µãƒ©ã‚¤ãƒ–ラリã«é–¢ã—ã¦ä¸€åˆ‡ã®æ¨©åˆ©ã‚’
+主張ã—ã¾ã›ã‚“.
-Appendix A. Ruby¤Î¥½¡¼¥¹¥³¡¼¥É¤ÎʬÎà
+= Appendix A. Rubyã®ã‚½ãƒ¼ã‚¹ã‚³ãƒ¼ãƒ‰ã®åˆ†é¡ž
-Ruby¤Î¥½¡¼¥¹¤Ï¤¤¤¯¤Ä¤«¤ËʬÎह¤ë¤³¤È¤¬½ÐÍè¤Þ¤¹¡¥¤³¤Î¤¦¤Á¥¯¥é
-¥¹¥é¥¤¥Ö¥é¥ê¤ÎÉôʬ¤Ï´ðËÜŪ¤Ë³ÈÄ¥¥é¥¤¥Ö¥é¥ê¤ÈƱ¤¸ºî¤êÊý¤Ë¤Ê¤Ã
-¤Æ¤¤¤Þ¤¹¡¥¤³¤ì¤é¤Î¥½¡¼¥¹¤Ïº£¤Þ¤Ç¤ÎÀâÌÀ¤Ç¤Û¤È¤ó¤ÉÍý²ò¤Ç¤­¤ë¤È
-»×¤¤¤Þ¤¹¡¥
+Rubyã®ã‚½ãƒ¼ã‚¹ã¯ã„ãã¤ã‹ã«åˆ†é¡žã™ã‚‹ã“ã¨ãŒå‡ºæ¥ã¾ã™ï¼Žã“ã®ã†ã¡ã‚¯ãƒ©
+スライブラリã®éƒ¨åˆ†ã¯åŸºæœ¬çš„ã«æ‹¡å¼µãƒ©ã‚¤ãƒ–ラリã¨åŒã˜ä½œã‚Šæ–¹ã«ãªã£
+ã¦ã„ã¾ã™ï¼Žã“れらã®ã‚½ãƒ¼ã‚¹ã¯ä»Šã¾ã§ã®èª¬æ˜Žã§ã»ã¨ã‚“ã©ç†è§£ã§ãã‚‹ã¨
+æ€ã„ã¾ã™ï¼Ž
-Ruby¸À¸ì¤Î¥³¥¢
+== Ruby言語ã®ã‚³ã‚¢
- class.c : ¥¯¥é¥¹¤È¥â¥¸¥å¡¼¥ë
- error.c : Îã³°¥¯¥é¥¹¤ÈÎã³°µ¡¹½
- gc.c : µ­²±Îΰè´ÉÍý
- load.c : ¥é¥¤¥Ö¥é¥ê¤Î¥í¡¼¥É
- object.c : ¥ª¥Ö¥¸¥§¥¯¥È
- variable.c : ÊÑ¿ô¤ÈÄê¿ô
+class.c :: クラスã¨ãƒ¢ã‚¸ãƒ¥ãƒ¼ãƒ«
+error.c :: 例外クラスã¨ä¾‹å¤–機構
+gc.c :: 記憶領域管ç†
+load.c :: ライブラリã®ãƒ­ãƒ¼ãƒ‰
+object.c :: オブジェクト
+variable.c :: 変数ã¨å®šæ•°
-Ruby¤Î¹½Ê¸²òÀÏ´ï
- parse.y : »ú¶ç²òÀÏ´ï¤È¹½Ê¸ÄêµÁ
- -> parse.c : ¼«Æ°À¸À®
- keywords : ͽÌó¸ì
- -> lex.c : ¼«Æ°À¸À®
+== Rubyã®æ§‹æ–‡è§£æžå™¨
-Ruby¤Îɾ²Á´ï (Ä̾ÎYARV)
+ 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 : Ʊ¾å
+ insns.def : 仮想機械語ã®å®šç¾©
+ iseq.c : VM::ISeqã®å®Ÿè£…
+ thread.c : スレッド管ç†ã¨ã‚³ãƒ³ãƒ†ã‚­ã‚¹ãƒˆåˆ‡ã‚Šæ›¿ãˆ
+ thread_win32.c : スレッド実装
+ thread_pthread.c : åŒä¸Š
vm.c
vm_dump.c
vm_eval.c
@@ -943,14 +965,15 @@ Ruby¤Îɾ²Á´ï (Ä̾ÎYARV)
vm_insnhelper.c
vm_method.c
- opt_insns_unif.def : Ì¿ÎáÍ»¹ç
- opt_operand.def : ºÇŬ²½¤Î¤¿¤á¤ÎÄêµÁ
+ opt_insns_unif.def : 命令èžåˆ
+ opt_operand.def : 最é©åŒ–ã®ãŸã‚ã®å®šç¾©
+
+ -> insn*.inc : 自動生æˆ
+ -> opt*.inc : 自動生æˆ
+ -> vm.inc : 自動生æˆ
- -> insn*.inc : ¼«Æ°À¸À®
- -> opt*.inc : ¼«Æ°À¸À®
- -> vm.inc : ¼«Æ°À¸À®
+== æ­£è¦è¡¨ç¾ã‚¨ãƒ³ã‚¸ãƒ³ (鬼車)
-Àµµ¬É½¸½¥¨¥ó¥¸¥ó (µ´¼Ö)
regex.c
regcomp.c
regenc.c
@@ -959,15 +982,15 @@ Ruby¤Îɾ²Á´ï (Ä̾ÎYARV)
regparse.c
regsyntax.c
-¥æ¡¼¥Æ¥£¥ê¥Æ¥£´Ø¿ô
+== ユーティリティ関数
- debug.c : C¥Ç¥Ð¥Ã¥¬ÍѤΥǥХå°¥·¥ó¥Ü¥ë
- dln.c : ưŪ¥í¡¼¥Ç¥£¥ó¥°
- st.c : ÈÆÍѥϥå·¥åɽ
- strftime.c : »þ¹ïÀ°·Á
- util.c : ¤½¤Î¾¤Î¥æ¡¼¥Æ¥£¥ê¥Æ¥£
+debug.c :: Cデãƒãƒƒã‚¬ç”¨ã®ãƒ‡ãƒãƒƒã‚°ã‚·ãƒ³ãƒœãƒ«
+dln.c :: 動的ローディング
+st.c :: 汎用ãƒãƒƒã‚·ãƒ¥è¡¨
+strftime.c :: 時刻整形
+util.c :: ãã®ä»–ã®ãƒ¦ãƒ¼ãƒ†ã‚£ãƒªãƒ†ã‚£
-Ruby¥³¥Þ¥ó¥É¤Î¼ÂÁõ
+== Rubyコマンドã®å®Ÿè£…
dmyext.c
dmydln.c
@@ -981,587 +1004,628 @@ Ruby¥³¥Þ¥ó¥É¤Î¼ÂÁõ
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.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 : ¼«Æ°À¸À®
+== クラスライブラリ
+
+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. ³ÈÄ¥ÍÑ´Ø¿ô¥ê¥Õ¥¡¥ì¥ó¥¹
+= Appendix B. 拡張用関数リファレンス
-C¸À¸ì¤«¤éRuby¤Îµ¡Ç½¤òÍøÍѤ¹¤ëAPI¤Ï°Ê²¼¤ÎÄ̤ê¤Ç¤¢¤ë¡¥
+C言語ã‹ã‚‰Rubyã®æ©Ÿèƒ½ã‚’利用ã™ã‚‹APIã¯ä»¥ä¸‹ã®é€šã‚Šã§ã‚る.
-** ·¿
+== åž‹
-VALUE
+VALUE ::
- Ruby¥ª¥Ö¥¸¥§¥¯¥È¤òɽ¸½¤¹¤ë·¿¡¥É¬Íפ˱þ¤¸¤Æ¥­¥ã¥¹¥È¤·¤ÆÍѤ¤¤ë¡¥
- ÁȤ߹þ¤ß·¿¤òɽ¸½¤¹¤ëC¤Î·¿¤Ïruby.h¤Ëµ­½Ò¤·¤Æ¤¢¤ëR¤Ç»Ï¤Þ¤ë¹½Â¤
- ÂΤǤ¢¤ë¡¥VALUE·¿¤ò¤³¤ì¤é¤Ë¥­¥ã¥¹¥È¤¹¤ë¤¿¤á¤ËR¤Ç»Ï¤Þ¤ë¹½Â¤ÂÎ
- ̾¤òÁ´¤ÆÂçʸ»ú¤Ë¤·¤¿Ì¾Á°¤Î¥Þ¥¯¥í¤¬ÍѰդµ¤ì¤Æ¤¤¤ë¡¥
+ Rubyオブジェクトを表ç¾ã™ã‚‹åž‹ï¼Žå¿…è¦ã«å¿œã˜ã¦ã‚­ãƒ£ã‚¹ãƒˆã—ã¦ç”¨ã„る.
+ 組ã¿è¾¼ã¿åž‹ã‚’表ç¾ã™ã‚‹Cã®åž‹ã¯ruby.hã«è¨˜è¿°ã—ã¦ã‚ã‚‹Rã§å§‹ã¾ã‚‹æ§‹é€ 
+ 体ã§ã‚る.VALUE型をã“れらã«ã‚­ãƒ£ã‚¹ãƒˆã™ã‚‹ãŸã‚ã«Rã§å§‹ã¾ã‚‹æ§‹é€ ä½“
+ åã‚’å…¨ã¦å¤§æ–‡å­—ã«ã—ãŸåå‰ã®ãƒžã‚¯ãƒ­ãŒç”¨æ„ã•れã¦ã„る.
-** ÊÑ¿ô¡¦Äê¿ô
+== 変数・定数
-Qnil
+Qnil ::
- Äê¿ô: nil¥ª¥Ö¥¸¥§¥¯¥È
+ 定数: nilオブジェクト
-Qtrue
+Qtrue ::
- Äê¿ô: true¥ª¥Ö¥¸¥§¥¯¥È(¿¿¤Î¥Ç¥Õ¥©¥ë¥ÈÃÍ)
+ 定数: trueオブジェクト(真ã®ãƒ‡ãƒ•ォルト値)
-Qfalse
+Qfalse ::
- Äê¿ô: false¥ª¥Ö¥¸¥§¥¯¥È
+ 定数: falseオブジェクト
-** C¥Ç¡¼¥¿¤Î¥«¥×¥»¥ë²½
+== Cデータã®ã‚«ãƒ—セル化
-Data_Wrap_Struct(VALUE klass, void (*mark)(), void (*free)(), void *sval)
+Data_Wrap_Struct(VALUE klass, void (*mark)(), void (*free)(), void *sval) ::
- C¤ÎǤ°Õ¤Î¥Ý¥¤¥ó¥¿¤ò¥«¥×¥»¥ë²½¤·¤¿Ruby¥ª¥Ö¥¸¥§¥¯¥È¤òÊÖ¤¹¡¥¤³
- ¤Î¥Ý¥¤¥ó¥¿¤¬Ruby¤«¤é¥¢¥¯¥»¥¹¤µ¤ì¤Ê¤¯¤Ê¤Ã¤¿»þ¡¤free¤Ç»ØÄꤷ¤¿
- ´Ø¿ô¤¬¸Æ¤Ð¤ì¤ë¡¥¤Þ¤¿¡¤¤³¤Î¥Ý¥¤¥ó¥¿¤Î»Ø¤¹¥Ç¡¼¥¿¤¬Â¾¤ÎRuby¥ª¥Ö
- ¥¸¥§¥¯¥È¤ò»Ø¤·¤Æ¤¤¤ë¾ì¹ç¡¤mark¤Ë»ØÄꤹ¤ë´Ø¿ô¤Ç¥Þ¡¼¥¯¤¹¤ëɬÍ×
- ¤¬¤¢¤ë¡¥
+ Cã®ä»»æ„ã®ãƒã‚¤ãƒ³ã‚¿ã‚’カプセル化ã—ãŸRubyオブジェクトを返ã™ï¼Žã“
+ ã®ãƒã‚¤ãƒ³ã‚¿ãŒRubyã‹ã‚‰ã‚¢ã‚¯ã‚»ã‚¹ã•れãªããªã£ãŸæ™‚,freeã§æŒ‡å®šã—ãŸ
+ 関数ãŒå‘¼ã°ã‚Œã‚‹ï¼Žã¾ãŸï¼Œã“ã®ãƒã‚¤ãƒ³ã‚¿ã®æŒ‡ã™ãƒ‡ãƒ¼ã‚¿ãŒä»–ã®Rubyオブ
+ ジェクトを指ã—ã¦ã„ã‚‹å ´åˆï¼Œmarkã«æŒ‡å®šã™ã‚‹é–¢æ•°ã§ãƒžãƒ¼ã‚¯ã™ã‚‹å¿…è¦
+ ãŒã‚る.
-Data_Make_Struct(klass, type, mark, free, sval)
+Data_Make_Struct(klass, type, mark, free, sval) ::
- type·¿¤Î¥á¥â¥ê¤òmalloc¤·¡¤ÊÑ¿ôsval¤ËÂåÆþ¤·¤¿¸å¡¤¤½¤ì¤ò¥«¥×¥»
- ¥ë²½¤·¤¿¥Ç¡¼¥¿¤òÊÖ¤¹¥Þ¥¯¥í¡¥
+ typeåž‹ã®ãƒ¡ãƒ¢ãƒªã‚’mallocã—,変数svalã«ä»£å…¥ã—ãŸå¾Œï¼Œãれをカプセ
+ ル化ã—ãŸãƒ‡ãƒ¼ã‚¿ã‚’è¿”ã™ãƒžã‚¯ãƒ­ï¼Ž
-Data_Get_Struct(data, type, sval)
+Data_Get_Struct(data, type, sval) ::
- data¤«¤étype·¿¤Î¥Ý¥¤¥ó¥¿¤ò¼è¤ê½Ð¤·ÊÑ¿ôsval¤ËÂåÆþ¤¹¤ë¥Þ¥¯¥í¡¥
+ dataã‹ã‚‰typeåž‹ã®ãƒã‚¤ãƒ³ã‚¿ã‚’å–り出ã—変数svalã«ä»£å…¥ã™ã‚‹ãƒžã‚¯ãƒ­ï¼Ž
-** ·¿¥Á¥§¥Ã¥¯
+== åž‹ãƒã‚§ãƒƒã‚¯
-TYPE(value)
-FIXNUM_P(value)
-NIL_P(value)
-void Check_Type(VALUE value, int type)
-void Check_SafeStr(VALUE value)
+ 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)
-NUM2DBL(value)
-rb_float_new(f)
-StringValue(value)
-StringValuePtr(value)
-StringValueCStr(value)
-rb_str_new2(s)
+ 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)
+VALUE rb_define_class(const char *name, VALUE super) ::
- super¤Î¥µ¥Ö¥¯¥é¥¹¤È¤·¤Æ¿·¤·¤¤Ruby¥¯¥é¥¹¤òÄêµÁ¤¹¤ë¡¥
+ superã®ã‚µãƒ–クラスã¨ã—ã¦æ–°ã—ã„Rubyクラスを定義ã™ã‚‹ï¼Ž
-VALUE rb_define_class_under(VALUE module, const char *name, VALUE super)
+VALUE rb_define_class_under(VALUE module, const char *name, VALUE super) ::
- super¤Î¥µ¥Ö¥¯¥é¥¹¤È¤·¤Æ¿·¤·¤¤Ruby¥¯¥é¥¹¤òÄêµÁ¤·¡¤module¤Î
- Äê¿ô¤È¤·¤ÆÄêµÁ¤¹¤ë¡¥
+ superã®ã‚µãƒ–クラスã¨ã—ã¦æ–°ã—ã„Rubyクラスを定義ã—,moduleã®
+ 定数ã¨ã—ã¦å®šç¾©ã™ã‚‹ï¼Ž
-VALUE rb_define_module(const char *name)
+VALUE rb_define_module(const char *name) ::
- ¿·¤·¤¤Ruby¥â¥¸¥å¡¼¥ë¤òÄêµÁ¤¹¤ë¡¥
+ æ–°ã—ã„Rubyモジュールを定義ã™ã‚‹ï¼Ž
-VALUE rb_define_module_under(VALUE module, const char *name)
+VALUE rb_define_module_under(VALUE module, const char *name) ::
- ¿·¤·¤¤Ruby¥â¥¸¥å¡¼¥ë¤òÄêµÁ¤·¡¤module¤ÎÄê¿ô¤È¤·¤ÆÄêµÁ¤¹¤ë¡¥
+ æ–°ã—ã„Rubyモジュールを定義ã—,moduleã®å®šæ•°ã¨ã—ã¦å®šç¾©ã™ã‚‹ï¼Ž
-void rb_include_module(VALUE klass, VALUE module)
+void rb_include_module(VALUE klass, VALUE module) ::
- ¥â¥¸¥å¡¼¥ë¤ò¥¤¥ó¥¯¥ë¡¼¥É¤¹¤ë¡¥class¤¬¤¹¤Ç¤Ëmodule¤ò¥¤¥ó¥¯
- ¥ë¡¼¥É¤·¤Æ¤¤¤ë»þ¤Ë¤Ï²¿¤â¤·¤Ê¤¤(¿½Å¥¤¥ó¥¯¥ë¡¼¥É¤Î¶Ø»ß)¡¥
+ モジュールをインクルードã™ã‚‹ï¼ŽclassãŒã™ã§ã«moduleをインク
+ ルードã—ã¦ã„る時ã«ã¯ä½•ã‚‚ã—ãªã„(多é‡ã‚¤ãƒ³ã‚¯ãƒ«ãƒ¼ãƒ‰ã®ç¦æ­¢).
-void rb_extend_object(VALUE object, VALUE module)
+void rb_extend_object(VALUE object, VALUE module) ::
- ¥ª¥Ö¥¸¥§¥¯¥È¤ò¥â¥¸¥å¡¼¥ë(¤ÇÄêµÁ¤µ¤ì¤Æ¤¤¤ë¥á¥½¥Ã¥É)¤Ç³ÈÄ¥¤¹¤ë¡¥
+ オブジェクトをモジュール(ã§å®šç¾©ã•れã¦ã„るメソッド)ã§æ‹¡å¼µã™ã‚‹ï¼Ž
-** Âç°èÊÑ¿ôÄêµÁ
+== 大域変数定義
-void rb_define_variable(const char *name, VALUE *var)
+void rb_define_variable(const char *name, VALUE *var) ::
- Ruby¤ÈC¤È¤Ç¶¦Í­¤¹¤ë¥°¥í¡¼¥Ð¥ëÊÑ¿ô¤òÄêµÁ¤¹¤ë¡¥ÊÑ¿ô̾¤¬`$'¤Ç
- »Ï¤Þ¤é¤Ê¤¤»þ¤Ë¤Ï¼«Æ°Åª¤ËÄɲ䵤ì¤ë¡¥name¤È¤·¤ÆRuby¤Î¼±ÊÌ»Ò
- ¤È¤·¤Æµö¤µ¤ì¤Ê¤¤Ê¸»ú(Î㤨¤Ð` ')¤ò´Þ¤à¾ì¹ç¤Ë¤ÏRuby¥×¥í¥°¥é
- ¥à¤«¤é¤Ï¸«¤¨¤Ê¤¯¤Ê¤ë¡¥
+ Rubyã¨Cã¨ã§å…±æœ‰ã™ã‚‹ã‚°ãƒ­ãƒ¼ãƒãƒ«å¤‰æ•°ã‚’定義ã™ã‚‹ï¼Žå¤‰æ•°åãŒ`$'ã§
+ å§‹ã¾ã‚‰ãªã„時ã«ã¯è‡ªå‹•çš„ã«è¿½åŠ ã•れる.nameã¨ã—ã¦Rubyã®è­˜åˆ¥å­
+ ã¨ã—ã¦è¨±ã•れãªã„文字(例ãˆã°` ')ã‚’å«ã‚€å ´åˆã«ã¯Rubyプログラ
+ ムã‹ã‚‰ã¯è¦‹ãˆãªããªã‚‹ï¼Ž
-void rb_define_readonly_variable(const char *name, VALUE *var)
+void rb_define_readonly_variable(const char *name, VALUE *var) ::
- Ruby¤ÈC¤È¤Ç¶¦Í­¤¹¤ëread only¤Î¥°¥í¡¼¥Ð¥ëÊÑ¿ô¤òÄêµÁ¤¹¤ë¡¥
- read only¤Ç¤¢¤ë¤³¤È°Ê³°¤Ïrb_define_variable()¤ÈƱ¤¸¡¥
+ Rubyã¨Cã¨ã§å…±æœ‰ã™ã‚‹read onlyã®ã‚°ãƒ­ãƒ¼ãƒãƒ«å¤‰æ•°ã‚’定義ã™ã‚‹ï¼Ž
+ read onlyã§ã‚ã‚‹ã“ã¨ä»¥å¤–ã¯rb_define_variable()ã¨åŒã˜ï¼Ž
-void rb_define_virtual_variable(const char *name,
- VALUE (*getter)(), void (*setter)())
+void rb_define_virtual_variable(const char *name, VALUE (*getter)(), void (*setter)()) ::
- ´Ø¿ô¤Ë¤è¤Ã¤Æ¼Â¸½¤µ¤ì¤ëRubyÊÑ¿ô¤òÄêµÁ¤¹¤ë¡¥ÊÑ¿ô¤¬»²¾È¤µ¤ì¤¿
- »þ¤Ë¤Ïgetter¤¬¡¤ÊÑ¿ô¤ËÃͤ¬¥»¥Ã¥È¤µ¤ì¤¿»þ¤Ë¤Ïsetter¤¬¸Æ¤Ð¤ì
- ¤ë¡¥
+ 関数ã«ã‚ˆã£ã¦å®Ÿç¾ã•れるRuby変数を定義ã™ã‚‹ï¼Žå¤‰æ•°ãŒå‚ç…§ã•れãŸ
+ 時ã«ã¯getterãŒï¼Œå¤‰æ•°ã«å€¤ãŒã‚»ãƒƒãƒˆã•ã‚ŒãŸæ™‚ã«ã¯setterãŒå‘¼ã°ã‚Œ
+ る.
-void rb_define_hooked_variable(const char *name, VALUE *var,
- VALUE (*getter)(), void (*setter)())
+void rb_define_hooked_variable(const char *name, VALUE *var, VALUE (*getter)(), void (*setter)()) ::
- ´Ø¿ô¤Ë¤è¤Ã¤Æhook¤Î¤Ä¤±¤é¤ì¤¿¥°¥í¡¼¥Ð¥ëÊÑ¿ô¤òÄêµÁ¤¹¤ë¡¥ÊÑ¿ô
- ¤¬»²¾È¤µ¤ì¤¿»þ¤Ë¤Ïgetter¤¬¡¤´Ø¿ô¤ËÃͤ¬¥»¥Ã¥È¤µ¤ì¤¿»þ¤Ë¤Ï
- setter¤¬¸Æ¤Ð¤ì¤ë¡¥getter¤äsetter¤Ë0¤ò»ØÄꤷ¤¿»þ¤Ë¤Ïhook¤ò
- »ØÄꤷ¤Ê¤¤¤Î¤ÈƱ¤¸»ö¤Ë¤Ê¤ë¡¥
+ 関数ã«ã‚ˆã£ã¦hookã®ã¤ã‘られãŸã‚°ãƒ­ãƒ¼ãƒãƒ«å¤‰æ•°ã‚’定義ã™ã‚‹ï¼Žå¤‰æ•°
+ ãŒå‚ç…§ã•ã‚ŒãŸæ™‚ã«ã¯getterãŒï¼Œé–¢æ•°ã«å€¤ãŒã‚»ãƒƒãƒˆã•ã‚ŒãŸæ™‚ã«ã¯
+ setterãŒå‘¼ã°ã‚Œã‚‹ï¼Žgetterã‚„setterã«0を指定ã—ãŸæ™‚ã«ã¯hookã‚’
+ 指定ã—ãªã„ã®ã¨åŒã˜äº‹ã«ãªã‚‹ï¼Ž
void rb_global_variable(VALUE *var)
- GC¤Î¤¿¤á¡¤Ruby¥×¥í¥°¥é¥à¤«¤é¤Ï¥¢¥¯¥»¥¹¤µ¤ì¤Ê¤¤¤¬, Ruby¥ª¥Ö
- ¥¸¥§¥¯¥È¤ò´Þ¤àÂç°èÊÑ¿ô¤ò¥Þ¡¼¥¯¤¹¤ë¡¥
+ GCã®ãŸã‚,Rubyプログラムã‹ã‚‰ã¯ã‚¢ã‚¯ã‚»ã‚¹ã•れãªã„ãŒ, Rubyオブ
+ ジェクトをå«ã‚€å¤§åŸŸå¤‰æ•°ã‚’マークã™ã‚‹ï¼Ž
+
+== 定数
+
+void rb_define_const(VALUE klass, const char *name, VALUE val) ::
-** Äê¿ô
+ 定数を定義ã™ã‚‹ï¼Ž
-void rb_define_const(VALUE klass, const char *name, VALUE val)
+void rb_define_global_const(const char *name, VALUE val) ::
- Äê¿ô¤òÄêµÁ¤¹¤ë¡¥
+ 大域定数を定義ã™ã‚‹ï¼Ž
-void rb_define_global_const(const char *name, VALUE val)
+ rb_define_const(rb_cObject, name, 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_method(VALUE klass, const char *name, VALUE (*func)(), int argc)
+rb_define_private_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()ã¨åŒã˜ï¼Ž
- private¥á¥½¥Ã¥É¤òÄêµÁ¤¹¤ë¡¥°ú¿ô¤Ïrb_define_method()¤ÈƱ¤¸¡¥
+rb_define_singleton_method(VALUE klass, const char *name, VALUE (*func)(), int argc) ::
-rb_define_singleton_method(VALUE klass, const char *name, VALUE (*func)(), int argc)
+ 特異メソッドを定義ã™ã‚‹ï¼Žå¼•æ•°ã¯rb_define_method()ã¨åŒã˜ï¼Ž
- ÆÃ°Û¥á¥½¥Ã¥É¤òÄêµÁ¤¹¤ë¡¥°ú¿ô¤Ïrb_define_method()¤ÈƱ¤¸¡¥
+rb_scan_args(int argc, VALUE *argv, const char *fmt, ...) ::
-rb_scan_args(int argc, VALUE *argv, const char *fmt, ...)
+ argc, argvå½¢å¼ã§ä¸Žãˆã‚‰ã‚ŒãŸæŒ‡å®šã•れãŸãƒ•ォーマットã«å¾“ã£ã¦å¼•
+ 数を分解ã—,続ãVALUEã¸ã®å‚ç…§ã«ã‚»ãƒƒãƒˆã—ã¾ã™ï¼Žã“ã®ãƒ•ォーマッ
+ トã¯ï¼ŒABNFã§è¨˜è¿°ã™ã‚‹ã¨ä»¥ä¸‹ã®é€šã‚Šã§ã™ï¼Ž
- argc, argv·Á¼°¤ÇÍ¿¤¨¤é¤ì¤¿»ØÄꤵ¤ì¤¿¥Õ¥©¡¼¥Þ¥Ã¥È¤Ë½¾¤Ã¤Æ°ú
- ¿ô¤òʬ²ò¤·¡¤Â³¤¯VALUE¤Ø¤Î»²¾È¤Ë¥»¥Ã¥È¤·¤Þ¤¹¡¥¤³¤Î¥Õ¥©¡¼¥Þ¥Ã
- ¥È¤Ï¡¤ABNF¤Çµ­½Ò¤¹¤ë¤È°Ê²¼¤ÎÄ̤ê¤Ç¤¹¡¥
+ scan-arg-spec := param-arg-spec [option-hash-arg-spec] [block-arg-spec]
---
-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
-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 := "&" ; イテレータブロックをå–å¾—ã™ã‚‹ãŸã‚ã®
+ ; 指定
-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)ã«ãªã‚Šã¾ã™ï¼Ž
- ¥Õ¥©¡¼¥Þ¥Ã¥È¤¬"12"¤Î¾ì¹ç¡¤°ú¿ô¤ÏºÇÄã1¤Ä¤Ç¡¤3¤Ä(1+2)¤Þ¤Çµö¤µ
- ¤ì¤ë¤È¤¤¤¦°ÕÌ£¤Ë¤Ê¤ê¤Þ¤¹¡¥½¾¤Ã¤Æ¡¤¥Õ¥©¡¼¥Þ¥Ã¥Èʸ»úÎó¤Ë³¤¤
- ¤Æ3¤Ä¤ÎVALUE¤Ø¤Î»²¾È¤òÃÖ¤¯É¬Íפ¬¤¢¤ê¤Þ¤¹¡¥¤½¤ì¤é¤Ë¤Ï¼èÆÀ¤·¤¿
- ÊÑ¿ô¤¬¥»¥Ã¥È¤µ¤ì¤Þ¤¹¡¥ÊÑ¿ô¤Ø¤Î»²¾È¤ÎÂå¤ï¤ê¤ËNULL¤ò»ØÄꤹ¤ë
- ¤³¤È¤â¤Ç¤­¡¤¤½¤Î¾ì¹ç¤Ï¼èÆÀ¤·¤¿°ú¿ô¤ÎÃͤϼΤƤé¤ì¤Þ¤¹¡¥¤Ê¤ª¡¤
- ¾Êά²Äǽ°ú¿ô¤¬¾Êά¤µ¤ì¤¿»þ¤ÎÊÑ¿ô¤ÎÃͤÏnil(C¸À¸ì¤Î¥ì¥Ù¥ë¤Ç¤Ï
- Qnil)¤Ë¤Ê¤ê¤Þ¤¹¡¥
+ 返り値ã¯ä¸Žãˆã‚‰ã‚ŒãŸå¼•æ•°ã®æ•°ã§ã™ï¼Žã‚ªãƒ—ションãƒãƒƒã‚·ãƒ¥ãŠã‚ˆã³ã‚¤
+ ãƒ†ãƒ¬ãƒ¼ã‚¿ãƒ–ãƒ­ãƒƒã‚¯ã¯æ•°ãˆã¾ã›ã‚“.
- ÊÖ¤êÃͤÏÍ¿¤¨¤é¤ì¤¿°ú¿ô¤Î¿ô¤Ç¤¹¡¥¥ª¥×¥·¥ç¥ó¥Ï¥Ã¥·¥å¤ª¤è¤Ó¥¤
- ¥Æ¥ì¡¼¥¿¥Ö¥í¥Ã¥¯¤Ï¿ô¤¨¤Þ¤»¤ó¡¥
+== Rubyメソッド呼ã³å‡ºã—
-** Ruby¥á¥½¥Ã¥É¸Æ¤Ó½Ð¤·
+VALUE rb_funcall(VALUE recv, ID mid, int narg, ...) ::
-VALUE rb_funcall(VALUE recv, ID mid, int narg, ...)
+ メソッド呼ã³å‡ºã—.文字列ã‹ã‚‰midã‚’å¾—ã‚‹ãŸã‚ã«ã¯rb_intern()ã‚’
+ 使ã†ï¼Ž
+ private/protectedãªãƒ¡ã‚½ãƒƒãƒ‰ã§ã‚‚呼ã³å‡ºã›ã‚‹ï¼Ž
- ¥á¥½¥Ã¥É¸Æ¤Ó½Ð¤·¡¥Ê¸»úÎ󤫤émid¤òÆÀ¤ë¤¿¤á¤Ë¤Ïrb_intern()¤ò
- »È¤¦¡¥
+VALUE rb_funcall2(VALUE recv, ID mid, int argc, VALUE *argv) ::
+VALUE rb_funcallv(VALUE recv, ID mid, int argc, VALUE *argv) ::
-VALUE rb_funcall2(VALUE recv, ID mid, int argc, VALUE *argv)
+ メソッド呼ã³å‡ºã—.引数をargc, argvå½¢å¼ã§æ¸¡ã™ï¼Ž
+ private/protectedãªãƒ¡ã‚½ãƒƒãƒ‰ã§ã‚‚呼ã³å‡ºã›ã‚‹ï¼Ž
- ¥á¥½¥Ã¥É¸Æ¤Ó½Ð¤·¡¥°ú¿ô¤òargc, argv·Á¼°¤ÇÅϤ¹¡¥
+VALUE rb_funcallv_public(VALUE recv, ID mid, int argc, VALUE *argv) ::
+
+ メソッド呼ã³å‡ºã—.
+ publicãªãƒ¡ã‚½ãƒƒãƒ‰ã—ã‹å‘¼ã¹ãªã„.
VALUE rb_eval_string(const char *str)
- ʸ»úÎó¤òRuby¥¹¥¯¥ê¥×¥È¤È¤·¤Æ¥³¥ó¥Ñ¥¤¥ë¡¦¼Â¹Ô¤¹¤ë¡¥
+ 文字列をRubyスクリプトã¨ã—ã¦ã‚³ãƒ³ãƒ‘イル・実行ã™ã‚‹ï¼Ž
+
+ID rb_intern(const char *name) ::
+
+ 文字列ã«å¯¾å¿œã™ã‚‹IDã‚’è¿”ã™ï¼Ž
-ID rb_intern(const char *name)
+char *rb_id2name(ID id) ::
- ʸ»úÎó¤ËÂбþ¤¹¤ëID¤òÊÖ¤¹¡¥
+ IDã«å¯¾å¿œã™ã‚‹æ–‡å­—列を返ã™(デãƒãƒƒã‚°ç”¨).
-char *rb_id2name(ID id)
+char *rb_class2name(VALUE klass) ::
- ID¤ËÂбþ¤¹¤ëʸ»úÎó¤òÊÖ¤¹(¥Ç¥Ð¥Ã¥°ÍÑ)¡¥
+ クラスã®åå‰ã‚’è¿”ã™(デãƒãƒƒã‚°ç”¨).クラスãŒåå‰ã‚’æŒãŸãªã„時ã«
+ ã¯, 祖先をé¡ã£ã¦åå‰ã‚’æŒã¤ã‚¯ãƒ©ã‚¹ã®åå‰ã‚’è¿”ã™ï¼Ž
-char *rb_class2name(VALUE klass)
+int rb_respond_to(VALUE obj, ID id) ::
- ¥¯¥é¥¹¤Î̾Á°¤òÊÖ¤¹(¥Ç¥Ð¥Ã¥°ÍÑ)¡¥¥¯¥é¥¹¤¬Ì¾Á°¤ò»ý¤¿¤Ê¤¤»þ¤Ë
- ¤Ï, ÁÄÀè¤òÁ̤äÆÌ¾Á°¤ò»ý¤Ä¥¯¥é¥¹¤Î̾Á°¤òÊÖ¤¹¡¥
+ objãŒidã§ç¤ºã•れるメソッドをæŒã¤ã‹ã©ã†ã‹ã‚’è¿”ã™ï¼Ž
-int rb_respond_to(VALUE obj, ID id)
+== インスタンス変数
- obj¤¬id¤Ç¼¨¤µ¤ì¤ë¥á¥½¥Ã¥É¤ò»ý¤Ä¤«¤É¤¦¤«¤òÊÖ¤¹¡¥
+VALUE rb_iv_get(VALUE obj, const char *name) ::
-** ¥¤¥ó¥¹¥¿¥ó¥¹ÊÑ¿ô
+ objã®ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹å¤‰æ•°ã®å€¤ã‚’得る.`@'ã§å§‹ã¾ã‚‰ãªã„インスタン
+ ス変数㯠Rubyプログラムã‹ã‚‰ã‚¢ã‚¯ã‚»ã‚¹ã§ããªã„「隠れãŸã€ã‚¤ãƒ³
+ スタンス変数ã«ãªã‚‹ï¼Žå®šæ•°ã¯å¤§æ–‡å­—ã®åå‰ã‚’æŒã¤ã‚¯ãƒ©ã‚¹(ã¾ãŸã¯
+ モジュール)ã®ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹å¤‰æ•°ã¨ã—ã¦å®Ÿè£…ã•れã¦ã„る.
-VALUE rb_iv_get(VALUE obj, const char *name)
+VALUE rb_iv_set(VALUE obj, const char *name, VALUE val) ::
- obj¤Î¥¤¥ó¥¹¥¿¥ó¥¹ÊÑ¿ô¤ÎÃͤòÆÀ¤ë¡¥`@'¤Ç»Ï¤Þ¤é¤Ê¤¤¥¤¥ó¥¹¥¿¥ó
- ¥¹ÊÑ¿ô¤Ï Ruby¥×¥í¥°¥é¥à¤«¤é¥¢¥¯¥»¥¹¤Ç¤­¤Ê¤¤¡Ö±£¤ì¤¿¡×¥¤¥ó
- ¥¹¥¿¥ó¥¹ÊÑ¿ô¤Ë¤Ê¤ë¡¥Äê¿ô¤ÏÂçʸ»ú¤Î̾Á°¤ò»ý¤Ä¥¯¥é¥¹(¤Þ¤¿¤Ï
- ¥â¥¸¥å¡¼¥ë)¤Î¥¤¥ó¥¹¥¿¥ó¥¹ÊÑ¿ô¤È¤·¤Æ¼ÂÁõ¤µ¤ì¤Æ¤¤¤ë¡¥
+ objã®ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹å¤‰æ•°ã‚’valã«ã‚»ãƒƒãƒˆã™ã‚‹ï¼Ž
-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ã•れãŸå€¤ã‚’å–り出ã™ã“ã¨ãŒã§ãる.
-VALUE rb_block_call(VALUE obj, ID mid, int argc, VALUE * argv,
- VALUE (*func) (ANYARGS), VALUE data2)
+[OBSOLETE] VALUE rb_iterate(VALUE (*func1)(), VALUE arg1, VALUE (*func2)(), VALUE arg2) ::
- func¤ò¥Ö¥í¥Ã¥¯¤È¤·¤ÆÀßÄꤷ¡¤obj¤ò¥ì¥·¡¼¥Ð¡¤argc¤Èargv¤ò°ú¿ô
- ¤È¤·¤Æmid¥á¥½¥Ã¥É¤ò¸Æ¤Ó½Ð¤¹¡¥func¤ÏÂè°ì°ú¿ô¤Ëyield¤µ¤ì¤¿ÃÍ¡¤
- ÂèÆó°ú¿ô¤Ëdata2¤ò¼õ¤±¼è¤ë¡¥Ê£¿ô¤ÎÃͤ¬yield¤µ¤ì¤¿¾ì¹ç(C¤Ç¤Ï
- rb_yield_values()¤Èrb_yield_values2(), rb_yield_splat())¡¤
- data2¤ÏArray¤È¤·¤Æ¥Ñ¥Ã¥¯¤µ¤ì¤Æ¤¤¤ë¡¥Âè»°, Âè»Í°ú¿ô¤Îargc¤È
- argv¤Ë¤è¤Ã¤Æyield¤µ¤ì¤¿Ãͤò¼è¤ê½Ð¤¹¤³¤È¤¬¤Ç¤­¤ë¡¥
+ func2をブロックã¨ã—ã¦è¨­å®šã—, func1をイテレータã¨ã—ã¦å‘¼ã¶ï¼Ž
+ func1ã«ã¯ arg1ãŒå¼•æ•°ã¨ã—ã¦æ¸¡ã•れ, func2ã«ã¯ç¬¬1引数ã«ã‚¤ãƒ†ãƒ¬ãƒ¼
+ ã‚¿ã‹ã‚‰ä¸Žãˆã‚‰ã‚ŒãŸå€¤, 第2引数ã«arg2ãŒæ¸¡ã•れる.
-[OBSOLETE] VALUE rb_iterate(VALUE (*func1)(), VALUE arg1, VALUE (*func2)(), VALUE arg2)
+ 1.9ã§rb_iterateを使ã†å ´åˆã¯, func1ã®ä¸­ã§Rubyレベルã®ãƒ¡ã‚½ãƒƒãƒ‰
+ を呼ã³å‡ºã•ãªã‘れã°ãªã‚‰ãªã„.
+ 1.9ã§obsoleteã¨ãªã£ãŸ. 代ã‚りã«rb_block_callãŒç”¨æ„ã•れãŸ.
- 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) ::
-VALUE rb_yield(VALUE val)
+ valを値ã¨ã—ã¦ã‚¤ãƒ†ãƒ¬ãƒ¼ã‚¿ãƒ–ロックを呼ã³å‡ºã™ï¼Ž
- val¤òÃͤȤ·¤Æ¥¤¥Æ¥ì¡¼¥¿¥Ö¥í¥Ã¥¯¤ò¸Æ¤Ó½Ð¤¹¡¥
+VALUE rb_rescue(VALUE (*func1)(), VALUE arg1, VALUE (*func2)(), VALUE arg2) ::
-VALUE rb_rescue(VALUE (*func1)(), VALUE arg1, VALUE (*func2)(), VALUE arg2)
+ 関数func1ã‚’arg1を引数ã«å‘¼ã³å‡ºã™ï¼Žfunc1ã®å®Ÿè¡Œä¸­ã«ä¾‹å¤–ãŒç™ºç”Ÿ
+ ã—ãŸæ™‚ã«ã¯ func2ã‚’arg2を引数ã¨ã—ã¦å‘¼ã¶ï¼Žæˆ»ã‚Šå€¤ã¯ä¾‹å¤–ãŒç™ºç”Ÿ
+ ã—ãªã‹ã£ãŸæ™‚ã¯func1ã®æˆ»ã‚Šå€¤, 例外ãŒç™ºç”Ÿã—ãŸæ™‚ã«ã¯func2ã®æˆ»
+ り値ã§ã‚る.
- ´Ø¿ôfunc1¤òarg1¤ò°ú¿ô¤Ë¸Æ¤Ó½Ð¤¹¡¥func1¤Î¼Â¹ÔÃæ¤ËÎã³°¤¬È¯À¸
- ¤·¤¿»þ¤Ë¤Ï func2¤òarg2¤ò°ú¿ô¤È¤·¤Æ¸Æ¤Ö¡¥Ìá¤êÃͤÏÎã³°¤¬È¯À¸
- ¤·¤Ê¤«¤Ã¤¿»þ¤Ïfunc1¤ÎÌá¤êÃÍ, Îã³°¤¬È¯À¸¤·¤¿»þ¤Ë¤Ïfunc2¤ÎÌá
- ¤êÃͤǤ¢¤ë¡¥
+VALUE rb_ensure(VALUE (*func1)(), VALUE arg1, VALUE (*func2)(), VALUE arg2) ::
-VALUE rb_ensure(VALUE (*func1)(), VALUE arg1, VALUE (*func2)(), VALUE arg2)
+ 関数func1ã‚’arg1を引数ã¨ã—ã¦å®Ÿè¡Œã—, 実行終了後(ãŸã¨ãˆä¾‹å¤–ãŒ
+ 発生ã—ã¦ã‚‚) func2ã‚’arg2を引数ã¨ã—ã¦å®Ÿè¡Œã™ã‚‹ï¼Žæˆ»ã‚Šå€¤ã¯func1
+ ã®æˆ»ã‚Šå€¤ã§ã‚ã‚‹(例外ãŒç™ºç”Ÿã—ãŸæ™‚ã¯æˆ»ã‚‰ãªã„).
- ´Ø¿ôfunc1¤òarg1¤ò°ú¿ô¤È¤·¤Æ¼Â¹Ô¤·, ¼Â¹Ô½ªÎ»¸å(¤¿¤È¤¨Îã³°¤¬
- ȯÀ¸¤·¤Æ¤â) func2¤òarg2¤ò°ú¿ô¤È¤·¤Æ¼Â¹Ô¤¹¤ë¡¥Ìá¤êÃͤÏfunc1
- ¤ÎÌá¤êÃͤǤ¢¤ë(Îã³°¤¬È¯À¸¤·¤¿»þ¤ÏÌá¤é¤Ê¤¤)¡¥
+VALUE rb_protect(VALUE (*func) (VALUE), VALUE arg, int *state) ::
-VALUE rb_protect(VALUE (*func) (VALUE), VALUE arg, int *state)
+ 関数funcã‚’argを引数ã¨ã—ã¦å®Ÿè¡Œã—, 例外ãŒç™ºç”Ÿã—ãªã‘れã°ãã®æˆ»
+ り値を返ã™ï¼Žä¾‹å¤–ãŒç™ºç”Ÿã—ãŸå ´åˆã¯, *stateã«éž0をセットã—ã¦
+ Qnilã‚’è¿”ã™ï¼Ž
+ rb_jump_tag()を呼ã°ãšã«æ•æ‰ã—ãŸä¾‹å¤–を無視ã™ã‚‹å ´åˆã«ã¯ï¼Œ
+ rb_set_errinfo(Qnil)ã§ã‚¨ãƒ©ãƒ¼æƒ…報をクリアã—ãªã‘れã°ãªã‚‰ãªã„.
- ´Ø¿ôfunc¤òarg¤ò°ú¿ô¤È¤·¤Æ¼Â¹Ô¤·, Îã³°¤¬È¯À¸¤·¤Ê¤±¤ì¤Ð¤½¤ÎÌá
- ¤êÃͤòÊÖ¤¹¡¥Îã³°¤¬È¯À¸¤·¤¿¾ì¹ç¤Ï, *state¤ËÈó0¤ò¥»¥Ã¥È¤·¤Æ
- Qnil¤òÊÖ¤¹¡¥
+void rb_jump_tag(int state) ::
-void rb_jump_tag(int state)
+ rb_protect()ã‚„rb_eval_string_protect()ã§æ•æ‰ã•れãŸä¾‹å¤–ã‚’å†
+ é€ã™ã‚‹ï¼Žstateã¯ãれらã®é–¢æ•°ã‹ã‚‰è¿”ã•れãŸå€¤ã§ãªã‘れã°ãªã‚‰ãªã„.
+ ã“ã®é–¢æ•°ã¯ç›´æŽ¥ã®å‘¼ã³å‡ºã—å…ƒã«æˆ»ã‚‰ãªã„.
- rb_protect()¤ärb_eval_string_protect()¤ÇÊ᪤µ¤ì¤¿Îã³°¤òºÆ
- Á÷¤¹¤ë¡¥state¤Ï¤½¤ì¤é¤Î´Ø¿ô¤«¤éÊÖ¤µ¤ì¤¿ÃͤǤʤ±¤ì¤Ð¤Ê¤é¤Ê¤¤¡¥
- ¤³¤Î´Ø¿ô¤ÏľÀܤθƤӽФ·¸µ¤ËÌá¤é¤Ê¤¤¡¥
+void rb_iter_break() ::
-** Îã³°¡¦¥¨¥é¡¼
+ ç¾åœ¨ã®æœ€ã‚‚内å´ã®ãƒ–ロックを終了ã™ã‚‹ï¼Žã“ã®é–¢æ•°ã¯ç›´æŽ¥ã®å‘¼ã³å‡º
+ ã—å…ƒã«æˆ»ã‚‰ãªã„.
-void rb_warning(const char *fmt, ...)
+void rb_iter_break_value(VALUE value) ::
- rb_verbose»þ¤Ëɸ½à¥¨¥é¡¼½ÐÎϤ˷ٹð¾ðÊó¤òɽ¼¨¤¹¤ë¡¥°ú¿ô¤Ï
- printf()¤ÈƱ¤¸¡¥
+ ç¾åœ¨ã®æœ€ã‚‚内å´ã®ãƒ–ロックをvalueã§çµ‚了ã™ã‚‹ï¼Žãƒ–ロックã¯å¼•æ•°ã§
+ 与ãˆã‚‰ã‚ŒãŸvalueã‚’è¿”ã™ï¼Žã“ã®é–¢æ•°ã¯ç›´æŽ¥ã®å‘¼ã³å‡ºã—å…ƒã«æˆ»ã‚‰ãªã„.
-void rb_raise(rb_eRuntimeError, const char *fmt, ...)
+== 例外・エラー
- RuntimeErrorÎã³°¤òȯÀ¸¤µ¤»¤ë¡¥°ú¿ô¤Ïprintf()¤ÈƱ¤¸¡¥
+void rb_warning(const char *fmt, ...) ::
-void rb_raise(VALUE exception, const char *fmt, ...)
+ rb_verboseæ™‚ã«æ¨™æº–エラー出力ã«è­¦å‘Šæƒ…報を表示ã™ã‚‹ï¼Žå¼•æ•°ã¯
+ printf()ã¨åŒã˜ï¼Ž
- exception¤Ç»ØÄꤷ¤¿Îã³°¤òȯÀ¸¤µ¤»¤ë¡¥fmt°Ê²¼¤Î°ú¿ô¤Ï
- printf()¤ÈƱ¤¸¡¥
+void rb_raise(rb_eRuntimeError, const char *fmt, ...) ::
-void rb_fatal(const char *fmt, ...)
+ RuntimeError例外を発生ã•ã›ã‚‹ï¼Žå¼•æ•°ã¯printf()ã¨åŒã˜ï¼Ž
- Ã×̿ŪÎã³°¤òȯÀ¸¤µ¤»¤ë¡¥Ä̾ï¤ÎÎã³°½èÍý¤Ï¹Ô¤Ê¤ï¤ì¤º, ¥¤¥ó¥¿¡¼
- ¥×¥ê¥¿¤¬½ªÎ»¤¹¤ë(¤¿¤À¤·ensure¤Ç»ØÄꤵ¤ì¤¿¥³¡¼¥É¤Ï½ªÎ»Á°¤Ë
- ¼Â¹Ô¤µ¤ì¤ë)¡¥
+void rb_raise(VALUE exception, const char *fmt, ...) ::
-void rb_bug(const char *fmt, ...)
+ exceptionã§æŒ‡å®šã—ãŸä¾‹å¤–を発生ã•ã›ã‚‹ï¼Žfmt以下ã®å¼•æ•°ã¯
+ printf()ã¨åŒã˜ï¼Ž
- ¥¤¥ó¥¿¡¼¥×¥ê¥¿¤Ê¤É¥×¥í¥°¥é¥à¤Î¥Ð¥°¤Ç¤·¤«È¯À¸¤¹¤ë¤Ï¤º¤Î¤Ê¤¤
- ¾õ¶·¤Î»þ¸Æ¤Ö¡¥¥¤¥ó¥¿¡¼¥×¥ê¥¿¤Ï¥³¥¢¥À¥ó¥×¤·Ä¾¤Á¤Ë½ªÎ»¤¹¤ë¡¥
- Îã³°½èÍý¤Ï°ìÀڹԤʤï¤ì¤Ê¤¤¡¥
+void rb_fatal(const char *fmt, ...) ::
-** Ruby¤Î½é´ü²½¡¦¼Â¹Ô
+ 致命的例外を発生ã•ã›ã‚‹ï¼Žé€šå¸¸ã®ä¾‹å¤–処ç†ã¯è¡Œãªã‚れãš, インター
+ プリタãŒçµ‚了ã™ã‚‹(ãŸã ã—ensureã§æŒ‡å®šã•れãŸã‚³ãƒ¼ãƒ‰ã¯çµ‚了å‰ã«
+ 実行ã•れる).
-Ruby¤ò¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤ËËä¤á¹þ¤à¾ì¹ç¤Ë¤Ï°Ê²¼¤Î¥¤¥ó¥¿¥Õ¥§¡¼¥¹
-¤ò»È¤¦¡¥Ä̾ï¤Î³ÈÄ¥¥é¥¤¥Ö¥é¥ê¤Ë¤ÏɬÍפʤ¤¡¥
+void rb_bug(const char *fmt, ...) ::
-void ruby_init()
+ インタープリタãªã©ãƒ—ログラムã®ãƒã‚°ã§ã—ã‹ç™ºç”Ÿã™ã‚‹ã¯ãšã®ãªã„
+ 状æ³ã®æ™‚呼ã¶ï¼Žã‚¤ãƒ³ã‚¿ãƒ¼ãƒ—リタã¯ã‚³ã‚¢ãƒ€ãƒ³ãƒ—ã—ç›´ã¡ã«çµ‚了ã™ã‚‹ï¼Ž
+ 例外処ç†ã¯ä¸€åˆ‡è¡Œãªã‚れãªã„.
- Ruby¥¤¥ó¥¿¥×¥ê¥¿¤Î½é´ü²½¤ò¹Ô¤Ê¤¦¡¥
+注æ„: %iã¯Object#to_s('+'ãƒ•ãƒ©ã‚°ãŒæŒ‡å®šã•れã¦ã„ã‚‹ã¨ãã¯Object#inspect)ã‚’
+使ã£ãŸVALUEã®å‡ºåŠ›ã«ä½¿ç”¨ã•れã¦ã„ã‚‹ãŸã‚,整数ã«ã¯%dを使用ã™ã‚‹ã“ã¨ï¼Ž
-void ruby_options(int argc, char **argv)
+== Rubyã®åˆæœŸåŒ–・実行
- Ruby¥¤¥ó¥¿¥×¥ê¥¿¤Î¥³¥Þ¥ó¥É¥é¥¤¥ó°ú¿ô¤Î½èÍý¤ò¹Ô¤Ê¤¦¡¥
+Rubyをアプリケーションã«åŸ‹ã‚込む場åˆã«ã¯ä»¥ä¸‹ã®ã‚¤ãƒ³ã‚¿ãƒ•ェース
+を使ã†ï¼Žé€šå¸¸ã®æ‹¡å¼µãƒ©ã‚¤ãƒ–ラリã«ã¯å¿…è¦ãªã„.
-void ruby_run()
+void ruby_init() ::
- Ruby¥¤¥ó¥¿¥×¥ê¥¿¤ò¼Â¹Ô¤¹¤ë¡¥
+ Rubyインタプリタã®åˆæœŸåŒ–を行ãªã†ï¼Ž
-void ruby_script(char *name)
+void ruby_options(int argc, char **argv) ::
- Ruby¤Î¥¹¥¯¥ê¥×¥È̾($0)¤òÀßÄꤹ¤ë¡¥
+ Rubyインタプリタã®ã‚³ãƒžãƒ³ãƒ‰ãƒ©ã‚¤ãƒ³å¼•æ•°ã®å‡¦ç†ã‚’行ãªã†ï¼Ž
-** ¥¤¥ó¥¿¥×¥ê¥¿¤Î¥¤¥Ù¥ó¥È¤Î¥Õ¥Ã¥¯
+void ruby_run() ::
- void rb_add_event_hook(rb_event_hook_func_t func, rb_event_flag_t events, VALUE data)
+ Rubyインタプリタを実行ã™ã‚‹ï¼Ž
-»ØÄꤵ¤ì¤¿¥¤¥ó¥¿¥×¥ê¥¿¤Î¥¤¥Ù¥ó¥È¤ËÂФ¹¤ë¥Õ¥Ã¥¯´Ø¿ô¤òÄɲä·¤Þ¤¹¡¥
-events¤Ï°Ê²¼¤ÎÃͤÎor¤Ç¤Ê¤±¤ì¤Ð¤Ê¤ê¤Þ¤»¤ó:
+void ruby_script(char *name) ::
- 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
+ Rubyã®ã‚¹ã‚¯ãƒªãƒ—トå($0)を設定ã™ã‚‹ï¼Ž
-rb_event_hook_func_t¤ÎÄêµÁ¤Ï°Ê²¼¤ÎÄ̤ê¤Ç¤¹:
+== インタプリタã®ã‚¤ãƒ™ãƒ³ãƒˆã®ãƒ•ック
- typedef void (*rb_event_hook_func_t)(rb_event_t event, VALUE data,
- VALUE self, ID id, VALUE klass)
+ void rb_add_event_hook(rb_event_hook_func_t func, rb_event_flag_t events,
+ VALUE data)
-rb_add_event_hook() ¤ÎÂè3°ú¿ô data ¤Ï¡¤¥Õ¥Ã¥¯´Ø¿ô¤ÎÂè2°ú¿ô¤È
-¤·¤ÆÅϤµ¤ì¤Þ¤¹¡¥¤³¤ì¤Ï1.8¤Ç¤Ï¸½ºß¤ÎNODE¤Ø¤Î¥Ý¥¤¥ó¥¿¤Ç¤·¤¿¡¥°Ê
-²¼¤Î RB_EVENT_HOOKS_HAVE_CALLBACK_DATA ¤â»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡¥
+指定ã•れãŸã‚¤ãƒ³ã‚¿ãƒ—リタã®ã‚¤ãƒ™ãƒ³ãƒˆã«å¯¾ã™ã‚‹ãƒ•ック関数を追加ã—ã¾ã™ï¼Ž
+eventsã¯ä»¥ä¸‹ã®å€¤ã®orã§ãªã‘れã°ãªã‚Šã¾ã›ã‚“:
- int rb_remove_event_hook(rb_event_hook_func_t func)
+ 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)
-API¤Î¸ß´¹À­¤ò¥Á¥§¥Ã¥¯¤¹¤ë¤¿¤á¤Ë°Ê²¼¤Î¥Þ¥¯¥í¤¬¥Ç¥Õ¥©¥ë¥È¤ÇÄêµÁ¤µ¤ì¤Æ¤¤¤Þ¤¹¡¥
+rb_add_event_hook() ã®ç¬¬3引数 data ã¯ï¼Œãƒ•ック関数ã®ç¬¬2引数ã¨
+ã—ã¦æ¸¡ã•れã¾ã™ï¼Žã“れã¯1.8ã§ã¯ç¾åœ¨ã®NODEã¸ã®ãƒã‚¤ãƒ³ã‚¿ã§ã—ãŸï¼Žä»¥
+下㮠RB_EVENT_HOOKS_HAVE_CALLBACK_DATA ã‚‚å‚ç…§ã—ã¦ãã ã•ã„.
-NORETURN_STYLE_NEW
+ int rb_remove_event_hook(rb_event_hook_func_t func)
- NORETURN ¥Þ¥¯¥í¤¬´Ø¿ô·¿¥Þ¥¯¥í¤È¤·¤ÆÄêµÁ¤µ¤ì¤Æ¤¤¤ë¤³¤È¤ò°ÕÌ£¤¹¤ë¡¥
+指定ã•れãŸãƒ•ック関数を削除ã—ã¾ã™ï¼Ž
-HAVE_RB_DEFINE_ALLOC_FUNC
+== äº’æ›æ€§ã®ãŸã‚ã®ãƒžã‚¯ãƒ­
- rb_define_alloc_func() ´Ø¿ô¤¬Ä󶡤µ¤ì¤Æ¤¤¤ë¤³¤È¡¤¤Ä¤Þ¤ê
- allocation framework ¤¬»È¤ï¤ì¤ë¤³¤È¤ò°ÕÌ£¤¹¤ë¡¥
+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
+HAVE_RB_REG_NEW_STR ::
- String¥ª¥Ö¥¸¥§¥¯¥È¤«¤éRegexp¥ª¥Ö¥¸¥§¥¯¥È¤òºî¤ë
- rb_reg_new_str() ´Ø¿ô¤¬Ä󶡤µ¤ì¤Æ¤¤¤ë¤³¤È¤ò°ÕÌ£¤¹¤ë¡¥
+ Stringオブジェクトã‹ã‚‰Regexpオブジェクトを作る
+ rb_reg_new_str() é–¢æ•°ãŒæä¾›ã•れã¦ã„ã‚‹ã“ã¨ã‚’æ„味ã™ã‚‹ï¼Ž
have_func("rb_reg_new_str", "ruby.h").
- ¤Î·ë²Ì¤ÈƱ¤¸¡¥
+ ã®çµæžœã¨åŒã˜ï¼Ž
-HAVE_RB_IO_T
+HAVE_RB_IO_T ::
- rb_io_t ·¿¤¬Ä󶡤µ¤ì¤Æ¤¤¤ë¤³¤È¤ò°ÕÌ£¤¹¤ë¡¥
+ rb_io_t åž‹ãŒæä¾›ã•れã¦ã„ã‚‹ã“ã¨ã‚’æ„味ã™ã‚‹ï¼Ž
-USE_SYMBOL_AS_METHOD_NAME
+USE_SYMBOL_AS_METHOD_NAME ::
- ¥á¥½¥Ã¥É̾¤òÊÖ¤¹¥á¥½¥Ã¥É¡¤Module#methods, #singleton_methods
- ¤Ê¤É¤¬Symbol¤òÊÖ¤¹¤³¤È¤ò°ÕÌ£¤¹¤ë¡¥
+ メソッドåã‚’è¿”ã™ãƒ¡ã‚½ãƒƒãƒ‰ï¼ŒModule#methods, #singleton_methods
+ ãªã©ãŒSymbolã‚’è¿”ã™ã“ã¨ã‚’æ„味ã™ã‚‹ï¼Ž
-HAVE_RUBY_*_H
+HAVE_RUBY_*_H ::
- ruby.h ¤ÇÄêµÁ¤µ¤ì¤Æ¤¤¤ë¡¥Âбþ¤¹¤ë¥Ø¥Ã¥À¤¬Ä󶡤µ¤ì¤Æ¤¤¤ë¤³¤È
- ¤ò°ÕÌ£¤¹¤ë¡¥¤¿¤È¤¨¤Ð¡¤HAVE_RUBY_ST_H ¤¬ÄêµÁ¤µ¤ì¤Æ¤¤¤ë¾ì¹ç¤Ï
- ñ¤Ê¤ë st.h ¤Ç¤Ï¤Ê¤¯ ruby/st.h ¤ò»ÈÍѤ¹¤ë¡¥
+ ruby.h ã§å®šç¾©ã•れã¦ã„る.対応ã™ã‚‹ãƒ˜ãƒƒãƒ€ãŒæä¾›ã•れã¦ã„ã‚‹ã“ã¨
+ ã‚’æ„味ã™ã‚‹ï¼ŽãŸã¨ãˆã°ï¼ŒHAVE_RUBY_ST_H ãŒå®šç¾©ã•れã¦ã„ã‚‹å ´åˆã¯
+ å˜ãªã‚‹ st.h ã§ã¯ãªã ruby/st.h を使用ã™ã‚‹ï¼Ž
-RB_EVENT_HOOKS_HAVE_CALLBACK_DATA
+RB_EVENT_HOOKS_HAVE_CALLBACK_DATA ::
- rb_add_event_hook() ¤¬¥Õ¥Ã¥¯´Ø¿ô¤ËÅϤ¹ data ¤òÂè3°ú¿ô¤È¤·¤Æ
- ¼õ¤±¼è¤ë¤³¤È¤ò°ÕÌ£¤¹¤ë¡¥
+ rb_add_event_hook() ãŒãƒ•ãƒƒã‚¯é–¢æ•°ã«æ¸¡ã™ data を第3引数ã¨ã—ã¦
+ å—ã‘å–ã‚‹ã“ã¨ã‚’æ„味ã™ã‚‹ï¼Ž
-Appendix C. extconf.rb¤Ç»È¤¨¤ë´Ø¿ô¤¿¤Á
+= Appendix C. extconf.rbã§ä½¿ãˆã‚‹é–¢æ•°ãŸã¡
-extconf.rb¤ÎÃæ¤Ç¤ÏÍøÍѲÄǽ¤Ê¥³¥ó¥Ñ¥¤¥ë¾ò·ï¥Á¥§¥Ã¥¯¤Î´Ø¿ô¤Ï°Ê
-²¼¤ÎÄ̤ê¤Ç¤¢¤ë¡¥
+extconf.rbã®ä¸­ã§ã¯åˆ©ç”¨å¯èƒ½ãªã‚³ãƒ³ãƒ‘イルæ¡ä»¶ãƒã‚§ãƒƒã‚¯ã®é–¢æ•°ã¯ä»¥
+下ã®é€šã‚Šã§ã‚る.
-have_macro(macro, headers)
+have_macro(macro, headers) ::
- ¥Ø¥Ã¥À¥Õ¥¡¥¤¥ëheader¤ò¥¤¥ó¥¯¥ë¡¼¥É¤·¤Æ¥Þ¥¯¥ímacro¤¬ÄêµÁ¤µ
- ¤ì¤Æ¤¤¤ë¤«¤É¤¦¤«¥Á¥§¥Ã¥¯¤¹¤ë¡¥¥Þ¥¯¥í¤¬ÄêµÁ¤µ¤ì¤Æ¤¤¤ë»þtrue
- ¤òÊÖ¤¹¡¥
+ ヘッダファイルheaderをインクルードã—ã¦ãƒžã‚¯ãƒ­macroãŒå®šç¾©ã•
+ れã¦ã„ã‚‹ã‹ã©ã†ã‹ãƒã‚§ãƒƒã‚¯ã™ã‚‹ï¼Žãƒžã‚¯ãƒ­ãŒå®šç¾©ã•れã¦ã„る時true
+ ã‚’è¿”ã™ï¼Ž
-have_library(lib, func)
+have_library(lib, func) ::
- ´Ø¿ôfunc¤òÄêµÁ¤·¤Æ¤¤¤ë¥é¥¤¥Ö¥é¥êlib¤Î¸ºß¤ò¥Á¥§¥Ã¥¯¤¹¤ë¡¥
- ¥é¥¤¥Ö¥é¥ê¤¬Â¸ºß¤¹¤ë»þ¡¤true¤òÊÖ¤¹¡¥
+ 関数funcを定義ã—ã¦ã„るライブラリlibã®å­˜åœ¨ã‚’ãƒã‚§ãƒƒã‚¯ã™ã‚‹ï¼Ž
+ ãƒã‚§ãƒƒã‚¯ã«æˆåŠŸã™ã‚‹ã¨ï¼Œ-llibã‚’$libsã«è¿½åŠ ã—,trueã‚’è¿”ã™ï¼Ž
-find_library(lib, func, path...)
+find_library(lib, func, path...) ::
- ´Ø¿ôfunc¤òÄêµÁ¤·¤Æ¤¤¤ë¥é¥¤¥Ö¥é¥êlib¤Î¸ºß¤ò -Lpath ¤òÄɲÃ
- ¤·¤Ê¤¬¤é¥Á¥§¥Ã¥¯¤¹¤ë¡¥¥é¥¤¥Ö¥é¥ê¤¬¸«ÉÕ¤«¤Ã¤¿»þ¡¤true¤òÊÖ¤¹¡¥
+ 関数funcを定義ã—ã¦ã„るライブラリlibã®å­˜åœ¨ã‚’ -Lpath を追加
+ ã—ãªãŒã‚‰ãƒã‚§ãƒƒã‚¯ã™ã‚‹ï¼Žãƒã‚§ãƒƒã‚¯ã«æˆåŠŸã™ã‚‹ã¨ï¼Œ-llibã‚’$libsã«
+ 追加ã—,trueã‚’è¿”ã™ï¼Ž
-have_func(func, header)
+have_func(func, header) ::
- ¥Ø¥Ã¥À¥Õ¥¡¥¤¥ëheader¤ò¥¤¥ó¥¯¥ë¡¼¥É¤·¤Æ´Ø¿ôfunc¤Î¸ºß¤ò¥Á¥§
- ¥Ã¥¯¤¹¤ë¡¥func¤¬É¸½à¤Ç¤Ï¥ê¥ó¥¯¤µ¤ì¤Ê¤¤¥é¥¤¥Ö¥é¥êÆâ¤Î¤â¤Î¤Ç
- ¤¢¤ë»þ¤Ë¤ÏÀè¤Ëhave_library¤Ç¤½¤Î¥é¥¤¥Ö¥é¥ê¤ò¥Á¥§¥Ã¥¯¤·¤Æ¤ª
- ¤¯»ö¡¥´Ø¿ô¤¬Â¸ºß¤¹¤ë»þtrue¤òÊÖ¤¹¡¥
+ ヘッダファイルheaderをインクルードã—ã¦é–¢æ•°funcã®å­˜åœ¨ã‚’ãƒã‚§
+ ックã™ã‚‹ï¼ŽfuncãŒæ¨™æº–ã§ã¯ãƒªãƒ³ã‚¯ã•れãªã„ライブラリ内ã®ã‚‚ã®ã§
+ ã‚る時ã«ã¯å…ˆã«have_libraryã§ãã®ãƒ©ã‚¤ãƒ–ラリをãƒã‚§ãƒƒã‚¯ã—ã¦ãŠ
+ ã事.ãƒã‚§ãƒƒã‚¯ã«æˆåŠŸã™ã‚‹ã¨ï¼Œãƒ—リプロセッサマクロ
+ `HAVE_{FUNC}` を定義ã—,trueã‚’è¿”ã™ï¼Ž
-have_var(var, header)
+have_var(var, header) ::
- ¥Ø¥Ã¥À¥Õ¥¡¥¤¥ëheader¤ò¥¤¥ó¥¯¥ë¡¼¥É¤·¤ÆÊÑ¿ôvar¤Î¸ºß¤ò¥Á¥§¥Ã
- ¥¯¤¹¤ë¡¥var¤¬É¸½à¤Ç¤Ï¥ê¥ó¥¯¤µ¤ì¤Ê¤¤¥é¥¤¥Ö¥é¥êÆâ¤Î¤â¤Î¤Ç¤¢
- ¤ë»þ¤Ë¤ÏÀè¤Ëhave_library¤Ç¤½¤Î¥é¥¤¥Ö¥é¥ê¤ò¥Á¥§¥Ã¥¯¤·¤Æ¤ª¤¯
- »ö¡¥ÊÑ¿ô¤¬Â¸ºß¤¹¤ë»þtrue¤òÊÖ¤¹¡¥
+ ヘッダファイルheaderをインクルードã—ã¦å¤‰æ•°varã®å­˜åœ¨ã‚’ãƒã‚§ãƒƒ
+ クã™ã‚‹ï¼ŽvarãŒæ¨™æº–ã§ã¯ãƒªãƒ³ã‚¯ã•れãªã„ライブラリ内ã®ã‚‚ã®ã§ã‚
+ る時ã«ã¯å…ˆã«have_libraryã§ãã®ãƒ©ã‚¤ãƒ–ラリをãƒã‚§ãƒƒã‚¯ã—ã¦ãŠã
+ 事.ãƒã‚§ãƒƒã‚¯ã«æˆåŠŸã™ã‚‹ã¨ï¼Œãƒ—リプロセッサマクロ
+ `HAVE_{VAR}` を定義ã—,trueã‚’è¿”ã™ï¼Ž
-have_header(header)
+have_header(header) ::
- ¥Ø¥Ã¥À¥Õ¥¡¥¤¥ë¤Î¸ºß¤ò¥Á¥§¥Ã¥¯¤¹¤ë¡¥¥Ø¥Ã¥À¥Õ¥¡¥¤¥ë¤¬Â¸ºß¤¹
- ¤ë»þtrue¤òÊÖ¤¹¡¥
+ ヘッダファイルã®å­˜åœ¨ã‚’ãƒã‚§ãƒƒã‚¯ã™ã‚‹ï¼Žãƒã‚§ãƒƒã‚¯ã«æˆåŠŸã™ã‚‹ã¨ï¼Œ
+ プリプロセッサマクロ `HAVE_{HEADER_H}` を定義ã—,trueã‚’è¿”ã™ï¼Ž
+ (スラッシュやドットã¯ã‚¢ãƒ³ãƒ€ãƒ¼ã‚¹ã‚³ã‚¢ã«ç½®æ›ã•れる)
-find_header(header, path...)
+find_header(header, path...) ::
- ¥Ø¥Ã¥À¥Õ¥¡¥¤¥ëheader¤Î¸ºß¤ò -Ipath ¤òÄɲ䷤ʤ¬¤é¥Á¥§¥Ã¥¯
- ¤¹¤ë¡¥¥Ø¥Ã¥À¥Õ¥¡¥¤¥ë¤¬¸«ÉÕ¤«¤Ã¤¿»þ¡¤true¤òÊÖ¤¹¡¥
+ ヘッダファイルheaderã®å­˜åœ¨ã‚’ -Ipath を追加ã—ãªãŒã‚‰ãƒã‚§ãƒƒã‚¯
+ ã™ã‚‹ï¼Žãƒã‚§ãƒƒã‚¯ã«æˆåŠŸã™ã‚‹ã¨ï¼Œãƒ—リプロセッサマクロ
+ `HAVE_{HEADER_H}` を定義ã—,trueã‚’è¿”ã™ï¼Ž
+ (スラッシュやドットã¯ã‚¢ãƒ³ãƒ€ãƒ¼ã‚¹ã‚³ã‚¢ã«ç½®æ›ã•れる)
-have_struct_member(type, member, header)
+have_struct_member(type, member[, header[, opt]]) ::
- ¥Ø¥Ã¥À¥Õ¥¡¥¤¥ëheader¤ò¥¤¥ó¥¯¥ë¡¼¥É¤·¤Æ·¿type¤Ë¥á¥ó¥Ðmember
- ¤¬Â¸ºß¤¹¤ë¤«¤ò¥Á¥§¥Ã¥¯¤¹¤ë¡¥type¤¬ÄêµÁ¤µ¤ì¤Æ¤¤¤Æ¡¤member¤ò
- »ý¤Ä¤¹¤ë»þtrue¤òÊÖ¤¹¡¥
+ ヘッダファイルheaderをインクルードã—ã¦åž‹typeãŒå®šç¾©ã•れ,
+ ãªãŠã‹ã¤ãƒ¡ãƒ³ãƒmemberãŒå­˜åœ¨ã™ã‚‹ã‹ã‚’ãƒã‚§ãƒƒã‚¯ã™ã‚‹ï¼Žãƒã‚§ãƒƒã‚¯ã«
+ æˆåŠŸã™ã‚‹ã¨ï¼Œãƒ—リプロセッサマクロ `HAVE_{TYPE}_{MEMBER}` ã‚’
+ 定義ã—,trueã‚’è¿”ã™ï¼Ž
-have_type(type, header, opt)
+have_type(type, header, opt) ::
- ¥Ø¥Ã¥À¥Õ¥¡¥¤¥ëheader¤ò¥¤¥ó¥¯¥ë¡¼¥É¤·¤Æ·¿type¤¬Â¸ºß¤¹¤ë¤«¤ò
- ¥Á¥§¥Ã¥¯¤¹¤ë¡¥type¤¬ÄêµÁ¤µ¤ì¤Æ¤¤¤ë»þtrue¤òÊÖ¤¹¡¥
+ ヘッダファイルheaderをインクルードã—ã¦åž‹typeãŒå­˜åœ¨ã™ã‚‹ã‹ã‚’
+ ãƒã‚§ãƒƒã‚¯ã™ã‚‹ï¼Žãƒã‚§ãƒƒã‚¯ã«æˆåŠŸã™ã‚‹ã¨ï¼Œãƒ—リプロセッサマクロ
+ `HAVE_TYPE_{TYPE}` を定義ã—,trueã‚’è¿”ã™ï¼Ž
-check_sizeof(type, header)
+check_sizeof(type, header) ::
- ¥Ø¥Ã¥À¥Õ¥¡¥¤¥ëheader¤ò¥¤¥ó¥¯¥ë¡¼¥É¤·¤Æ·¿type¤Îcharñ°Ì¥µ¥¤
- ¥º¤òÄ´¤Ù¤ë¡¥type¤¬ÄêµÁ¤µ¤ì¤Æ¤¤¤ë»þ¤½¤Î¥µ¥¤¥º¤òÊÖ¤¹¡¥ÄêµÁ¤µ
- ¤ì¤Æ¤¤¤Ê¤¤¤È¤­¤Ïnil¤òÊÖ¤¹¡¥
+ ヘッダファイルheaderをインクルードã—ã¦åž‹typeã®charå˜ä½ã‚µã‚¤
+ ズを調ã¹ã‚‹ï¼Žãƒã‚§ãƒƒã‚¯ã«æˆåŠŸã™ã‚‹ã¨ï¼Œãƒ—リプロセッサマクロ
+ `SIZEOF_{TYPE}` を定義ã—,ãã®ã‚µã‚¤ã‚ºã‚’è¿”ã™ï¼Žå®šç¾©ã•れã¦ã„ãª
+ ã„ã¨ãã¯nilã‚’è¿”ã™ï¼Ž
-create_makefile(target)
+create_makefile(target[, target_prefix]) ::
- ³ÈÄ¥¥é¥¤¥Ö¥é¥êÍѤÎMakefile¤òÀ¸À®¤¹¤ë¡¥¤³¤Î´Ø¿ô¤ò¸Æ¤Ð¤Ê¤±¤ì
- ¤Ð¤½¤Î¥é¥¤¥Ö¥é¥ê¤Ï¥³¥ó¥Ñ¥¤¥ë¤µ¤ì¤Ê¤¤¡¥target¤Ï¥â¥¸¥å¡¼¥ë̾
- ¤òɽ¤¹¡¥
+ 拡張ライブラリ用ã®Makefileを生æˆã™ã‚‹ï¼Žã“ã®é–¢æ•°ã‚’呼ã°ãªã‘れ
+ ã°ãã®ãƒ©ã‚¤ãƒ–ラリã¯ã‚³ãƒ³ãƒ‘イルã•れãªã„.targetã¯ãƒ¢ã‚¸ãƒ¥ãƒ¼ãƒ«å
+ を表ã™ï¼Ž
-find_executable(command, path)
+find_executable(command, path) ::
- ¥³¥Þ¥ó¥Écommand¤òFile::PATH_SEPARATOR¤Ç¶èÀÚ¤é¤ì¤¿¥Ñ¥¹Ì¾¤Î
- ¥ê¥¹¥Èpath¤«¤éõ¤¹¡¥path¤¬nil¤Þ¤¿¤Ï¾Êά¤µ¤ì¤¿¾ì¹ç¤Ï¡¤´Ä¶­
- ÊÑ¿ôPATH¤ÎÃͤò»ÈÍѤ¹¤ë¡¥¼Â¹Ô²Äǽ¤Ê¥³¥Þ¥ó¥É¤¬¸«¤Ä¤«¤Ã¤¿¾ì¹ç
- ¤Ï¥Ñ¥¹¤ò´Þ¤à¥Õ¥¡¥¤¥ë̾¡¤¸«¤Ä¤«¤é¤Ê¤«¤Ã¤¿¾ì¹ç¤Ïnil¤òÊÖ¤¹¡¥
+ コマンドcommandã‚’File::PATH_SEPARATORã§åŒºåˆ‡ã‚‰ã‚ŒãŸãƒ‘スåã®
+ リストpathã‹ã‚‰æŽ¢ã™ï¼ŽpathãŒnilã¾ãŸã¯çœç•¥ã•れãŸå ´åˆã¯ï¼Œç’°å¢ƒ
+ 変数PATHã®å€¤ã‚’使用ã™ã‚‹ï¼Žå®Ÿè¡Œå¯èƒ½ãªã‚³ãƒžãƒ³ãƒ‰ãŒè¦‹ã¤ã‹ã£ãŸå ´åˆ
+ ã¯ãƒ‘スをå«ã‚€ãƒ•ァイルå,見ã¤ã‹ã‚‰ãªã‹ã£ãŸå ´åˆã¯nilã‚’è¿”ã™ï¼Ž
-with_config(withval[, default=nil])
+with_config(withval[, default=nil]) ::
- ¥³¥Þ¥ó¥É¥é¥¤¥ó¾å¤Î--with-<withval>¤Ç»ØÄꤵ¤ì¤¿¥ª¥×¥·¥ç¥óÃÍ
- ¤òÆÀ¤ë¡¥
+ コマンドライン上ã®--with-<withval>ã§æŒ‡å®šã•れãŸã‚ªãƒ—ション値
+ を得る.
-enable_config(config, *defaults)
-disable_config(config, *defaults)
+enable_config(config, *defaults) ::
+disable_config(config, *defaults) ::
- ¥³¥Þ¥ó¥É¥é¥¤¥ó¾å¤Î--enable-<config>¤Þ¤¿¤Ï
- --disable-<config>¤Ç»ØÄꤵ¤ì¤¿¿¿µ¶ÃͤòÆÀ¤ë¡¥
- --enable-<config>¤¬»ØÄꤵ¤ì¤Æ¤¤¤¿¾ì¹ç¤Ïtrue¡¤
- --disable-<config>¤¬»ØÄꤵ¤ì¤Æ¤¤¤¿¾ì¹ç¤Ïfalse¤òÊÖ¤¹¡¥
- ¤É¤Á¤é¤â»ØÄꤵ¤ì¤Æ¤¤¤Ê¤¤¾ì¹ç¤Ï¡¤¥Ö¥í¥Ã¥¯¤Ä¤­¤Ç¸Æ¤Ó½Ð¤µ¤ì¤Æ
- ¤¤¤ë¾ì¹ç¤Ï*defaults¤òyield¤·¤¿·ë²Ì¡¤¥Ö¥í¥Ã¥¯¤Ê¤·¤Ê¤é
- *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])
+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>-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])
+ ã¨ç­‰ä¾¡ã§ã‚る.追加ã•れ㟠include ディレクトリ㨠lib ディレ
+ クトリã®é…列を返ã™ï¼Ž ([include_dir, lib_dir])
+
+pkg_config(pkg, option=nil) ::
+
+ pkg-configコマンドã‹ã‚‰ãƒ‘ッケージpkgã®æƒ…報を [cflags, ldflags, libs]
+ ã®é…列ã¨ã—ã¦å¾—る.$CFLAGS, $LDFLAGS, $libs ã«ã¯ãれãžã‚Œã®å€¤ãŒ
+ 追加ã•れる.
+
+ pkg-configã®å®Ÿéš›ã®ã‚³ãƒžãƒ³ãƒ‰ã¯ï¼Œä»¥ä¸‹ã®é †ã§è©¦ã•れる.
-pkg_config(pkg)
+ 1. コマンドラインã§--with-{pkg}-config={command}オプションãŒ
+ 指定ã•れãŸå ´åˆ: {command} {option}
+ 2. {pkg}-config {option}
+ 3. pkg-config {option} {pkg}
- pkg-config¥³¥Þ¥ó¥É¤«¤é¥Ñ¥Ã¥±¡¼¥¸pkg¤Î¾ðÊó¤òÆÀ¤ë¡¥
- pkg-config¤Î¼ÂºÝ¤Î¥³¥Þ¥ó¥É̾¤Ï¡¤--with-pkg-config¥³¥Þ¥ó¥É
- ¥é¥¤¥ó¥ª¥×¥·¥ç¥ó¤Ç»ØÄê²Äǽ¡¥
+ optionãŒæŒ‡å®šã•れãŸå ´åˆã¯ã€ä¸Šè¨˜ã®é…列ã®ä»£ã‚りã«ãã®ã‚ªãƒ—ションを
+ 指定ã—ã¦å¾—られãŸå‡ºåŠ›ã‚’stripã—ãŸã‚‚ã®ã‚’è¿”ã™ï¼Ž
/*
* Local variables:
diff --git a/README.ja b/README.ja
index dd7f67ca59..9ab2f3ca0e 100644
--- a/README.ja
+++ b/README.ja
@@ -1,185 +1,192 @@
-* Ruby¤È¤Ï
+= Rubyã¨ã¯
-Ruby¤Ï¥·¥ó¥×¥ë¤«¤Ä¶¯ÎϤʥª¥Ö¥¸¥§¥¯¥È»Ø¸þ¥¹¥¯¥ê¥×¥È¸À¸ì¤Ç¤¹¡¥
-Ruby¤ÏºÇ½é¤«¤é½ã¿è¤Ê¥ª¥Ö¥¸¥§¥¯¥È»Ø¸þ¸À¸ì¤È¤·¤ÆÀ߷פµ¤ì¤Æ¤¤¤Þ
-¤¹¤«¤é¡¤¥ª¥Ö¥¸¥§¥¯¥È»Ø¸þ¥×¥í¥°¥é¥ß¥ó¥°¤ò¼ê·Ú¤Ë¹Ô¤¦»ö¤¬½ÐÍè¤Þ
-¤¹¡¥¤â¤Á¤í¤óÄ̾ï¤Î¼ê³¤­·¿¤Î¥×¥í¥°¥é¥ß¥ó¥°¤â²Äǽ¤Ç¤¹¡¥
+Rubyã¯ã‚·ãƒ³ãƒ—ルã‹ã¤å¼·åŠ›ãªã‚ªãƒ–ジェクト指å‘スクリプト言語ã§ã™ï¼Ž
+Rubyã¯æœ€åˆã‹ã‚‰ç´”粋ãªã‚ªãƒ–ジェクト指å‘言語ã¨ã—ã¦è¨­è¨ˆã•れã¦ã„ã¾
+ã™ã‹ã‚‰ï¼Œã‚ªãƒ–ジェクト指å‘プログラミングを手軽ã«è¡Œã†äº‹ãŒå‡ºæ¥ã¾
+ã™ï¼Žã‚‚ã¡ã‚ã‚“é€šå¸¸ã®æ‰‹ç¶šãåž‹ã®ãƒ—ログラミングもå¯èƒ½ã§ã™ï¼Ž
-Ruby¤Ï¥Æ¥­¥¹¥È½èÍý´Ø·¸¤ÎǽÎϤʤɤËÍ¥¤ì¡¤Perl¤ÈƱ¤¸¤¯¤é¤¤¶¯ÎÏ
-¤Ç¤¹¡¥¤µ¤é¤Ë¥·¥ó¥×¥ë¤Êʸˡ¤È¡¤Îã³°½èÍý¤ä¥¤¥Æ¥ì¡¼¥¿¤Ê¤É¤Îµ¡¹½
-¤Ë¤è¤Ã¤Æ¡¤¤è¤êʬ¤«¤ê¤ä¤¹¤¤¥×¥í¥°¥é¥ß¥ó¥°¤¬½ÐÍè¤Þ¤¹¡¥
+Rubyã¯ãƒ†ã‚­ã‚¹ãƒˆå‡¦ç†é–¢ä¿‚ã®èƒ½åŠ›ãªã©ã«å„ªã‚Œï¼ŒPerlã¨åŒã˜ãらã„強力
+ã§ã™ï¼Žã•らã«ã‚·ãƒ³ãƒ—ãƒ«ãªæ–‡æ³•ã¨ï¼Œä¾‹å¤–処ç†ã‚„イテレータãªã©ã®æ©Ÿæ§‹
+ã«ã‚ˆã£ã¦ï¼Œã‚ˆã‚Šåˆ†ã‹ã‚Šã‚„ã™ã„プログラミングãŒå‡ºæ¥ã¾ã™ï¼Ž
-* Ruby¤ÎÆÃĹ
+== Rubyã®ç‰¹é•·
- + ¥·¥ó¥×¥ë¤Êʸˡ
- + ÉáÄ̤Υª¥Ö¥¸¥§¥¯¥È»Ø¸þµ¡Ç½(¥¯¥é¥¹¡¤¥á¥½¥Ã¥É¥³¡¼¥ë¤Ê¤É)
- + ÆÃ¼ì¤Ê¥ª¥Ö¥¸¥§¥¯¥È»Ø¸þµ¡Ç½(Mixin, ÆÃ°Û¥á¥½¥Ã¥É¤Ê¤É)
- + ±é»»»Ò¥ª¡¼¥Ð¡¼¥í¡¼¥É
- + Îã³°½èÍýµ¡Ç½
- + ¥¤¥Æ¥ì¡¼¥¿¤È¥¯¥í¡¼¥¸¥ã
- + ¥¬¡¼¥Ù¡¼¥¸¥³¥ì¥¯¥¿
- + ¥À¥¤¥Ê¥ß¥Ã¥¯¥í¡¼¥Ç¥£¥ó¥° (¥¢¡¼¥­¥Æ¥¯¥Á¥ã¤Ë¤è¤ë)
- + °Ü¿¢À­¤¬¹â¤¤¡¥Â¿¤¯¤ÎUnix-like/POSIX¸ß´¹¥×¥é¥Ã¥È¥Õ¥©¡¼¥à¾å¤Ç
- ư¤¯¤À¤±¤Ç¤Ê¤¯¡¤Windows¡¤ Mac OS X¡¤BeOS¤Ê¤É¤Î¾å¤Ç¤âư¤¯
- cf. http://redmine.ruby-lang.org/wiki/ruby-19/SupportedPlatformsJa
+* ã‚·ãƒ³ãƒ—ãƒ«ãªæ–‡æ³•
+* 普通ã®ã‚ªãƒ–ã‚¸ã‚§ã‚¯ãƒˆæŒ‡å‘æ©Ÿèƒ½(クラス,メソッドコールãªã©)
+* 特殊ãªã‚ªãƒ–ã‚¸ã‚§ã‚¯ãƒˆæŒ‡å‘æ©Ÿèƒ½(Mixin, 特異メソッドãªã©)
+* 演算å­ã‚ªãƒ¼ãƒãƒ¼ãƒ­ãƒ¼ãƒ‰
+* ä¾‹å¤–å‡¦ç†æ©Ÿèƒ½
+* イテレータã¨ã‚¯ãƒ­ãƒ¼ã‚¸ãƒ£
+* ガーベージコレクタ
+* ダイナミックローディング (アーキテクãƒãƒ£ã«ã‚ˆã‚‹)
+* ç§»æ¤æ€§ãŒé«˜ã„.多ãã®Unix-like/POSIX互æ›ãƒ—ラットフォーム上ã§
+ å‹•ãã ã‘ã§ãªã,Windows, Mac OS X,BeOSãªã©ã®ä¸Šã§ã‚‚å‹•ã
+ cf. http://bugs.ruby-lang.org/projects/ruby-trunk/wiki/SupportedPlatformsJa
-* Æþ¼êË¡
+== 入手法
-** FTP¤Ç
+=== FTPã§
-°Ê²¼¤Î¾ì½ê¤Ë¤ª¤¤¤Æ¤¢¤ê¤Þ¤¹¡¥
+以下ã®å ´æ‰€ã«ãŠã„ã¦ã‚りã¾ã™ï¼Ž
- ftp://ftp.ruby-lang.org/pub/ruby/
+ftp://ftp.ruby-lang.org/pub/ruby/
-** Subversion¤Ç
+=== 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ã«å…¬é–‹ã—ã¦ã„ã¾ã™ï¼Ž
+以下ã®ã‚³ãƒžãƒ³ãƒ‰ã§ãƒªãƒã‚¸ãƒˆãƒªã‚’å–å¾—ã§ãã¾ã™ï¼Ž
-Ruby¤Î¥Û¡¼¥à¥Ú¡¼¥¸¤ÎURL¤Ï
+ $ git clone git://github.com/ruby/ruby.git
- http://www.ruby-lang.org/
+== ホームページ
-¤Ç¤¹¡¥
+Rubyã®ãƒ›ãƒ¼ãƒ ãƒšãƒ¼ã‚¸ã®URLã¯
+http://www.ruby-lang.org/
-* ¥á¡¼¥ê¥ó¥°¥ê¥¹¥È
+ã§ã™ï¼Ž
-Ruby¤Î¥á¡¼¥ê¥ó¥°¥ê¥¹¥È¤¬¤¢¤ê¤Þ¤¹¡£»²²Ã´õ˾¤ÎÊý¤Ï
- ruby-list-ctl@ruby-lang.org
+== メーリングリスト
-¤Þ¤ÇËÜʸ¤Ë
+Rubyã®ãƒ¡ãƒ¼ãƒªãƒ³ã‚°ãƒªã‚¹ãƒˆãŒã‚りã¾ã™ã€‚å‚åŠ å¸Œæœ›ã®æ–¹ã¯
+
+mailto:ruby-list-ctl@ruby-lang.org
+
+ã¾ã§æœ¬æ–‡ã«
subscribe YourFirstName YourFamilyName
-
-¤È½ñ¤¤¤ÆÁ÷¤Ã¤Æ²¼¤µ¤¤¡£
-Ruby³«È¯¼Ô¸þ¤±¥á¡¼¥ê¥ó¥°¥ê¥¹¥È¤â¤¢¤ê¤Þ¤¹¡£¤³¤Á¤é¤Ç¤Ïruby¤Î¥Ð
-¥°¡¢¾­Íè¤Î»ÅÍͳÈÄ¥¤Ê¤É¼ÂÁõ¾å¤ÎÌäÂê¤Ë¤Ä¤¤¤ÆµÄÏÀ¤µ¤ì¤Æ¤¤¤Þ¤¹¡£
-»²²Ã´õ˾¤ÎÊý¤Ï
+ã¨æ›¸ã„ã¦é€ã£ã¦ä¸‹ã•ã„。
+
+Ruby開発者å‘ã‘メーリングリストもã‚りã¾ã™ã€‚ã“ã¡ã‚‰ã§ã¯rubyã®ãƒ
+ã‚°ã€å°†æ¥ã®ä»•様拡張ãªã©å®Ÿè£…上ã®å•題ã«ã¤ã„ã¦è­°è«–ã•れã¦ã„ã¾ã™ã€‚
+å‚åŠ å¸Œæœ›ã®æ–¹ã¯
- ruby-dev-ctl@ruby-lang.org
+mailto:ruby-dev-ctl@ruby-lang.org
-¤Þ¤Çruby-list¤ÈƱÍͤÎÊýË¡¤Ç¥á¡¼¥ë¤·¤Æ¤¯¤À¤µ¤¤¡£
+ã¾ã§ruby-listã¨åŒæ§˜ã®æ–¹æ³•ã§ãƒ¡ãƒ¼ãƒ«ã—ã¦ãã ã•ã„。
-Ruby³ÈÄ¥¥â¥¸¥å¡¼¥ë¤Ë¤Ä¤¤¤ÆÏ䷹礦ruby-ext¥á¡¼¥ê¥ó¥°¥ê¥¹¥È¤È
-¿ô³Ø´Ø·¸¤ÎÏÃÂê¤Ë¤Ä¤¤¤ÆÏ䷹礦ruby-math¥á¡¼¥ê¥ó¥°¥ê¥¹¥È¤È
-±Ñ¸ì¤ÇÏ䷹礦ruby-talk¥á¡¼¥ê¥ó¥°¥ê¥¹¥È¤â¤¢¤ê¤Þ¤¹¡£»²²ÃÊýË¡
-¤Ï¤É¤ì¤âƱ¤¸¤Ç¤¹¡£
+Ruby拡張モジュールã«ã¤ã„ã¦è©±ã—åˆã†ruby-extメーリングリストã¨
+数学関係ã®è©±é¡Œã«ã¤ã„ã¦è©±ã—åˆã†ruby-mathメーリングリストã¨
+英語ã§è©±ã—åˆã†ruby-talkメーリングリストもã‚りã¾ã™ã€‚å‚加方法
+ã¯ã©ã‚Œã‚‚åŒã˜ã§ã™ã€‚
-* ¥³¥ó¥Ñ¥¤¥ë¡¦¥¤¥ó¥¹¥È¡¼¥ë
+== コンパイル・インストール
-°Ê²¼¤Î¼ê½ç¤Ç¹Ô¤Ã¤Æ¤¯¤À¤µ¤¤¡¥
+ä»¥ä¸‹ã®æ‰‹é †ã§è¡Œã£ã¦ãã ã•ã„.
- 1. ¤â¤·configure¥Õ¥¡¥¤¥ë¤¬¸«¤Ä¤«¤é¤Ê¤¤¡¢¤â¤·¤¯¤Ï
- configure.in¤è¤ê¸Å¤¤¤è¤¦¤Ê¤é¡¢autoconf¤ò¼Â¹Ô¤·¤Æ
- ¿·¤·¤¯configure¤òÀ¸À®¤¹¤ë
+1. ã‚‚ã— +configure+ ファイルãŒè¦‹ã¤ã‹ã‚‰ãªã„ã€ã‚‚ã—ãã¯
+ +configure.in+ よりå¤ã„よã†ãªã‚‰ã€ +autoconf+ を実行ã—ã¦
+ æ–°ã—ã +configure+ を生æˆã™ã‚‹
- 2. configure¤ò¼Â¹Ô¤·¤ÆMakefile¤Ê¤É¤òÀ¸À®¤¹¤ë
+2. +configure+ を実行ã—㦠+Makefile+ ãªã©ã‚’生æˆã™ã‚‹
- ´Ä¶­¤Ë¤è¤Ã¤Æ¤Ï¥Ç¥Õ¥©¥ë¥È¤ÎC¥³¥ó¥Ñ¥¤¥éÍÑ¥ª¥×¥·¥ç¥ó¤¬ÉÕ¤­
- ¤Þ¤¹¡¥configure¥ª¥×¥·¥ç¥ó¤Ç optflags=.. warnflags=.. Åù
- ¤Ç¾å½ñ¤­¤Ç¤­¤Þ¤¹¡¥
+ 環境ã«ã‚ˆã£ã¦ã¯ãƒ‡ãƒ•ォルトã®Cコンパイラ用オプションãŒä»˜ã
+ ã¾ã™ï¼Ž +configure+ オプション㧠<tt>optflags=..</tt> <tt>warnflags=..</tt> ç­‰
+ ã§ä¸Šæ›¸ãã§ãã¾ã™ï¼Ž
- 3. (ɬÍפʤé¤Ð)defines.h¤òÊÔ½¸¤¹¤ë
+3. (å¿…è¦ãªã‚‰ã°)+defines.h+ を編集ã™ã‚‹
- ¿ʬ¡¤É¬Í×̵¤¤¤È»×¤¤¤Þ¤¹¡¥
+ 多分,必è¦ç„¡ã„ã¨æ€ã„ã¾ã™ï¼Ž
- 4. (ɬÍפʤé¤Ð)ext/Setup¤ËÀÅŪ¤Ë¥ê¥ó¥¯¤¹¤ë³ÈÄ¥¥â¥¸¥å¡¼¥ë¤ò
- »ØÄꤹ¤ë
+4. (å¿…è¦ãªã‚‰ã°)+ext/Setup+ ã«é™çš„ã«ãƒªãƒ³ã‚¯ã™ã‚‹æ‹¡å¼µãƒ¢ã‚¸ãƒ¥ãƒ¼ãƒ«ã‚’
+ 指定ã™ã‚‹
- ext/Setup¤Ëµ­½Ò¤·¤¿¥â¥¸¥å¡¼¥ë¤ÏÀÅŪ¤Ë¥ê¥ó¥¯¤µ¤ì¤Þ¤¹¡¥
+ +ext/Setup+ ã«è¨˜è¿°ã—ãŸãƒ¢ã‚¸ãƒ¥ãƒ¼ãƒ«ã¯é™çš„ã«ãƒªãƒ³ã‚¯ã•れã¾ã™ï¼Ž
- ¥À¥¤¥Ê¥ß¥Ã¥¯¥í¡¼¥Ç¥£¥ó¥°¤ò¥µ¥Ý¡¼¥È¤·¤Æ¤¤¤Ê¤¤¥¢¡¼¥­¥Æ¥¯
- ¥Á¥ã¤Ç¤ÏSetup¤Î1¹ÔÌܤΡÖoption nodynamic¡×¤È¤¤¤¦¹Ô¤Î¥³
- ¥á¥ó¥È¤ò³°¤¹É¬Íפ¬¤¢¤ê¤Þ¤¹¡¥¤Þ¤¿¡¤¤³¤Î¥¢¡¼¥­¥Æ¥¯¥Á¥ã¤Ç
- ³ÈÄ¥¥â¥¸¥å¡¼¥ë¤òÍøÍѤ¹¤ë¤¿¤á¤Ë¤Ï¡¤¤¢¤é¤«¤¸¤áÀÅŪ¤Ë¥ê¥ó
- ¥¯¤·¤Æ¤ª¤¯É¬Íפ¬¤¢¤ê¤Þ¤¹¡¥
+ ダイナミックローディングをサãƒãƒ¼ãƒˆã—ã¦ã„ãªã„アーキテク
+ ãƒãƒ£ã§ã¯ +Setup+ ã®1行目ã®ã€Œ<tt>option nodynamic</tt>ã€ã¨ã„ã†è¡Œã®ã‚³
+ メントを外ã™å¿…è¦ãŒã‚りã¾ã™ï¼Žã¾ãŸï¼Œã“ã®ã‚¢ãƒ¼ã‚­ãƒ†ã‚¯ãƒãƒ£ã§
+ 拡張モジュールを利用ã™ã‚‹ãŸã‚ã«ã¯ï¼Œã‚らã‹ã˜ã‚é™çš„ã«ãƒªãƒ³
+ クã—ã¦ãŠãå¿…è¦ãŒã‚りã¾ã™ï¼Ž
- 5. make¤ò¼Â¹Ô¤·¤Æ¥³¥ó¥Ñ¥¤¥ë¤¹¤ë
+5. +make+ を実行ã—ã¦ã‚³ãƒ³ãƒ‘イルã™ã‚‹
- 6. make test¤Ç¥Æ¥¹¥È¤ò¹Ô¤¦¡¥
+6. <tt>make check</tt>ã§ãƒ†ã‚¹ãƒˆã‚’行ã†ï¼Ž
- ¡Ötest succeeded¡×¤Èɽ¼¨¤µ¤ì¤ì¤ÐÀ®¸ù¤Ç¤¹¡¥¤¿¤À¤·¥Æ¥¹¥È
- ¤ËÀ®¸ù¤·¤Æ¤â´°àú¤À¤ÈÊݾڤµ¤ì¤Æ¤¤¤ëÌõ¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó¡¥
+ 「<tt>check succeeded</tt>ã€ã¨è¡¨ç¤ºã•ã‚Œã‚Œã°æˆåŠŸã§ã™ï¼ŽãŸã ã—テスト
+ ã«æˆåŠŸã—ã¦ã‚‚完璧ã ã¨ä¿è¨¼ã•れã¦ã„る訳ã§ã¯ã‚りã¾ã›ã‚“.
- 7. make install
+7. <tt>make install</tt>
- °Ê²¼¤Î¥Ç¥£¥ì¥¯¥È¥ê¤òºî¤Ã¤Æ¡¤¤½¤³¤Ë¥Õ¥¡¥¤¥ë¤ò¥¤¥ó¥¹¥È¡¼
- ¥ë¤·¤Þ¤¹¡¥
+ 以下ã®ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã‚’作ã£ã¦ï¼Œãã“ã«ãƒ•ァイルをインストー
+ ルã—ã¾ã™ï¼Ž
- * ${DESTDIR}${prefix}/bin
- * ${DESTDIR}${prefix}/include/ruby-${MAJOR}.${MINOR}.${TEENY}
- * ${DESTDIR}${prefix}/include/ruby-${MAJOR}.${MINOR}.${TEENY}/${PLATFORM}
- * ${DESTDIR}${prefix}/lib
- * ${DESTDIR}${prefix}/lib/ruby
- * ${DESTDIR}${prefix}/lib/ruby/${MAJOR}.${MINOR}.${TEENY}
- * ${DESTDIR}${prefix}/lib/ruby/${MAJOR}.${MINOR}.${TEENY}/${PLATFORM}
- * ${DESTDIR}${prefix}/lib/ruby/site_ruby
- * ${DESTDIR}${prefix}/lib/ruby/site_ruby/${MAJOR}.${MINOR}.${TEENY}
- * ${DESTDIR}${prefix}/lib/ruby/site_ruby/${MAJOR}.${MINOR}.${TEENY}/${PLATFORM}
- * ${DESTDIR}${prefix}/lib/ruby/vendor_ruby
- * ${DESTDIR}${prefix}/lib/ruby/vendor_ruby/${MAJOR}.${MINOR}.${TEENY}
- * ${DESTDIR}${prefix}/lib/ruby/vendor_ruby/${MAJOR}.${MINOR}.${TEENY}/${PLATFORM}
- * ${DESTDIR}${prefix}/lib/ruby/gems/${MAJOR}.${MINOR}.${TEENY}
- * ${DESTDIR}${prefix}/share/man/man1
- * ${DESTDIR}${prefix}/share/ri/${MAJOR}.${MINOR}.${TEENY}/system
+ * <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'¤Ç¤¢¤ì¤Ð¡¤((|${MAJOR}|))¤Ï
- `x'¤Ç¡¤((|${MINOR}|))¤Ï`y'¡¤((|${TEENY}|))¤Ï`z'¤Ç¤¹¡¥
+ Rubyã®APIãƒãƒ¼ã‚¸ãƒ§ãƒ³ãŒ'_x.y.z_'ã§ã‚れã°ï¼Œ<tt>${MAJOR}</tt>ã¯
+ '_x_'ã§ï¼Œ<tt>${MINOR}</tt>ã¯'_y_',<tt>${TEENY}</tt>ã¯'_z_'ã§ã™ï¼Ž
- Ãí°Õ: API¥Ð¡¼¥¸¥ç¥ó¤Îteeny¤Ï¡¤Ruby¥×¥í¥°¥é¥à¤Î¥Ð¡¼¥¸¥ç
- ¥ó¤È¤Ï°Û¤Ê¤ë¤³¤È¤¬¤¢¤ê¤Þ¤¹¡¥
+ <b>注æ„</b>: APIãƒãƒ¼ã‚¸ãƒ§ãƒ³ã® +teeny+ ã¯ï¼ŒRubyプログラムã®ãƒãƒ¼ã‚¸ãƒ§
+ ンã¨ã¯ç•°ãªã‚‹ã“ã¨ãŒã‚りã¾ã™ï¼Ž
- root¤Çºî¶È¤¹¤ëɬÍפ¬¤¢¤ë¤«¤â¤·¤ì¤Þ¤»¤ó¡¥
+ +root+ ã§ä½œæ¥­ã™ã‚‹å¿…è¦ãŒã‚ã‚‹ã‹ã‚‚ã—れã¾ã›ã‚“.
-¤â¤·¡¤¥³¥ó¥Ñ¥¤¥ë»þ¤Ë¥¨¥é¡¼¤¬È¯À¸¤·¤¿¾ì¹ç¤Ë¤Ï¥¨¥é¡¼¤Î¥í¥°¤È¥Þ
-¥·¥ó¡¤OS¤Î¼ïÎà¤ò´Þ¤à¤Ç¤­¤ë¤À¤±¾Ü¤·¤¤¥ì¥Ý¡¼¥È¤òºî¼Ô¤ËÁ÷¤Ã¤Æ¤¯
-¤À¤µ¤ë¤È¾¤ÎÊý¤Î¤¿¤á¤Ë¤â¤Ê¤ê¤Þ¤¹¡¥
+ã‚‚ã—,コンパイル時ã«ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã—ãŸå ´åˆã«ã¯ã‚¨ãƒ©ãƒ¼ã®ãƒ­ã‚°ã¨ãƒž
+シン,OSã®ç¨®é¡žã‚’å«ã‚€ã§ãã‚‹ã ã‘詳ã—ã„レãƒãƒ¼ãƒˆã‚’作者ã«é€ã£ã¦ã
+ã ã•ã‚‹ã¨ä»–ã®æ–¹ã®ãŸã‚ã«ã‚‚ãªã‚Šã¾ã™ï¼Ž
-* °Ü¿¢
+== ç§»æ¤
-UNIX¤Ç¤¢¤ì¤Ðconfigure¤¬¤Û¤È¤ó¤É¤Îº¹°Û¤òµÛ¼ý¤·¤Æ¤¯¤ì¤ë¤Ï¤º¤Ç
-¤¹¤¬¡¤»×¤ï¤Ì¸«Íî¤È¤·¤¬¤¢¤Ã¤¿¾ì¹ç(¤¢¤ë¤Ë°ã¤¤¤Ê¤¤)¡¤ºî¼Ô¤Ë¤½¤Î
-¤³¤È¤ò¥ì¥Ý¡¼¥È¤¹¤ì¤Ð¡¤²ò·è¤Ç¤­¤ë¤«¤âÃΤì¤Þ¤»¤ó¡¥
+UNIXã§ã‚れ㰠+configure+ ãŒã»ã¨ã‚“ã©ã®å·®ç•°ã‚’å¸åŽã—ã¦ãれるã¯ãšã§
+ã™ãŒï¼Œæ€ã‚ã¬è¦‹è½ã¨ã—ãŒã‚ã£ãŸå ´åˆ(ã‚ã‚‹ã«é•ã„ãªã„),作者ã«ãã®
+ã“ã¨ã‚’レãƒãƒ¼ãƒˆã™ã‚Œã°ï¼Œè§£æ±ºã§ãã‚‹ã‹ã‚‚知れã¾ã›ã‚“.
-¥¢¡¼¥­¥Æ¥¯¥Á¥ã¤Ë¤â¤Ã¤È¤â°Í¸¤¹¤ë¤Î¤ÏGCÉô¤Ç¤¹¡¥Ruby¤ÎGC¤ÏÂоÝ
-¤Î¥¢¡¼¥­¥Æ¥¯¥Á¥ã¤¬setjmp()¤Þ¤¿¤Ïgetcontext()¤Ë¤è¤Ã¤ÆÁ´¤Æ¤Î¥ì
-¥¸¥¹¥¿¤òjmp_buf¤äucontext_t¤Ë³ÊǼ¤¹¤ë¤³¤È¤È¡¤jmp_buf¤ä
-ucontext_t¤È¥¹¥¿¥Ã¥¯¤¬32bit¥¢¥é¥¤¥ó¥á¥ó¥È¤µ¤ì¤Æ¤¤¤ë¤³¤È¤ò²¾Äê
-¤·¤Æ¤¤¤Þ¤¹¡¥ÆÃ¤ËÁ°¼Ô¤¬À®Î©¤·¤Ê¤¤¾ì¹ç¤ÎÂбþ¤ÏÈó¾ï¤Ëº¤Æñ¤Ç¤·¤ç
-¤¦¡¥¸å¼Ô¤Î²ò·è¤ÏÈæ³ÓŪ´Êñ¤Ç¡¤gc.c¤Ç¥¹¥¿¥Ã¥¯¤ò¥Þ¡¼¥¯¤·¤Æ¤¤¤ë
-Éôʬ¤Ë¥¢¥é¥¤¥ó¥á¥ó¥È¤Î¥Ð¥¤¥È¿ô¤À¤±¤º¤é¤·¤Æ¥Þ¡¼¥¯¤¹¤ë¥³¡¼¥É¤ò
-Äɲ乤ë¤À¤±¤ÇºÑ¤ß¤Þ¤¹¡¥¡Ödefined(__mc68000__)¡×¤Ç³ç¤é¤ì¤Æ¤¤
-¤ëÉôʬ¤ò»²¹Í¤Ë¤·¤Æ¤¯¤À¤µ¤¤¡¥
+アーキテクãƒãƒ£ã«ã‚‚ã£ã¨ã‚‚ä¾å­˜ã™ã‚‹ã®ã¯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¤Ç¤Ï¡¤¥ì¥¸¥¹¥¿¥¦¥£¥ó¥É¥¦¤ò¥¹¥¿¥Ã
-¥¯¤Ë¥Õ¥é¥Ã¥·¥å¤¹¤ë¥¢¥»¥ó¥Ö¥é¥³¡¼¥É¤òÄɲ乤ëɬÍפ¬¤¢¤ë¤«¤âÃÎ
-¤ì¤Þ¤»¤ó¡¥
+レジスタウィンドウをæŒã¤CPUã§ã¯ï¼Œãƒ¬ã‚¸ã‚¹ã‚¿ã‚¦ã‚£ãƒ³ãƒ‰ã‚¦ã‚’スタッ
+クã«ãƒ•ラッシュã™ã‚‹ã‚¢ã‚»ãƒ³ãƒ–ラコードを追加ã™ã‚‹å¿…è¦ãŒã‚ã‚‹ã‹ã‚‚知
+れã¾ã›ã‚“.
-* ÇÛÉÛ¾ò·ï
+== é…布æ¡ä»¶
-COPYING.ja¥Õ¥¡¥¤¥ë¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£
++COPYING.ja+ ファイルをå‚ç…§ã—ã¦ãã ã•ã„。
-* Ãø¼Ô
+== 著者
-¥³¥á¥ó¥È¡¤¥Ð¥°¥ì¥Ý¡¼¥È¤½¤Î¾¤Ï matz@netlab.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/ToDo b/ToDo
deleted file mode 100644
index 7e5ef523a8..0000000000
--- a/ToDo
+++ /dev/null
@@ -1,124 +0,0 @@
-Language Spec.
-
-- Class#allocate - basicNew
-- class Foo::Bar<Baz .. end, module Boo::Bar .. end
-- raise exception by `` error
-- a +1 to be a+1, not a(+1).
-- clarify evaluation order of operator argument (=~, .., ...)
-- :symbol => value hash in the form of {symbol: value, ...} ??
-* operator !! for rescue. ???
-* objectify characters
-* ../... outside condition invokes operator method too.
-* ... inside condition turns off just before right condition.???
-* package or access control for global variables??
-* named arguments like foo(nation:="german") or foo(nation: "german").
-* method to retrieve argument information (needs new C API)
-* multiple return values, yield values. maybe incompatible ???
-* cascading method invocation ???
-* def Class#method .. end ??
-* def Foo::Bar::baz() .. end ??
-* I18N (or M17N) script/string/regexp
-* discourage use of symbol variables (e.g. $/, etc.) in manual
-* discourage use of Perlish features by giving warnings.
-* non confusing in-block local variable (is it possible?)
- + remove scope by block
- + variables appears within block may have independent values.
-* Regexp: make /o thread safe.
-* decide whether begin with rescue or ensure make do..while loop.
-* unify == and eql? again
-* to_i returns nil if str contains no digit.
-* jar like combined library package. -> RubyGems?
-* method combination, e.g. before, after, around, etc.
-* .. or something like defadvice in Emacs.
-* property - for methods, or for objects in general.
-* "in" modifier, to annotate, or to encourage assertion.
-* selector namespace - something like generic-flet in CLOS, to help RubyBehavior
-* private instance variable (as in Python?) @_foo in class Foo => @_Foo_foo
-* warn/error "bare word" method, like "foo", you should type "foo()"
-
-Hacking Interpreter
-
-- generational GC
-* non-blocking open (e.g. for named pipe) for thread
-* avoid blocking with gethostbyname/gethostbyaddr (use fork ???)
-* objectify interpreters ???
-* remove rb_eval() recursions
-* syntax tree -> bytecode ???
-* scrambled script, or script filter
-* setuid ruby
-* performance tune for in-block (dynamic) local variables.
-* give warnings to assign magic variables.
-* export rb_io_{addstr,printf,puts,print}
-* autoload should work with threads [ruby-talk:4589]
-* remove stdio dependency from IOs.
-* warn for inconsistent local variable usage (lv m and method m at the same time).
-* MicroRuby
-* Built-in Interactive Ruby.
-* Parser API
-* trap every method invocation, which can be enabled by e.g. trap_call :method.
-* unify Errno exceptions of same errno, or new exception comparison scheme.
-* 2.times{|i| if i==0 then a = 15 else puts eval("a") end} should print nil.
-* Thread#max_stack_size attribute (possible??)
-
-Standard Libraries
-
-- Module#define_method which takes a name and a body (block, proc or method).
-- Enume#inject
-- Array#fetch
-- IO::for_fd
-- Process::waitall [ruby-talk:4557]
-- Process::Status
-- File::lchown, File::lchmod; xxx - still need work for non existing platforms
-- move Time::times to Process.
-- Enumerable#sort_by for Schwartzian transformation
-- fork_and_kill_other_threads.
-- signal list (Signal::trap, Signal::list).
-- move NameError under StandardError.
-- Integer#to_s(base)
-- Hash::new{default}
-- hash etc. should handle self referenceing array/hash
-- Array#select(n1,n2...) works like Array#indexes(n1,n2...)
-- use Mersenne Twister RNG for random.
-- deprecate Array#indexes, and Array#indices.
-- remove dependency on MAXPATHLEN.
-- String#scanf(?)
-* Object#fmt(?)
-* Time::strptime
-* Integer[num], Float[num]; Fixnum[num]?
-* method to retrieve non-number trailer for to_i/to_f.
-* Stream or Port, abstract superclass of IO ?
-* String#{pred,prev}, String#downto
-* optional stepsize argument for succ()
-* Ruby module -- Ruby::Version, Ruby::Interpreter
-* introduce Boolean class; super of TrueClass, FalseClass
-* synchronized method - synchronized{...}, synchronized :foo, :bar
-* Array#&, Array#| to allow duplication. ???
-* way to specify immortal (fork endurance) thread;
-* or raise ForkException to every thread but fork caller.
-* new user-defined marshal scheme. _dump(dumper), _load(restorer)
-* library to load per-user profile seeking .ruby_profile or ruby.ini file.
-* warning framework (warn, warning for Ruby level)
-* marshal should not depend on sprintf (works bad with locale).
-* ternary arg pow: a.pow(b,c) == a**b%c
-* new caller(), e.g. call_stack; needs better name.
-* pointer share mechanism similar to one in String for Array.
-* require "1.6" etc. by /usr/lib/ruby/1.6/1.6.rb ;-)
-* save both "feature names" and "normalized path" in $"
-* implement Mutex_m (or MutexMixin) using Mutex.
-
-Extension Libraries
-
-* ptk.rb pTk wrapper that is compatible to tk.rb
-* Berkeley DB extension
-* BitVector
-* thread-safe fcgi
-
-Ruby Libraries
-
-- urllib.rb, nttplib.rb, etc.
-* format like perl's
-
-Tools
-
-* freeze or undump to bundle everything
-* bundle using zlib
diff --git a/addr2line.c b/addr2line.c
index 219d1d4b47..f936694724 100644
--- a/addr2line.c
+++ b/addr2line.c
@@ -1,6 +1,6 @@
/**********************************************************************
- addr2line.h -
+ addr2line.c -
$Author$
@@ -9,6 +9,7 @@
**********************************************************************/
#include "ruby/config.h"
+#include "ruby/missing.h"
#include "addr2line.h"
#include <stdio.h>
@@ -16,14 +17,10 @@
#ifdef USE_ELF
-#ifdef __OpenBSD__
-#include <elf_abi.h>
-#else
-#include <elf.h>
-#endif
#include <fcntl.h>
#include <limits.h>
#include <stdio.h>
+#include <stdint.h>
#include <stdlib.h>
#include <string.h>
#include <sys/mman.h>
@@ -31,10 +28,33 @@
#include <sys/stat.h>
#include <unistd.h>
-#if defined(HAVE_ALLOCA_H)
-#include <alloca.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
@@ -68,6 +88,11 @@
# 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;
@@ -84,7 +109,8 @@ typedef struct {
static char binary_filename[PATH_MAX];
static unsigned long
-uleb128(char **p) {
+uleb128(char **p)
+{
unsigned long r = 0;
int s = 0;
for (;;) {
@@ -100,7 +126,8 @@ uleb128(char **p) {
}
static long
-sleb128(char **p) {
+sleb128(char **p)
+{
long r = 0;
int s = 0;
for (;;) {
@@ -130,7 +157,7 @@ get_nth_dirname(unsigned long dir, char *p)
while (*p) p++;
p++;
if (!*p) {
- fprintf(stderr, "Unexpected directory number %lu in %s\n",
+ kprintf("Unexpected directory number %lu in %s\n",
dir, binary_filename);
return "";
}
@@ -150,7 +177,7 @@ fill_filename(int file, char *include_directories, char *filenames,
filename = p;
if (!*p) {
/* Need to output binary file name? */
- fprintf(stderr, "Unexpected file number %d in %s\n",
+ kprintf("Unexpected file number %d in %s\n",
file, binary_filename);
return;
}
@@ -215,19 +242,19 @@ parse_debug_line_cu(int num_traces, void **traces,
int default_is_stmt, line_base;
unsigned int header_length, minimum_instruction_length, line_range,
opcode_base;
- unsigned char *standard_opcode_lengths;
+ /* unsigned char *standard_opcode_lengths; */
/* The registers. */
unsigned long addr = 0;
unsigned int file = 1;
unsigned int line = 1;
- unsigned int column = 0;
+ /* 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;
+ /* int basic_block = 0; */
+ /* int end_sequence = 0; */
+ /* int prologue_end = 0; */
+ /* int epilogue_begin = 0; */
+ /* unsigned int isa = 0; */
p = *debug_line;
@@ -263,7 +290,7 @@ parse_debug_line_cu(int num_traces, void **traces,
opcode_base = *(unsigned char *)p;
p++;
- standard_opcode_lengths = (unsigned char *)p - 1;
+ /* standard_opcode_lengths = (unsigned char *)p - 1; */
p += opcode_base - 1;
include_directories = p;
@@ -283,7 +310,7 @@ parse_debug_line_cu(int num_traces, void **traces,
do { \
fill_line(num_traces, traces, addr, file, line, \
include_directories, filenames, lines); \
- basic_block = prologue_end = epilogue_begin = 0; \
+ /*basic_block = prologue_end = epilogue_begin = 0;*/ \
} while (0)
while (p < cu_end) {
@@ -306,13 +333,13 @@ parse_debug_line_cu(int num_traces, void **traces,
file = (unsigned int)uleb128(&p);
break;
case DW_LNS_set_column:
- column = (unsigned int)uleb128(&p);
+ /*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;
+ /*basic_block = 1; */
break;
case DW_LNS_const_add_pc:
a = ((255 - opcode_base) / line_range) *
@@ -324,35 +351,35 @@ parse_debug_line_cu(int num_traces, void **traces,
addr += a;
break;
case DW_LNS_set_prologue_end:
- prologue_end = 1;
+ /* prologue_end = 1; */
break;
case DW_LNS_set_epilogue_begin:
- epilogue_begin = 1;
+ /* epilogue_begin = 1; */
break;
case DW_LNS_set_isa:
- isa = (unsigned int)uleb128(&p);
+ /* 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;
+ /* end_sequence = 1; */
FILL_LINE();
addr = 0;
file = 1;
line = 1;
- column = 0;
+ /* column = 0; */
is_stmt = default_is_stmt;
- end_sequence = 0;
- isa = 0;
+ /* 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:
- fprintf(stderr, "Unsupported operation in %s\n",
+ kprintf("Unsupported operation in %s\n",
binary_filename);
break;
case DW_LNE_set_discriminator:
@@ -360,7 +387,7 @@ parse_debug_line_cu(int num_traces, void **traces,
uleb128(&p);
break;
default:
- fprintf(stderr, "Unknown extended opcode: %d in %s\n",
+ kprintf("Unknown extended opcode: %d in %s\n",
op, binary_filename);
}
break;
@@ -388,7 +415,7 @@ parse_debug_line(int num_traces, void **traces,
parse_debug_line_cu(num_traces, traces, &debug_line, lines);
}
if (debug_line != debug_line_end) {
- fprintf(stderr, "Unexpected size of .debug_line in %s\n",
+ kprintf("Unexpected size of .debug_line in %s\n",
binary_filename);
}
}
@@ -450,22 +477,39 @@ fill_lines(int num_traces, void **traces, char **syms, int check_debuglink,
if (filesize < 0) {
int e = errno;
close(fd);
- fprintf(stderr, "lseek: %s\n", strerror(e));
+ 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, filesize, PROT_READ, MAP_SHARED, fd, 0);
+ file = (char *)mmap(NULL, (size_t)filesize, PROT_READ, MAP_SHARED, fd, 0);
if (file == MAP_FAILED) {
int e = errno;
close(fd);
- fprintf(stderr, "mmap: %s\n", strerror(e));
+ 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 = filesize;
+ current_line->mapped_size = (size_t)filesize;
for (i = 0; i < num_traces; i++) {
const char *path;
@@ -476,7 +520,6 @@ fill_lines(int num_traces, void **traces, char **syms, int check_debuglink,
}
}
- ehdr = (ElfW(Ehdr) *)file;
shdr = (ElfW(Shdr) *)(file + ehdr->e_shoff);
shstr_shdr = shdr + ehdr->e_shstrndx;
@@ -575,23 +618,22 @@ rb_dump_backtrace_with_lines(int num_traces, void **trace, char **syms)
fill_lines(num_traces, trace, syms, 1, &lines[i], lines);
}
- /* fprintf may not be async-signal safe */
for (i = 0; i < num_traces; i++) {
line_info_t *line = &lines[i];
if (line->line > 0) {
- fprintf(stderr, "%s ", syms[i]);
if (line->filename) {
if (line->dirname && line->dirname[0]) {
- fprintf(stderr, "%s/", line->dirname);
+ 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);
}
- fprintf(stderr, "%s", line->filename);
} else {
- fprintf(stderr, "???");
+ kprintf("%s ???:%d\n", syms[i], line->line);
}
- fprintf(stderr, ":%d\n", line->line);
} else {
- fprintf(stderr, "%s\n", syms[i]);
+ kprintf("%s\n", syms[i]);
}
}
@@ -605,6 +647,436 @@ rb_dump_backtrace_with_lines(int num_traces, void **trace, char **syms)
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/array.c b/array.c
index e427cb3320..5d01fdb551 100644
--- a/array.c
+++ b/array.c
@@ -16,17 +16,17 @@
#include "ruby/st.h"
#include "ruby/encoding.h"
#include "internal.h"
+#include "probes.h"
+#include "id.h"
#ifndef ARRAY_DEBUG
# define NDEBUG
#endif
#include <assert.h>
-#define numberof(array) (int)(sizeof(array) / sizeof((array)[0]))
-
VALUE rb_cArray;
-static ID id_cmp;
+static ID id_cmp, id_div, id_power;
#define ARY_DEFAULT_SIZE 16
#define ARY_MAX_SIZE (LONG_MAX / (int)sizeof(VALUE))
@@ -39,6 +39,14 @@ rb_mem_clear(register VALUE *mem, register long size)
}
}
+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)
{
@@ -47,6 +55,46 @@ memfill(register VALUE *mem, register long size, register VALUE val)
}
}
+static void
+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)
@@ -61,11 +109,11 @@ memfill(register VALUE *mem, register long size, register VALUE val)
(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)); \
- assert(!OBJ_FROZEN(a)); \
FL_SET((a), RARRAY_EMBED_FLAG); \
} while (0)
#define FL_UNSET_EMBED(ary) FL_UNSET((ary), RARRAY_EMBED_FLAG|RARRAY_EMBED_LEN_MASK)
@@ -126,15 +174,18 @@ memfill(register VALUE *mem, register long size, register VALUE val)
#define ARY_SHARED(ary) (assert(ARY_SHARED_P(ary)), RARRAY(ary)->as.heap.aux.shared)
#define ARY_SET_SHARED(ary, value) do { \
- assert(!ARY_EMBED_P(ary)); \
- assert(ARY_SHARED_P(ary)); \
- assert(ARY_SHARED_ROOT_P(value)); \
- RARRAY(ary)->as.heap.aux.shared = (value); \
+ 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); \
@@ -160,23 +211,36 @@ ary_resize_capa(VALUE ary, long capacity)
ARY_SET_HEAP_LEN(ary, len);
}
else {
- REALLOC_N(RARRAY(ary)->as.heap.ptr, VALUE, (capacity));
+ 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);
- VALUE *ptr = RARRAY_PTR(ary);
- if (len > capacity) len = capacity;
- MEMCPY(RARRAY(ary)->as.ary, ptr, VALUE, len);
+ 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);
- xfree(ptr);
+ 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)
{
@@ -245,8 +309,6 @@ static inline void
rb_ary_modify_check(VALUE ary)
{
rb_check_frozen(ary);
- if (!OBJ_UNTRUSTED(ary) && rb_safe_level() >= 4)
- rb_raise(rb_eSecurityError, "Insecure: can't modify array");
}
void
@@ -254,19 +316,30 @@ rb_ary_modify(VALUE ary)
{
rb_ary_modify_check(ary);
if (ARY_SHARED_P(ary)) {
- long len = RARRAY_LEN(ary);
+ long shared_len, len = RARRAY_LEN(ary);
+ VALUE shared = ARY_SHARED(ary);
if (len <= RARRAY_EMBED_LEN_MAX) {
- VALUE *ptr = ARY_HEAP_PTR(ary);
- VALUE shared = ARY_SHARED(ary);
+ const VALUE *ptr = ARY_HEAP_PTR(ary);
FL_UNSET_SHARED(ary);
FL_SET_EMBED(ary);
- MEMCPY(ARY_EMBED_PTR(ary), ptr, VALUE, len);
+ 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_PTR(ary), VALUE, len);
+ MEMCPY(ptr, RARRAY_CONST_PTR(ary), VALUE, len);
rb_ary_unshare(ary);
ARY_SET_CAPA(ary, len);
ARY_SET_PTR(ary, ptr);
@@ -274,6 +347,48 @@ rb_ary_modify(VALUE ary)
}
}
+static void
+ary_ensure_room_for_push(VALUE ary, long add_len)
+{
+ 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
rb_ary_freeze(VALUE ary)
{
@@ -284,8 +399,8 @@ rb_ary_freeze(VALUE ary)
* call-seq:
* ary.frozen? -> true or false
*
- * Return <code>true</code> if this array is frozen (or temporarily frozen
- * while being sorted).
+ * Return +true+ if this array is frozen (or temporarily frozen
+ * while being sorted). See also Object#frozen?
*/
static VALUE
@@ -295,21 +410,50 @@ rb_ary_frozen_p(VALUE ary)
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
+rb_ary_shared_with_p(VALUE ary1, VALUE ary2)
+{
+ 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;
+}
+
static VALUE
ary_alloc(VALUE klass)
{
- NEWOBJ(ary, struct RArray);
- OBJSETUP(ary, klass, T_ARRAY);
- FL_SET_EMBED((VALUE)ary);
- ARY_SET_EMBED_LEN((VALUE)ary, 0);
-
+ 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;
+ VALUE ary,*ptr;
if (capa < 0) {
rb_raise(rb_eArgError, "negative array size (or size too big)");
@@ -317,34 +461,40 @@ ary_new(VALUE klass, long capa)
if (capa > ARY_MAX_SIZE) {
rb_raise(rb_eArgError, "array size too big");
}
- ary = ary_alloc(klass);
+
+ 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, ALLOC_N(VALUE, capa));
+ ARY_SET_PTR(ary, ptr);
ARY_SET_CAPA(ary, capa);
ARY_SET_HEAP_LEN(ary, 0);
}
+ else {
+ ary = ary_alloc(klass);
+ }
return ary;
}
VALUE
-rb_ary_new2(long capa)
+rb_ary_new_capa(long capa)
{
return ary_new(rb_cArray, capa);
}
-
VALUE
rb_ary_new(void)
{
return rb_ary_new2(RARRAY_EMBED_LEN_MAX);
}
-#include <stdarg.h>
-
VALUE
-rb_ary_new3(long n, ...)
+rb_ary_new_from_args(long n, ...)
{
va_list ar;
VALUE ary;
@@ -354,7 +504,7 @@ rb_ary_new3(long n, ...)
va_start(ar, n);
for (i=0; i<n; i++) {
- RARRAY_PTR(ary)[i] = va_arg(ar, VALUE);
+ RARRAY_ASET(ary, i, va_arg(ar, VALUE));
}
va_end(ar);
@@ -363,13 +513,13 @@ rb_ary_new3(long n, ...)
}
VALUE
-rb_ary_new4(long n, const VALUE *elts)
+rb_ary_new_from_values(long n, const VALUE *elts)
{
VALUE ary;
ary = rb_ary_new2(n);
if (n > 0 && elts) {
- MEMCPY(RARRAY_PTR(ary), elts, VALUE, n);
+ ary_memcpy(ary, 0, n, elts);
ARY_SET_LEN(ary, n);
}
@@ -386,7 +536,7 @@ void
rb_ary_free(VALUE ary)
{
if (ARY_OWNS_HEAP_P(ary)) {
- xfree(ARY_HEAP_PTR(ary));
+ ruby_sized_xfree((void *)ARY_HEAP_PTR(ary), ARY_HEAP_SIZE(ary));
}
}
@@ -420,18 +570,19 @@ ary_make_shared(VALUE ary)
return ary;
}
else if (OBJ_FROZEN(ary)) {
- ary_resize_capa(ary, ARY_HEAP_LEN(ary));
+ ary_shrink_capa(ary);
FL_SET_SHARED_ROOT(ary);
ARY_SET_SHARED_NUM(ary, 1);
return ary;
}
else {
- NEWOBJ(shared, struct RArray);
- OBJSETUP(shared, 0, T_ARRAY);
+ 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, RARRAY_LEN(ary));
- ARY_SET_PTR((VALUE)shared, RARRAY_PTR(ary));
+ 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);
@@ -441,14 +592,15 @@ ary_make_shared(VALUE ary)
}
}
-
static VALUE
ary_make_substitution(VALUE ary)
{
- if (RARRAY_LEN(ary) <= RARRAY_EMBED_LEN_MAX) {
- VALUE subst = rb_ary_new2(RARRAY_LEN(ary));
- MEMCPY(ARY_EMBED_PTR(subst), RARRAY_PTR(ary), VALUE, RARRAY_LEN(ary));
- ARY_SET_EMBED_LEN(subst, RARRAY_LEN(ary));
+ long len = RARRAY_LEN(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 {
@@ -563,8 +715,8 @@ rb_ary_initialize(int argc, VALUE *argv, VALUE ary)
rb_ary_modify(ary);
if (argc == 0) {
- if (ARY_OWNS_HEAP_P(ary) && RARRAY_PTR(ary)) {
- xfree(RARRAY_PTR(ary));
+ 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);
@@ -604,27 +756,26 @@ rb_ary_initialize(int argc, VALUE *argv, VALUE ary)
}
}
else {
- memfill(RARRAY_PTR(ary), len, val);
+ ary_memfill(ary, 0, len, val);
ARY_SET_LEN(ary, len);
}
return ary;
}
-
/*
-* Returns a new array populated with the given objects.
-*
-* Array.[]( 1, 'a', /^A/ )
-* Array[ 1, 'a', /^A/ ]
-* [ 1, 'a', /^A/ ]
-*/
+ * 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) {
- MEMCPY(RARRAY_PTR(ary), argv, VALUE, argc);
+ ary_memcpy(ary, 0, argc, argv);
ARY_SET_LEN(ary, argc);
}
@@ -634,11 +785,13 @@ rb_ary_s_create(int argc, VALUE *argv, VALUE klass)
void
rb_ary_store(VALUE ary, long idx, VALUE val)
{
+ long len = RARRAY_LEN(ary);
+
if (idx < 0) {
- idx += RARRAY_LEN(ary);
+ idx += len;
if (idx < 0) {
rb_raise(rb_eIndexError, "index %ld too small for array; minimum: %ld",
- idx - RARRAY_LEN(ary), -RARRAY_LEN(ary));
+ idx - len, -len);
}
}
else if (idx >= ARY_MAX_SIZE) {
@@ -649,15 +802,14 @@ rb_ary_store(VALUE ary, long idx, VALUE val)
if (idx >= ARY_CAPA(ary)) {
ary_double_capa(ary, idx);
}
- if (idx > RARRAY_LEN(ary)) {
- rb_mem_clear(RARRAY_PTR(ary) + RARRAY_LEN(ary),
- idx-RARRAY_LEN(ary) + 1);
+ if (idx > len) {
+ ary_mem_clear(ary, len, idx - len + 1);
}
- if (idx >= RARRAY_LEN(ary)) {
+ if (idx >= len) {
ARY_SET_LEN(ary, idx + 1);
}
- RARRAY_PTR(ary)[idx] = val;
+ RARRAY_ASET(ary, idx, val);
}
static VALUE
@@ -669,7 +821,7 @@ ary_make_partial(VALUE ary, VALUE klass, long offset, long len)
if (len <= RARRAY_EMBED_LEN_MAX) {
VALUE result = ary_alloc(klass);
- MEMCPY(ARY_EMBED_PTR(result), RARRAY_PTR(ary) + offset, VALUE, len);
+ ary_memcpy(result, 0, len, RARRAY_CONST_PTR(ary) + offset);
ARY_SET_EMBED_LEN(result, len);
return result;
}
@@ -678,7 +830,7 @@ ary_make_partial(VALUE ary, VALUE klass, long offset, long len)
FL_UNSET_EMBED(result);
shared = ary_make_shared(ary);
- ARY_SET_PTR(result, RARRAY_PTR(ary));
+ ARY_SET_PTR(result, RARRAY_CONST_PTR(ary));
ARY_SET_LEN(result, RARRAY_LEN(ary));
rb_ary_set_shared(result, shared);
@@ -705,24 +857,24 @@ ary_take_first_or_last(int argc, VALUE *argv, VALUE ary, enum ary_take_pos_flags
{
VALUE nv;
long n;
+ long len;
long offset = 0;
rb_scan_args(argc, argv, "1", &nv);
n = NUM2LONG(nv);
- if (n > RARRAY_LEN(ary)) {
- n = RARRAY_LEN(ary);
+ len = RARRAY_LEN(ary);
+ if (n > len) {
+ n = len;
}
else if (n < 0) {
rb_raise(rb_eArgError, "negative array size");
}
if (last) {
- offset = RARRAY_LEN(ary) - n;
+ offset = len - n;
}
return ary_make_partial(ary, rb_cArray, offset, n);
}
-static VALUE rb_ary_push_1(VALUE ary, VALUE item);
-
/*
* call-seq:
* ary << obj -> ary
@@ -739,8 +891,12 @@ static VALUE rb_ary_push_1(VALUE ary, VALUE item);
VALUE
rb_ary_push(VALUE ary, VALUE item)
{
- rb_ary_modify(ary);
- return rb_ary_push_1(ary, item);
+ long idx = RARRAY_LEN(ary);
+
+ ary_ensure_room_for_push(ary, 1);
+ RARRAY_ASET(ary, idx, item);
+ ARY_SET_LEN(ary, idx + 1);
+ return ary;
}
static VALUE
@@ -751,32 +907,42 @@ rb_ary_push_1(VALUE ary, VALUE item)
if (idx >= ARY_CAPA(ary)) {
ary_double_capa(ary, idx);
}
- RARRAY_PTR(ary)[idx] = item;
+ RARRAY_ASET(ary, idx, item);
ARY_SET_LEN(ary, idx + 1);
return ary;
}
+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
+ * 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.
+ * 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)
{
- rb_ary_modify(ary);
- while (argc--) {
- rb_ary_push_1(ary, *argv++);
- }
- return ary;
+ return rb_ary_cat(ary, argv, argc);
}
VALUE
@@ -784,16 +950,17 @@ rb_ary_pop(VALUE ary)
{
long n;
rb_ary_modify_check(ary);
- if (RARRAY_LEN(ary) == 0) return Qnil;
+ n = RARRAY_LEN(ary);
+ if (n == 0) return Qnil;
if (ARY_OWNS_HEAP_P(ary) &&
- RARRAY_LEN(ary) * 3 < ARY_CAPA(ary) &&
+ n * 3 < ARY_CAPA(ary) &&
ARY_CAPA(ary) > ARY_DEFAULT_SIZE)
{
- ary_resize_capa(ary, RARRAY_LEN(ary) * 2);
+ ary_resize_capa(ary, n * 2);
}
- n = RARRAY_LEN(ary)-1;
+ --n;
ARY_SET_LEN(ary, n);
- return RARRAY_PTR(ary)[n];
+ return RARRAY_AREF(ary, n);
}
/*
@@ -802,10 +969,11 @@ rb_ary_pop(VALUE ary)
* ary.pop(n) -> new_ary
*
* Removes the last element from +self+ and returns it, or
- * <code>nil</code> if the array is empty.
+ * +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.
+ * 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"
@@ -832,23 +1000,26 @@ VALUE
rb_ary_shift(VALUE ary)
{
VALUE top;
+ long len = RARRAY_LEN(ary);
rb_ary_modify_check(ary);
- if (RARRAY_LEN(ary) == 0) return Qnil;
- top = RARRAY_PTR(ary)[0];
+ if (len == 0) return Qnil;
+ top = RARRAY_AREF(ary, 0);
if (!ARY_SHARED_P(ary)) {
- if (RARRAY_LEN(ary) < ARY_DEFAULT_SIZE) {
- MEMMOVE(RARRAY_PTR(ary), RARRAY_PTR(ary)+1, VALUE, RARRAY_LEN(ary)-1);
+ 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 */
- RARRAY_PTR(ary)[0] = Qnil;
+ RARRAY_ASET(ary, 0, Qnil);
ary_make_shared(ary);
}
- else if (ARY_SHARED_NUM(ARY_SHARED(ary)) == 1) {
- RARRAY_PTR(ary)[0] = 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);
@@ -861,12 +1032,14 @@ rb_ary_shift(VALUE ary)
* ary.shift -> obj or nil
* ary.shift(n) -> new_ary
*
- * Returns the first element of +self+ and removes it (shifting all
- * other elements down by one). Returns <code>nil</code> if the array
+ * 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.
+ * 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"
@@ -891,25 +1064,78 @@ rb_ary_shift_m(int argc, VALUE *argv, VALUE 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_NUM(ARY_SHARED(ary)) == 1) {
- rb_mem_clear(RARRAY_PTR(ary), n);
+ if (ARY_SHARED_OCCUPIED(ARY_SHARED(ary))) {
+ ary_mem_clear(ary, 0, n);
}
ARY_INCREASE_PTR(ary, n);
}
else {
- MEMMOVE(RARRAY_PTR(ary), RARRAY_PTR(ary)+n, VALUE, RARRAY_LEN(ary)-n);
+ RARRAY_PTR_USE(ary, ptr, {
+ MEMMOVE(ptr, ptr + n, VALUE, RARRAY_LEN(ary)-n);
+ }); /* WB: no new reference */
}
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;
+ }
+ }
+
+ rb_ary_modify(ary);
+ capa = ARY_CAPA(ary);
+ if (capa - (capa >> 6) <= new_len) {
+ ary_double_capa(ary, new_len);
+ }
+
+ /* 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.
+ * 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"]
@@ -919,19 +1145,16 @@ rb_ary_shift_m(int argc, VALUE *argv, VALUE ary)
static VALUE
rb_ary_unshift_m(int argc, VALUE *argv, VALUE ary)
{
- long len;
+ long len = RARRAY_LEN(ary);
- rb_ary_modify(ary);
- if (argc == 0) return ary;
- if (ARY_CAPA(ary) <= (len = RARRAY_LEN(ary)) + argc) {
- ary_double_capa(ary, len + argc);
+ if (argc == 0) {
+ rb_ary_modify_check(ary);
+ return ary;
}
- /* sliding items */
- MEMMOVE(RARRAY_PTR(ary) + argc, RARRAY_PTR(ary), VALUE, len);
- MEMCPY(RARRAY_PTR(ary), argv, VALUE, argc);
- ARY_INCREASE_LEN(ary, argc);
-
+ ary_ensure_room_for_unshift(ary, argc);
+ ary_memcpy(ary, 0, argc, argv);
+ ARY_SET_LEN(ary, len + argc);
return ary;
}
@@ -945,11 +1168,12 @@ rb_ary_unshift(VALUE ary, VALUE item)
static inline VALUE
rb_ary_elt(VALUE ary, long offset)
{
- if (RARRAY_LEN(ary) == 0) return Qnil;
- if (offset < 0 || RARRAY_LEN(ary) <= offset) {
+ long len = RARRAY_LEN(ary);
+ if (len == 0) return Qnil;
+ if (offset < 0 || len <= offset) {
return Qnil;
}
- return RARRAY_PTR(ary)[offset];
+ return RARRAY_AREF(ary, offset);
}
VALUE
@@ -965,12 +1189,13 @@ VALUE
rb_ary_subseq(VALUE ary, long beg, long len)
{
VALUE klass;
+ long alen = RARRAY_LEN(ary);
- if (beg > RARRAY_LEN(ary)) return Qnil;
+ if (beg > alen) return Qnil;
if (beg < 0 || len < 0) return Qnil;
- if (RARRAY_LEN(ary) < len || RARRAY_LEN(ary) < beg + len) {
- len = RARRAY_LEN(ary) - beg;
+ if (alen < len || alen < beg + len) {
+ len = alen - beg;
}
klass = rb_obj_class(ary);
if (len == 0) return ary_new(klass, 0);
@@ -987,13 +1212,16 @@ rb_ary_subseq(VALUE ary, long beg, long len)
* 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 _start_ and
- * continuing for _length_ elements, or returns a subarray
- * specified by _range_.
- * Negative indices count backward from the end of the
- * array (-1 is the last element). Returns +nil+ if the index
- * (or starting index) are out of range.
+ * 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"
@@ -1005,6 +1233,7 @@ rb_ary_subseq(VALUE ary, long beg, long len)
* a[-3, 3] #=> [ "c", "d", "e" ]
* # special cases
* a[5] #=> nil
+ * a[6, 1] #=> nil
* a[5, 1] #=> []
* a[5..10] #=> []
*
@@ -1025,7 +1254,7 @@ rb_ary_aref(int argc, VALUE *argv, VALUE ary)
return rb_ary_subseq(ary, beg, len);
}
if (argc != 1) {
- rb_scan_args(argc, argv, "11", 0, 0);
+ rb_scan_args(argc, argv, "11", NULL, NULL);
}
arg = argv[0];
/* special case - speeding up */
@@ -1048,9 +1277,9 @@ rb_ary_aref(int argc, VALUE *argv, VALUE ary)
* 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 <code>Array#[]</code>.
+ * 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"
@@ -1069,8 +1298,9 @@ rb_ary_at(VALUE ary, VALUE pos)
* 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 <code>nil</code>, and the
- * second form returns an empty 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"
@@ -1082,7 +1312,7 @@ rb_ary_first(int argc, VALUE *argv, VALUE ary)
{
if (argc == 0) {
if (RARRAY_LEN(ary) == 0) return Qnil;
- return RARRAY_PTR(ary)[0];
+ return RARRAY_AREF(ary, 0);
}
else {
return ary_take_first_or_last(argc, argv, ary, ARY_TAKE_FIRST);
@@ -1095,7 +1325,9 @@ rb_ary_first(int argc, VALUE *argv, VALUE ary)
* ary.last(n) -> new_ary
*
* Returns the last element(s) of +self+. If the array is empty,
- * the first form returns <code>nil</code>.
+ * the first form returns +nil+.
+ *
+ * See also Array#first for the opposite effect.
*
* a = [ "w", "x", "y", "z" ]
* a.last #=> "z"
@@ -1106,8 +1338,9 @@ VALUE
rb_ary_last(int argc, VALUE *argv, VALUE ary)
{
if (argc == 0) {
- if (RARRAY_LEN(ary) == 0) return Qnil;
- return RARRAY_PTR(ary)[RARRAY_LEN(ary)-1];
+ long len = RARRAY_LEN(ary);
+ if (len == 0) return Qnil;
+ return RARRAY_AREF(ary, len-1);
}
else {
return ary_take_first_or_last(argc, argv, ary, ARY_TAKE_LAST);
@@ -1117,21 +1350,24 @@ rb_ary_last(int argc, VALUE *argv, VALUE ary)
/*
* call-seq:
* ary.fetch(index) -> obj
- * ary.fetch(index, default ) -> obj
- * ary.fetch(index) {|index| block } -> obj
+ * ary.fetch(index, default) -> obj
+ * ary.fetch(index) { |index| block } -> obj
*
- * Tries to return the element at position <i>index</i>. If the index
- * lies outside the array, the first form throws an
- * <code>IndexError</code> exception, the second form returns
- * <i>default</i>, and the third form returns the value of invoking
- * the block, passing in the index. Negative values of <i>index</i>
- * count from the end of the array.
+ * 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(4) { |i| i*i } #=> 16
+ * a.fetch(100) { |i| puts "#{i} is out of bounds" }
+ * #=> "100 is out of bounds"
*/
static VALUE
@@ -1159,70 +1395,90 @@ rb_ary_fetch(int argc, VALUE *argv, VALUE ary)
}
return ifnone;
}
- return RARRAY_PTR(ary)[idx];
+ return RARRAY_AREF(ary, idx);
}
/*
* call-seq:
- * ary.index(obj) -> int or nil
- * ary.index {|item| block} -> int or nil
- * ary.index -> an_enumerator
+ * 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 +self+ such that the object is
- * <code>==</code> to <i>obj</i>. If a block is given instead of an
- * argument, returns index of first object for which <em>block</em> is true.
- * Returns <code>nil</code> if no match is found.
- * See also <code>Array#rindex</code>.
+ * Returns the _index_ of the first object in +ary+ such that the object is
+ * <code>==</code> to +obj+.
*
- * If neither block nor argument is given, an enumerator is returned instead.
+ * 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.
*
- * a = [ "a", "b", "c" ]
- * a.index("b") #=> 1
- * a.index("z") #=> nil
- * a.index{|x|x=="b"} #=> 1
+ * See also Array#rindex.
*
- * This is an alias of <code>#find_index</code>.
+ * 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
rb_ary_index(int argc, VALUE *argv, VALUE ary)
{
+ const VALUE *ptr;
VALUE val;
- long i;
+ long i, len;
if (argc == 0) {
RETURN_ENUMERATOR(ary, 0, 0);
for (i=0; i<RARRAY_LEN(ary); i++) {
- if (RTEST(rb_yield(RARRAY_PTR(ary)[i]))) {
+ if (RTEST(rb_yield(RARRAY_AREF(ary, i)))) {
return LONG2NUM(i);
}
}
return Qnil;
}
- rb_scan_args(argc, argv, "1", &val);
+ rb_check_arity(argc, 0, 1);
+ val = argv[0];
if (rb_block_given_p())
rb_warn("given block not used");
- for (i=0; i<RARRAY_LEN(ary); i++) {
- if (rb_equal(RARRAY_PTR(ary)[i], val))
+ 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 -> an_enumerator
+ * 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+.
*
- * Returns the index of the last object in +self+
- * <code>==</code> to <i>obj</i>. If a block is given instead of an
- * argument, returns index of first object for which <em>block</em> is
- * true, starting from the last object.
- * Returns <code>nil</code> if no match is found.
- * See also <code>Array#index</code>.
+ * 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.
*
- * If neither block nor argument is given, an enumerator is returned instead.
+ * 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
@@ -1233,29 +1489,40 @@ rb_ary_index(int argc, VALUE *argv, VALUE ary)
static VALUE
rb_ary_rindex(int argc, VALUE *argv, VALUE ary)
{
+ const VALUE *ptr;
VALUE val;
- long i = RARRAY_LEN(ary);
+ long i = RARRAY_LEN(ary), len;
if (argc == 0) {
RETURN_ENUMERATOR(ary, 0, 0);
while (i--) {
- if (RTEST(rb_yield(RARRAY_PTR(ary)[i])))
+ if (RTEST(rb_yield(RARRAY_AREF(ary, i))))
return LONG2NUM(i);
- if (i > RARRAY_LEN(ary)) {
- i = RARRAY_LEN(ary);
+ if (i > (len = RARRAY_LEN(ary))) {
+ i = len;
}
}
return Qnil;
}
- rb_scan_args(argc, argv, "1", &val);
+ 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--) {
- if (rb_equal(RARRAY_PTR(ary)[i], val))
+ VALUE e = ptr[i];
+ switch (rb_equal_opt(e, val)) {
+ case Qundef:
+ if (!rb_equal(e, val)) break;
+ case Qtrue:
return LONG2NUM(i);
- if (i > RARRAY_LEN(ary)) {
- i = RARRAY_LEN(ary);
+ case Qfalse:
+ continue;
}
+ if (i > (len = RARRAY_LEN(ary))) {
+ i = len;
+ }
+ ptr = RARRAY_CONST_PTR(ary);
}
return Qnil;
}
@@ -1273,17 +1540,19 @@ static void
rb_ary_splice(VALUE ary, long beg, long len, VALUE rpl)
{
long rlen;
+ long olen;
if (len < 0) rb_raise(rb_eIndexError, "negative length (%ld)", len);
+ olen = RARRAY_LEN(ary);
if (beg < 0) {
- beg += RARRAY_LEN(ary);
+ beg += olen;
if (beg < 0) {
rb_raise(rb_eIndexError, "index %ld too small for array; minimum: %ld",
- beg - RARRAY_LEN(ary), -RARRAY_LEN(ary));
+ beg - olen, -olen);
}
}
- if (RARRAY_LEN(ary) < len || RARRAY_LEN(ary) < beg + len) {
- len = RARRAY_LEN(ary) - beg;
+ if (olen < len || olen < beg + len) {
+ len = olen - beg;
}
if (rpl == Qundef) {
@@ -1292,41 +1561,56 @@ rb_ary_splice(VALUE ary, long beg, long len, VALUE rpl)
else {
rpl = rb_ary_to_ary(rpl);
rlen = RARRAY_LEN(rpl);
+ olen = RARRAY_LEN(ary); /* ary may be resized in rpl.to_ary too */
}
- rb_ary_modify(ary);
- if (beg >= RARRAY_LEN(ary)) {
+ 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;
- if (len >= ARY_CAPA(ary)) {
- ary_double_capa(ary, len);
- }
- rb_mem_clear(RARRAY_PTR(ary) + RARRAY_LEN(ary), beg - RARRAY_LEN(ary));
+ ary_mem_clear(ary, olen, beg - olen);
if (rlen > 0) {
- MEMCPY(RARRAY_PTR(ary) + beg, RARRAY_PTR(rpl), VALUE, rlen);
+ ary_memcpy(ary, beg, rlen, RARRAY_CONST_PTR(rpl));
}
ARY_SET_LEN(ary, len);
}
else {
long alen;
- alen = RARRAY_LEN(ary) + rlen - len;
+ rb_ary_modify(ary);
+ alen = olen + rlen - len;
if (alen >= ARY_CAPA(ary)) {
ary_double_capa(ary, alen);
}
if (len != rlen) {
- MEMMOVE(RARRAY_PTR(ary) + beg + rlen, RARRAY_PTR(ary) + beg + len,
- VALUE, RARRAY_LEN(ary) - (beg + len));
+ 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_PTR(rpl), VALUE, rlen);
+ MEMMOVE(RARRAY_PTR(ary) + beg, RARRAY_CONST_PTR(rpl), VALUE, rlen);
}
}
}
+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.
@@ -1350,8 +1634,8 @@ rb_ary_resize(VALUE ary, long len)
if (len >= ARY_CAPA(ary)) {
ary_double_capa(ary, len);
}
- rb_mem_clear(RARRAY_PTR(ary) + olen, len - olen);
- ARY_SET_LEN(ary, 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);
@@ -1360,12 +1644,12 @@ rb_ary_resize(VALUE ary, long len)
VALUE tmp[RARRAY_EMBED_LEN_MAX];
MEMCPY(tmp, ARY_HEAP_PTR(ary), VALUE, len);
ary_discard(ary);
- MEMCPY(ARY_EMBED_PTR(ary), tmp, VALUE, len);
+ 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) {
- REALLOC_N(RARRAY(ary)->as.heap.ptr, VALUE, len);
+ 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);
@@ -1379,16 +1663,21 @@ rb_ary_resize(VALUE ary, long len)
* 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 starting at _start_ and
- * continuing for _length_ elements, or replaces a subarray
- * specified by _range_. If indices are greater than
- * the current capacity of the array, the array grows
- * automatically. A negative indices will count backward
- * from the end of the array. Inserts elements if _length_ is
- * zero. An +IndexError+ is raised if a negative index points
- * past the beginning of the array. See also
- * <code>Array#push</code>, and <code>Array#unshift</code>.
+ * 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"]
@@ -1399,6 +1688,8 @@ rb_ary_resize(VALUE ary, long len)
* 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
@@ -1413,9 +1704,7 @@ rb_ary_aset(int argc, VALUE *argv, VALUE ary)
rb_ary_splice(ary, beg, len, argv[2]);
return argv[2];
}
- if (argc != 2) {
- rb_raise(rb_eArgError, "wrong number of arguments (%d for 2)", argc);
- }
+ rb_check_arity(argc, 2, 2);
rb_ary_modify_check(ary);
if (FIXNUM_P(argv[0])) {
offset = FIX2LONG(argv[0]);
@@ -1437,8 +1726,10 @@ fixnum:
* call-seq:
* ary.insert(index, obj...) -> ary
*
- * Inserts the given values before the element with the given index
- * (which may be negative).
+ * 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"]
@@ -1450,9 +1741,7 @@ rb_ary_insert(int argc, VALUE *argv, VALUE ary)
{
long pos;
- if (argc < 1) {
- rb_raise(rb_eArgError, "wrong number of arguments (at least 1)");
- }
+ rb_check_arity(argc, 1, UNLIMITED_ARGUMENTS);
rb_ary_modify_check(ary);
if (argc == 1) return ary;
pos = NUM2LONG(argv[0]);
@@ -1466,15 +1755,24 @@ rb_ary_insert(int argc, VALUE *argv, VALUE ary)
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 -> an_enumerator
+ * ary.each { |item| block } -> ary
+ * ary.each -> Enumerator
*
- * Calls <i>block</i> once for each element in +self+, passing that
- * element as a parameter.
+ * Calls the given block once for each element in +self+, passing that element
+ * as a parameter.
*
- * If no block is given, an enumerator is returned instead.
+ * An Enumerator is returned if no block is given.
*
* a = [ "a", "b", "c" ]
* a.each {|x| print x, " -- " }
@@ -1490,23 +1788,22 @@ rb_ary_each(VALUE array)
long i;
volatile VALUE ary = array;
- RETURN_ENUMERATOR(ary, 0, 0);
+ RETURN_SIZED_ENUMERATOR(ary, 0, 0, ary_enum_length);
for (i=0; i<RARRAY_LEN(ary); i++) {
- rb_yield(RARRAY_PTR(ary)[i]);
+ rb_yield(RARRAY_AREF(ary, i));
}
return ary;
}
/*
* call-seq:
- * ary.each_index {|index| block } -> ary
- * ary.each_index -> an_enumerator
- *
- * Same as <code>Array#each</code>, but passes the index of the element
- * instead of the element itself.
+ * ary.each_index { |index| block } -> ary
+ * ary.each_index -> Enumerator
*
- * If no block is given, an enumerator is returned instead.
+ * 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, " -- " }
@@ -1520,7 +1817,7 @@ static VALUE
rb_ary_each_index(VALUE ary)
{
long i;
- RETURN_ENUMERATOR(ary, 0, 0);
+ RETURN_SIZED_ENUMERATOR(ary, 0, 0, ary_enum_length);
for (i=0; i<RARRAY_LEN(ary); i++) {
rb_yield(LONG2NUM(i));
@@ -1530,11 +1827,10 @@ rb_ary_each_index(VALUE ary)
/*
* call-seq:
- * ary.reverse_each {|item| block } -> ary
- * ary.reverse_each -> an_enumerator
+ * ary.reverse_each { |item| block } -> ary
+ * ary.reverse_each -> Enumerator
*
- * Same as <code>Array#each</code>, but traverses +self+ in reverse
- * order.
+ * Same as Array#each, but traverses +self+ in reverse order.
*
* a = [ "a", "b", "c" ]
* a.reverse_each {|x| print x, " " }
@@ -1549,12 +1845,14 @@ rb_ary_reverse_each(VALUE ary)
{
long len;
- RETURN_ENUMERATOR(ary, 0, 0);
+ RETURN_SIZED_ENUMERATOR(ary, 0, 0, ary_enum_length);
len = RARRAY_LEN(ary);
while (len--) {
- rb_yield(RARRAY_PTR(ary)[len]);
- if (RARRAY_LEN(ary) < len) {
- len = RARRAY_LEN(ary);
+ long nlen;
+ rb_yield(RARRAY_AREF(ary, len));
+ nlen = RARRAY_LEN(ary);
+ if (nlen < len) {
+ len = nlen;
}
}
return ary;
@@ -1567,6 +1865,7 @@ rb_ary_reverse_each(VALUE ary)
* Returns the number of elements in +self+. May be zero.
*
* [ 1, 2, 3, 4, 5 ].length #=> 5
+ * [].length #=> 0
*/
static VALUE
@@ -1580,7 +1879,7 @@ rb_ary_length(VALUE ary)
* call-seq:
* ary.empty? -> true or false
*
- * Returns <code>true</code> if +self+ contains no elements.
+ * Returns +true+ if +self+ contains no elements.
*
* [].empty? #=> true
*/
@@ -1596,16 +1895,17 @@ rb_ary_empty_p(VALUE ary)
VALUE
rb_ary_dup(VALUE ary)
{
- VALUE dup = rb_ary_new2(RARRAY_LEN(ary));
- MEMCPY(RARRAY_PTR(dup), RARRAY_PTR(ary), VALUE, RARRAY_LEN(ary));
- ARY_SET_LEN(dup, RARRAY_LEN(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)
{
- return rb_ary_new4(RARRAY_LEN(ary), RARRAY_PTR(ary));
+ return rb_ary_new4(RARRAY_LEN(ary), RARRAY_CONST_PTR(ary));
}
extern VALUE rb_output_fs;
@@ -1636,14 +1936,13 @@ ary_join_0(VALUE ary, VALUE sep, long max, VALUE result)
long i;
VALUE val;
- if (max > 0) rb_enc_copy(result, RARRAY_PTR(ary)[0]);
+ if (max > 0) rb_enc_copy(result, RARRAY_AREF(ary, 0));
for (i=0; i<max; i++) {
- val = RARRAY_PTR(ary)[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);
- if (OBJ_UNTRUSTED(val)) OBJ_TAINT(result);
}
}
@@ -1656,14 +1955,13 @@ ary_join_1(VALUE obj, VALUE ary, VALUE sep, long i, VALUE result, int *first)
if (i > 0 && !NIL_P(sep))
rb_str_buf_append(result, sep);
- val = RARRAY_PTR(ary)[i];
- switch (TYPE(val)) {
- case T_STRING:
+ val = RARRAY_AREF(ary, i);
+ if (RB_TYPE_P(val, T_STRING)) {
str_join:
rb_str_buf_append(result, val);
*first = FALSE;
- break;
- case T_ARRAY:
+ }
+ else if (RB_TYPE_P(val, T_ARRAY)) {
obj = val;
ary_join:
if (val == ary) {
@@ -1678,8 +1976,8 @@ ary_join_1(VALUE obj, VALUE ary, VALUE sep, long i, VALUE result, int *first)
args[3] = (VALUE)first;
rb_exec_recursive(recursive_join, obj, (VALUE)args);
}
- break;
- default:
+ }
+ else {
tmp = rb_check_string_type(val);
if (!NIL_P(tmp)) {
val = tmp;
@@ -1706,19 +2004,17 @@ rb_ary_join(VALUE ary, VALUE sep)
{
long len = 1, i;
int taint = FALSE;
- int untrust = FALSE;
VALUE val, tmp, result;
if (RARRAY_LEN(ary) == 0) return rb_usascii_str_new(0, 0);
- if (OBJ_TAINTED(ary) || OBJ_TAINTED(sep)) taint = TRUE;
- if (OBJ_UNTRUSTED(ary) || OBJ_UNTRUSTED(sep)) untrust = TRUE;
+ if (OBJ_TAINTED(ary)) taint = TRUE;
if (!NIL_P(sep)) {
StringValue(sep);
len += RSTRING_LEN(sep) * (RARRAY_LEN(ary) - 1);
}
for (i=0; i<RARRAY_LEN(ary); i++) {
- val = RARRAY_PTR(ary)[i];
+ val = RARRAY_AREF(ary, i);
tmp = rb_check_string_type(val);
if (NIL_P(tmp) || tmp != val) {
@@ -1726,7 +2022,6 @@ rb_ary_join(VALUE ary, VALUE sep)
result = rb_str_buf_new(len + (RARRAY_LEN(ary)-i)*10);
rb_enc_associate(result, rb_usascii_encoding());
if (taint) OBJ_TAINT(result);
- if (untrust) OBJ_UNTRUST(result);
ary_join_0(ary, sep, i, result);
first = i == 0;
ary_join_1(ary, ary, sep, i, result, &first);
@@ -1738,7 +2033,6 @@ rb_ary_join(VALUE ary, VALUE sep)
result = rb_str_buf_new(len);
if (taint) OBJ_TAINT(result);
- if (untrust) OBJ_UNTRUST(result);
ary_join_0(ary, sep, RARRAY_LEN(ary), result);
return result;
@@ -1746,10 +2040,12 @@ rb_ary_join(VALUE ary, VALUE sep)
/*
* call-seq:
- * ary.join(sep=$,) -> str
+ * ary.join(separator=$,) -> str
*
* Returns a string created by converting each element of the array to
- * a string, separated by <i>sep</i>.
+ * 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"
@@ -1770,32 +2066,31 @@ static VALUE
inspect_ary(VALUE ary, VALUE dummy, int recur)
{
int tainted = OBJ_TAINTED(ary);
- int untrust = OBJ_UNTRUSTED(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_PTR(ary)[i]);
+ s = rb_inspect(RARRAY_AREF(ary, i));
if (OBJ_TAINTED(s)) tainted = TRUE;
- if (OBJ_UNTRUSTED(s)) untrust = 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);
- if (untrust) OBJ_UNTRUST(str);
return str;
}
/*
* call-seq:
- * ary.to_s -> string
* ary.inspect -> string
+ * ary.to_s -> string
*
* Creates a string representation of +self+.
+ *
+ * [ "a", "b", "c" ].to_s #=> "[\"a\", \"b\", \"c\"]"
*/
static VALUE
@@ -1815,8 +2110,9 @@ rb_ary_to_s(VALUE ary)
* call-seq:
* ary.to_a -> ary
*
- * Returns +self+. If called on a subclass of Array, converts
- * the receiver to an Array object.
+ * Returns +self+.
+ *
+ * If called on a subclass of Array, converts the receiver to an Array object.
*/
static VALUE
@@ -1832,6 +2128,32 @@ rb_ary_to_a(VALUE 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));
+ }
+ }
+ return hash;
+}
+
+/*
+ * call-seq:
* ary.to_ary -> ary
*
* Returns +self+.
@@ -1844,8 +2166,7 @@ rb_ary_to_ary_m(VALUE ary)
}
static void
-ary_reverse(p1, p2)
- VALUE *p1, *p2;
+ary_reverse(VALUE *p1, VALUE *p2)
{
while (p1 < p2) {
VALUE tmp = *p1;
@@ -1857,13 +2178,15 @@ ary_reverse(p1, p2)
VALUE
rb_ary_reverse(VALUE ary)
{
- VALUE *p1, *p2;
+ VALUE *p2;
+ long len = RARRAY_LEN(ary);
rb_ary_modify(ary);
- if (RARRAY_LEN(ary) > 1) {
- p1 = RARRAY_PTR(ary);
- p2 = p1 + RARRAY_LEN(ary) - 1; /* points last item */
- ary_reverse(p1, p2);
+ if (len > 1) {
+ RARRAY_PTR_USE(ary, p1, {
+ p2 = p1 + len - 1; /* points last item */
+ ary_reverse(p1, p2);
+ }); /* WB: no new reference */
}
return ary;
}
@@ -1887,7 +2210,7 @@ rb_ary_reverse_bang(VALUE ary)
/*
* call-seq:
- * ary.reverse -> new_ary
+ * ary.reverse -> new_ary
*
* Returns a new array containing +self+'s elements in reverse order.
*
@@ -1902,8 +2225,8 @@ rb_ary_reverse_m(VALUE ary)
VALUE dup = rb_ary_new2(len);
if (len > 0) {
- VALUE *p1 = RARRAY_PTR(ary);
- VALUE *p2 = RARRAY_PTR(dup) + len - 1;
+ 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));
@@ -1939,11 +2262,13 @@ rb_ary_rotate(VALUE ary, long cnt)
/*
* call-seq:
- * ary.rotate!(cnt=1) -> ary
+ * ary.rotate!(count=1) -> ary
*
- * Rotates +self+ in place so that the element at +cnt+ comes first,
- * and returns +self+. If +cnt+ is negative then it rotates in
- * the opposite direction.
+ * 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"]
@@ -1968,11 +2293,13 @@ rb_ary_rotate_bang(int argc, VALUE *argv, VALUE ary)
/*
* call-seq:
- * ary.rotate(cnt=1) -> new_ary
+ * 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.
*
- * Returns new array by rotating +self+ so that the element at
- * +cnt+ in +self+ is the first element of the new array. If +cnt+
- * is negative then it rotates in the opposite direction.
+ * 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"]
@@ -1984,7 +2311,8 @@ rb_ary_rotate_bang(int argc, VALUE *argv, VALUE ary)
static VALUE
rb_ary_rotate_m(int argc, VALUE *argv, VALUE ary)
{
- VALUE rotated, *ptr, *ptr2;
+ VALUE rotated;
+ const VALUE *ptr;
long len, cnt = 1;
switch (argc) {
@@ -1997,11 +2325,10 @@ rb_ary_rotate_m(int argc, VALUE *argv, VALUE ary)
rotated = rb_ary_new2(len);
if (len > 0) {
cnt = rotate_count(cnt, len);
- ptr = RARRAY_PTR(ary);
- ptr2 = RARRAY_PTR(rotated);
+ ptr = RARRAY_CONST_PTR(ary);
len -= cnt;
- MEMCPY(ptr2, ptr + cnt, VALUE, len);
- MEMCPY(ptr2 + len, ptr, VALUE, cnt);
+ ary_memcpy(rotated, 0, len, ptr + cnt);
+ ary_memcpy(rotated, len, cnt, ptr);
}
ARY_SET_LEN(rotated, RARRAY_LEN(ary));
return rotated;
@@ -2019,7 +2346,7 @@ enum {
sort_optimizable_count
};
-#define STRING_P(s) (TYPE(s) == T_STRING && CLASS_OF(s) == rb_cString)
+#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) \
@@ -2069,7 +2396,7 @@ sort_2(const void *ap, const void *bp, void *dummy)
return rb_str_cmp(a, b);
}
- retval = rb_funcall(a, id_cmp, 1, b);
+ retval = rb_funcallv(a, id_cmp, 1, &b);
n = rb_cmpint(retval, a, b);
sort_reentered(data->ary);
@@ -2079,17 +2406,22 @@ sort_2(const void *ap, const void *bp, void *dummy)
/*
* call-seq:
* ary.sort! -> ary
- * ary.sort! {| a,b | block } -> 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.
*
- * Sorts +self+. Comparisons for
- * the sort will be done using the <code><=></code> operator or using
- * an optional code block. The block implements a comparison between
- * <i>a</i> and <i>b</i>, returning -1, 0, or +1. See also
- * <code>Enumerable#sort_by</code>.
+ * 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"]
+ * a.sort! { |x,y| y <=> x } #=> ["e", "d", "c", "b", "a"]
*/
VALUE
@@ -2100,29 +2432,29 @@ rb_ary_sort_bang(VALUE 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(tmp)->klass = 0;
+ RBASIC_CLEAR_CLASS(tmp);
data.ary = tmp;
data.opt_methods = 0;
data.opt_inited = 0;
- ruby_qsort(RARRAY_PTR(tmp), RARRAY_LEN(tmp), sizeof(VALUE),
- rb_block_given_p()?sort_1:sort_2, &data);
-
+ 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)) {
- assert(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);
- MEMCPY(RARRAY_PTR(ary), ARY_EMBED_PTR(tmp), VALUE, ARY_EMBED_LEN(tmp));
+ ary_memcpy(ary, 0, ARY_EMBED_LEN(tmp), ARY_EMBED_PTR(tmp));
ARY_SET_LEN(ary, ARY_EMBED_LEN(tmp));
}
else {
- assert(!ARY_EMBED_P(tmp));
- if (ARY_HEAP_PTR(ary) == ARY_HEAP_PTR(tmp)) {
- assert(!ARY_EMBED_P(ary));
+ if (!ARY_EMBED_P(ary) && ARY_HEAP_PTR(ary) == ARY_HEAP_PTR(tmp)) {
FL_UNSET_SHARED(ary);
- ARY_SET_CAPA(ary, ARY_CAPA(tmp));
+ ARY_SET_CAPA(ary, RARRAY_LEN(tmp));
}
else {
assert(!ARY_SHARED_P(tmp));
@@ -2134,11 +2466,11 @@ rb_ary_sort_bang(VALUE ary)
rb_ary_unshare(ary);
}
else {
- xfree(ARY_HEAP_PTR(ary));
+ ruby_sized_xfree((void *)ARY_HEAP_PTR(ary), ARY_HEAP_SIZE(ary));
}
- ARY_SET_PTR(ary, RARRAY_PTR(tmp));
- ARY_SET_HEAP_LEN(ary, RARRAY_LEN(tmp));
- ARY_SET_CAPA(ary, ARY_CAPA(tmp));
+ 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);
@@ -2147,7 +2479,7 @@ rb_ary_sort_bang(VALUE ary)
FL_SET(tmp, FL_FREEZE);
}
/* tmp will be GC'ed. */
- RBASIC(tmp)->klass = rb_cArray;
+ RBASIC_SET_CLASS_RAW(tmp, rb_cArray); /* rb_cArray must be marked */
}
return ary;
}
@@ -2155,17 +2487,23 @@ rb_ary_sort_bang(VALUE ary)
/*
* call-seq:
* ary.sort -> new_ary
- * ary.sort {| a,b | block } -> 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.
*
- * 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 implements a comparison between
- * <i>a</i> and <i>b</i>, returning -1, 0, or +1. See also
- * <code>Enumerable#sort_by</code>.
+ * 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"]
+ * a.sort { |x,y| y <=> x } #=> ["e", "d", "c", "b", "a"]
*/
VALUE
@@ -2176,6 +2514,107 @@ rb_ary_sort(VALUE 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)
@@ -2185,13 +2624,13 @@ sort_by_i(VALUE i)
/*
* call-seq:
- * ary.sort_by! {| obj | block } -> ary
- * ary.sort_by! -> an_enumerator
+ * 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.
+ * If no block is given, an Enumerator is returned instead.
*
*/
@@ -2200,7 +2639,7 @@ rb_ary_sort_by_bang(VALUE ary)
{
VALUE sorted;
- RETURN_ENUMERATOR(ary, 0, 0);
+ 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);
@@ -2210,20 +2649,22 @@ rb_ary_sort_by_bang(VALUE ary)
/*
* call-seq:
- * ary.collect {|item| block } -> new_ary
- * ary.map {|item| block } -> new_ary
- * ary.collect -> an_enumerator
- * ary.map -> an_enumerator
+ * 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.
*
- * Invokes <i>block</i> once for each element of +self+. Creates a
- * new array containing the values returned by the block.
- * See also <code>Enumerable#collect</code>.
+ * See also Enumerable#collect.
*
- * If no block is given, an enumerator is returned instead.
+ * If no block is given, an Enumerator is returned instead.
*
* a = [ "a", "b", "c", "d" ]
- * a.collect {|x| x + "!" } #=> ["a!", "b!", "c!", "d!"]
- * a #=> ["a", "b", "c", "d"]
+ * a.map { |x| x + "!" } #=> ["a!", "b!", "c!", "d!"]
+ * a #=> ["a", "b", "c", "d"]
*/
static VALUE
@@ -2232,10 +2673,10 @@ rb_ary_collect(VALUE ary)
long i;
VALUE collect;
- RETURN_ENUMERATOR(ary, 0, 0);
+ 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_PTR(ary)[i]));
+ rb_ary_push(collect, rb_yield(RARRAY_AREF(ary, i)));
}
return collect;
}
@@ -2245,18 +2686,19 @@ rb_ary_collect(VALUE ary)
* call-seq:
* ary.collect! {|item| block } -> ary
* ary.map! {|item| block } -> ary
- * ary.collect -> an_enumerator
- * ary.map -> an_enumerator
+ * 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.
*
- * Invokes the block once for each element of +self+, replacing the
- * element with the value returned by _block_.
- * See also <code>Enumerable#collect</code>.
+ * See also Enumerable#collect.
*
- * If no block is given, an enumerator is returned instead.
+ * If no block is given, an Enumerator is returned instead.
*
* a = [ "a", "b", "c", "d" ]
- * a.collect! {|x| x + "!" }
- * a #=> [ "a!", "b!", "c!", "d!" ]
+ * a.map! {|x| x + "!" }
+ * a #=> [ "a!", "b!", "c!", "d!" ]
*/
static VALUE
@@ -2264,10 +2706,10 @@ rb_ary_collect_bang(VALUE ary)
{
long i;
- RETURN_ENUMERATOR(ary, 0, 0);
+ 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_PTR(ary)[i]));
+ rb_ary_store(ary, i, rb_yield(RARRAY_AREF(ary, i)));
}
return ary;
}
@@ -2284,15 +2726,13 @@ rb_get_values_at(VALUE obj, long olen, int argc, VALUE *argv, VALUE (*func) (VAL
continue;
}
/* check if idx is Range */
- switch (rb_range_beg_len(argv[i], &beg, &len, olen, 0)) {
- case Qfalse:
- break;
- case Qnil:
- continue;
- default:
- for (j=0; j<len; j++) {
- rb_ary_push(result, (*func)(obj, j+beg));
+ 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])));
@@ -2302,18 +2742,20 @@ rb_get_values_at(VALUE obj, long olen, int argc, VALUE *argv, VALUE (*func) (VAL
/*
* call-seq:
- * ary.values_at(selector,... ) -> new_ary
+ * ary.values_at(selector, ...) -> new_ary
+ *
+ * Returns an array containing the elements in +self+ corresponding to the
+ * given +selector+(s).
*
- * 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 <code>Array#select</code>.
+ * 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)
- * a.values_at(1, 3, 5, 7)
- * a.values_at(-1, -3, -5, -7)
- * a.values_at(1..3, 2...5)
+ * 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
@@ -2325,17 +2767,20 @@ rb_ary_values_at(int argc, VALUE *argv, VALUE ary)
/*
* call-seq:
- * ary.select {|item| block } -> new_ary
- * ary.select -> an_enumerator
+ * 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.
*
- * Invokes the block passing in successive elements from +self+,
- * returning an array containing those elements for which the block
- * returns a true value (equivalent to <code>Enumerable#select</code>).
+ * If no block is given, an Enumerator is returned instead.
*
- * 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"]
+ * a.select { |v| v =~ /[aeiou]/ } #=> ["a", "e"]
+ *
+ * See also Enumerable#select.
*/
static VALUE
@@ -2344,10 +2789,10 @@ rb_ary_select(VALUE ary)
VALUE result;
long i;
- RETURN_ENUMERATOR(ary, 0, 0);
+ 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_PTR(ary)[i]))) {
+ if (RTEST(rb_yield(RARRAY_AREF(ary, i)))) {
rb_ary_push(result, rb_ary_elt(ary, i));
}
}
@@ -2356,16 +2801,17 @@ rb_ary_select(VALUE ary)
/*
* call-seq:
- * ary.select! {|item| block } -> ary or nil
- * ary.select! -> an_enumerator
+ * 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+.
*
- * Invokes the block passing in successive elements from
- * +self+, deleting elements for which the block returns a
- * false value. It returns +self+ if changes were made,
- * otherwise it returns <code>nil</code>.
- * See also <code>Array#keep_if</code>
+ * See also Array#keep_if
*
- * If no block is given, an enumerator is returned instead.
+ * If no block is given, an Enumerator is returned instead.
*
*/
@@ -2374,10 +2820,10 @@ rb_ary_select_bang(VALUE ary)
{
long i1, i2;
- RETURN_ENUMERATOR(ary, 0, 0);
+ 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_PTR(ary)[i1];
+ VALUE v = RARRAY_AREF(ary, i1);
if (!RTEST(rb_yield(v))) continue;
if (i1 != i2) {
rb_ary_store(ary, i2, v);
@@ -2385,46 +2831,61 @@ rb_ary_select_bang(VALUE ary)
i2++;
}
- if (RARRAY_LEN(ary) == i2) return Qnil;
- if (i2 < RARRAY_LEN(ary))
+ 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 -> an_enumerator
+ * ary.keep_if { |item| block } -> ary
+ * ary.keep_if -> Enumerator
+ *
+ * Deletes every element of +self+ for which the given block evaluates to
+ * +false+.
*
- * Deletes every element of +self+ for which <i>block</i> evaluates
- * to false.
- * See also <code>Array#select!</code>
+ * See also Array#select!
*
- * If no block is given, an enumerator is returned instead.
+ * 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"]
+ * a.keep_if { |v| v =~ /[aeiou]/ } #=> ["a", "e"]
*/
static VALUE
rb_ary_keep_if(VALUE ary)
{
- RETURN_ENUMERATOR(ary, 0, 0);
+ 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) -> obj or nil
- * ary.delete(obj) { block } -> obj or nil
+ * 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.
*
- * Deletes items from +self+ that are equal to <i>obj</i>.
- * If any items are found, returns <i>obj</i>. If
- * the item is not found, returns <code>nil</code>. If the optional
- * code block is given, returns the result of <i>block</i> if the item
- * is not found. (To remove <code>nil</code> elements and
- * get an informative return value, use #compact!)
+ * 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"
@@ -2440,7 +2901,7 @@ rb_ary_delete(VALUE ary, VALUE item)
long i1, i2;
for (i1 = i2 = 0; i1 < RARRAY_LEN(ary); i1++) {
- VALUE e = RARRAY_PTR(ary)[i1];
+ VALUE e = RARRAY_AREF(ary, i1);
if (rb_equal(e, item)) {
v = e;
@@ -2458,16 +2919,32 @@ rb_ary_delete(VALUE ary, VALUE item)
return Qnil;
}
- rb_ary_modify(ary);
- if (RARRAY_LEN(ary) > i2) {
- ARY_SET_LEN(ary, i2);
- if (i2 * 2 < ARY_CAPA(ary) &&
- ARY_CAPA(ary) > ARY_DEFAULT_SIZE) {
- ary_resize_capa(ary, i2*2);
+ ary_resize_smaller(ary, i2);
+
+ return v;
+}
+
+void
+rb_ary_delete_same(VALUE ary, VALUE item)
+{
+ long i1, i2;
+
+ for (i1 = i2 = 0; i1 < RARRAY_LEN(ary); i1++) {
+ VALUE e = RARRAY_AREF(ary, i1);
+
+ if (e == item) {
+ continue;
}
+ if (i1 != i2) {
+ rb_ary_store(ary, i2, e);
+ }
+ i2++;
+ }
+ if (RARRAY_LEN(ary) == i2) {
+ return;
}
- return v;
+ ary_resize_smaller(ary, i2);
}
VALUE
@@ -2483,9 +2960,10 @@ rb_ary_delete_at(VALUE ary, long pos)
}
rb_ary_modify(ary);
- del = RARRAY_PTR(ary)[pos];
- MEMMOVE(RARRAY_PTR(ary)+pos, RARRAY_PTR(ary)+pos+1, VALUE,
- RARRAY_LEN(ary)-pos-1);
+ 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;
@@ -2495,11 +2973,12 @@ rb_ary_delete_at(VALUE ary, long pos)
* call-seq:
* ary.delete_at(index) -> obj or nil
*
- * Deletes the element at the specified index, returning that element,
- * or <code>nil</code> if the index is out of range. See also
- * <code>Array#slice!</code>.
+ * Deletes the element at the specified +index+, returning that element, or
+ * +nil+ if the +index+ is out of range.
*
- * a = %w( ant bat cat dog )
+ * See also Array#slice!
+ *
+ * a = ["ant", "bat", "cat", "dog"]
* a.delete_at(2) #=> "cat"
* a #=> ["ant", "bat", "dog"]
* a.delete_at(99) #=> nil
@@ -2517,9 +2996,11 @@ rb_ary_delete_at_m(VALUE ary, VALUE pos)
* ary.slice!(start, length) -> new_ary or nil
* ary.slice!(range) -> new_ary or nil
*
- * Deletes the element(s) given by an index (optionally with a length)
- * or by a range. Returns the deleted object (or objects), or
- * <code>nil</code> if the index is out of range.
+ * 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"
@@ -2552,8 +3033,8 @@ rb_ary_slice_bang(int argc, VALUE *argv, VALUE ary)
len = orig_len - pos;
}
if (len == 0) return rb_ary_new2(0);
- arg2 = rb_ary_new4(len, RARRAY_PTR(ary)+pos);
- RBASIC(arg2)->klass = rb_obj_class(ary);
+ 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;
}
@@ -2587,7 +3068,7 @@ ary_reject(VALUE orig, VALUE result)
long i;
for (i = 0; i < RARRAY_LEN(orig); i++) {
- VALUE v = RARRAY_PTR(orig)[i];
+ VALUE v = RARRAY_AREF(orig, i);
if (!RTEST(rb_yield(v))) {
rb_ary_push_1(result, v);
}
@@ -2603,7 +3084,7 @@ ary_reject_bang(VALUE ary)
rb_ary_modify_check(ary);
for (i = 0; i < RARRAY_LEN(ary); ) {
- VALUE v = RARRAY_PTR(ary)[i];
+ VALUE v = RARRAY_AREF(ary, i);
if (RTEST(rb_yield(v))) {
rb_ary_delete_at(ary, i);
result = ary;
@@ -2617,38 +3098,38 @@ ary_reject_bang(VALUE ary)
/*
* call-seq:
- * ary.reject! {|item| block } -> ary or nil
- * ary.reject! -> an_enumerator
+ * ary.reject! { |item| block } -> ary or nil
+ * ary.reject! -> Enumerator
*
- * Equivalent to <code>Array#delete_if</code>, deleting elements from
- * +self+ for which the block evaluates to true, but returns
- * <code>nil</code> if no changes were made.
- * The array is changed instantly every time the block is called and
- * not after the iteration is over.
- * See also <code>Enumerable#reject</code> and <code>Array#delete_if</code>.
+ * Equivalent to Array#delete_if, deleting elements from +self+ for which the
+ * block evaluates to +true+, but returns +nil+ if no changes were made.
*
- * If no block is given, an enumerator is returned instead.
+ * 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_ENUMERATOR(ary, 0, 0);
+ RETURN_SIZED_ENUMERATOR(ary, 0, 0, ary_enum_length);
return ary_reject_bang(ary);
}
/*
* call-seq:
- * ary.reject {|item| block } -> new_ary
- * ary.reject -> an_enumerator
+ * ary.reject {|item| block } -> new_ary
+ * ary.reject -> Enumerator
*
- * Returns a new array containing the items in +self+
- * for which the block is not true.
- * See also <code>Array#delete_if</code>
+ * Returns a new array containing the items in +self+ for which the given
+ * block is not +true+.
*
- * If no block is given, an enumerator is returned instead.
+ * See also Array#delete_if
*
+ * If no block is given, an Enumerator is returned instead.
*/
static VALUE
@@ -2656,7 +3137,7 @@ rb_ary_reject(VALUE ary)
{
VALUE rejected_ary;
- RETURN_ENUMERATOR(ary, 0, 0);
+ RETURN_SIZED_ENUMERATOR(ary, 0, 0, ary_enum_length);
rejected_ary = rb_ary_new();
ary_reject(ary, rejected_ary);
return rejected_ary;
@@ -2664,25 +3145,26 @@ rb_ary_reject(VALUE ary)
/*
* call-seq:
- * ary.delete_if {|item| block } -> ary
- * ary.delete_if -> an_enumerator
+ * ary.delete_if { |item| block } -> ary
+ * ary.delete_if -> Enumerator
*
- * Deletes every element of +self+ for which <i>block</i> evaluates
- * to true.
- * The array is changed instantly every time the block is called and
- * not after the iteration is over.
- * See also <code>Array#reject!</code>
+ * Deletes every element of +self+ for which block evaluates to +true+.
*
- * If no block is given, an enumerator is returned instead.
+ * The array is changed instantly every time the block is called, not after
+ * the iteration is over.
*
- * a = [ "a", "b", "c" ]
- * a.delete_if {|x| x >= "b" } #=> ["a"]
+ * 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_ENUMERATOR(ary, 0, 0);
+ RETURN_SIZED_ENUMERATOR(ary, 0, 0, ary_enum_length);
ary_reject_bang(ary);
return ary;
}
@@ -2705,61 +3187,88 @@ take_items(VALUE obj, long n)
if (!NIL_P(result)) return rb_ary_subseq(result, 0, n);
result = rb_ary_new2(n);
args[0] = result; args[1] = (VALUE)n;
- rb_block_call(obj, rb_intern("each"), 0, 0, take_i, (VALUE)args);
+ 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>self.size</code> <em>n</em>-element
- * arrays, where <em>n</em> is one more that the count of arguments. If
- * the size of any argument is less than <code>enumObj.size</code>,
- * <code>nil</code> values are supplied. If a block is given, it is
- * invoked for each output array, otherwise an array of arrays is
- * returned.
+ * 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]]
+ * [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;
+ long len = RARRAY_LEN(ary);
VALUE result = Qnil;
- len = RARRAY_LEN(ary);
for (i=0; i<argc; i++) {
argv[i] = take_items(argv[i], len);
}
- if (!rb_block_given_p()) {
- result = rb_ary_new2(len);
- }
- for (i=0; i<RARRAY_LEN(ary); i++) {
- VALUE tmp = rb_ary_new2(argc+1);
+ if (rb_block_given_p()) {
+ int arity = rb_block_arity();
- rb_ary_push(tmp, rb_ary_elt(ary, i));
- for (j=0; j<argc; j++) {
- rb_ary_push(tmp, rb_ary_elt(argv[j], i));
- }
- if (NIL_P(result)) {
- rb_yield(tmp);
+ 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 {
+ 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);
+ }
+ }
+ }
+ 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;
}
@@ -2767,11 +3276,13 @@ rb_ary_zip(int argc, VALUE *argv, VALUE ary)
* call-seq:
* ary.transpose -> new_ary
*
- * Assumes that +self+ is an array of arrays and transposes the
- * rows and columns.
+ * 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
@@ -2805,9 +3316,10 @@ rb_ary_transpose(VALUE ary)
/*
* call-seq:
* ary.replace(other_ary) -> ary
+ * ary.initialize_copy(other_ary) -> ary
*
- * Replaces the contents of +self+ with the contents of
- * <i>other_ary</i>, truncating or expanding if necessary.
+ * 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"]
@@ -2822,19 +3334,17 @@ rb_ary_replace(VALUE copy, VALUE orig)
if (copy == orig) return copy;
if (RARRAY_LEN(orig) <= RARRAY_EMBED_LEN_MAX) {
- VALUE *ptr;
VALUE shared = 0;
if (ARY_OWNS_HEAP_P(copy)) {
- xfree(RARRAY_PTR(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);
- ptr = RARRAY_PTR(orig);
- MEMCPY(RARRAY_PTR(copy), ptr, VALUE, RARRAY_LEN(orig));
+ ary_memcpy(copy, 0, RARRAY_LEN(orig), RARRAY_CONST_PTR(orig));
if (shared) {
rb_ary_decrement_share(shared);
}
@@ -2843,13 +3353,13 @@ rb_ary_replace(VALUE copy, VALUE orig)
else {
VALUE shared = ary_make_shared(orig);
if (ARY_OWNS_HEAP_P(copy)) {
- xfree(RARRAY_PTR(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_PTR(orig));
+ ARY_SET_PTR(copy, RARRAY_CONST_PTR(orig));
ARY_SET_LEN(copy, RARRAY_LEN(orig));
rb_ary_set_shared(copy, shared);
}
@@ -2885,27 +3395,32 @@ rb_ary_clear(VALUE ary)
/*
* 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
+ * 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 <i>obj</i>. A <i>start</i> of
- * <code>nil</code> is equivalent to zero. A <i>length</i> of
- * <code>nil</code> is equivalent to <i>self.length</i>. The last three
- * forms fill the array with the value of the block. The block is
- * passed the absolute index of each element to be filled.
- * Negative values of <i>start</i> count from the end of the array.
+ * 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]
+ * a.fill { |i| i*i } #=> [0, 1, 4, 9]
+ * a.fill(-2) { |i| i*i*i } #=> [0, 1, 8, 27]
*/
static VALUE
@@ -2913,7 +3428,6 @@ rb_ary_fill(int argc, VALUE *argv, VALUE ary)
{
VALUE item, arg1, arg2;
long beg = 0, end = 0, len = 0;
- VALUE *p, *pend;
int block_p = FALSE;
if (rb_block_given_p()) {
@@ -2955,7 +3469,7 @@ rb_ary_fill(int argc, VALUE *argv, VALUE ary)
if (end >= ARY_CAPA(ary)) {
ary_resize_capa(ary, end);
}
- rb_mem_clear(RARRAY_PTR(ary) + RARRAY_LEN(ary), end - RARRAY_LEN(ary));
+ ary_mem_clear(ary, RARRAY_LEN(ary), end - RARRAY_LEN(ary));
ARY_SET_LEN(ary, end);
}
@@ -2966,15 +3480,11 @@ rb_ary_fill(int argc, VALUE *argv, VALUE ary)
for (i=beg; i<end; i++) {
v = rb_yield(LONG2NUM(i));
if (i>=RARRAY_LEN(ary)) break;
- RARRAY_PTR(ary)[i] = v;
+ RARRAY_ASET(ary, i, v);
}
}
else {
- p = RARRAY_PTR(ary) + beg;
- pend = p + len;
- while (p < pend) {
- *p++ = item;
- }
+ ary_memfill(ary, beg, len, item);
}
return ary;
}
@@ -2983,23 +3493,32 @@ rb_ary_fill(int argc, VALUE *argv, VALUE ary)
* call-seq:
* ary + other_ary -> new_ary
*
- * Concatenation---Returns a new array built by concatenating the
+ * 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
rb_ary_plus(VALUE x, VALUE y)
{
VALUE z;
- long len;
+ long len, xlen, ylen;
y = to_ary(y);
- len = RARRAY_LEN(x) + RARRAY_LEN(y);
+ xlen = RARRAY_LEN(x);
+ ylen = RARRAY_LEN(y);
+ len = xlen + ylen;
z = rb_ary_new2(len);
- MEMCPY(RARRAY_PTR(z), RARRAY_PTR(x), VALUE, RARRAY_LEN(x));
- MEMCPY(RARRAY_PTR(z) + RARRAY_LEN(x), RARRAY_PTR(y), VALUE, RARRAY_LEN(y));
+
+ 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;
}
@@ -3008,12 +3527,16 @@ rb_ary_plus(VALUE x, VALUE y)
* call-seq:
* ary.concat(other_ary) -> ary
*
- * Appends the elements of <i>other_ary</i> to +self+.
+ * 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#+.
*/
-
VALUE
rb_ary_concat(VALUE x, VALUE y)
{
@@ -3031,9 +3554,11 @@ rb_ary_concat(VALUE x, VALUE y)
* ary * int -> new_ary
* ary * str -> new_string
*
- * Repetition---With a String argument, equivalent to
- * self.join(str). Otherwise, returns a new array
- * built by concatenating the _int_ copies of +self+.
+ * 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 ]
@@ -3044,7 +3569,8 @@ rb_ary_concat(VALUE x, VALUE y)
static VALUE
rb_ary_times(VALUE ary, VALUE times)
{
- VALUE ary2, tmp, *ptr, *ptr2;
+ VALUE ary2, tmp;
+ const VALUE *ptr;
long t, len;
tmp = rb_check_string_type(times);
@@ -3068,17 +3594,16 @@ rb_ary_times(VALUE ary, VALUE times)
ary2 = ary_new(rb_obj_class(ary), len);
ARY_SET_LEN(ary2, len);
- ptr = RARRAY_PTR(ary);
- ptr2 = RARRAY_PTR(ary2);
+ ptr = RARRAY_CONST_PTR(ary);
t = RARRAY_LEN(ary);
if (0 < t) {
- MEMCPY(ptr2, ptr, VALUE, t);
- while (t <= len/2) {
- MEMCPY(ptr2+t, ptr2, VALUE, 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) {
- MEMCPY(ptr2+t, ptr2, VALUE, len-t);
+ ary_memcpy(ary2, t, len-t, RARRAY_CONST_PTR(ary2));
}
}
out:
@@ -3091,13 +3616,13 @@ rb_ary_times(VALUE ary, VALUE times)
* 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 obj.==.
- * Returns the first contained array that matches (that
- * is, the first associated array),
- * or +nil+ if no match is found.
- * See also <code>Array#rassoc</code>.
+ * 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" ]
@@ -3114,9 +3639,9 @@ rb_ary_assoc(VALUE ary, VALUE key)
VALUE v;
for (i = 0; i < RARRAY_LEN(ary); ++i) {
- v = rb_check_array_type(RARRAY_PTR(ary)[i]);
+ v = rb_check_array_type(RARRAY_AREF(ary, i));
if (!NIL_P(v) && RARRAY_LEN(v) > 0 &&
- rb_equal(RARRAY_PTR(v)[0], key))
+ rb_equal(RARRAY_AREF(v, 0), key))
return v;
}
return Qnil;
@@ -3126,10 +3651,14 @@ rb_ary_assoc(VALUE ary, VALUE key)
* 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>==</code>. Returns the first contained array that matches. See
- * also <code>Array#assoc</code>.
+ * 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"]
@@ -3143,10 +3672,10 @@ rb_ary_rassoc(VALUE ary, VALUE value)
VALUE v;
for (i = 0; i < RARRAY_LEN(ary); ++i) {
- v = RARRAY_PTR(ary)[i];
- if (TYPE(v) == T_ARRAY &&
+ v = RARRAY_AREF(ary, i);
+ if (RB_TYPE_P(v, T_ARRAY) &&
RARRAY_LEN(v) > 1 &&
- rb_equal(RARRAY_PTR(v)[1], value))
+ rb_equal(RARRAY_AREF(v, 1), value))
return v;
}
return Qnil;
@@ -3155,12 +3684,32 @@ rb_ary_rassoc(VALUE ary, VALUE value)
static VALUE
recursive_equal(VALUE ary1, VALUE ary2, int recur)
{
- long i;
+ long i, len1;
+ const VALUE *p1, *p2;
if (recur) return Qtrue; /* Subtle! */
- for (i=0; i<RARRAY_LEN(ary1); i++) {
- if (!rb_equal(rb_ary_elt(ary1, i), rb_ary_elt(ary2, i)))
- return Qfalse;
+
+ 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;
}
@@ -3169,9 +3718,9 @@ recursive_equal(VALUE ary1, VALUE ary2, int recur)
* 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 the other array.
+ * 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
@@ -3183,13 +3732,14 @@ static VALUE
rb_ary_equal(VALUE ary1, VALUE ary2)
{
if (ary1 == ary2) return Qtrue;
- if (TYPE(ary2) != T_ARRAY) {
+ if (!RB_TYPE_P(ary2, T_ARRAY)) {
if (!rb_respond_to(ary2, rb_intern("to_ary"))) {
return Qfalse;
}
return rb_equal(ary2, ary1);
}
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);
}
@@ -3210,16 +3760,17 @@ recursive_eql(VALUE ary1, VALUE ary2, int recur)
* call-seq:
* ary.eql?(other) -> true or false
*
- * Returns <code>true</code> if +self+ and _other_ are the same object,
- * or are both arrays with the same content.
+ * Returns +true+ if +self+ and +other+ are the same object,
+ * or are both arrays with the same content (according to Object#eql?).
*/
static VALUE
rb_ary_eql(VALUE ary1, VALUE ary2)
{
if (ary1 == ary2) return Qtrue;
- if (TYPE(ary2) != T_ARRAY) return Qfalse;
+ 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);
}
@@ -3236,7 +3787,7 @@ recursive_hash(VALUE ary, VALUE dummy, int recur)
}
else {
for (i=0; i<RARRAY_LEN(ary); i++) {
- n = rb_hash(RARRAY_PTR(ary)[i]);
+ n = rb_hash(RARRAY_AREF(ary, i));
h = rb_hash_uint(h, NUM2LONG(n));
}
}
@@ -3248,8 +3799,10 @@ recursive_hash(VALUE ary, VALUE dummy, int recur)
* 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 <code>eql?</code>).
+ * 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
@@ -3260,11 +3813,10 @@ rb_ary_hash(VALUE ary)
/*
* call-seq:
- * ary.include?(obj) -> true or false
+ * ary.include?(object) -> true or false
*
- * Returns <code>true</code> if the given object is present in
- * +self+ (that is, if any object <code>==</code> <i>anObject</i>),
- * <code>false</code> otherwise.
+ * 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
@@ -3277,7 +3829,7 @@ rb_ary_includes(VALUE ary, VALUE item)
long i;
for (i=0; i<RARRAY_LEN(ary); i++) {
- if (rb_equal(RARRAY_PTR(ary)[i], item)) {
+ if (rb_equal(RARRAY_AREF(ary, i), item)) {
return Qtrue;
}
}
@@ -3296,7 +3848,8 @@ recursive_cmp(VALUE ary1, VALUE ary2, int recur)
len = RARRAY_LEN(ary2);
}
for (i=0; i<len; i++) {
- VALUE v = rb_funcall(rb_ary_elt(ary1, i), id_cmp, 1, rb_ary_elt(ary2, 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;
}
@@ -3308,16 +3861,21 @@ recursive_cmp(VALUE ary1, VALUE ary2, int recur)
* call-seq:
* ary <=> other_ary -> -1, 0, +1 or nil
*
- * Comparison---Returns an integer (-1, 0,
- * or +1) if this array is less than, equal to, or greater than
- * <i>other_ary</i>. Each object in each array is compared
- * (using <=>). If any value isn't
- * equal, then that inequality is the return value. If all the
- * values found are equal, then the return is based on a
- * comparison of the array lengths. Thus, two arrays are
- * ``equal'' according to <code>Array#<=></code> 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.
+ * 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
@@ -3347,7 +3905,7 @@ ary_add_hash(VALUE hash, VALUE ary)
long i;
for (i=0; i<RARRAY_LEN(ary); i++) {
- rb_hash_aset(hash, RARRAY_PTR(ary)[i], Qtrue);
+ rb_hash_aset(hash, RARRAY_AREF(ary, i), Qtrue);
}
return hash;
}
@@ -3357,7 +3915,7 @@ ary_tmp_hash_new(void)
{
VALUE hash = rb_hash_new();
- RBASIC(hash)->klass = 0;
+ RBASIC_CLEAR_CLASS(hash);
return hash;
}
@@ -3403,12 +3961,17 @@ ary_recycle_hash(VALUE hash)
* 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
- * <i>other_ary</i>. (If you need set-like behavior, see the
- * library class Set.)
+ * 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
@@ -3422,7 +3985,7 @@ rb_ary_diff(VALUE ary1, VALUE ary2)
ary3 = rb_ary_new();
for (i=0; i<RARRAY_LEN(ary1); i++) {
- if (st_lookup(RHASH_TBL(hash), RARRAY_PTR(ary1)[i], 0)) continue;
+ 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);
@@ -3433,10 +3996,16 @@ rb_ary_diff(VALUE ary1, VALUE ary2)
* call-seq:
* ary & other_ary -> new_ary
*
- * Set Intersection---Returns a new array
- * containing elements common to the two arrays, with no duplicates.
+ * 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' ]
*
- * [ 1, 1, 3, 5 ] & [ 1, 2, 3 ] #=> [ 1, 3 ]
+ * See also Array#uniq.
*/
@@ -3444,20 +4013,20 @@ 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_new2(RARRAY_LEN(ary1) < RARRAY_LEN(ary2) ?
- RARRAY_LEN(ary1) : RARRAY_LEN(ary2));
+ ary3 = rb_ary_new();
+ if (RARRAY_LEN(ary2) == 0) return ary3;
hash = ary_make_hash(ary2);
-
- if (RHASH_EMPTY_P(hash))
- return ary3;
+ table = rb_hash_tbl_raw(hash);
for (i=0; i<RARRAY_LEN(ary1); i++) {
- vv = (st_data_t)(v = rb_ary_elt(ary1, i));
- if (st_delete(RHASH_TBL(hash), &vv, 0)) {
+ v = RARRAY_AREF(ary1, i);
+ vv = (st_data_t)v;
+ if (st_delete(table, &vv, 0)) {
rb_ary_push(ary3, v);
}
}
@@ -3470,41 +4039,36 @@ rb_ary_and(VALUE ary1, VALUE ary2)
* call-seq:
* ary | other_ary -> new_ary
*
- * Set Union---Returns a new array by joining this array with
- * <i>other_ary</i>, removing duplicates.
+ * Set Union --- Returns a new array by joining +ary+ with +other_ary+,
+ * excluding any duplicates and preserving the order from the original array.
*
- * [ "a", "b", "c" ] | [ "c", "d", "a" ]
- * #=> [ "a", "b", "c", "d" ]
+ * 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
rb_ary_or(VALUE ary1, VALUE ary2)
{
- VALUE hash, ary3, v;
- st_data_t vv;
- long i;
+ VALUE hash, ary3;
ary2 = to_ary(ary2);
- ary3 = rb_ary_new2(RARRAY_LEN(ary1)+RARRAY_LEN(ary2));
hash = ary_add_hash(ary_make_hash(ary1), ary2);
-
- for (i=0; i<RARRAY_LEN(ary1); i++) {
- vv = (st_data_t)(v = rb_ary_elt(ary1, i));
- if (st_delete(RHASH_TBL(hash), &vv, 0)) {
- rb_ary_push(ary3, v);
- }
- }
- for (i=0; i<RARRAY_LEN(ary2); i++) {
- vv = (st_data_t)(v = rb_ary_elt(ary2, i));
- if (st_delete(RHASH_TBL(hash), &vv, 0)) {
- rb_ary_push(ary3, v);
- }
- }
+ 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);
@@ -3516,10 +4080,14 @@ push_value(st_data_t key, st_data_t val, st_data_t ary)
* 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.
- * Returns <code>nil</code> if no changes are made (that is, no
- * duplicates are found).
+ * 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"]
@@ -3535,37 +4103,41 @@ push_value(st_data_t key, st_data_t val, st_data_t ary)
static VALUE
rb_ary_uniq_bang(VALUE ary)
{
- VALUE hash, v;
- long i, j;
+ 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);
- if (RARRAY_LEN(ary) == (i = RHASH_SIZE(hash))) {
+ 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, i);
- st_foreach(RHASH_TBL(hash), push_value, ary);
+ ary_resize_capa(ary, hash_size);
+ st_foreach(rb_hash_tbl_raw(hash), push_value, ary);
}
else {
hash = ary_make_hash(ary);
- if (RARRAY_LEN(ary) == (long)RHASH_SIZE(hash)) {
+ hash_size = RHASH_SIZE(hash);
+ if (RARRAY_LEN(ary) == hash_size) {
return Qnil;
}
- for (i=j=0; i<RARRAY_LEN(ary); i++) {
- st_data_t vv = (st_data_t)(v = rb_ary_elt(ary, i));
- if (st_delete(RHASH_TBL(hash), &vv, 0)) {
- rb_ary_store(ary, j++, v);
- }
+ 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_SET_LEN(ary, j);
+ ary_resize_capa(ary, hash_size);
+ st_foreach(rb_hash_tbl_raw(hash), push_key, ary);
}
ary_recycle_hash(hash);
@@ -3577,8 +4149,11 @@ rb_ary_uniq_bang(VALUE ary)
* 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.
+ * 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"]
@@ -3591,26 +4166,19 @@ rb_ary_uniq_bang(VALUE ary)
static VALUE
rb_ary_uniq(VALUE ary)
{
- VALUE hash, uniq, v;
- long i;
+ VALUE hash, uniq;
if (RARRAY_LEN(ary) <= 1)
return rb_ary_dup(ary);
if (rb_block_given_p()) {
hash = ary_make_hash_by(ary);
- uniq = ary_new(rb_obj_class(ary), RHASH_SIZE(hash));
- st_foreach(RHASH_TBL(hash), push_value, uniq);
+ uniq = rb_hash_values(hash);
}
else {
hash = ary_make_hash(ary);
- uniq = ary_new(rb_obj_class(ary), RHASH_SIZE(hash));
- for (i=0; i<RARRAY_LEN(ary); i++) {
- st_data_t vv = (st_data_t)(v = rb_ary_elt(ary, i));
- if (st_delete(RHASH_TBL(hash), &vv, 0)) {
- rb_ary_push(uniq, v);
- }
- }
+ uniq = rb_hash_keys(hash);
}
+ RBASIC_SET_CLASS(uniq, rb_obj_class(ary));
ary_recycle_hash(hash);
return uniq;
@@ -3621,8 +4189,8 @@ rb_ary_uniq(VALUE ary)
* ary.compact! -> ary or nil
*
* Removes +nil+ elements from the array.
- * Returns +nil+ if no changes were made, otherwise returns
- * <i>ary</i>.
+ *
+ * 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
@@ -3635,21 +4203,18 @@ rb_ary_compact_bang(VALUE ary)
long n;
rb_ary_modify(ary);
- p = t = RARRAY_PTR(ary);
+ p = t = (VALUE *)RARRAY_CONST_PTR(ary); /* WB: no new reference */
end = p + RARRAY_LEN(ary);
while (t < end) {
if (NIL_P(*t)) t++;
else *p++ = *t++;
}
- n = p - RARRAY_PTR(ary);
+ n = p - RARRAY_CONST_PTR(ary);
if (RARRAY_LEN(ary) == n) {
return Qnil;
}
- ARY_SET_LEN(ary, n);
- if (n * 2 < ARY_CAPA(ary) && ARY_DEFAULT_SIZE * 2 < ARY_CAPA(ary)) {
- ary_resize_capa(ary, n * 2);
- }
+ ary_resize_smaller(ary, n);
return ary;
}
@@ -3674,45 +4239,50 @@ rb_ary_compact(VALUE ary)
/*
* call-seq:
- * ary.count -> int
- * ary.count(obj) -> int
+ * 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 equals to <i>obj</i>. If a block is
- * given, counts the number of elements yielding a true value.
+ * 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
+ * ary.count #=> 4
+ * ary.count(2) #=> 2
+ * ary.count { |x| x%2 == 0 } #=> 3
*
*/
static VALUE
rb_ary_count(int argc, VALUE *argv, VALUE ary)
{
- long n = 0;
+ long i, n = 0;
if (argc == 0) {
- VALUE *p, *pend;
+ VALUE v;
if (!rb_block_given_p())
return LONG2NUM(RARRAY_LEN(ary));
- for (p = RARRAY_PTR(ary), pend = p + RARRAY_LEN(ary); p < pend; p++) {
- if (RTEST(rb_yield(*p))) n++;
+ for (i = 0; i < RARRAY_LEN(ary); i++) {
+ v = RARRAY_AREF(ary, i);
+ if (RTEST(rb_yield(v))) n++;
}
}
else {
- VALUE obj, *p, *pend;
+ VALUE obj;
rb_scan_args(argc, argv, "1", &obj);
if (rb_block_given_p()) {
rb_warn("given block not used");
}
- for (p = RARRAY_PTR(ary), pend = p + RARRAY_LEN(ary); p < pend; p++) {
- if (rb_equal(*p, obj)) n++;
+ for (i = 0; i < RARRAY_LEN(ary); i++) {
+ if (rb_equal(RARRAY_AREF(ary, i), obj)) n++;
}
}
@@ -3735,7 +4305,7 @@ flatten(VALUE ary, int level, int *modified)
while (1) {
while (i < RARRAY_LEN(ary)) {
- elt = RARRAY_PTR(ary)[i++];
+ elt = RARRAY_AREF(ary, i++);
tmp = rb_check_array_type(elt);
if (RBASIC(result)->klass) {
rb_raise(rb_eRuntimeError, "flatten reentered");
@@ -3769,19 +4339,21 @@ flatten(VALUE ary, int level, int *modified)
st_free_table(memo);
- RBASIC(result)->klass = rb_class_of(ary);
+ RBASIC_SET_CLASS(result, rb_class_of(ary));
return result;
}
/*
* call-seq:
* ary.flatten! -> ary or nil
- * ary.flatten!(level) -> array or nil
+ * ary.flatten!(level) -> ary or nil
*
* Flattens +self+ in place.
- * Returns <code>nil</code> if no modifications were made (i.e.,
- * <i>ary</i> contains no subarrays.) If the optional <i>level</i>
- * argument determines the level of recursion to flatten.
+ *
+ * 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]
@@ -3819,10 +4391,14 @@ rb_ary_flatten_bang(int argc, VALUE *argv, VALUE ary)
* ary.flatten -> new_ary
* ary.flatten(level) -> new_ary
*
- * Returns a new array that is a one-dimensional flattening of this
- * array (recursively). That is, for every element that is an array,
- * extract its elements into the new array. If the optional
- * <i>level</i> argument determines the level of recursion to flatten.
+ * 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]]
@@ -3852,7 +4428,7 @@ rb_ary_flatten(int argc, VALUE *argv, VALUE ary)
(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_real(randgen)*(max))
+#define RAND_UPTO(max) (long)rb_random_ulong_limited((randgen), (max)-1)
/*
* call-seq:
@@ -3860,36 +4436,34 @@ static VALUE sym_random;
* ary.shuffle!(random: rng) -> ary
*
* Shuffles elements in +self+ in place.
- * If +rng+ is given, it will be used as the random number generator.
+ *
+ * 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 *ptr, opts, *snap_ptr, randgen = rb_cRandom;
- long i, snap_len;
+ VALUE opts, randgen = rb_cRandom;
+ long i, len;
if (OPTHASH_GIVEN_P(opts)) {
randgen = rb_hash_lookup2(opts, sym_random, randgen);
}
- if (argc > 0) {
- rb_raise(rb_eArgError, "wrong number of arguments (%d for 0)", argc);
- }
+ rb_check_arity(argc, 0, 0);
rb_ary_modify(ary);
- i = RARRAY_LEN(ary);
- ptr = RARRAY_PTR(ary);
- snap_len = i;
- snap_ptr = ptr;
- while (i) {
- long j = RAND_UPTO(i);
- VALUE tmp;
- if (snap_len != RARRAY_LEN(ary) || snap_ptr != RARRAY_PTR(ary)) {
- rb_raise(rb_eRuntimeError, "modified during shuffle");
+ 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;
}
- tmp = ptr[--i];
- ptr[i] = ptr[j];
- ptr[j] = tmp;
- }
+ }); /* WB: no new reference */
return ary;
}
@@ -3899,12 +4473,12 @@ rb_ary_shuffle_bang(int argc, VALUE *argv, VALUE ary)
* ary.shuffle -> new_ary
* ary.shuffle(random: rng) -> new_ary
*
- * Returns a new array with elements of this array shuffled.
+ * Returns a new array with elements of +self+ shuffled.
*
* a = [ 1, 2, 3 ] #=> [1, 2, 3]
* a.shuffle #=> [2, 3, 1]
*
- * If +rng+ is given, it will be used as the random number generator.
+ * The optional +rng+ argument will be used as the random number generator.
*
* a.shuffle(random: Random.new(1)) #=> [1, 3, 2]
*/
@@ -3925,40 +4499,42 @@ rb_ary_shuffle(int argc, VALUE *argv, VALUE ary)
* 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
- * <code>nil</code> and the second form returns an empty array.
+ * Choose a random element or +n+ random elements from the array.
*
- * If +rng+ is given, it will be used as the random number generator.
+ * 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, *ptr;
+ VALUE nv, result;
VALUE opts, randgen = rb_cRandom;
long n, len, i, j, k, idx[10];
- double rnds[numberof(idx)];
+ long rnds[numberof(idx)];
if (OPTHASH_GIVEN_P(opts)) {
randgen = rb_hash_lookup2(opts, sym_random, randgen);
}
- ptr = RARRAY_PTR(ary);
len = RARRAY_LEN(ary);
if (argc == 0) {
- if (len == 0) return Qnil;
- if (len == 1) {
+ if (len < 2)
i = 0;
- }
- else {
- double x = rb_random_real(randgen);
- if ((len = RARRAY_LEN(ary)) == 0) return Qnil;
- i = (long)(x * len);
- }
- return RARRAY_PTR(ary)[i];
+ else
+ i = RAND_UPTO(len);
+
+ return rb_ary_elt(ary, i);
}
rb_scan_args(argc, argv, "1", &nv);
n = NUM2LONG(nv);
@@ -3966,40 +4542,44 @@ rb_ary_sample(int argc, VALUE *argv, VALUE ary)
if (n > len) n = len;
if (n <= numberof(idx)) {
for (i = 0; i < n; ++i) {
- rnds[i] = rb_random_real(randgen);
+ rnds[i] = RAND_UPTO(len - i);
}
}
+ k = len;
len = RARRAY_LEN(ary);
- ptr = RARRAY_PTR(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_new2(0);
+ return rb_ary_new_capa(0);
case 1:
- i = (long)(rnds[0] * len);
- return rb_ary_new4(1, &ptr[i]);
+ i = rnds[0];
+ return rb_ary_new_from_values(1, &RARRAY_AREF(ary, i));
case 2:
- i = (long)(rnds[0] * len);
- j = (long)(rnds[1] * (len-1));
+ i = rnds[0];
+ j = rnds[1];
if (j >= i) j++;
- return rb_ary_new3(2, ptr[i], ptr[j]);
+ return rb_ary_new_from_args(2, RARRAY_AREF(ary, i), RARRAY_AREF(ary, j));
case 3:
- i = (long)(rnds[0] * len);
- j = (long)(rnds[1] * (len-1));
- k = (long)(rnds[2] * (len-2));
+ 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_new3(3, ptr[i], ptr[j], ptr[k]);
+ return rb_ary_new_from_args(3, RARRAY_AREF(ary, i), RARRAY_AREF(ary, j), RARRAY_AREF(ary, k));
}
if (n <= numberof(idx)) {
- VALUE *ptr_result;
long sorted[numberof(idx)];
- sorted[0] = idx[0] = (long)(rnds[0] * len);
+ sorted[0] = idx[0] = rnds[0];
for (i=1; i<n; i++) {
- k = (long)(rnds[i] * --len);
+ k = rnds[i];
for (j = 0; j < i; ++j) {
if (k < sorted[j]) break;
++k;
@@ -4007,48 +4587,65 @@ rb_ary_sample(int argc, VALUE *argv, VALUE ary)
memmove(&sorted[j+1], &sorted[j], sizeof(sorted[0])*(i-j));
sorted[j] = idx[i] = k;
}
- result = rb_ary_new2(n);
- ptr_result = RARRAY_PTR(result);
- for (i=0; i<n; i++) {
- ptr_result[i] = ptr[idx[i]];
- }
+ 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 {
- VALUE *ptr_result;
- result = rb_ary_new4(len, ptr);
- RBASIC(result)->klass = 0;
- ptr_result = RARRAY_PTR(result);
+ result = rb_ary_dup(ary);
+ RBASIC_CLEAR_CLASS(result);
RB_GC_GUARD(ary);
- 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(result)->klass = rb_cArray;
+ 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) -> an_enumerator
+ * ary.cycle(n=nil) { |obj| block } -> nil
+ * ary.cycle(n=nil) -> Enumerator
*
- * Calls <i>block</i> for each element repeatedly _n_ times or
- * forever if none or +nil+ is given. If a non-positive number is
- * given or the array is empty, does nothing. Returns +nil+ if the
- * loop has finished without getting interrupted.
+ * Calls the given block for each element +n+ times or forever if +nil+ is
+ * given.
*
- * If no block is given, an enumerator is returned instead.
+ * 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.
+ * 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.
*
*/
@@ -4060,7 +4657,7 @@ rb_ary_cycle(int argc, VALUE *argv, VALUE ary)
rb_scan_args(argc, argv, "01", &nv);
- RETURN_ENUMERATOR(ary, argc, argv);
+ RETURN_SIZED_ENUMERATOR(ary, argc, argv, rb_ary_cycle_size);
if (NIL_P(nv)) {
n = -1;
}
@@ -4071,19 +4668,21 @@ rb_ary_cycle(int argc, VALUE *argv, VALUE ary)
while (RARRAY_LEN(ary) > 0 && (n < 0 || 0 < n--)) {
for (i=0; i<RARRAY_LEN(ary); i++) {
- rb_yield(RARRAY_PTR(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(s)->klass = rb_cString)
+#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(a)->klass = rb_cArray)
+#define tmpary_discard(a) (ary_discard(a), RBASIC_SET_CLASS_RAW(a, rb_cArray))
/*
- * Recursively compute permutations of r elements of the set [0..n-1].
+ * 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.
*
@@ -4127,29 +4726,70 @@ permute0(long n, long r, long *p, long index, char *used, VALUE values)
}
/*
+ * 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;
+
+ return descending_factorial(n, k);
+}
+
+/*
* call-seq:
* ary.permutation { |p| block } -> ary
- * ary.permutation -> an_enumerator
+ * ary.permutation -> Enumerator
* ary.permutation(n) { |p| block } -> ary
- * ary.permutation(n) -> an_enumerator
+ * 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.
*
- * When invoked with a block, yield all permutations of length <i>n</i>
- * of the elements of <i>ary</i>, then return the array itself.
- * If <i>n</i> is not specified, yield all permutations of all elements.
- * The implementation makes no guarantees about the order in which
- * the permutations are yielded.
+ * If +n+ is not specified, yield all permutations of all elements.
*
- * If no block is given, an enumerator is returned instead.
+ * 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
+ * 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
*/
static VALUE
@@ -4159,7 +4799,7 @@ rb_ary_permutation(int argc, VALUE *argv, VALUE ary)
long r, n, i;
n = RARRAY_LEN(ary); /* Array length */
- RETURN_ENUMERATOR(ary, argc, argv); /* Return enumerator if no block */
+ 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 */
@@ -4171,7 +4811,7 @@ rb_ary_permutation(int argc, VALUE *argv, VALUE ary)
}
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_PTR(ary)[i]));
+ rb_yield(rb_ary_new3(1, RARRAY_AREF(ary, i)));
}
}
else { /* this is the general case */
@@ -4180,29 +4820,39 @@ rb_ary_permutation(int argc, VALUE *argv, VALUE ary)
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(ary0)->klass = 0;
+ 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(ary0)->klass = rb_cArray;
+ RBASIC_SET_CLASS_RAW(ary0, rb_cArray);
}
return ary;
}
+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) -> an_enumerator
+ * ary.combination(n) -> Enumerator
*
- * When invoked with a block, yields all combinations of length <i>n</i>
- * of elements from <i>ary</i> and then returns <i>ary</i> itself.
- * The implementation makes no guarantees about the order in which
- * the combinations are yielded.
+ * When invoked with a block, yields all combinations of length +n+ of elements
+ * from the array and then returns the array itself.
*
- * If no block is given, an enumerator is returned instead.
+ * 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:
*
@@ -4222,7 +4872,7 @@ rb_ary_combination(VALUE ary, VALUE num)
long n, i, len;
n = NUM2LONG(num);
- RETURN_ENUMERATOR(ary, 1, &num);
+ RETURN_SIZED_ENUMERATOR(ary, 1, &num, rb_ary_combination_size);
len = RARRAY_LEN(ary);
if (n < 0 || len < n) {
/* yield nothing */
@@ -4232,7 +4882,7 @@ rb_ary_combination(VALUE ary, VALUE num)
}
else if (n == 1) {
for (i = 0; i < len; i++) {
- rb_yield(rb_ary_new3(1, RARRAY_PTR(ary)[i]));
+ rb_yield(rb_ary_new3(1, RARRAY_AREF(ary, i)));
}
}
else {
@@ -4245,9 +4895,9 @@ rb_ary_combination(VALUE ary, VALUE num)
MEMZERO(stack, long, n);
stack[0] = -1;
for (;;) {
- chosen[lev] = RARRAY_PTR(ary)[stack[lev+1]];
+ chosen[lev] = RARRAY_AREF(ary, stack[lev+1]);
for (lev++; lev < n; lev++) {
- chosen[lev] = RARRAY_PTR(ary)[stack[lev+1] = stack[lev]+1];
+ chosen[lev] = RARRAY_AREF(ary, stack[lev+1] = stack[lev]+1);
}
rb_yield(rb_ary_new4(n, chosen));
if (RBASIC(t0)->klass) {
@@ -4266,8 +4916,9 @@ rb_ary_combination(VALUE ary, VALUE num)
}
/*
- * Recursively compute repeated permutations of r elements of the set
- * [0..n-1].
+ * 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.
*
@@ -4304,17 +4955,33 @@ rpermute0(long n, long r, long *p, long index, VALUE values)
}
}
+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) -> an_enumerator
+ * 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.
*
- * When invoked with a block, yield all repeated permutations of length
- * <i>n</i> of the elements of <i>ary</i>, then return the array itself.
- * The implementation makes no guarantees about the order in which
- * the repeated permutations are yielded.
+ * 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.
+ * If no block is given, an Enumerator is returned instead.
*
* Examples:
*
@@ -4332,7 +4999,7 @@ rb_ary_repeated_permutation(VALUE ary, VALUE num)
long r, n, i;
n = RARRAY_LEN(ary); /* Array length */
- RETURN_ENUMERATOR(ary, 1, &num); /* Return enumerator if no block */
+ 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) {
@@ -4343,18 +5010,18 @@ rb_ary_repeated_permutation(VALUE ary, VALUE num)
}
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_PTR(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(ary0)->klass = 0;
+ RBASIC_CLEAR_CLASS(ary0);
rpermute0(n, r, p, 0, ary0); /* compute and yield repeated permutations */
tmpbuf_discard(t0);
- RBASIC(ary0)->klass = rb_cArray;
+ RBASIC_SET_CLASS_RAW(ary0, rb_cArray);
}
return ary;
}
@@ -4383,30 +5050,41 @@ rcombinate0(long n, long r, long *p, long index, long rest, VALUE values)
}
}
+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) -> an_enumerator
+ * ary.repeated_combination(n) -> Enumerator
*
- * When invoked with a block, yields all repeated combinations of
- * length <i>n</i> of elements from <i>ary</i> and then returns
- * <i>ary</i> itself.
- * The implementation makes no guarantees about the order in which
- * the repeated combinations are yielded.
+ * When invoked with a block, yields all repeated combinations of length +n+ of
+ * elements from the array and then returns the array itself.
*
- * If no block is given, an enumerator is returned instead.
+ * 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
+ * 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
*
*/
@@ -4416,7 +5094,7 @@ rb_ary_repeated_combination(VALUE ary, VALUE num)
long n, i, len;
n = NUM2LONG(num); /* Combination size from argument */
- RETURN_ENUMERATOR(ary, 1, &num); /* Return enumerator if no block */
+ 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 */
@@ -4426,7 +5104,7 @@ rb_ary_repeated_combination(VALUE ary, VALUE num)
}
else if (n == 1) {
for (i = 0; i < len; i++) {
- rb_yield(rb_ary_new3(1, RARRAY_PTR(ary)[i]));
+ rb_yield(rb_ary_new3(1, RARRAY_AREF(ary, i)));
}
}
else if (len == 0) {
@@ -4436,11 +5114,11 @@ rb_ary_repeated_combination(VALUE ary, VALUE num)
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(ary0)->klass = 0;
+ RBASIC_CLEAR_CLASS(ary0);
rcombinate0(len, n, p, 0, n, ary0); /* compute and yield repeated combinations */
tmpbuf_discard(t0);
- RBASIC(ary0)->klass = rb_cArray;
+ RBASIC_SET_CLASS_RAW(ary0, rb_cArray);
}
return ary;
}
@@ -4451,11 +5129,12 @@ rb_ary_repeated_combination(VALUE ary, VALUE num)
* 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, <i>product</i> will yield all combinations
- * and return +self+ instead.
*
+ * 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]]
@@ -4477,8 +5156,8 @@ rb_ary_product(int argc, VALUE *argv, VALUE ary)
long i,j;
long resultlen = 1;
- RBASIC(t0)->klass = 0;
- RBASIC(t1)->klass = 0;
+ RBASIC_CLEAR_CLASS(t0);
+ RBASIC_CLEAR_CLASS(t1);
/* initialize the arrays of arrays */
ARY_SET_LEN(t0, n);
@@ -4500,15 +5179,14 @@ rb_ary_product(int argc, VALUE *argv, VALUE ary)
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]), l = resultlen;
+ long k = RARRAY_LEN(arrays[i]);
if (k == 0) {
result = rb_ary_new2(0);
goto done;
}
- resultlen *= k;
- if (resultlen < k || resultlen < l || resultlen / k != l) {
+ if (MUL_OVERFLOW_LONG_P(resultlen, k))
rb_raise(rb_eRangeError, "too big to product");
- }
+ resultlen *= k;
}
result = rb_ary_new2(resultlen);
}
@@ -4521,7 +5199,7 @@ rb_ary_product(int argc, VALUE *argv, VALUE ary)
}
/* put it on the result array */
- if(NIL_P(result)) {
+ if (NIL_P(result)) {
FL_SET(t0, FL_USER5);
rb_yield(subarray);
if (! FL_TEST(t0, FL_USER5)) {
@@ -4559,7 +5237,11 @@ done:
* call-seq:
* ary.take(n) -> new_ary
*
- * Returns first n elements from <i>ary</i>.
+ * 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]
@@ -4578,16 +5260,18 @@ rb_ary_take(VALUE obj, VALUE n)
/*
* call-seq:
- * ary.take_while {|arr| block } -> new_ary
- * ary.take_while -> an_enumerator
+ * 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.
*
- * 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.
*
- * 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]
+ * a.take_while { |i| i < 3 } #=> [1, 2]
*
*/
@@ -4598,7 +5282,7 @@ rb_ary_take_while(VALUE ary)
RETURN_ENUMERATOR(ary, 0, 0);
for (i = 0; i < RARRAY_LEN(ary); i++) {
- if (!RTEST(rb_yield(RARRAY_PTR(ary)[i]))) break;
+ if (!RTEST(rb_yield(RARRAY_AREF(ary, i)))) break;
}
return rb_ary_take(ary, LONG2FIX(i));
}
@@ -4607,8 +5291,12 @@ rb_ary_take_while(VALUE ary)
* call-seq:
* ary.drop(n) -> new_ary
*
- * Drops first n elements from +ary+ and returns the rest of
- * the elements in an array.
+ * 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]
@@ -4631,14 +5319,16 @@ rb_ary_drop(VALUE ary, VALUE n)
/*
* call-seq:
- * ary.drop_while {|arr| block } -> new_ary
- * ary.drop_while -> an_enumerator
+ * 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.
+ * 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.
+ * 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]
@@ -4652,18 +5342,246 @@ rb_ary_drop_while(VALUE ary)
RETURN_ENUMERATOR(ary, 0, 0);
for (i = 0; i < RARRAY_LEN(ary); i++) {
- if (!RTEST(rb_yield(RARRAY_PTR(ary)[i]))) break;
+ 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.
+/*
+ * 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
@@ -4675,7 +5593,7 @@ Init_Array(void)
rb_cArray = rb_define_class("Array", rb_cObject);
rb_include_module(rb_cArray, rb_mEnumerable);
- rb_define_alloc_func(rb_cArray, ary_alloc);
+ 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);
@@ -4684,6 +5602,7 @@ Init_Array(void)
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);
@@ -4776,7 +5695,10 @@ Init_Array(void)
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/bcc32/Makefile.sub b/bcc32/Makefile.sub
deleted file mode 100644
index 1cd26a8643..0000000000
--- a/bcc32/Makefile.sub
+++ /dev/null
@@ -1,617 +0,0 @@
-# -*- makefile -*-
-
-SHELL = $(COMSPEC)
-MKFILES = Makefile
-
-!ifndef MFLAGS
-MFLAGS=-
-!endif
-
-#### Start of system configuration section. ####
-!ifndef OS
-OS = bccwin32
-!endif
-!if !defined(RT)
-!error RT not defined. Retry from configure pass.
-!endif
-
-arch = $(ARCH)-$(OS)
-
-## variables may be overridden by $(compile_dir)/Makefile
-!ifndef srcdir
-srcdir = ..
-!endif
-!ifndef RUBY_INSTALL_NAME
-RUBY_INSTALL_NAME = ruby
-!endif
-!ifndef RUBYW_INSTALL_NAME
-RUBYW_INSTALL_NAME = $(RUBY_INSTALL_NAME:ruby=rubyw)
-!elif "$(RUBYW_INSTALL_NAME)" == "$(RUBY_INSTALL_NAME)"
-RUBYW_INSTALL_NAME = $(RUBY_INSTALL_NAME:ruby=rubyw)
-!endif
-!if "$(RUBYW_INSTALL_NAME)" == "$(RUBY_INSTALL_NAME)"
-RUBYW_INSTALL_NAME = $(RUBY_INSTALL_NAME)w
-!endif
-!ifndef RUBY_SO_NAME
-RUBY_SO_NAME = $(RT)-$(RUBY_INSTALL_NAME)$(MAJOR)$(MINOR)$(TEENY)
-!endif
-!ifndef icondirs
-!ifdef ICONDIRS
-icondirs=$(ICONDIRS)
-!endif
-!endif
-!ifdef icondirs
-icondirs=$(icondirs:\=/)
-iconinc=-I$(icondirs: = -I)
-!endif
-###############
-
-.SUFFIXES: .y
-
-!ifndef CC
-CC = bcc32
-!endif
-!ifndef CPP
-CPP = cpp32
-!endif
-!ifndef RC
-RC = brcc32
-!endif
-!ifndef YACC
-YACC = bison
-!endif
-!ifndef AR
-AR = tlib
-!endif
-!ifndef BASERUBY
-BASERUBY = ruby
-!endif
-
-PURIFY =
-AUTOCONF = autoconf
-IFCHANGE = $(srcdir:/=\)\win32\ifchange.bat
-RM = $(srcdir:/=\)\win32\rm.bat
-CP = copy > nul
-MV = move > nul
-
-!if !defined(PROCESSOR_ARCHITECTURE)
-PROCESSOR_ARCHITECTURE = x86
-!endif
-MACHINE = $(PROCESSOR_ARCHITECTURE)
-!if "$(PROCESSOR_ARCHITECTURE)" == "x86"
-!ifndef PROCESSOR_LEVEL
-PROCESSOR_LEVEL = 5
-!endif
-!if 6 < $(PROCESSOR_LEVEL)
-PROCESSOR_LEVEL = 6
-!endif
-PROCESSOR_FLAG = -$(PROCESSOR_LEVEL)
-CPU = i$(PROCESSOR_LEVEL)86
-ARCH = i386
-!else
-CPU = $(PROCESSOR_ARCHITECTURE)
-ARCH = $(PROCESSOR_ARCHITECTURE)
-!endif
-!ifndef DEBUGFLAGS
-DEBUGFLAGS =
-!endif
-!ifndef OPTFLAGS
-OPTFLAGS = -O
-!endif
-
-!ifndef prefix
-prefix = /usr
-!endif
-!ifndef exec_prefix
-exec_prefix = $(prefix)
-!endif
-!ifndef libdir
-libdir = $(exec_prefix)/lib
-!endif
-!if !defined(datadir)
-datadir = $(prefix)/share
-!endif
-!ifndef EXTOUT
-EXTOUT = .ext
-!endif
-!ifndef TESTUI
-TESTUI = console
-!endif
-!ifndef TESTS
-TESTS =
-!endif
-!ifndef RDOCTARGET
-RDOCTARGET = install-doc
-!endif
-
-OUTFLAG = -o
-COUTFLAG = -o
-!ifndef CFLAGS
-CFLAGS = -q -tWR -tWC $(DEBUGFLAGS) $(OPTFLAGS) $(PROCESSOR_FLAG) -w- -wsus -wcpt -wdup -wext -wrng -wrpt -wzdi
-!endif
-!ifndef DEFS
-DEFS =
-!endif
-!ifndef CPPFLAGS
-CPPFLAGS =
-!endif
-CPPFLAGS = $(DEFS) $(CPPFLAGS)
-!ifndef CXXFLAGS
-CXXFLAGS = $(CFLAGS)
-!endif
-!ifndef LDFLAGS
-LDFLAGS = -S:$(STACK)
-!endif
-!ifndef RFLAGS
-RFLAGS = $(iconinc)
-!endif
-!ifndef EXTLIBS
-EXTLIBS =
-!endif
-!ifndef MEMLIB
-MEMLIB =
-!endif
-LIBS = $(MEMLIB) cw32i.lib import32.lib ws2_32.lib $(EXTLIBS)
-MISSING = acosh.obj cbrt.obj crypt.obj erf.obj lgamma_r.obj strlcat.obj strlcpy.obj tgamma.obj win32.obj
-
-!ifndef STACK
-STACK = 0x2000000
-!endif
-
-XCFLAGS = -DRUBY_EXPORT -I. -I$(arch_hdrdir) -I$(hdrdir) -I$(srcdir) -I$(srcdir)/missing
-
-ARFLAGS = /a /p32
-LD = ilink32 -q -Gn
-LDSHARED = $(LD)
-XLDFLAGS = -Tpe c0x32.obj
-WLDFLAGS = -aa -Tpe c0w32.obj
-DLDFLAGS = -Tpd c0d32.obj
-LIBRUBY_LDSHARED = $(LDSHARED)
-LIBRUBY_DLDFLAGS = -Gi $(DLDFLAGS) $(EXTLDFLAGS)
-LDOBJECTS = $(MAINOBJ)
-
-SOLIBS =
-
-EXEEXT = .exe
-PROGRAM=$(RUBY_INSTALL_NAME)$(EXEEXT)
-WPROGRAM=$(RUBYW_INSTALL_NAME)$(EXEEXT)
-RUBYDEF = $(RUBY_SO_NAME).def
-MINIRUBY = .\miniruby$(EXEEXT) -I$(srcdir)/lib $(MINIRUBYOPT)
-RUNRUBY = .\$(PROGRAM) -i"$(EXTOUT)/$(arch)" "$(srcdir)/runruby.rb" --extout="$(EXTOUT)" --
-
-ORGLIBPATH = $(LIB)
-
-#### End of system configuration section. ####
-
-LIBRUBY_A = $(RUBY_SO_NAME)-static.lib
-LIBRUBY_SO = $(RUBY_SO_NAME).dll
-LIBRUBY = $(RUBY_SO_NAME).lib
-LIBRUBYARG = $(LIBRUBY)
-THREAD_MODEL = win32
-
-PREP = miniruby$(EXEEXT)
-
-OBJEXT = obj
-ASMEXT = asm
-
-INSTALLED_LIST= .installed.list
-
-MKMAIN_CMD = mkmain.bat
-
-SRC_FILE = $(<:\=/)
-
-WINMAINOBJ = winmain.$(OBJEXT)
-ARCHMINIOBJS = dmydln.$(OBJEXT)
-
-arch_hdrdir = $(EXTOUT)/include/$(arch)
-hdrdir = $(srcdir)/include
-VPATH = $(arch_hdrdir)/ruby;$(hdrdir)/ruby;$(srcdir);$(srcdir)/enc;$(srcdir)/missing;$(srcdir)/win32
-
-.path.c = .;$(srcdir);$(srcdir)/enc;$(srcdir)/win32;$(srcdir)/missing
-.path.ci = $(srcdir)
-.path.inc = .;$(srcdir)
-.path.def = .;$(srcdir)
-.path.h = .;$(arch_hdrdir)/ruby;$(hdrdir)/ruby;$(srcdir);$(srcdir)/win32;$(srcdir)/missing
-.path.y = $(srcdir)
-.path. = $(srcdir)
-
-.c.obj:
- $(CC) $(CFLAGS) $(XCFLAGS) -I. $(CPPFLAGS) $(COUTFLAG)$@ -c $(<:/=\)
-
-.c.asm:
- $(CC) $(CFLAGS) $(XCFLAGS) -I. $(CPPFLAGS) $(COUTFLAG)$@ -S $(<:\=/)
-
-.rc.res:
- $(RC) $(RFLAGS) -I. -I$(<D). $(iconinc) -I$(srcdir)/win32 $(RFLAGS) -fo$@ $(<:/=\)
-
-all: $(srcdir)/bcc32/Makefile.sub $(srcdir)/common.mk
-
-ruby: $(PROGRAM)
-rubyw: $(WPROGRAM)
-
-!include $(srcdir)/common.mk
-
-$(MKFILES): $(srcdir)/bcc32/Makefile.sub $(srcdir)/bcc32/configure.bat $(srcdir)/bcc32/setup.mak
- $(COMSPEC) /C $(srcdir:/=\)\bcc32\configure.bat $(configure_args)
- @echo $(MKFILES) should be updated, re-run $(MAKE).
- @$(MAKE) > nul -q -f &&|
-PHONY: nul
- @exit
-|
-
-PHONY: nul
-
-RUBY_CONFIG_H = $(arch_hdrdir)/ruby/config.h
-CONFIG_H = ./.config.h.time
-
-config: config.status
-
-config.status: $(CONFIG_H)
-
-guard = INCLUDE_RUBY_CONFIG_H
-
-$(CONFIG_H): $(MKFILES) $(srcdir)/bcc32/Makefile.sub
- @if not exist $(arch_hdrdir:/=\) md $(arch_hdrdir:/=\)
- @if not exist $(arch_hdrdir:/=\)\ruby md $(arch_hdrdir:/=\)\ruby
- @$(IFCHANGE) $(RUBY_CONFIG_H:/=\) &&|
-\#ifndef $(guard)
-\#define $(guard) 1
-\#define NO_BIG_INLINE 1
-\#define HAVE_SYS_TYPES_H 1
-\#define HAVE_SYS_STAT_H 1
-\#define HAVE_STDLIB_H 1
-\#define HAVE_STRING_H 1
-\#define HAVE_MEMORY_H 1
-\#define HAVE_LONG_LONG 1
-\#define HAVE_OFF_T 1
-\#define SIZEOF_INT 4
-\#define SIZEOF_SHORT 2
-\#define SIZEOF_LONG 4
-\#define SIZEOF_LONG_LONG 0
-\#define SIZEOF___INT64 8
-\#define SIZEOF_OFF_T 8
-\#define SIZEOF_VOIDP 4
-\#define SIZEOF_FLOAT 4
-\#define SIZEOF_DOUBLE 8
-\#define SIZEOF_TIME_T 4
-\#define SIZEOF_RLIM_T 0
-\#define SIZEOF_SIZE_T 4
-\#define SIZEOF_PTRDIFF_T 4
-\#define HAVE_PROTOTYPES 1
-\#define TOKEN_PASTE(x,y) x\#\#y
-\#define HAVE_STDARG_PROTOTYPES 1
-\#define NORETURN(x) x
-\#define RUBY_EXTERN extern __declspec(dllimport)
-\#define HAVE_DECL_SYS_NERR 1
-\#define HAVE_LIMITS_H 1
-\#define HAVE_FCNTL_H 1
-\#define HAVE_UTIME_H 1
-\#define HAVE_FLOAT_H 1
-\#define rb_uid_t uid_t
-\#define rb_gid_t gid_t
-\#define rb_pid_t int
-\#define HAVE_STRUCT_STAT_ST_RDEV 1
-\#define HAVE_ST_RDEV 1
-!if $(BORLANDC) < 0x0580
-\#define int8_t signed char
-\#define uint8_t unsigned char
-\#define int16_t short
-\#define uint16_t unsigned short
-\#define int32_t int
-\#define uint32_t unsigned int
-\#define int64_t __int64
-\#define uint64_t unsigned __int64
-\#define ssize_t int
-!endif
-\#define HAVE_INT8_T 1
-\#define HAVE_UINT8_T 1
-\#define SIZEOF_INT8_T 1
-\#define HAVE_INT16_T 1
-\#define HAVE_UINT16_T 1
-\#define SIZEOF_INT32_T 2
-\#define HAVE_INT32_T 1
-\#define HAVE_UINT32_T 1
-\#define SIZEOF_INT32_T 4
-\#define HAVE_INT64_T 1
-\#define HAVE_UINT64_T 1
-\#define SIZEOF_INT64_T 8
-\#define HAVE_INTPTR_T 1
-\#define HAVE_UINTPTR_T 1
-\#define HAVE_SSIZE_T 1
-\#define GETGROUPS_T int
-\#define RETSIGTYPE void
-\#define HAVE_ALLOCA 1
-\#define HAVE_DUP2 1
-\#define HAVE_MEMMOVE 1
-\#define HAVE_MKDIR 1
-\#define HAVE_STRCASECMP 1
-\#define HAVE_STRNCASECMP 1
-\#define HAVE_STRERROR 1
-\#define HAVE_STRFTIME 1
-\#define HAVE_STRCHR 1
-\#define HAVE_STRSTR 1
-\#define HAVE_STRTOD 1
-\#define HAVE_STRTOL 1
-\#define HAVE_STRTOUL 1
-\#define HAVE_SNPRINTF 1
-\#define HAVE_VSNPRINTF 1
-\#define HAVE_ISNAN 1
-\#define HAVE_FINITE 1
-\#define HAVE_HYPOT 1
-\#define HAVE_FMOD 1
-\#define HAVE_WAITPID 1
-\#define HAVE_FSYNC 1
-\#define HAVE_GETCWD 1
-\#define HAVE_TRUNCATE 1
-\#define HAVE_FTRUNCATE 1
-\#define HAVE_FSEEKO 1
-\#define HAVE_FTELLO 1
-\#define HAVE_TIMES 1
-\#define HAVE_FCNTL 1
-\#define HAVE_LINK 1
-\#define HAVE_TELLDIR 1
-\#define HAVE_SEEKDIR 1
-\#define HAVE_COSH 1
-\#define HAVE_SINH 1
-\#define HAVE_TANH 1
-\#define RSHIFT(x,y) ((x)>>(int)y)
-\#define FILE_COUNT level
-\#define FILE_READPTR curp
-\#define RUBY_SETJMP(env) setjmp(env)
-\#define RUBY_LONGJMP(env,val) longjmp(env,val)
-\#define RUBY_JMP_BUF jmp_buf
-\#define inline __inline
-\#define NEED_IO_SEEK_BETWEEN_RW 1
-\#define STACK_GROW_DIRECTION -1
-\#define DEFAULT_KCODE KCODE_NONE
-\#define LOAD_RELATIVE 1
-\#define DLEXT ".so"
-\#define RUBY_LIB_PREFIX "/lib/ruby"
-\#define RUBY_PLATFORM "$(ARCH)-$(OS)"
-\#endif /* $(guard) */
-|
- @exit > $(@:/=\)
-
-config.status: $(MKFILES) $(srcdir)/bcc32/Makefile.sub $(srcdir)/common.mk
- @echo Creating $@
- @type > $@ &&|
-# Generated automatically by Makefile.sub.
-s,@SHELL@,$$(COMSPEC),;t t
-s,@BUILD_FILE_SEPARATOR@,\,;t t
-s,@PATH_SEPARATOR@,;,;t t
-s,@CFLAGS@,$(CFLAGS),;t t
-s,@DEFS@,$(DEFS),;t t
-s,@CPPFLAGS@,$(CPPFLAGS),;t t
-s,@CXXFLAGS@,$(CXXFLAGS),;t t
-s,@FFLAGS@,$(FFLAGS),;t t
-s,@LDFLAGS@,,;t t
-s,@LIBS@,$(LIBS),;t t
-s,@exec_prefix@,$${prefix},;t t
-s,@prefix@,$(prefix),;t t
-s,@program_transform_name@,s,,,,;t t
-s,@bindir@,$${exec_prefix}/bin,;t t
-s,@sbindir@,$${exec_prefix}/sbin,;t t
-s,@libexecdir@,$${exec_prefix}/libexec,;t t
-s,@datadir@,$${prefix}/share,;t t
-s,@sysconfdir@,$${prefix}/etc,;t t
-s,@sharedstatedir@,/etc,;t t
-s,@localstatedir@,/var,;t t
-s,@libdir@,$${exec_prefix}/lib,;t t
-s,@includedir@,$${prefix}/include,;t t
-s,@oldincludedir@,/usr/include,;t t
-s,@infodir@,$${prefix}/info,;t t
-s,@mandir@,$${prefix}/man,;t t
-s,@ridir@,$${prefix}/share/ri,;t t
-s,@build@,$(CPU)-pc-$(OS),;t t
-s,@build_alias@,$(CPU)-$(OS),;t t
-s,@build_cpu@,$(CPU),;t t
-s,@build_vendor@,pc,;t t
-s,@build_os@,$(OS),;t t
-s,@host@,$(CPU)-pc-$(OS),;t t
-s,@host_alias@,$(CPU)-$(OS),;t t
-s,@host_cpu@,$(CPU),;t t
-s,@host_vendor@,pc,;t t
-s,@host_os@,$(OS),;t t
-s,@target@,$(ARCH)-pc-$(OS),;t t
-s,@target_alias@,$(ARCH)-$(OS),;t t
-s,@target_cpu@,$(ARCH),;t t
-s,@target_vendor@,pc,;t t
-s,@target_os@,$(OS),;t t
-s,@CC@,$(CC),;t t
-s,@CPP@,cpp32,;t t
-s,@CXX@,$$(CC),;t t
-s,@LD@,$(LD),;t t
-s,@YACC@,$(YACC),;t t
-s,@RANLIB@,,;t t
-s,@AR@,$(AR),;t t
-s,@ARFLAGS@,$(ARFLAGS) ,;t t
-s,@LN_S@,$(LN_S),;t t
-s,@SET_MAKE@,MFLAGS = -$$(MAKEFLAGS),;t t
-s,@RM@,$$(top_srcdir:/=\)\win32\rm.bat,;t t
-s,@CP@,copy > nul,;t t
-s,@LIBOBJS@, $(MISSING),;t t
-s,@ALLOCA@,$(ALLOCA),;t t
-s,@DEFAULT_KCODE@,$(DEFAULT_KCODE),;t t
-s,@EXEEXT@,.exe,;t t
-s,@OBJEXT@,obj,;t t
-s,@XCFLAGS@,$(XCFLAGS),;t t
-s,@XLDFLAGS@,$(XLDFLAGS),;t t
-s,@DLDFLAGS@,$(DLDFLAGS),;t t
-s,@ARCH_FLAG@,$(ARCH_FLAG),;t t
-s,@STATIC@,$(STATIC),;t t
-s,@CCDLFLAGS@,,;t t
-s,@LDSHARED@,$(LDSHARED),;t t
-s,@DLEXT@,so,;t t
-s,@LIBEXT@,lib,;t t
-s,@STRIP@,$(STRIP),;t t
-s,@EXTSTATIC@,$(EXTSTATIC),;t t
-s,@setup@,Setup,;t t
-s,@MINIRUBY@,$(MINIRUBY),;t t
-s,@PREP@,miniruby$(EXEEXT),;t t
-s,@RUNRUBY@,$(RUNRUBY),;t t
-s,@EXTOUT@,$(EXTOUT),;t t
-s,@ARCHFILE@,,;t t
-s,@RDOCTARGET@,,;t t
-s,@LIBRUBY_LDSHARED@,$$(LDSHARED),;t t
-s,@LIBRUBY_DLDFLAGS@,-Gi $$(DLDFLAGS),;t t
-s,@RUBY_INSTALL_NAME@,$(RUBY_INSTALL_NAME),;t t
-s,@rubyw_install_name@,$(RUBYW_INSTALL_NAME),;t t
-s,@RUBYW_INSTALL_NAME@,$(RUBYW_INSTALL_NAME),;t t
-s,@RUBY_SO_NAME@,$(RUBY_SO_NAME),;t t
-s,@LIBRUBY_A@,$$(RUBY_SO_NAME)-static.lib,;t t
-s,@LIBRUBY_SO@,$$(RUBY_SO_NAME).dll,;t t
-s,@LIBRUBY_ALIASES@,$(LIBRUBY_ALIASES),;t t
-s,@LIBRUBY@,$$(RUBY_SO_NAME).lib,;t t
-s,@LIBRUBYARG@,$$(LIBRUBYARG_SHARED),;t t
-s,@LIBRUBYARG_STATIC@,$$(LIBRUBY_A),;t t
-s,@LIBRUBYARG_SHARED@,$$(LIBRUBY),;t t
-s,@SOLIBS@,$(SOLIBS),;t t
-s,@DLDLIBS@,$(DLDLIBS),;t t
-s,@ENABLE_SHARED@,yes,;t t
-s,@OUTFLAG@,$(OUTFLAG),;t t
-s,@COUTFLAG@,$(COUTFLAG),;t t
-s,@CPPOUTFILE@,,;t t
-s,@LIBPATHFLAG@, -L"%s",;t t
-s,@RPATHFLAG@,,;t t
-s,@LIBARG@,%s.lib,;t t
-s,@LINK_SO@,$$(LDSHARED) $$(DLDFLAGS) $$(LIBPATH) $$(OBJS:/=\), $$(@:/=\), nul, $$(LIBS) $$(LOCAL_LIBS), $$(DEFFILE:/=\), $$(RESFILE:/=\),;t t
-s,@COMPILE_C@,$$(CC) $$(INCFLAGS) $$(CFLAGS) $$(CPPFLAGS) $(COUTFLAG)$$(@) -c $$(<:/=\),;t t
-s,@COMPILE_CXX@,$$(CXX) $$(INCFLAGS) $$(CXXFLAGS) $$(CPPFLAGS) -P $(COUTFLAG)$$(@) -c $$(<:/=\),;t t
-s,@COMPILE_RULES@,{$$(srcdir)}.%s{}.%s: {$$(topdir)}.%s{}.%s: {$$(hdrdir)}.%s{}.%s: .%s.%s:,;t t
-s,@RULE_SUBST@,{.;$$(VPATH)}%s,;t t
-s,@COMMON_LIBS@,m advapi32 avicap32 avifil32 cap comctl32 comdlg32 dlcapi gdi32 glu32 imagehlp imm32 inetmib1 kernel32 loadperf lsapi32 lz32 mapi32 mgmtapi mpr msacm32 msvfw32 nddeapi netapi32 ole32 oleaut32 oledlg olepro32 opengl32 pdh pkpd32 rasapi32 rasdlg rassapi rpcrt4 setupapi shell32 shfolder snmpapi sporder tapi32 url user32 vdmdbg version win32spl winmm wintrust wsock32,;t t
-s,@COMMON_MACROS@,WIN32_LEAN_AND_MEAN WIN32,;t t
-s,@COMMON_HEADERS@,winsock2.h windows.h,;t t
-s,@cleanlibs@,$$*.tds,;t t
-s,@cleanobjs@,$$*-$$(arch).def $$*.il? $$*.lib,;t t
-s,@TRY_LINK@,$$(CC) -oconftest $$(INCFLAGS) -I$$(hdrdir) $$(CPPFLAGS) $$(CFLAGS) $$(LIBPATH) $$(LDFLAGS) $$(src) $$(LOCAL_LIBS) $$(LIBS),;t t
-s,@EXPORT_PREFIX@,_,;t t
-s,@arch@,$(ARCH)-$(OS),;t t
-s,@sitearch@,$(ARCH)-$(OS),;t t
-s,@sitedir@,$${prefix}/lib/ruby/site_ruby,;t t
-s,@vendordir@,$${prefix}/lib/ruby/vendor_ruby,;t t
-s,@rubyhdrdir@,$$(includedir)/ruby-$$(MAJOR).$$(MINOR).$$(TEENY),;t t
-s,@sitehdrdir@,$$(rubyhdrdir)/site_ruby,;t t
-s,@vendorhdrdir@,$$(rubyhdrdir)/vendor_ruby,;t t
-s,@configure_args@,--enable-shared $(configure_args),;t t
-s,@configure_input@,$$configure_input,;t t
-s,@srcdir@,$(srcdir),;t t
-s,@top_srcdir@,$(srcdir),;t t
-|
-
-miniruby$(EXEEXT):
- @echo $(LIBS)
- $(LD) $(LDFLAGS) $(XLDFLAGS) $(MAINOBJ) $(MINIOBJS) $(COMMONOBJS:/=\) $(DMYEXT),$@,nul,$(LIBS)
-
-$(PROGRAM): $(MAINOBJ) $(LIBRUBY_SO) $(RUBY_INSTALL_NAME).res
- $(LD) $(LDFLAGS) $(XLDFLAGS) $(MAINOBJ),$@,nul,$(LIBRUBYARG) $(LIBS),,$(RUBY_INSTALL_NAME).res
-
-$(WPROGRAM): $(MAINOBJ) $(WINMAINOBJ) $(LIBRUBY_SO) $(RUBYW_INSTALL_NAME).res
- $(LD) $(LDFLAGS) $(WLDFLAGS) $(MAINOBJ) $(WINMAINOBJ),$@,nul,$(LIBRUBYARG) $(LIBS),,$(RUBYW_INSTALL_NAME).res
-
-$(LIBRUBY_A): $(OBJS) $(DMYEXT)
- @-if exist $@ del $@
- $(AR) $(ARFLAGS) "$@" $(OBJS) $(DMYEXT)
-
-# $(LIBRUBY): $(LIBRUBY_SO)
-# implib $@ $(LIBRUBY_SO)
-
-$(LIBRUBY_SO): $(LIBRUBY_A) $(DLDOBJS) $(RUBYDEF) $(RUBY_SO_NAME).res
- @echo $(DLDOBJS)
- @$(PRE_LIBRUBY_UPDATE)
- $(LIBRUBY_LDSHARED) $(LIBRUBY_DLDFLAGS) $(DLDOBJS:/=\),$(LIBRUBY_SO),nul,$(LIBRUBY_A) $(LIBS),$(RUBYDEF),$(RUBY_SO_NAME).res
-
-$(LIBRUBY): $(LIBRUBY_SO)
-
-$(RUBYDEF): $(LIBRUBY_A) $(PREP)
- $(MINIRUBY) $(srcdir)/bcc32/mkexports.rb -output=$@ -base=$(RUBY_SO_NAME) $(LIBRUBY_A)
-
-$(RUBY_INSTALL_NAME).rc $(RUBYW_INSTALL_NAME).rc $(RUBY_SO_NAME).rc: rbconfig.rb $(srcdir)/revision.h $(srcdir)/win32/resource.rb
- @$(MINIRUBY) $(srcdir)/win32/resource.rb \
- -ruby_name=$(RUBY_INSTALL_NAME) \
- -rubyw_name=$(RUBYW_INSTALL_NAME) \
- -so_name=$(RUBY_SO_NAME) \
- . $(icondirs) $(srcdir)/win32
-
-lex.c: {$(srcdir)}lex.c.blt
- copy "$(?:/=\)" $@
-
-post-install-bin::
- @$(NULLCMD)
-post-install-lib::
- @$(NULLCMD)
-post-install-ext-comm::
- @$(NULLCMD)
-post-install-ext-arch::
- @$(NULLCMD)
-post-install-man::
- @$(NULLCMD)
-post-install-doc::
- @$(NULLCMD)
-
-clean-local::
- @$(RM) $(WINMAINOBJ) ext\extinit.c ext\extinit.$(OBJEXT) *.tds *.il? $(RUBY_SO_NAME).lib
- @$(RM) $(RUBY_INSTALL_NAME).res $(RUBYW_INSTALL_NAME).res $(RUBY_SO_NAME).res
- @$(RM) *.map *.pdb *.ilk *.exp $(RUBYDEF) ext\ripper\y.output
-
-distclean-local::
- @$(RM) ext\config.cache $(RBCONFIG:/=\)
- @$(RM) $(RUBY_INSTALL_NAME).rc $(RUBYW_INSTALL_NAME).rc $(RUBY_SO_NAME).rc
-
-clean-ext distclean-ext realclean-ext::
- @for /R ext %I in (.) do @if exist %I\Makefile ( \
- echo $(@:-ext=)ing %~nI & \
- cd %I & \
- $(MAKE) $(MFLAGS) $(@:-ext=) & \
- cd %CD% \
- )
-
-ext/extinit.obj: ext/extinit.c $(SETUP)
- $(CC) $(CFLAGS) $(XCFLAGS) $(CPPFLAGS) $(COUTFLAG)$@ -c ext/extinit.c
-
-main.$(OBJEXT): win32.h
-ascii.$(OBJEXT): win32.h
-array.$(OBJEXT): win32.h
-bignum.$(OBJEXT): win32.h
-class.$(OBJEXT): win32.h
-compar.$(OBJEXT): win32.h
-dir.$(OBJEXT): dir.h win32.h
-dln.$(OBJEXT): win32.h
-enum.$(OBJEXT): win32.h
-error.$(OBJEXT): win32.h
-euc_jp.$(OBJEXT): win32.h
-eval.$(OBJEXT): win32.h
-file.$(OBJEXT): win32.h
-gc.$(OBJEXT): win32.h
-hash.$(OBJEXT): win32.h
-inits.$(OBJEXT): win32.h
-io.$(OBJEXT): win32.h
-marshal.$(OBJEXT): win32.h
-math.$(OBJEXT): win32.h
-numeric.$(OBJEXT): win32.h
-object.$(OBJEXT): win32.h
-pack.$(OBJEXT): win32.h
-parse.$(OBJEXT): win32.h
-process.$(OBJEXT): win32.h
-prec.$(OBJEXT): win32.h
-random.$(OBJEXT): win32.h
-range.$(OBJEXT): win32.h
-re.$(OBJEXT): win32.h
-regcomp.$(OBJEXT): win32.h
-regenc.$(OBJEXT): win32.h
-regerror.$(OBJEXT): win32.h
-regexec.$(OBJEXT): win32.h
-reggnu.$(OBJEXT): win32.h
-regparse.$(OBJEXT): win32.h
-ruby.$(OBJEXT): win32.h
-signal.$(OBJEXT): win32.h
-sjis.$(OBJEXT): win32.h
-sprintf.$(OBJEXT): win32.h
-st.$(OBJEXT): win32.h
-string.$(OBJEXT): win32.h
-struct.$(OBJEXT): win32.h
-time.$(OBJEXT): win32.h
-utf_8.$(OBJEXT): win32.h
-util.$(OBJEXT): win32.h
-variable.$(OBJEXT): win32.h
-version.$(OBJEXT): win32.h
diff --git a/bcc32/README.bcc32 b/bcc32/README.bcc32
deleted file mode 100644
index cd33eec0a1..0000000000
--- a/bcc32/README.bcc32
+++ /dev/null
@@ -1,130 +0,0 @@
-=begin
-
-= How to build ruby using Borland C++
-
-== Requirement
-
-(1) Borland C++ 5.0 or later.
-
-(2) Please set environment variable (({PATH}))
- to run required commands properly from the command line.
-
- Note: building ruby requires following commands.
- * make
- * bcc32
- * tlib
- * ilink32
-
-(3) If you want to build from CVS source, following commands are required.
- * bison ((<URL:http://gnuwin32.sourceforge.net/packages/bison.htm>))
- * sed ((<URL:http://gnuwin32.sourceforge.net/packages/sed.htm>))
-
-(4) We strongly recommend to build ruby on C++Builder, to link following files.
- * usebormm.lib
- * memmgr.lib
-
- RTL's internal memory manager cannot handle large memory block properly,
- so we should use borlndmm.dll instead.
- 10000.times { "" << "." * 529671; GC.start } # crash
-
-== How to compile and install
-
-(1) Execute bcc32\configure.bat on your build directory.
- ex. c:\src\ruby> bcc32\configure.bat
- You can specify the target platform as an argument.
- For example, run `((%configure i686-bccwin32%))'
- You can also specify the install directory.
- For example, run `((%configure --prefix=<install_directory>%))'
- Default of the install directory is /usr .
- The default ((|<PLATFORM>|)) is `(({i386-bccwin32}))'.
-
-(2) Change ((|RUBY_INSTALL_NAME|)) and ((|RUBY_SO_NAME|)) in (({Makefile}))
- if you want to change the name of the executable files.
- And add ((|RUBYW_INSTALL_NAME|)) to change the name of the
- executable without console window if also you want.
-
-(3) Run `((%make%))'
-
-(4) Run `((%make test%))'
-
-(5) Run `((%make install%))'
-
-(6) Requires dynamic RTL (cc3250.dll on C++Builder5) and borlndmm.dll (If built with
- usebormm.lib) to use installed binary. These files are ordinary in bcc32's bin
- directory.
-
-== Icons
-
-Any icon files(*.ico) in the build directory, directories specified with
-((|icondirs|)) make variable and (({win32})) directory under the ruby
-source directory will be included in DLL or executable files, according
-to their base names.
- $(RUBY_INSTALL_NAME).ico or ruby.ico --> $(RUBY_INSTALL_NAME).exe
- $(RUBYW_INSTALL_NAME).ico or rubyw.ico --> $(RUBYW_INSTALL_NAME).exe
- the others --> $(RUBY_SO_NAME).dll
-
-Although no icons are distributed with the ruby source or in the official
-site, you can use anything you like. For example, followings are written
-in Japanese, but you can download at least.
-
-* ((<URL:http://member.nifty.ne.jp/ueivu/rubyico.html>)) or
- ((<zipped icons|URL:http://member.nifty.ne.jp/ueivu/Ruby_ico.zip>))
-* ((<URL:http://homepage1.nifty.com/a_nakata/ruby/>)) or
- ((<icon itself|URL:http://homepage1.nifty.com/a_nakata/ruby/RubyIcon.ico>))
-
-== Build examples
-
-* Build on the ruby source directory.
-
- ex.)
- ruby source directory: C:\ruby
- build directory: C:\ruby
- install directory: C:\usr\local
-
- C:
- cd \ruby
- bcc32\configure --prefix=/usr/local
- make
- make test
- make install
-
-* Build on the relative directory from the ruby source directory and CPU type
- i386.
-
- ex.)
- ruby source directory: C:\ruby
- build directory: C:\ruby\bccwin32
- install directory: C:\usr\local
- CPU i386
-
- C:
- cd \ruby
- mkdir bccwin32
- cd bccwin32
- ..\bcc32\configure --prefix=/usr/local
- make
- make test
- make install
-
-* Build on the different drive.
-
- ex.)
- ruby source directory: C:\src\ruby
- build directory: D:\build\ruby
- install directory: C:\usr\local
-
- D:
- cd D:\build\ruby
- C:\src\ruby\bcc32\configure --prefix=C:/usr/local
- make
- make test
- make install
-
-== Bugs
-
-You can ((*NOT*)) use a path name contains any white space characters as
-the ruby source directory, this restriction comes from the behavior of
-(({!INCLUDE})) directives of (({MAKE})).
-((- you may call it a bug. -))
-
-=end
diff --git a/bcc32/configure.bat b/bcc32/configure.bat
deleted file mode 100755
index 8cdfc64b03..0000000000
--- a/bcc32/configure.bat
+++ /dev/null
@@ -1,163 +0,0 @@
-@echo off
-::: Don't set environment variable in batch file other than autoexec.bat
-::: to avoid "Out of environment space" problem on Windows 95/98.
-::: set TMPMAKE=~tmp~.mak
-
-echo> ~tmp~.mak ####
-echo>> ~tmp~.mak conf = %0
-echo>> ~tmp~.mak $(conf:\=/): nul
-echo>> ~tmp~.mak @del ~setup~.mak
-echo>> ~tmp~.mak @-$(MAKE) -l$(MAKEFLAGS) -f $(@D)setup.mak \
-if exist pathlist.tmp del pathlist.tmp
-if exist confargs.mk del confargs.mk
-:loop
-if "%1" == "" goto :end
-if "%1" == "--prefix" goto :prefix
-if "%1" == "prefix" goto :prefix
-if "%1" == "--srcdir" goto :srcdir
-if "%1" == "srcdir" goto :srcdir
-if "%1" == "--target" goto :target
-if "%1" == "target" goto :target
-if "%1" == "--with-static-linked-ext" goto :extstatic
-if "%1" == "--program-suffix" goto :suffix
-if "%1" == "RUBY_SUFFIX" goto :suffix
-if "%1" == "--program-name" goto :installname
-if "%1" == "--install-name" goto :installname
-if "%1" == "RUBY_INSTALL_NAME" goto :installname
-if "%1" == "--so-name" goto :soname
-if "%1" == "RUBY_SO_NAME" goto :soname
-if "%1" == "--enable-install-doc" goto :enable-rdoc
-if "%1" == "--disable-install-doc" goto :disable-rdoc
-if "%1" == "--extout" goto :extout
-if "%1" == "EXTOUT" goto :extout
-if "%1" == "--with-baseruby" goto :baseruby
-if "%1" == "BASERUBY" goto :baseruby
-if "%1" == "--path" goto :path
-if "%1" == "-h" goto :help
-if "%1" == "--help" goto :help
- echo>>confargs.tmp %1 \
- shift
-goto :loop
-:srcdir
- echo>> ~tmp~.mak -Dsrcdir=%2 \
- echo>>confargs.tmp --srcdir=%2 \
- shift
- shift
-goto :loop
-:prefix
- echo>> ~tmp~.mak -Dprefix=%2 \
- echo>>confargs.tmp %1=%2 \
- shift
- shift
-goto :loop
-:suffix
- echo>>confargs.mk !ifndef RUBY_SUFFIX
- echo>>confargs.mk RUBY_SUFFIX = %2
- echo>>confargs.mk !endif
- echo>>confargs.tmp %1=%2 \
- shift
- shift
-goto :loop
-:installname
- echo>>confargs.mk !ifndef RUBY_INSTALL_NAME
- echo>>confargs.mk RUBY_INSTALL_NAME = %2
- echo>>confargs.mk !endif
- echo>>confargs.tmp %1=%2 \
- shift
- shift
-goto :loop
-:soname
- echo>>confargs.mk !ifndef RUBY_SO_NAME
- echo>>confargs.mk RUBY_SO_NAME = %2
- echo>>confargs.mk !endif
- echo>>confargs.tmp %1=%2 \
- shift
- shift
-goto :loop
-:target
- echo>> ~tmp~.mak %2 \
- echo>>confargs.tmp --target=%2 \
- shift
- shift
-goto :loop
-:extstatic
- echo>>confargs.mk !ifndef EXTSTATIC
- echo>>confargs.mk EXTSTATIC = static
- echo>>confargs.mk !endif
- echo>>confargs.tmp %1 \
- shift
-goto :loop
-:enable-rdoc
- echo>>confargs.mk !ifndef RDOCTARGET
- echo>>confargs.mk RDOCTARGET = install-doc
- echo>>confargs.mk !endif
- echo>>confargs.tmp %1 \
- shift
-goto :loop
-:disable-rdoc
- echo>>confargs.mk !ifndef RDOCTARGET
- echo>>confargs.mk RDOCTARGET = install-nodoc
- echo>>confargs.mk !endif
- echo>>confargs.tmp %1 \
- shift
-goto :loop
-:extout
- echo>>confargs.mk !ifndef EXTOUT
- echo>>confargs.mk EXTOUT = %2
- echo>>confargs.mk !endif
- echo>>confargs.tmp %1=%2 \
- shift
- shift
-goto :loop
-:baseruby
- echo>>confargs.mk !ifndef BASERUBY
- echo>>confargs.mk BASERUBY = %2
- echo>>confargs.mk !endif
- echo>>confargs.tmp %1=%2 \
- shift
- shift
-goto :loop
-:path
- echo>>pathlist.tmp %2;\
- echo>>confargs.tmp %1=%2 \
- shift
- shift
-goto :loop
-:help
- echo Configuration:
- echo --help display this help
- echo --srcdir=DIR find the sources in DIR [configure dir or `..']
- echo Installation directories:
- echo --prefix=PREFIX install files in PREFIX (ignored currently)
- echo System types:
- echo --target=TARGET configure for TARGET [i386-bccwin32]
- echo Optional Package:
- echo --with-baseruby=RUBY use RUBY as baseruby [ruby]
- echo --with-static-linked-ext link external modules statically
- echo --enable-install-doc install rdoc indexes during install
- del *.tmp
- del ~tmp~.mak
-goto :exit
-:end
-echo>> ~tmp~.mak -Dbcc32dir=$(@D)
-if not exist confargs.tmp goto :noconfargs
- echo>>confargs.mk configure_args = \
- type>>confargs.mk confargs.tmp
- echo.>>confargs.mk
- echo>>confargs.mk ####
-:noconfargs
-if not exist pathlist.tmp goto :nopathlist
- echo>>confargs.mk pathlist = \
- type>>confargs.mk pathlist.tmp
- echo.>>confargs.mk
- echo>>confargs.mk ####
- echo>>confargs.mk PATH = $(pathlist:;=/bin;)$(PATH)
- echo>>confargs.mk INCLUDE = $(pathlist:;=/include;)
- echo>>confargs.mk LIB = $(pathlist:;=/lib;)
-:nopathlist
-if exist confargs.mk copy confargs.mk ~setup~.mak > nul
-type>>~setup~.mak ~tmp~.mak
-del *.tmp > nul
-del ~tmp~.mak > nul
-make -s -f ~setup~.mak
-:exit
diff --git a/bcc32/mkexports.rb b/bcc32/mkexports.rb
deleted file mode 100755
index 888ab2e2a6..0000000000
--- a/bcc32/mkexports.rb
+++ /dev/null
@@ -1,26 +0,0 @@
-#!./miniruby -s
-
-$:.unshift(File.expand_path("../..", __FILE__))
-require 'win32/mkexports'
-
-class Exports::Bcc < Exports
- def forwarding(internal, export)
- internal[/\A_?/]+export
- end
-
- def each_line(objs, &block)
- objs.each do |obj|
- opt = /\.(?:so|dll)\z/i =~ obj ? "-ee" : "-oiPUBDEF -oiPUBD32"
- IO.foreach("|tdump -q #{opt} #{obj.tr('/', '\\')} < nul", &block)
- end
- end
-
- def each_export(objs)
- objdump(objs) do |l|
- next unless /(?:PUBDEF|PUBD32|EXPORT)/ =~ l
- yield $1 if /'(.*?)'/ =~ l
- end
- yield "_strcasecmp", "_stricmp"
- yield "_strncasecmp", "_strnicmp"
- end
-end
diff --git a/bcc32/setup.mak b/bcc32/setup.mak
deleted file mode 100644
index df2fd3c128..0000000000
--- a/bcc32/setup.mak
+++ /dev/null
@@ -1,179 +0,0 @@
-# -*- makefile -*-
-
-!if "$(srcdir)" != ""
-bcc32dir = $(srcdir)/bcc32
-!elseif "$(bcc32dir)" == "bcc32/"
-srcdir = .
-!elseif "$(bcc32dir:/bcc32/=)/bcc32/" == "$(bcc32dir)"
-srcdir = $(bcc32dir:/bcc32/=)
-!else
-srcdir = $(bcc32dir)/..
-!endif
-!ifndef prefix
-prefix = /usr
-!endif
-OS = bccwin32
-RT = $(OS)
-BANG = !
-APPEND = echo.>>$(MAKEFILE)
-!ifdef MAKEFILE
-MAKE = $(MAKE) -f $(MAKEFILE)
-!else
-MAKEFILE = Makefile
-!endif
-
-all: Makefile
-Makefile: -prologue- -generic- -epilogue-
-i386-$(OS): -prologue- -i386- -epilogue-
-i486-$(OS): -prologue- -i486- -epilogue-
-i586-$(OS): -prologue- -i586- -epilogue-
-i686-$(OS): -prologue- -i686- -epilogue-
-alpha-$(OS): -prologue- -alpha- -epilogue-
-
--prologue-: -basic-vars- -version- -system-vars-
-
--basic-vars-: nul
- @echo Creating $(MAKEFILE)
- @type > $(MAKEFILE) &&|
-\#\#\# Makefile for ruby $(OS) \#\#\#
-$(BANG)ifndef srcdir
-srcdir = $(srcdir:\=/)
-$(BANG)endif
-$(BANG)ifndef prefix
-prefix = $(prefix:\=/)
-$(BANG)endif
-$(BANG)if !defined(BASERUBY)
-!if defined(BASERUBY)
-BASERUBY = $(BASERUBY)
-!endif
-|
-!if !defined(BASERUBY)
- @for %I in (ruby.exe) do @echo BASERUBY = "%~$$PATH:I" >> $(MAKEFILE)
-!endif
- @type >> $(MAKEFILE) &&|
-$(BANG)endif
-|
-!if exist(confargs.mk)
- @type confargs.mk >> $(MAKEFILE)
- @del confargs.mk
-!endif
-
--system-vars-: -runtime- -bormm-
-
--bormm-: nul
- @-ilink32 -q -Gn -x usebormm.lib > nul
- @-if exist usebormm.tds $(APPEND) MEMLIB = usebormm.lib
- @if exist usebormm.* del usebormm.*
-
--osname-: nul
- @echo OS = >>$(MAKEFILE)
-
--runtime-: nul
- type > conftest.c &&|
-\#include <stdio.h>
-int main(){printf("");return 0;}
-|
- bcc32 conftest.c cw32i.lib > nul
- tdump conftest.exe < nul > conftest.i
- grep "^Imports from CC" conftest.i > conftest.c
- cpp32 -P- -DFile=\# -DImports=RTNAME -Dfrom== conftest.c > nul
- $(MAKE) > nul -DBANG=$(BANG) -f &&|
--runtime-: nul
-$(BANG)include conftest.i
-RT = $$(RTNAME:.DLL=)
-OS = $$(RT:CC32=)
--runtime-:
- del conftest.*
-$(BANG)if "$$(OS)" == "50"
- echo OS = bccwin32 >> $(MAKEFILE)
-$(BANG)else
- echo OS = bccwin32_$$(OS) >> $(MAKEFILE)
-$(BANG)endif
-|
- @echo RT = $$(OS) >> $(MAKEFILE)
-
--version-: nul
- @cpp32 -I$(srcdir) -P- -o$(MAKEFILE) > nul &&|
-\#define RUBY_REVISION 0
-\#include "version.h"
-MAJOR = RUBY_API_VERSION_MAJOR
-MINOR = RUBY_API_VERSION_MINOR
-TEENY = RUBY_API_VERSION_TEENY
-
-BORLANDC = __BORLANDC__
-|
- @$(MAKE) > nul -DBANG=$(BANG) -f &&,
--version-: nul
-$(BANG)include $(MAKEFILE)
-$(BANG)include $(MAKEFILE).i
--version-:
- @del $(MAKEFILE).i
- @type >> $(MAKEFILE) &&|
-MAJOR = $$(MAJOR)
-MINOR = $$(MINOR)
-TEENY = $$(TEENY)
-BORLANDC = $$(BORLANDC)
-|
-,
-
--generic-: nul
-!if defined(PROCESSOR_ARCHITECTURE) || defined(PROCESSOR_LEVEL)
- @type >> $(MAKEFILE) &&|
-!if defined(PROCESSOR_ARCHITECTURE)
-$(BANG)ifndef PROCESSOR_ARCHITECTURE
-PROCESSOR_ARCHITECTURE = $(PROCESSOR_ARCHITECTURE)
-$(BANG)endif
-!endif
-!if defined(PROCESSOR_LEVEL)
-$(BANG)ifndef PROCESSOR_LEVEL
-PROCESSOR_LEVEL = $(PROCESSOR_LEVEL)
-$(BANG)endif
-!endif
-|
-!endif
-
--alpha-: nul
- @$(APPEND) !ifndef PROCESSOR_ARCHITECTURE
- @$(APPEND) PROCESSOR_ARCHITECTURE = alpha
- @$(APPEND) !endif
--ix86-: nul
- @$(APPEND) !ifndef PROCESSOR_ARCHITECTURE
- @$(APPEND) PROCESSOR_ARCHITECTURE = x86
- @$(APPEND) !endif
-
--i386-: -ix86-
- @$(APPEND) !ifndef PROCESSOR_LEVEL
- @$(APPEND) PROCESSOR_LEVEL = 3
- @$(APPEND) !endif
--i486-: -ix86-
- @$(APPEND) !ifndef PROCESSOR_LEVEL
- @$(APPEND) PROCESSOR_LEVEL = 4
- @$(APPEND) !endif
--i586-: -ix86-
- @$(APPEND) !ifndef PROCESSOR_LEVEL
- @$(APPEND) PROCESSOR_LEVEL = 5
- @$(APPEND) !endif
--i686-: -ix86-
- @$(APPEND) !ifndef PROCESSOR_LEVEL
- @$(APPEND) PROCESSOR_LEVEL = 6
- @$(APPEND) !endif
-
--epilogue-: -encs-
-
--encs-: nul
- @$(MAKE) -f $(srcdir)/win32/enc-setup.mak srcdir="$(srcdir)" MAKEFILE=$(MAKEFILE)
-
--epilogue-: nul
- @type >> $(MAKEFILE) &&|
-
-\# RUBY_INSTALL_NAME = ruby
-\# RUBY_SO_NAME = $$(RT)-$$(RUBY_INSTALL_NAME)$$(MAJOR)$$(MINOR)
-\# CFLAGS = -q $$(DEBUGFLAGS) $$(OPTFLAGS) $$(PROCESSOR_FLAG) -w- -wsus -wcpt -wdup -wext -wrng -wrpt -wzdi
-\# CPPFLAGS = -I. -I$$(srcdir) -I$$(srcdir)/missing -DLIBRUBY_SO=\"$$(LIBRUBY_SO)\"
-\# STACK = 0x2000000
-\# LDFLAGS = -S:$$(STACK)
-\# RFLAGS = $$(iconinc)
-\# EXTLIBS = cw32.lib import32.lib user32.lib kernel32.lib
-$(BANG)include $$(srcdir)/bcc32/Makefile.sub
-|
- @echo type "`$(MAKE)'" to make ruby for $(OS).
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_mandelbrot.rb b/benchmark/bm_app_mandelbrot.rb
index 89069db7ab..801b75e8e2 100644
--- a/benchmark/bm_app_mandelbrot.rb
+++ b/benchmark/bm_app_mandelbrot.rb
@@ -3,7 +3,7 @@ require 'complex'
def mandelbrot? z
i = 0
while i<100
- i+=1
+ i += 1
z = z * z
return false if z.abs > 2
end
diff --git a/benchmark/bm_app_raise.rb b/benchmark/bm_app_raise.rb
index 01d2ae3219..5db8f95d50 100644
--- a/benchmark/bm_app_raise.rb
+++ b/benchmark/bm_app_raise.rb
@@ -1,6 +1,6 @@
-i=0
+i = 0
while i<300000
- i+=1
+ i += 1
begin
raise
rescue
diff --git a/benchmark/bm_app_strconcat.rb b/benchmark/bm_app_strconcat.rb
index 7b2f2da5a7..7eed7c1aed 100644
--- a/benchmark/bm_app_strconcat.rb
+++ b/benchmark/bm_app_strconcat.rb
@@ -1,5 +1,5 @@
-i=0
+i = 0
while i<2_000_000
"#{1+1} #{1+1} #{1+1}"
- i+=1
+ i += 1
end
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_select2.rb b/benchmark/bm_io_select2.rb
index 7b167af774..10e37d71b2 100644
--- a/benchmark/bm_io_select2.rb
+++ b/benchmark/bm_io_select2.rb
@@ -2,7 +2,11 @@
ios = []
nr = 1000000
-max = Process.getrlimit(Process::RLIMIT_NOFILE)[0]
+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
diff --git a/benchmark/bm_io_select3.rb b/benchmark/bm_io_select3.rb
index fcdbb96e0e..7d0ba1f092 100644
--- a/benchmark/bm_io_select3.rb
+++ b/benchmark/bm_io_select3.rb
@@ -2,7 +2,11 @@
ios = []
nr = 100
-max = Process.getrlimit(Process::RLIMIT_NOFILE)[0]
+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
diff --git a/benchmark/bm_loop_whileloop.rb b/benchmark/bm_loop_whileloop.rb
index 43d35e1131..0072822c06 100644
--- a/benchmark/bm_loop_whileloop.rb
+++ b/benchmark/bm_loop_whileloop.rb
@@ -1,4 +1,4 @@
-i=0
+i = 0
while i<30_000_000 # benchmark loop 1
- i+=1
+ i += 1
end
diff --git a/benchmark/bm_loop_whileloop2.rb b/benchmark/bm_loop_whileloop2.rb
index e514989661..47d02dffc4 100644
--- a/benchmark/bm_loop_whileloop2.rb
+++ b/benchmark/bm_loop_whileloop2.rb
@@ -1,4 +1,4 @@
-i=0
+i = 0
while i< 6_000_000 # benchmark loop 2
- i+=1
+ i += 1
end
diff --git a/benchmark/bm_so_binary_trees.rb b/benchmark/bm_so_binary_trees.rb
index 6a26465578..b1693e4109 100644
--- a/benchmark/bm_so_binary_trees.rb
+++ b/benchmark/bm_so_binary_trees.rb
@@ -4,7 +4,9 @@
# contributed by Jesse Millikan
# disable output
-def STDOUT.write_ *args
+alias puts_orig puts
+def puts str
+ # disable puts
end
def item_check(tree)
@@ -25,7 +27,7 @@ def bottom_up_tree(item, depth)
end
end
-max_depth = 12 # 16 # ARGV[0].to_i
+max_depth = 16 # ARGV[0].to_i
min_depth = 4
max_depth = min_depth + 2 if min_depth + 2 > max_depth
@@ -55,3 +57,6 @@ min_depth.step(max_depth + 1, 2) do |depth|
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
index 56b9410632..873214de7c 100644
--- a/benchmark/bm_so_concatenate.rb
+++ b/benchmark/bm_so_concatenate.rb
@@ -5,9 +5,9 @@
# based on code from Aristarkh A Zagorodnikov and Dat Nguyen
STUFF = "hello\n"
-i=0
+i = 0
while i<10
- i+=1
+ i += 1
hello = ''
4_000_000.times do |e|
hello << STUFF
diff --git a/benchmark/bm_so_exception.rb b/benchmark/bm_so_exception.rb
index d8b461290c..deb003a594 100644
--- a/benchmark/bm_so_exception.rb
+++ b/benchmark/bm_so_exception.rb
@@ -56,6 +56,6 @@ end
i = 1
max = NUM+1
while i < max
- i+=1
+ i += 1
some_function(i+1)
end
diff --git a/benchmark/bm_so_lists.rb b/benchmark/bm_so_lists.rb
index f8d26797aa..e8f4a2a5f7 100644
--- a/benchmark/bm_so_lists.rb
+++ b/benchmark/bm_so_lists.rb
@@ -40,7 +40,7 @@ end
i = 0
while i<NUM
- i+=1
+ i += 1
result = test_lists()
end
diff --git a/benchmark/bm_so_nsieve_bits.rb b/benchmark/bm_so_nsieve_bits.rb
index 019b8b6382..6f958ee44e 100644
--- a/benchmark/bm_so_nsieve_bits.rb
+++ b/benchmark/bm_so_nsieve_bits.rb
@@ -1,4 +1,5 @@
#!/usr/bin/ruby
+#coding: us-ascii
#
# The Great Computer Language Shootout
# http://shootout.alioth.debian.org/
diff --git a/benchmark/bm_so_random.rb b/benchmark/bm_so_random.rb
index 57f700b863..a66b9e8e63 100644
--- a/benchmark/bm_so_random.rb
+++ b/benchmark/bm_so_random.rb
@@ -12,9 +12,9 @@ end
N = 3_000_000
-i=0
+i = 0
while i<N
- i+=1
+ i +=1
gen_random(100.0)
end
# "%.9f" % gen_random(100.0)
diff --git a/benchmark/bm_so_sieve.rb b/benchmark/bm_so_sieve.rb
index 3f1b138bd1..43dc302648 100644
--- a/benchmark/bm_so_sieve.rb
+++ b/benchmark/bm_so_sieve.rb
@@ -4,12 +4,12 @@ count = i = j = 0
flags0 = Array.new(8192,1)
k = 0
while k < num
- k+=1
+ k += 1
count = 0
flags = flags0.dup
i = 2
while i<8192
- i+=1
+ i += 1
if flags[i]
# remove all multiples of prime: i
j = i*i
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
index 0a97883974..a9f56b15ea 100644
--- a/benchmark/bm_vm1_block.rb
+++ b/benchmark/bm_vm1_block.rb
@@ -2,9 +2,9 @@ def m
yield
end
-i=0
+i = 0
while i<30_000_000 # while loop 1
- i+=1
+ i += 1
m{
}
end
diff --git a/benchmark/bm_vm1_const.rb b/benchmark/bm_vm1_const.rb
index 066916dc31..ac59ebccf1 100644
--- a/benchmark/bm_vm1_const.rb
+++ b/benchmark/bm_vm1_const.rb
@@ -2,7 +2,7 @@ Const = 1
i = 0
while i<30_000_000 # while loop 1
- i+= 1
+ i += 1
j = Const
k = Const
end
diff --git a/benchmark/bm_vm1_ensure.rb b/benchmark/bm_vm1_ensure.rb
index b1948f7621..a1596145f2 100644
--- a/benchmark/bm_vm1_ensure.rb
+++ b/benchmark/bm_vm1_ensure.rb
@@ -1,6 +1,6 @@
-i=0
+i = 0
while i<30_000_000 # benchmark loop 1
- i+=1
+ i += 1
begin
begin
ensure
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
index 3ba56427f4..68a73cf92f 100644
--- a/benchmark/bm_vm1_ivar.rb
+++ b/benchmark/bm_vm1_ivar.rb
@@ -2,7 +2,7 @@
i = 0
while i<30_000_000 # while loop 1
- i+= 1
+ i += 1
j = @a
k = @a
end
diff --git a/benchmark/bm_vm1_ivar_set.rb b/benchmark/bm_vm1_ivar_set.rb
index c8076c6ab6..bd81b06c34 100644
--- a/benchmark/bm_vm1_ivar_set.rb
+++ b/benchmark/bm_vm1_ivar_set.rb
@@ -1,6 +1,6 @@
i = 0
while i<30_000_000 # while loop 1
- i+= 1
+ i += 1
@a = 1
@b = 2
end
diff --git a/benchmark/bm_vm1_length.rb b/benchmark/bm_vm1_length.rb
index ccb773278f..353de3ab0e 100644
--- a/benchmark/bm_vm1_length.rb
+++ b/benchmark/bm_vm1_length.rb
@@ -1,8 +1,8 @@
a = 'abc'
b = [1, 2, 3]
-i=0
+i = 0
while i<30_000_000 # while loop 1
- i+=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
index 9254a0ca9b..bbb4ae07a4 100644
--- a/benchmark/bm_vm1_neq.rb
+++ b/benchmark/bm_vm1_neq.rb
@@ -3,6 +3,6 @@ obj1 = Object.new
obj2 = Object.new
while i<30_000_000 # while loop 1
- i+= 1
+ i += 1
obj1 != obj2
end
diff --git a/benchmark/bm_vm1_not.rb b/benchmark/bm_vm1_not.rb
index ee9d0f3605..b09ecdcc21 100644
--- a/benchmark/bm_vm1_not.rb
+++ b/benchmark/bm_vm1_not.rb
@@ -2,6 +2,6 @@ i = 0
obj = Object.new
while i<30_000_000 # while loop 1
- i+= 1
+ i += 1
!obj
end
diff --git a/benchmark/bm_vm1_rescue.rb b/benchmark/bm_vm1_rescue.rb
index 3af12bb0f3..b0d3e2bdfa 100644
--- a/benchmark/bm_vm1_rescue.rb
+++ b/benchmark/bm_vm1_rescue.rb
@@ -1,6 +1,6 @@
-i=0
+i = 0
while i<30_000_000 # while loop 1
- i+=1
+ i += 1
begin
rescue
end
diff --git a/benchmark/bm_vm1_simplereturn.rb b/benchmark/bm_vm1_simplereturn.rb
index 8e9bcb0129..63f9f21675 100644
--- a/benchmark/bm_vm1_simplereturn.rb
+++ b/benchmark/bm_vm1_simplereturn.rb
@@ -1,9 +1,9 @@
def m
return 1
end
-i=0
+i = 0
while i<30_000_000 # while loop 1
- i+=1
+ i += 1
m
end
diff --git a/benchmark/bm_vm1_swap.rb b/benchmark/bm_vm1_swap.rb
index 611baf6b99..918f8b2112 100644
--- a/benchmark/bm_vm1_swap.rb
+++ b/benchmark/bm_vm1_swap.rb
@@ -1,8 +1,8 @@
a = 1
b = 2
-i=0
+i = 0
while i<30_000_000 # while loop 1
- i+=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
index 7713ae9f25..df9037c83c 100644
--- a/benchmark/bm_vm2_array.rb
+++ b/benchmark/bm_vm2_array.rb
@@ -1,5 +1,5 @@
-i=0
+i = 0
while i<6_000_000 # benchmark loop 2
- i+=1
+ 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
index cd09788a85..adc6e4df0a 100644
--- a/benchmark/bm_vm2_case.rb
+++ b/benchmark/bm_vm2_case.rb
@@ -1,4 +1,4 @@
-i=0
+i = 0
while i<6_000_000 # while loop 2
case :foo
when :bar
@@ -8,7 +8,7 @@ while i<6_000_000 # while loop 2
when :boo
raise
when :foo
- i+=1
+ i += 1
end
end
diff --git a/benchmark/bm_vm2_defined_method.rb b/benchmark/bm_vm2_defined_method.rb
index 06c0d01baa..053ed6c912 100644
--- a/benchmark/bm_vm2_defined_method.rb
+++ b/benchmark/bm_vm2_defined_method.rb
@@ -2,8 +2,8 @@ class Object
define_method(:m){}
end
-i=0
+i = 0
while i<6_000_000 # benchmark loop 2
- i+=1
+ 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
index e72b4661ac..307cfc28ef 100644
--- a/benchmark/bm_vm2_eval.rb
+++ b/benchmark/bm_vm2_eval.rb
@@ -1,6 +1,6 @@
-i=0
+i = 0
while i<6_000_000 # benchmark loop 2
- i+=1
+ i += 1
eval("1")
end
diff --git a/benchmark/bm_vm2_method.rb b/benchmark/bm_vm2_method.rb
index f92e39a73f..a8ccff7138 100644
--- a/benchmark/bm_vm2_method.rb
+++ b/benchmark/bm_vm2_method.rb
@@ -2,8 +2,8 @@ def m
nil
end
-i=0
+i = 0
while i<6_000_000 # benchmark loop 2
- i+=1
+ 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
index 01b1c478cb..7362f738c5 100644
--- a/benchmark/bm_vm2_mutex.rb
+++ b/benchmark/bm_vm2_mutex.rb
@@ -2,8 +2,8 @@ require 'thread'
m = Mutex.new
-i=0
+i = 0
while i<6_000_000 # benchmark loop 2
- i+=1
+ i += 1
m.synchronize{}
end
diff --git a/benchmark/bm_vm2_poly_method.rb b/benchmark/bm_vm2_poly_method.rb
index 921457d817..c82c0e4bce 100644
--- a/benchmark/bm_vm2_poly_method.rb
+++ b/benchmark/bm_vm2_poly_method.rb
@@ -12,9 +12,9 @@ end
o1 = C1.new
o2 = C2.new
-i=0
+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
+ i += 1
end
diff --git a/benchmark/bm_vm2_poly_method_ov.rb b/benchmark/bm_vm2_poly_method_ov.rb
index bf09837dd7..aa5fd1dd38 100644
--- a/benchmark/bm_vm2_poly_method_ov.rb
+++ b/benchmark/bm_vm2_poly_method_ov.rb
@@ -12,9 +12,9 @@ end
o1 = C1.new
o2 = C2.new
-i=0
+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
+ i += 1
end
diff --git a/benchmark/bm_vm2_proc.rb b/benchmark/bm_vm2_proc.rb
index 3f51056bf9..65e5217371 100644
--- a/benchmark/bm_vm2_proc.rb
+++ b/benchmark/bm_vm2_proc.rb
@@ -6,9 +6,9 @@ pr = m{
a = 1
}
-i=0
+i = 0
while i<6_000_000 # benchmark loop 2
- i+=1
+ 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
index 428099e55a..55f9e957a3 100644
--- a/benchmark/bm_vm2_regexp.rb
+++ b/benchmark/bm_vm2_regexp.rb
@@ -1,6 +1,6 @@
-i=0
+i = 0
str = 'xxxhogexxx'
while i<6_000_000 # benchmark loop 2
/hoge/ =~ str
- i+=1
+ i += 1
end
diff --git a/benchmark/bm_vm2_send.rb b/benchmark/bm_vm2_send.rb
index 37c79fb1c3..6a3ab6fdab 100644
--- a/benchmark/bm_vm2_send.rb
+++ b/benchmark/bm_vm2_send.rb
@@ -5,8 +5,8 @@ end
o = C.new
-i=0
+i = 0
while i<6_000_000 # benchmark loop 2
- i+=1
+ i += 1
o.__send__ :m
end
diff --git a/benchmark/bm_vm2_super.rb b/benchmark/bm_vm2_super.rb
index d4f0b647de..afd8579e7b 100644
--- a/benchmark/bm_vm2_super.rb
+++ b/benchmark/bm_vm2_super.rb
@@ -16,5 +16,5 @@ obj = CC.new
i = 0
while i<6_000_000 # benchmark loop 2
obj.m
- i+=1
+ i += 1
end
diff --git a/benchmark/bm_vm2_unif1.rb b/benchmark/bm_vm2_unif1.rb
index 775f4d37e6..1774625942 100644
--- a/benchmark/bm_vm2_unif1.rb
+++ b/benchmark/bm_vm2_unif1.rb
@@ -3,6 +3,6 @@ def m a, b
end
while i<6_000_000 # benchmark loop 2
- i+=1
+ i += 1
m 100, 200
end
diff --git a/benchmark/bm_vm2_zsuper.rb b/benchmark/bm_vm2_zsuper.rb
index 7e90df1822..2a43e62217 100644
--- a/benchmark/bm_vm2_zsuper.rb
+++ b/benchmark/bm_vm2_zsuper.rb
@@ -16,5 +16,5 @@ obj = CC.new
while i<6_000_000 # benchmark loop 2
obj.m 10
- i+=1
+ 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
index a25c372f06..9661323cd2 100644
--- a/benchmark/bm_vm3_clearmethodcache.rb
+++ b/benchmark/bm_vm3_clearmethodcache.rb
@@ -1,6 +1,6 @@
-i=0
+i = 0
while i<200_000
- i+=1
+ i += 1
Class.new{
def m; end
diff --git a/benchmark/bm_vm_thread_create_join.rb b/benchmark/bm_vm_thread_create_join.rb
index 325a66d587..393cd45df9 100644
--- a/benchmark/bm_vm_thread_create_join.rb
+++ b/benchmark/bm_vm_thread_create_join.rb
@@ -1,6 +1,6 @@
-i=0
+i = 0
while i<100_000 # benchmark loop 3
- i+=1
+ i += 1
Thread.new{
}.join
end
diff --git a/benchmark/bm_vm_thread_mutex1.rb b/benchmark/bm_vm_thread_mutex1.rb
index 588506e87c..5c9f85dfb7 100644
--- a/benchmark/bm_vm_thread_mutex1.rb
+++ b/benchmark/bm_vm_thread_mutex1.rb
@@ -7,9 +7,9 @@ max = 2000
lmax = max * max
(1..1).map{
Thread.new{
- i=0
+ i = 0
while i<lmax
- i+=1
+ i += 1
m.synchronize{
r += 1
}
diff --git a/benchmark/bm_vm_thread_mutex2.rb b/benchmark/bm_vm_thread_mutex2.rb
index d700b146d4..10de59054f 100644
--- a/benchmark/bm_vm_thread_mutex2.rb
+++ b/benchmark/bm_vm_thread_mutex2.rb
@@ -7,9 +7,9 @@ max = 2000
lmax = (max * max)/2
(1..2).map{
Thread.new{
- i=0
+ i = 0
while i<lmax
- i+=1
+ i += 1
m.synchronize{
r += 1
}
diff --git a/benchmark/bm_vm_thread_mutex3.rb b/benchmark/bm_vm_thread_mutex3.rb
index f502b6ac84..7f9a44b39d 100644
--- a/benchmark/bm_vm_thread_mutex3.rb
+++ b/benchmark/bm_vm_thread_mutex3.rb
@@ -6,9 +6,9 @@ r = 0
max = 2000
(1..max).map{
Thread.new{
- i=0
+ i = 0
while i<max
- i+=1
+ i += 1
m.synchronize{
r += 1
}
diff --git a/benchmark/bm_vm_thread_pass_flood.rb b/benchmark/bm_vm_thread_pass_flood.rb
index 56b5b0a956..27157d1a6f 100644
--- a/benchmark/bm_vm_thread_pass_flood.rb
+++ b/benchmark/bm_vm_thread_pass_flood.rb
@@ -2,7 +2,7 @@
Thread.new{loop{Thread.pass}}
}
-i=0
+i = 0
while i<10000
i += 1
end
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/bmx_temp.rb b/benchmark/bmx_temp.rb
deleted file mode 100644
index 0b4b219ca2..0000000000
--- a/benchmark/bmx_temp.rb
+++ /dev/null
@@ -1,9 +0,0 @@
-def m
- nil
-end
-
-i=0
-while i<800000 # benchmark loop 2
- i+=1
- m; m; m; m; m; m; m; m;
-end
diff --git a/benchmark/driver.rb b/benchmark/driver.rb
index 7dab292a15..695dc41aff 100644
--- a/benchmark/driver.rb
+++ b/benchmark/driver.rb
@@ -60,22 +60,25 @@ class BenchmarkDriver
if /(.+)::(.+)/ =~ e
# ex) ruby-a::/path/to/ruby-a
- v = $1.strip
- e = $2
+ label = $1.strip
+ path = $2
+ version = `#{path} -v`.chomp
else
- v = `#{e} -v`.chomp
- v.sub!(/ patchlevel \d+/, '')
+ path = e
+ version = label = `#{path} -v`.chomp
end
- [e, v]
+ [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, ...]]], ...]
@@ -84,14 +87,33 @@ class BenchmarkDriver
if @verbose
@start_time = Time.now
message @start_time
- @execs.each_with_index{|(e, v), i|
- message "target #{i}: #{v}"
+ @execs.each_with_index{|(path, label, version), i|
+ message "target #{i}: " + (label == version ? "#{label}" : "#{label} (#{version})") + " at \"#{path}\""
}
end
end
- def average results
- results.inject(:+) / results.length
+ 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
@@ -103,7 +125,7 @@ class BenchmarkDriver
message
message PP.pp(@results, "", 79)
message
- message "Elapesed time: #{Time.now - @start_time} (sec)"
+ message "Elapsed time: #{Time.now - @start_time} (sec)"
end
output '-----------------------------------------------------------'
@@ -113,50 +135,49 @@ class BenchmarkDriver
output "minimum results in each #{@repeat} measurements."
end
- difference = "\taverage difference" if @execs.length == 2
- total_difference = 0
-
- output "name\t#{@execs.map{|(e, v)| v}.join("\t")}#{difference}"
+ output "Execution time (sec)"
+ output "name\t#{@execs.map{|(_, v)| v}.join("\t")}"
@results.each{|v, result|
rets = []
- s = nil
- result.each_with_index{|e, i|
- r = e.min
- case v
- when /^vm1_/
- if @loop_wl1
- r -= @loop_wl1[i]
- s = '*'
- end
- when /^vm2_/
- if @loop_wl2
- r -= @loop_wl2[i]
- s = '*'
- end
- end
+ s = adjusted_results(v, result){|r|
rets << sprintf("%.3f", r)
}
-
- if difference
- diff = average(result.last) - average(result.first)
- total_difference += diff
- rets << sprintf("%.3f", diff)
- end
-
output "#{v}#{s}\t#{rets.join("\t")}"
}
- if difference and @verbose
- output '-----------------------------------------------------------'
- output "average total difference is #{total_difference}"
+ 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 = {}
- vm1 = vm2 = wl1 = wl2 = false
@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
@@ -218,31 +239,35 @@ class BenchmarkDriver
end
def measure executable, file
- cmd = "#{executable} #{file}"
+ cmd = "#{executable} #{@ruby_arg} #{file}"
+
m = Benchmark.measure{
`#{cmd}`
}
if $? != 0
- raise "\`#{cmd}\' exited with abnormal status (#{$?})"
+ output "\`#{cmd}\' exited with abnormal status (#{$?})"
+ 0
+ else
+ m.real
end
-
- m.real
end
end
if __FILE__ == $0
opt = {
- :execs => ['ruby'],
- :dir => './',
+ :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. (exec1; exec2; exec3, ...)"){|e|
- opt[:execs] = e.split(/;/)
+ "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
@@ -250,11 +275,17 @@ if __FILE__ == $0
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"){|o|
- opt[:output] = o
+ 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
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