Mon Jul 7 02:18:42 2014 Koichi Sasada * string.c (fstr_update_callback): do not use rb_gc_resurrect() any more. Make new frozen string and replace with garbage frozen string. * common.mk: use gc.h from string.c. Mon Jul 7 00:36:13 2014 Koichi Sasada * gc.c: rename is_dying_object() to is_garbage_object(). * gc.h: rb_objspace_garbage_object_p() as an exported function. Sun Jul 6 21:30:35 2014 Koichi Sasada * gc.c (is_dying_object): fix missed condition. * gc.c (is_live_object): move frequent path first. Sun Jul 6 21:00:11 2014 Koichi Sasada * gc.c: rename is_dead_object() to is_dying_object(). This function is not opposite against is_live_object() because is_dying_object() does *not* check object type. * gc.c (is_dying_object): change condition. * gc.c (is_live_object): use T_NONE instead of 0. * gc.c (rb_objspace_dying_object_p): added. Sun Jul 6 13:37:27 2014 Koichi Sasada * gc.c (rb_gc_register_mark_object): change data structure. From single array, to array of arrays. Each array only has 1024 entries. * vm.c (Init_vm_objects): change default capa from 1 to 128. Sat Jul 5 05:05:53 2014 Vipul A M * lib/irb/locale.rb (IRB::Locale#modifier): fix wrong attr_reader `modifieer` => `modifier` from irb locale. [fix GH-656] Fri Jul 4 20:45:26 2014 Koichi Sasada * parse.y: rename symbols::sym_id to symbols::str_id. This table is not {Symbol => ID} table, but {String => ID} table. * parse.y (lookup_sym_id): also rename lookup_sym_id() to lookup_str_id() because key is not Symbol, but String. Fri Jul 4 18:42:04 2014 Koichi Sasada * parse.y (must_be_dynamic_symbol): fix missed-condition. Fri Jul 4 18:38:11 2014 Koichi Sasada * parse.y (rb_pin_dynamic_symbol): should be `static' function. Fri Jul 4 18:03:35 2014 Koichi Sasada * parse.y (must_be_dynamic_symbol): refactoring. * add `inline'. * use UNLIKELY(). * check only DYNAMIC_SYM_P(), otherwise it is a bug. * lookup_id_str() is not needed in second condition. Fri Jul 4 11:53:56 2014 Koichi Sasada * parse.y: remove unused code surrounded by `#if ENABLE_SELECTOR_NAMESPACE' Fri Jul 4 10:08:24 2014 SHIBATA Hiroshi * test/rubygems/test_gem_package.rb: avoid tempfile leaks using Tempfile#close! * test/rubygems/test_gem_request_set.rb: ditto. * test/rubygems/test_gem_request_set_gem_dependency_api.rb: ditto. Fri Jul 4 04:42:05 2014 NARUSE, Yui * lib/net/http/response.rb (Net::Inflater#inflate_adapter): prevent automatic encoding conversion. Fri Jul 4 04:39:52 2014 NARUSE, Yui * lib/net/http/response.rb (Net::HTTPResponse.each_response_header): raise first exception even if inflate_body_io.finish raises error. when begin block raises error, finish usually raises error too. Fri Jul 4 02:56:04 2014 NARUSE, Yui * lib/uri/generic.rb (URI::Generic#query=): remove validation, just escape. [Feature #2542] * lib/uri/generic.rb (URI::Generic#fragment=): ditto. * lib/uri/generic.rb (URI::Generic#check_query): removed. * lib/uri/generic.rb (URI::Generic#set_query): ditto. * lib/uri/generic.rb (URI::Generic#check_fragment): ditto. * lib/uri/generic.rb (URI::Generic#set_fragment): ditto. Thu Jul 3 12:40:22 2014 Nobuyoshi Nakada * configure.in (--with-static-linked-ext): fix for extensions to be linked statically. * Makefile.in, common.mk: use ENCSTATIC for enc directory. * ext/extmk.rb: supply dependencies of statically linked extension libraries. Wed Jul 2 15:45:49 2014 Koichi Sasada * gc.c (gc_heap_lazy_sweep): simplify logic. * gc.c (gc_page_sweep): return TRUE if empty slots are available. Wed Jul 2 09:48:42 2014 SHIBATA Hiroshi * logger.rb: removed unmaintained code. [Feature #9860][ruby-core:62724] * test/logger/test_application.rb: ditto. Wed Jul 2 03:20:00 2014 Charlie Somerville * node.c (dump_node): handle nd_value == (NODE *)-1 to mean this keyword argument is required Wed Jul 2 02:57:27 2014 Nobuyoshi Nakada * vm.c (rb_vm_env_local_variables): returns array of local variable name symbols in the environment by envval. * proc.c (bind_local_variables): use rb_vm_env_local_variables. Wed Jul 2 02:23:52 2014 Nobuyoshi Nakada * proc.c (bind_receiver): new method to return the bound receiver of the binding object. [ruby-dev:47613] [Feature #8779] Wed Jul 2 02:14:37 2014 Nobuyoshi Nakada * proc.c (bind_local_variables): update env from envval for each iterations. [ruby-dev:48351] [Bug #10001] Tue Jul 1 23:46:34 2014 NAKAMURA Usaku * NEWS: [DOC] mention about Binding#local_variables, introduced at r44392 (see [Feature #8773]). Tue Jul 1 23:30:51 2014 CHIKANAGA Tomoyuki * numeric.c (num_step_scan_args): table argument of rb_get_kwargs() is array of IDs, not Symbols. [ruby-dev:48353] [Bug #9811] Tue Jul 1 16:18:22 2014 Akinori MUSHA * ext/digest/lib/digest/hmac.rb, test/digest/test_digest_hmac.rb: Digest::HMAC is finally removed as previously noticed. [fix GH-648] Tue Jul 1 11:13:43 2014 SHIBATA Hiroshi * ext/date/lib/date/format.rb: removed empty file by @vipulnsward. * ext/date/lib/date.rb: removed needless require. [fix GH-647] Mon Jun 30 16:42:52 2014 Koichi Sasada * gc.c (gc_stat_internal): return size_t value instead of VALUE and remove `out' parameter. * gc.c: add braces for `if' statements. * gc.c (gc_stat_internal): fix comment. Mon Jun 30 15:07:34 2014 Koichi Sasada * gc.c: support `USE_RGENGC == 0'. * test/ruby/test_gc.rb: ditto. Mon Jun 30 11:36:04 2014 SHIBATA Hiroshi * file.c: [DOC] document File.join returns a string. Contributed by @dapplebeforedawn. [fix GH-646] Sat Jun 28 22:57:01 2014 NAKAMURA Usaku * ext/pathname/pathname.c (path_birthtime): Windows support. see [Feature #9857] [ruby-dev:48339] Sat Jun 28 22:44:16 2014 Tanaka Akira * ext/pathname/pathname.c (path_birthtime): New method, Pathname#birthtime. Proposed by Kazuhiro NISHIYAMA. [ruby-dev:48232] [Feature #9857] Sat Jun 28 20:29:03 2014 Simon Baird * ext/bigdecimal/lib/bigdecimal/math.rb (BigMath#PI): change error message about zero or negative precision for clarity and consistency with other methods. [GH-644] Sat Jun 28 15:32:57 2014 Tanaka Akira * lib/webrick/utils.rb (create_listeners): Close socket objects. Sat Jun 28 13:58:48 2014 Nobuyoshi Nakada * eval.c (setup_exception): should not overwrite SystemStackError backtrace if set already. [ruby-core:63377] [Feature #6216] * eval.c (setup_exception): get rid of method calls before raising stack overflow, not to cause stack overflow again. * defs/id.def: add IDs for backtraces. Sat Jun 28 04:08:22 2014 NARUSE, Yui * lib/uri/mailto.rb: update to latest specs, RFC 6068 and HTML5. * lib/uri/mailto.rb (HEADER_PATTERN): removed. * lib/uri/mailto.rb (HEADER_REGEXP): use RFC 6068 hfields. * lib/uri/mailto.rb (EMAIL_REGEXP): use HTML5 email regexp. * lib/uri/mailto.rb (URI::MailTo.build): support multiple to addresses. * lib/uri/mailto.rb (URI::MailTo#initialize): Support multiple to addresses. Don't check with regexp, only split. * lib/uri/mailto.rb (URI::MailTo#check_to): verify by matching URI path-rootless and HTML5 email regexp with unescaped one. * lib/uri/mailto.rb (URI::MailTo#check_headers): verify only by HEADER_REGEXP. * lib/uri/mailto.rb (URI::MailTo#set_headers): don't check by HEADER_REGEXP, only split it. Sat Jun 28 00:35:10 2014 Lauri Tirkkonen * tool/mkconfig.rb: fix empty RbConfig::CONFIG["prefix"] when configured --with-rubyarchprefix, remove prefix from rubyarchdir after expansion for the case it does not start with '$(prefix)'. [fix GH-643] Fri Jun 27 15:20:12 2014 SHIBATA Hiroshi * lib/rubygems/test_case.rb: rescue Gem::LoadError in Gem::TestCase. because it's effected by removing minitest from stdlib. Fri Jun 27 12:29:37 2014 SHIBATA Hiroshi * lib/rubygems/specification.rb: fixed broken condition caused by removing YAML::ENGINE. * lib/rubygems/package/old.rb: ditto. Fri Jun 27 05:33:26 2014 Nobuyoshi Nakada * hash.c (env_shift): fix memory leak on Windows, free environment strings block always. [ruby-dev:48332] [Bug #9983] Fri Jun 27 03:41:53 2014 Nobuyoshi Nakada * sprintf.c (GETASTER): should not use the numbered argument to be formatted, raise ArgumentError instead. [ruby-dev:48330] [Bug #9982] Thu Jun 26 18:18:28 2014 SHIBATA Hiroshi * test/with_different_ofs.rb: move into test library directory. * test/csv/base.rb: fix require path for with_different_ofs.rb. * test/digest/test_digest_extend.rb: ditto. Thu Jun 26 18:06:50 2014 SHIBATA Hiroshi * test/profile_test_all.rb: move into test library directory. * test/runner.rb: fix require path for profile_test_all.rb. Thu Jun 26 17:57:57 2014 SHIBATA Hiroshi * lib/webrick/httpproxy.rb: remove useless assigned variables. * lib/webrick/httpservlet/cgihandler.rb: ditto. * lib/webrick/httpservlet/erbhandler.rb: ditto. * lib/webrick/server.rb: ditto. Thu Jun 26 08:28:01 2014 Nobuyoshi Nakada * hash.c (env_select): fix memory leak and crash on Windows, make keys array first instead of iterating on environ directly. [ruby-dev:48325] [Bug #9978] Thu Jun 26 02:45:04 2014 Nobuyoshi Nakada * eval_error.c (error_print): put a newline after an anonymous exception class name. Wed Jun 25 22:31:32 2014 Nobuyoshi Nakada * hash.c (ruby_setenv): fix memory leak on Windows, free environment strings block after check for the size. [ruby-dev:48323] [Bug #9977] Wed Jun 25 15:44:12 2014 Eric Wong * ccan/container_of/container_of.h (container_off_var): avoid warning with -Wcast-qual [ccan ba5ad771af4aa9e085498de6c3c665c52694460f (Rusty Russell)] Wed Jun 25 10:19:59 2014 Nobuyoshi Nakada * hash.c (env_aset, env_has_key, env_assoc, env_has_value), (env_rassoc, env_key): prohibit tainted strings if $SAFE is non-zero. [Bug #9976] Tue Jun 24 14:46:17 2014 SHIBATA Hiroshi * lib/gserver.rb: remove redundant use of to_s in interpolation. * lib/logger.rb: ditto. * lib/optparse.rb: ditto. * lib/rbconfig/obsolete.rb: ditto. * lib/resolv.rb: ditto. * lib/webrick/httpresponse.rb: ditto. Tue Jun 24 10:50:06 2014 Nobuyoshi Nakada * hash.c (env_path_str_new): make PATH environment variable string, to be frozen. Tue Jun 24 10:40:52 2014 SHIBATA Hiroshi * tool/make-snapshot: download bundle gems when package making. [Feature #9852][ruby-core:62676] * gems/bundled_gems: listed bundled gems for Ruby 2.2. Tue Jun 24 10:20:35 2014 SHIBATA Hiroshi * tool/downloader.rb: make Downloader class to general download utility. It can be used without config.guess and config.sub. * tool/get-config_files: ditto. * tool/make-snapshot: ditto. Tue Jun 24 06:17:52 2014 NARUSE, Yui * eval.c (setup_exception): "mesg == sysstack_error" and sysstack_error_p(mesg) are duplicated. r46502 seems to want to use latter. Tue Jun 24 06:15:36 2014 Nobuyoshi Nakada * ext/tk/tcltklib.c: fix format specifiers for VALUE and Tcl_Interp*. [ruby-core:63283] [Bug #9972] Tue Jun 24 05:40:41 2014 KOSAKI Motohiro * nacl/nacl-config.rb: Use File.exist? instead of executable? for irt_core. Recent nacl_sdk has non-executable irt_core. Patch by Shinichiro Hamaji. [Fixes GH-529] https://github.com/ruby/ruby/pull/529 Mon Jun 23 18:44:45 2014 SHIBATA Hiroshi * tool/config_files.rb: rename class ConfigFiles to Downloader. * tool/get-config_files: ditto. * tool/make-snapshot: ditto. Mon Jun 23 18:03:13 2014 SHIBATA Hiroshi * tool/rbinstall.rb: support to install bundle gems. Mon Jun 23 17:33:11 2014 Akinori MUSHA * lib/net/imap.rb (Net::IMAP#fetch): [DOC] Describe how a range in +set+ is interpreted, and mention -1 which can be used for '*'. Mon Jun 23 16:22:50 2014 URABE Shyouhei * include/ruby/ruby.h (struct RHash): no longer. [Feature #9889] * include/ruby/ruby.h (RHASH): ditto. * include/ruby/ruby.h (RHASH_ITER_LEV): deprecated. Will be deleted later. * include/ruby/ruby.h (RHASH_IFNONE): ditto. * internal.h (struct RHash): moved here. * internal.h (RHASH): ditto. * hash.c (rb_hash_iter_lev): do not use this. * hash.c (rb_hash_ifnone): ditto. Mon Jun 23 13:30:11 2014 URABE Shyouhei * include/ruby/ruby.h (struct RComplex): no longer. [Feature #9888] * include/ruby/ruby.h (RCOMPLEX): ditto. * include/ruby/ruby.h (RCOMPLEX_SET_REAL): deprecated. Will be deleted later. * include/ruby/ruby.h (RCOMPLEX_SET_IMAG): ditto. * internal.h (struct RFloat): moved here. * internal.h (RCOMPLEX): ditto. * complex.c (rb_complex_set_real): do not use this. * complex.c (rb_complex_set_imag): ditto. Mon Jun 23 13:10:15 2014 URABE Shyouhei * include/ruby/ruby.h (struct RFloat): no longer. [Feature #9863] * include/ruby/ruby.h (RFLOAT): ditto. * internal.h (struct RFloat): moved here. * internal.h (RFLOAT): ditto. Mon Jun 23 12:01:42 2014 NARUSE, Yui * lib/uri/generic.rb (check_port): allow strings for port= as described in rdoc. * lib/uri/rfc3986_parser.rb (regexp): implementation detail of above. Mon Jun 23 11:35:01 2014 Nobuyoshi Nakada * eval.c (setup_exception): set backtrace in system stack error other than the pre-allocated sysstack_error. [Feature #6216] * proc.c (Init_Proc): freeze the pre-allocated sysstack_error. * vm_insnhelper.c (vm_stackoverflow): raise new instance for each times without calling any methods to keep the backtrace with no further stack overflow. * object.c (rb_obj_copy_ivar): extract function to copy instance variables only for T_OBJECT from init_copy. Mon Jun 23 11:11:16 2014 Nobuyoshi Nakada * signal.c (check_stack_overflow): drop the last tag too close to the fault page, to get rid of stack overflow deadlock. [Bug #9971] Sun Jun 22 09:11:15 2014 NARUSE, Yui * lib/uri/generic.rb: remove registry. 'registry' is not used and RFC3986 doesn't use it. Sun Jun 22 09:10:09 2014 NARUSE, Yui * lib/uri/rfc3986_parser.rb: raise exception when given a URI string has non ASCII in order to keep the regexp compiled for US-ASCII. Sun Jun 22 09:05:42 2014 NARUSE, Yui * lib/uri/common.rb (URI::REGEXP): move to lib/uri/rfc2396_parser.rb. * lib/uri/common.rb (URI::Parser): ditto. * lib/uri/common.rb (URI.split): use RFC3986_Parser. [Feature #2542] * lib/uri/common.rb (URI.parse): ditto. * lib/uri/common.rb (URI.join): ditto. * lib/uri/common.rb (URI.extract): deprecated. * lib/uri/common.rb (URI.regexp): ditto. * lib/uri/rfc2396_parser.rb: added. * lib/uri/rfc3986_parser.rb: added. Sun Jun 22 09:04:50 2014 NARUSE, Yui * lib/uri/mailto.rb (initialize): as previous commit, fix arg_check Sun Jun 22 09:01:47 2014 NARUSE, Yui * lib/uri/ftp.rb (initialize): argument checking flag is arg_check, but arg[-1] is fragment. * lib/uri/ftp.rb (initialize): explicitly specify arguments. Sat Jun 21 12:50:32 2014 Nobuyoshi Nakada * ext/fiddle/extconf.rb: supply 0 to fill RUBY_LIBFFI_MODVERSION with 3-digit. libffi 3.1 returns just 2-digit. [ruby-core:62920] [Bug #9897] Sat Jun 21 07:06:13 2014 Nobuyoshi Nakada * encoding.c (enc_find): [DOC] never accepted a symbol. [ruby-dev:48308] [Bug #9966] Fri Jun 20 17:15:43 2014 Koichi Sasada * test/lib/tracepointchecker.rb: add to check TracePoint healthiness. * test/runner.rb: use it. Fri Jun 20 07:26:44 2014 Koichi Sasada * test/ruby/test_settracefunc.rb: rewrite tests with assert_consistent_call_return(). assert_consistent_call_return() is also modified to check consistency. Fri Jun 20 07:07:28 2014 Koichi Sasada * compile.c (rb_iseq_compile_node): put start label of block after trace (b_call). [Bug #9964] * test/ruby/test_settracefunc.rb: add a test. added assert_consistent_call_return() method check call/return consistency. Fri Jun 20 05:26:27 2014 Koichi Sasada * vm_eval.c (rb_catch_protect): fix same problem of [Bug #9961]. * vm_eval.c (rb_iterate): ditto. Thu Jun 19 21:41:30 2014 Koichi Sasada * vm.c (rb_vm_rewind_cfp): add new function to rewind specified cfp with invoking RUBY_EVENT_C_RETURN. [Bug #9961] * vm_core.h: ditto. * eval.c (rb_protect): use it. * eval.c (rb_rescue2): ditto. * vm_eval.c (rb_iterate): ditto. * test/ruby/test_settracefunc.rb: add a test. * vm_core.h (rb_vm_rewind_cfp): add the prototype declaration. Thu Jun 19 19:47:21 2014 Koichi Sasada * vm.c (invoke_block_from_c): move call/return event timing for bmethod. It can invoke inconsistent call event if this call raises argument error. [Bug #9959] * vm_insnhelper.c (vm_call_bmethod_body): ditto. * test/ruby/test_settracefunc.rb: add a test. Thu Jun 19 18:14:47 2014 Koichi Sasada * vm_core.h: add VM_FRAME_MAGIC_RESCUE to recognize normal block or rescue clause. * vm.c (vm_exec): use VM_FRAME_MAGIC_RESCUE on at rescue/ensure. * test/ruby/test_settracefunc.rb: should not invoke b_return at rescue clause. [Bug #9957] * vm_dump.c (control_frame_dump): check VM_FRAME_MAGIC_RESCUE. * vm_dump.c (vm_stack_dump_each): ditto. Thu Jun 19 13:39:11 2014 Arne Brasseur * proc.c (rb_method_curry): Implement Method#curry, which delegates to to_proc.curry. [ruby-core:62212] [Feature #9783] Tue Jun 17 16:41:49 2014 Shugo Maeda * lib/net/ftp.rb (gets, readline): read lines without LF properly. [ruby-core:63205] [Bug #9949] * test/net/ftp/test_buffered_socket.rb: related test. Tue Jun 17 12:35:24 2014 Nobuyoshi Nakada * eval.c (extract_raise_opts): pass unknown options to the exception, so that exception class can receive a hash argument. [ruby-core:63203] [Feature #8257] Tue Jun 17 12:24:57 2014 Koichi Sasada * gc.c (obj_memsize_of): memsize_of(T_ZOMBIE) returns 0, not a rb_bug. ObjectSpace.count_objects_size() uses memsize_of(T_ZOMBIE). This bug introduced at r46348. Mon Jun 16 19:00:11 2014 Koichi Sasada * test/runner.rb: failure message should be passed as an argument. Mon Jun 16 18:42:57 2014 Koichi Sasada * test/runner.rb: capture TracePoint stat before setup and compare it after teardown. Mon Jun 16 14:33:56 2014 Nobuyoshi Nakada * process.c (open): use UTF-8 version function to support non-ascii path properly. [ruby-core:63185] [Bug #9946] Sat Jun 14 10:54:08 2014 Nobuyoshi Nakada * array.c (rcombinate0): remove recursion, by looping with indexes stored in `p`. * array.c (rpermute0): remove recursion, by looping with indexes stored in `p`. * array.c (permute0): remove recursion, by looping with indexes stored in `p`. [ruby-core:63103] [Bug #9932] Sat Jun 14 10:52:15 2014 Nobuyoshi Nakada * string.c (rb_str_resize): update capa only when buffer get reallocated. http://d.hatena.ne.jp/nagachika/20140613/ruby_trunk_changes_46413_46420#r46413 Sat Jun 14 08:28:59 2014 Zachary Scott * man/rake.1: [DOC] Update links for Rake, patch by @hsbt [Bug #9904] [Fixes GH-628] https://github.com/ruby/ruby/pull/628 Fri Jun 13 17:58:58 2014 Koichi Sasada * vm_trace.c: add new method TracePoint.stat to debug TracePoint mechanism. Ruby users should not use this method. So I don't note this method in the NEWS file. * test/runner.rb: detect zombie active TracePoints with TracePoint.stat. Fri Jun 13 17:46:31 2014 Koichi Sasada * vm_trace.c: clear and restore recursive checking thread local data to avoid unexpected throw from TracePoint. [Bug #9940] * test/ruby/test_settracefunc.rb: add a test. * thread.c: added * rb_threadptr_reset_recursive_data(rb_thread_t *th); * rb_threadptr_restore_recursive_data(rb_thread_t *th, VALUE old); * vm_core.h: ditto. Fri Jun 13 17:33:14 2014 Nobuyoshi Nakada * array.c (rb_ary_combination): iterate on a shared copy, and use array of indexes instead of array of chosen objects. [ruby-core:63149] [Bug #9939] * array.c (yield_indexed_values): extract from permute0(), rpermute0(), and rcombinate0(). Fri Jun 13 13:42:58 2014 Nobuyoshi Nakada * array.c (rb_ary_permutation): `p` is the array of size `r`, as commented at permute0(). since `n >= r` here, buffer overflow never happened, just reduce unnecessary allocation though. Thu Jun 12 20:32:28 2014 Nobuyoshi Nakada * string.c (rb_str_resize): should consider the capacity instead of the old length, as pointed out by nagachika. Thu Jun 12 18:31:01 2014 SHIBATA Hiroshi * lib/net/http/responses.rb: added Net::HTTPPermanentRedirect(308) Contributed by @yorkie [fix GH-638] Thu Jun 12 13:27:38 2014 Nobuyoshi Nakada * string.c (rb_str_freeze): shrink the buffer before freezing, as pointed out by Eric Wong at [ruby-core:63119]. Thu Jun 12 13:09:03 2014 Nobuyoshi Nakada * file.c (expand_path): shrink expanded path which no longer needs rooms to append. [ruby-core:63114] [Bug #9934] Wed Jun 11 17:37:48 2014 Nobuyoshi Nakada * configure.in (rb_cv_scalar_pthread_t): pthread_t is not required to be a scalar type. * thread.c (fill_thread_id_string, thread_id_str): dump pthread_t in hexadecimal form if it is not a scalar type, assume it can be represented in a pointer form otherwise. based on the patch by Rei Odaira at [ruby-core:62867]. [ruby-core:62857] [Bug #9884] * thread_pthread.c (Init_native_thread, thread_start_func_1), (native_thread_create): set thread_id_str if needed. * vm_core.h (rb_thread_t): add thread_id_string if needed. Wed Jun 11 01:53:22 2014 Koichi Sasada * gc.c: invoke GC before memory allocation (xmalloc/xrealloc) when GC.stress = true. [Bug #9859] * test/ruby/test_gc.rb: add a test. Tue Jun 10 13:20:14 2014 Takeyuki FUJIOKA * lib/cgi/core.rb: Provide a mechanism to specify the max_multipart_length of multipart data. [Feature #8370] patch by Leif Eriksen Tue Jun 10 10:57:07 2014 Nobuyoshi Nakada * lib/csv.rb (CSV#<<): honor explicitly given encoding. based on the patch by DAISUKE TANIWAKI at [ruby-core:62113]. [Bug #9766] Mon Jun 9 20:40:48 2014 Koichi Sasada * gc.c: change full GC timing to keep lower memory usage. Extend heap only at (1) after major GC or (2) after several (two times, at current) minor GC Details in https://bugs.ruby-lang.org/issues/9607#note-9 [Bug #9607] Mon Jun 9 16:01:41 2014 Masahiro Ide * gc.c (gcdebug_sentinel): fix typo, "sentinel" not "sential". [fix GH-634] Mon Jun 9 00:04:25 2014 Nobuyoshi Nakada * configure.in (posix_fadvise): disable use of posix_fadvise itself on 32-bit AIX. [ruby-core:62968] [Bug #9914] Sun Jun 8 23:28:00 2014 * io.c (rb_io_advise): AIX currently does not support a 32-bit call to posix_fadvise() if _LARGE_FILES is defined. Patch by Rei Odaira. [ruby-core:62968] [Bug #9914] Sun Jun 8 04:52:40 2014 Jun Hiroe * string.c (rb_str_slice_bang): [DOC] update return value against a fixnum, which has changed because of M17N. [fix GH-631] Sat Jun 7 22:13:42 2014 Benoit Daloze * numeric.c (do_coerce): Add a warning when an exception is raised or an invalid value is returned in #coerce called by numeric comparison operators and the exception thrown by the caller has no information on the failure. In the next release such exception should not be rescued or should be the cause of the caller exception. nil is accepted as the "no possible coercion" return value. See #7688. * test/ruby/test_numeric.rb: Add corresponding test. Sat Jun 7 18:15:33 2014 Benoit Daloze * numeric.c (bit_coerce): remove constant parameter `err' (always TRUE) of bit_coerce(). Sat Jun 7 16:01:57 2014 Yutaka Kanemoto * cont.c (rb_fiber_struct): keep context.uc_stack.ss_sp and context.uc_stack.ss_size for later use. Patch by Rei Odaira. [ruby-core:62945] [Bug #9905] Sat Jun 7 12:51:51 2014 Nobuyoshi Nakada * io.c (read_all): truncate the buffer before appending read data, instead of truncating before reading. [ruby-core:55951] [Bug #8625] Sat Jun 7 12:28:53 2014 Nobuyoshi Nakada * ext/digest/digest.c (rb_digest_instance_equal): no need to call `to_s` twice. [Bug #9913] Sat Jun 7 11:35:01 2014 Tanaka Akira * object.c (rb_mod_initialize_clone): Override Kernel#initialize_clone to avoid an exception on Class.new.freeze.clone.to_s. Reported by Andrew Grimm. [ruby-core:41858] [Bug #5828] Sat Jun 7 06:03:11 2014 Benoit Daloze * ext/digest/digest.c (rb_digest_instance_equal): fix #== for non-string arguments. [ruby-core:62967] [Bug #9913] * test/digest/test_digest.rb: add test for above. Fri Jun 6 22:19:26 2014 Nobuyoshi Nakada * compile.c (private_recv_p): check by node type, instead of a magic number. * node.h (NODE_PRIVATE_RECV), parse.y (attrset_gen): remove Fri Jun 6 17:07:08 2014 Nobuyoshi Nakada * compile.c (iseq_compile_each), parse.y (new_attr_op_assign_gen): allow op assign to a private attribute. [ruby-core:62949] [Bug #9907] Fri Jun 6 13:39:32 2014 Nobuyoshi Nakada * io.c (io_setstrbuf, io_read): should not shorten the given buffer until read succeeds. [ruby-core:55951] [Bug #8625] Fri Jun 6 07:41:41 2014 Aaron Patterson * ext/psych/lib/psych/visitors/yaml_tree.rb: dump empty symbols with a tag so that they can be parsed on input. [Bug #9873] [ruby-core:62825] * test/psych/test_symbol.rb: test for change Thu Jun 5 16:08:39 2014 Koichi Sasada * gc.c (gc_page_sweep): refactoring. * gc.c (gc_page_sweep): should not set, but add final_slots into sweep_page->final_slots. Thu Jun 5 14:36:24 2014 Nobuyoshi Nakada * configure.in (jemalloc): check for the header regardless drop-in libjemalloc is found, for `malloc_conf` declaration. * version.c (ruby_show_version): show `malloc_conf` if set. [Feature #9113] * configure.in (with-jemalloc): also check for header, for ABIs which JEMALLOC_MANGLE is needed, i.e., Mach-O and PE-COFF platforms. [ruby-core:62939] [Feature #9113] * include/ruby/missing.h: include alternative malloc header to replace memory management functions. * dln.c, io.c, parse.y, st.c: undef malloc family before re-definition to suppress warnings. Thu Jun 5 12:52:18 2014 SHIBATA Hiroshi * man/ruby.1: remove rubyforge entry. Thu Jun 5 12:45:32 2014 SHIBATA Hiroshi * misc/README: use github link instead of rubyforge. Thu Jun 5 10:03:29 2014 Koichi Sasada * gc.c (obj_free): check also FL_PROMOTED bit by RVALUE_OLD_P(). Thu Jun 5 03:45:28 2014 Eric Wong * configure.in: add --with-jemalloc option [ruby-core:62912] Wed Jun 4 22:28:14 2014 Koichi Sasada * gc.c: introduce RZombie to manage zombie objects. Rewrite finalizing logics with this type. * gc.c (gc_verify_internal_consistency): verify zombie (finalizing) objects count. Wed Jun 4 22:09:53 2014 Nobuyoshi Nakada * re.c (match_aref, rb_reg_regsub): consider encoding of captured names, encoding-incompatible should not match. [ruby-dev:48278] [Bug #9903] Wed Jun 4 21:23:52 2014 Nobuyoshi Nakada * re.c (match_aref): should not ignore name after NUL byte. [ruby-dev:48275] [Bug #9902] Wed Jun 4 04:08:37 2014 Nobuyoshi Nakada * vm.c (core_hash_merge_kwd): should return the result hash, which may be converted from and differ from the given argument. [ruby-core:62921] [Bug #9898] Tue Jun 3 23:32:34 2014 Tanaka Akira * ruby.c (load_file_internal2): Extracted from load_file_internal. (load_file_internal): Invoke load_file_internal2 using rb_protect. Close an opened FD if load_file_internal2 raises an exception. Tue Jun 3 19:11:45 2014 Koichi Sasada * gc.c (rb_objspace_free): should not rest_sweep() here. Some data structures are already freed. Tue Jun 3 18:43:51 2014 Koichi Sasada * test/ruby/test_gc.rb: allocate more objects to invoke GC by newobj. GC allows extending pages depends on heap_increment. Tue Jun 3 18:01:27 2014 Koichi Sasada * gc.c (rb_gc_call_finalizer_at_exit): add gc_verify_internal_consistency() when RGENGC_CHECK_MODE >= 2. Tue Jun 3 17:54:21 2014 Koichi Sasada * gc.c: change the counting method for young objects. clear counter at the beginning of every GC and count promoted (infant->young) objects. Some promotions (infant->young) are transition of promoting to old objects. We should not count such promotions. With this technique, we don't need to check young objects at obj_free(). Tue Jun 3 16:38:19 2014 Koichi Sasada * gc.c: add verifying counters code in gc_verify_internal_consistency(). gc_verify_internal_consistency() counts all - live objects - young objects (if age2 promotion) - old objects in all pages and compares with objspace managing counters. * gc.c (gc_after_sweep): do gc_verify_internal_consistency() when RGENGC_CHECK_MODE >= 2. Tue Jun 3 13:14:04 2014 Shugo Maeda * lib/net/imap.rb (body_type_1part): Gmail IMAP reports a body type as "MIXED" followed immediately by params [ruby-core:62864] [Bug #9885] Patch by @rayners (David Raynes). [Fixes GH-622] https://github.com/ruby/ruby/pull/622 Tue Jun 3 13:18:24 2014 Koichi Sasada * gc.c (objspace_live_slot): live slot count should not include final slot (contains T_ZOMBIE) count. Tue Jun 3 13:03:21 2014 Koichi Sasada * gc.c (obj_free): fix spacing. Tue Jun 3 12:59:32 2014 Koichi Sasada * gc.c (check_gen_consistency): fix error message. Tue Jun 3 12:40:23 2014 Koichi Sasada * gc.c: count old/young objects more correctly. * gc.c (RVALUE_DEMOTE_FROM_OLD): decrement old object count. * gc.c (RVALUE_DEMOTE_FROM_YOUNG): decrement young object count. * gc.c (rb_gc_resurrect): increment old object count. * gc.c (gc_marks_body): should not add old object count. This code is completely my misunderstanding. * gc.c (rb_gc_force_recycle): decrement young or old object count correctly. Tue Jun 3 12:26:47 2014 Koichi Sasada * test/ruby/memory_status.rb: add $LOAD_PATH to load test/unit correctly for fiddle/import unavailable environments. Tue Jun 3 09:45:13 2014 NAKAMURA Usaku * test/openssl/test_ssl.rb (OpenSSL::TestSSL#test_verify_result): shouldn't use same server for respective tests, because the 1st test sometimes kills the server main loop silently. [Bug #9881] [ruby-dev:48266] Tue Jun 3 01:34:59 2014 Zachary Scott * README.EXT: [DOC] Add rb_call_super when subclassing from @robin850 [Fixes GH-623] https://github.com/ruby/ruby/pull/623 Mon Jun 2 17:14:49 2014 Koichi Sasada * vm.c (ruby_vm_destruct): remove useless call of rb_gc_force_recycle(). At this line, a VM object is already freed (is changed to T_NONE) by rb_gc_call_finalizer_at_exit(). Mon Jun 2 15:50:24 2014 Koichi Sasada * eval.c (rb_using_refinement): add write-barriers for cref->nd_refinements. Mon Jun 2 12:26:08 2014 SHIBATA Hiroshi * CONTRIBUTING.md: added contributing guide for github. [fix GH-625] Mon Jun 2 07:30:33 2014 Tanaka Akira * test/ruby/envutil.rb (default_warning): New method. * test/ruby/test_autoload.rb: Use EnvUtil.default_warning. Mon Jun 2 07:05:59 2014 Nobuyoshi Nakada * include/ruby/encoding.h: constify `rb_encoding` arguments. * include/ruby/oniguruma.h: constify `OnigEncoding` arguments. Sun Jun 1 12:05:10 2014 Tanaka Akira * test/drb: Wrap tests definitions by DRbTests module. This makes several tests (ACLEntryTest, TestBug4409, etc.) easier to understand that they are tests for DRb. Sun Jun 1 11:36:25 2014 Tanaka Akira * lib/rinda/ring.rb (RingFinger#make_socket): Close the socket on exception. Sun Jun 1 06:55:26 2014 Nobuyoshi Nakada * parse.y (intern_str): dynamic attrset ID is registered by `rb_id_attrset()` already, so no further registration is needed. [ruby-core:62861] Sun Jun 1 04:52:47 2014 Zachary Scott * lib/English.rb: [DOC] $LOADED_FEATURES moved to load.c [Fixes GH-620] Patch submitted by @leafac in https://github.com/ruby/ruby/pull/620 * doc/globals.rdoc: Added $LOADED_FEATURES to list Sat May 31 22:30:14 2014 Tanaka Akira * test/lib/leakchecker.rb: Leak checker extracted from test/lib/minitest/unit.rb. Sat May 31 21:15:43 2014 URABE Shyouhei * thread.c (rb_thread_atfork_internal): My compiler complains about this variable being used before initialized. I looked at the code and expanded the macro and turned out it was actually USED for pointer arithmetic, not dereferenced. So this was never a serious bug. But is annoying indeed to see warnings every time. I added `=0` and all went healthy. * configure.in: Also, I found that the problematic macro expansion only happens when we lack __typeof__ C extension, which shall not be the case of my compiler. I added AC_C_TYPEOF to kick ass. Sat May 31 16:32:50 2014 SHIBATA Hiroshi * lib/ipaddr.rb: extracted inline tests into test dir. * test/test_ipaddr.rb: ditto. Sat May 31 16:29:21 2014 SHIBATA Hiroshi * ext/digest/lib/digest/hmac.rb: extracted inline tests into test dir. * test/digest/test_digest_hmac.rb: ditto. Sat May 31 16:02:03 2014 SHIBATA Hiroshi * test/test_syslog.rb: remove executable. Sat May 31 08:58:32 2014 Nobuyoshi Nakada * enc/unicode.c (init_case_fold_table): no longer need to initialize tables at runtime. * enc/unicode/case-folding.rb (lookup_hash): make perfect hash to lookup case unfolding table 3. * enc/unicode/case-folding.rb (lookup_hash): make perfect hash to lookup case unfolding table 2. * enc/unicode/case-folding.rb (lookup_hash): make perfect hash to lookup case unfolding table 1. * enc/unicode/case-folding.rb (lookup_hash): make perfect hash to lookup case folding table. * enc/unicode/case-folding.rb (print_table): merge non-locale and locale tables, and reduce initializing loops. * enc/unicode/case-folding.rb (CaseFolding): modularize, and add --output-file option. * enc/unicode/case-folding.rb: script to convert CaseFolding.txt, translated from CaseFolding.py. Sat May 31 08:31:41 2014 Tanaka Akira * test/lib/minitest/unit.rb: Check Tempfile leaks for each test method again. Sat May 31 03:50:50 2014 Zachary Scott * lib/delegate.rb: [DOC] Document raise in Delegator class Patch by @lucasmazza. [Fixes GH-621] https://github.com/ruby/ruby/pull/621 Fri May 30 21:23:26 2014 Tanaka Akira * lib/webrick/server.rb: Use a pipe to detect server shutdown. shutdown() or close() for listening socket is not a reliable. Actually, both doesn't work (doesn't wake up select()) on DragonFly BSD 3.6.2. * test/webrick/utils.rb: :ShutdownSocketWithoutClose is not required now to immediate server shutdown detection. This fixes fd leaks. * test/net/http/utils.rb: Ditto. Fri May 30 20:58:37 2014 Tanaka Akira * test/lib/minitest/unit.rb (check_fd_leak): Sort the inspected objects list for a FD. Fri May 30 18:06:55 2014 Tanaka Akira * test/lib/minitest/unit.rb (check_fd_leak): Try GC to delete leaked FDs. Fri May 30 12:05:59 2014 NARUSE, Yui * test/lib/test/unit/parallel.rb (_run_suite): orig_stdout may be nil though I don't know the reason. Fri May 30 11:33:35 2014 Nobuyoshi Nakada * string.c (rb_str_substr): need to reset code range for shared string too, not only copied string. [ruby-core:62842] [Bug #9882] Fri May 30 10:22:21 2014 Mark Lorenz * lib/erb.rb (result): [DOC] no longer accepts a Proc, as Kernel.eval does not. [fix GH-619] Fri May 30 07:25:46 2014 Tanaka Akira * ext/-test-/dir: Dir#fileno implemented. * test/lib/minitest/unit.rb (find_fds): Don't return the fd used to scan /proc/$$/fd. Fri May 30 04:48:00 2014 Eric Wong * parse.y (rb_gc_mark_parser): remove, empty since r8758 * internal.h: ditto, not usable from extensions since 2.0.0 * gc.c (gc_mark_roots): remove checkpoint for parser Thu May 29 23:27:50 2014 Rei Odaira * signal.c (ruby_signal): should return either `old.sa_sigaction` or `old.sa_handler`, depending on whether `SA_SIGINFO` is set in `old.sa_flags`, because they may not be a union. [ruby-core:62836] [Bug #9878] Thu May 29 23:11:20 2014 Tanaka Akira * io.c (pipe_open): Close pipes when rb_execarg_fixup() raises an exception. (rb_execarg_fixup_v): New function. Thu May 29 22:18:57 2014 Tanaka Akira * test/lib/minitest/unit.rb (capture_subprocess_io): Close fds. Thu May 29 19:47:08 2014 Tanaka Akira * io.c (rb_io_s_pipe): Close pipes if io_encoding_set() raises an exception. (io_encoding_set_v): New function. Thu May 29 19:42:49 2014 Tanaka Akira * lib/csv.rb (CSV.open): Close the opened file when an exception occur. Thu May 29 19:31:10 2014 Tanaka Akira * ext/openssl/lib/openssl/ssl.rb (SSLServer#accept): Close a socket if any exception occur. Thu May 29 05:05:29 2014 Eric Wong * include/ruby/ruby.h: Hide Symbol internals. (struct RSymbol): moved to internal.h (RSYMBOL): ditto Thu May 29 00:28:56 2014 Tanaka Akira * ext/socket/unixsocket.c (rsock_init_unixsock): Open a socket after path length check. This fixes a fd leak by TestSocket_UNIXSocket#test_too_long_path. Wed May 28 23:04:35 2014 Tanaka Akira * test/ruby/test_io.rb (test_flush_in_finalizer1): Use ObjectSpace.each_object to close files. GC.start is not reliable. Wed May 28 19:00:31 2014 Tanaka Akira * lib/net/imap.rb (Net::IMAP#initialize): Close the opened socket when any exception occur. This fixes a fd leak by IMAPTest#test_imaps_post_connection_check which start_tls_session() raises an exception. Wed May 28 18:06:13 2014 Tanaka Akira * ext/openssl/ossl_ssl.c (ossl_ssl_close): Fix sync_close to work when SSL is not started. This fix the fd leak by test_https_proxy_authentication in test/net/http/test_https_proxy.rb. Wed May 28 10:29:28 2014 Eric Wong * vm.c (rb_vm_living_threads_foreach): remove function [ruby-core:62745] * thread.c (terminate_i): remove * thread.c (terminate_all): implement (inlines old terminate_i) * thread.c (rb_thread_terminate_all): use terminate_all * thread.c (rb_thread_fd_close_i): remove * thread.c (rb_thread_fd_close): iterate inline * thread.c (thread_list_i): remove * thread.c (rb_thread_list): iterate inline * thread.c (rb_thread_atfork_internal): iterate inline * thread.c (terminate_atfork_i): update types to remove casts * thread.c (terminate_atfork_before_exec_i): ditto * thread.c (struct thgroup_list_params): remove definition * thread.c (thgroup_list_i): remove * thread.c (thgroup_list): iterate inline * thread.c (check_deadlock_i): remove * thread.c (debug_deadlock_check): implement (inlines check_deadlock_i) * thread.c (debug_i): remove * thread.c (rb_check_deadlock): iterate inline * vm.c (vm_mark_each_thread_func): remove * vm.c (rb_vm_mark): iterate inline * vm_core.h (rb_vm_living_threads_remove): remove * vm_trace.c (clear_trace_func_i): remove * vm_trace.c (rb_clear_trace_func): iterate inline Wed May 28 09:30:51 2014 Eric Wong * signal.c (signal_exec): ignore immediate cmd for SIG_IGN * signal.c (trap_handler): set cmd to true for SIG_IGN * signal.c (trap): handle nil and true values for oldcmd [Bug #9835] Wed May 28 01:02:54 2014 Tanaka Akira * lib/tempfile.rb (Tempfile#inspect): Show "(closed)" if the tempfile is closed. Wed May 28 00:38:09 2014 Tanaka Akira * test/lib/minitest/unit.rb: Use Tempfile#close! instead of Tempfile#unlink to close file descriptors. * test/openssl/test_config.rb: Ditto. * test/ruby/test_io.rb: Ditto. Wed May 28 00:06:18 2014 Tanaka Akira * lib/net/ftp.rb (transfercmd): Close TCP server socket even if an exception occur. Tue May 27 23:50:07 2014 Tanaka Akira * lib/cgi/core.rb: Use Tempfile#close! instead of Tempfile#unlink to close file descriptors. Tue May 27 23:06:46 2014 Nobuyoshi Nakada * parse.y (parser_number_literal_suffix): refine error message for extra dot and digits. Tue May 27 22:44:20 2014 Tanaka Akira * test/rexml: Avoid fd leaks. Tue May 27 22:24:25 2014 Kouhei Sutou * test/rexml/test_document.rb: Indent. Tue May 27 22:15:29 2014 Kouhei Sutou * test/rexml/test_document.rb: Wrap by REXMLTests module. Tue May 27 22:11:10 2014 Kouhei Sutou * test/rexml/test_encoding_2.rb: Remove a needless file. Tue May 27 22:10:30 2014 Kouhei Sutou * test/rexml/test_contrib.rb: Indent. Tue May 27 21:28:16 2014 NARUSE, Yui * ext/socket/ifaddr.c (ifaddr_inspect_flags): support IFF_SIMPLEX. Tue May 27 21:03:03 2014 Kouhei Sutou * test/rexml/: Use REXMLTests as wrapping module for REXML tests. I avoid using the same module for library in test because it provides "include REXML" environment in test. Normally, users don't use REXML on "include REXML" environment. So I don't want to write tests on "include REXML" environment. Tue May 27 20:59:37 2014 Kouhei Sutou * test/rexml/test_comment.rb: Remove needless REXML module wrapping. Tue May 27 20:56:49 2014 Kouhei Sutou * test/openssl/test_pkcs7.rb: Fix inverted expected and actual values. Tue May 27 20:26:06 2014 NAKAMURA Usaku * test/ruby/test_io.rb (test_flush_in_finalizer1): some opened fds are remain before GC, so unlink the tempfile is failed. Tue May 27 19:07:26 2014 Tanaka Akira * io.c (rb_io_autoclose_p): Don't raise on frozen IO. * test/lib/minitest/unit.rb: IO#autoclose? may raise IOError. Tue May 27 19:01:49 2014 SHIBATA Hiroshi * test/openssl/test_pair.rb: Modify TestSSL#test_read_and_write to handle partial sysreads. [Bug #7398][ruby-core:49563] * test/openssl/test_ssl.rb: ditto. Tue May 27 18:46:23 2014 SHIBATA Hiroshi * test/openssl/test_pkcs7.rb: Add tests for PKCS7#type= and add_data. [Feature #7399][ruby-core:49565] Tue May 27 17:45:09 2014 SHIBATA Hiroshi * test/openssl/test_hmac.rb (test_binary_update): Added Test for HMAC signing with UTF-8 String. [Bug #7512][ruby-core:50559] Tue May 27 17:10:14 2014 SHIBATA Hiroshi * test/runner.rb: fixed randomly test failure. [Bug #6573][ruby-core:45563] Tue May 27 16:58:12 2014 SHIBATA Hiroshi * test/test_timeout.rb (test_timeout): inverted test condition. [Bug #8523] Tue May 27 12:24:22 2014 Tanaka Akira * test/lib/minitest/unit.rb: Show leaked file descriptors. Tue May 27 11:12:56 2014 Nobuyoshi Nakada * io.c (rb_io_fileno, rb_io_inspect): non-modification does not error on frozen IO. [ruby-dev:48241] [Bug #9865] Tue May 27 00:00:21 2014 yui-knk * insns.def (defineclass): fix typo in the instruction comment. [fix GH-618] Mon May 26 16:33:15 2014 NAKAMURA Usaku * test/ruby/test_file.rb: skip the test of atime on Windows, because Windows delays updating atime about 1 hour. see more details: http://msdn.microsoft.com/en-us/library/windows/desktop/ms724290%28v=vs.85%29.aspx Mon May 26 12:25:36 2014 Nobuyoshi Nakada * lib/optionparser.rb, lib/optparse.rb (OptParse): aliases. [ruby-core:62751] [Feature #9864] Mon May 26 07:59:34 2014 Tanaka Akira * test/lib/minitest/unit.rb: Show Finished threads line-by-line. Mon May 26 01:39:02 2014 Zachary Scott * lib/csv.rb: Reject nil as data source for CSV.new, patch by @Peeja. [Fixes GH-580] https://github.com/ruby/ruby/pull/580 Mon May 26 01:07:51 2014 Tanaka Akira * test/lib/minitest/unit.rb: Show leaked threads and tempfiles line-by-line. Sun May 25 23:02:06 2014 Tanaka Akira * test/lib/minitest/unit.rb (MiniTest::Assertions#diff): Remove tempfiles. Sun May 25 22:42:27 2014 Tanaka Akira * test/lib/minitest/unit.rb: Check tempfile leak for each test class. Sun May 25 20:31:49 2014 Nobuyoshi Nakada * configure.in (ac_cv_func_{getcontext,setcontext}): do not disable ucontext.h entirely, but disable use of functions only. `ucontext_t` is necessary in the signal handler now. Sun May 25 20:00:23 2014 Nobuyoshi Nakada * signal.c (check_stack_overflow): revert part of r46100, the previous condition was correct, and fix compilation error on other architecture linux. [ruby-core:62746] [Bug #9862] Sun May 25 17:09:13 2014 Tanaka Akira * test/lib/minitest/unit.rb: Less ObjectSpace.each_object(Tempfile) invocation. Sun May 25 16:54:06 2014 Tanaka Akira * test/lib/minitest/unit.rb: Use Thread.list instead of ObjectSpace.each_object(Thread). Sun May 25 15:53:54 2014 Tanaka Akira * lib/rinda/ring.rb (Rinda::RingServer#shutdown): Join the killed threads. Sun May 25 15:26:17 2014 Tanaka Akira * lib/webrick/utils.rb: Override the inspect method of the thread used in WEBrick::Utils::TimeoutHandler. Sun May 25 14:22:30 2014 Tanaka Akira * test/openssl: Join threads. Sun May 25 12:46:47 2014 Nobuyoshi Nakada * error.c (rb_bug_context): new function to report bug with context. * vm_dump.c (rb_vm_bugreport): accepts `ucontext_t` argument to dump machine registers. based on [GH-584]. * signal.c (sigbus, sigsegv): dump machine registers if available. Sun May 25 12:32:42 2014 Tanaka Akira * test/lib/minitest/unit.rb: Sort leaked threads and tempfiles. Sun May 25 12:15:30 2014 Nobuyoshi Nakada * signal.c (check_stack_overflow): fix condition to use ucontext register, mcontext_t dereference, and its member names, on Mac OS X. Sun May 25 11:58:26 2014 Zachary Scott * enumerator.c: [DOC] Fix example to show Enumerator#peek behavior Patch by Erik Hollembeak [Bug #9814] Sun May 25 11:56:33 2014 Nobuyoshi Nakada * vsnprintf.c (BSD_vfprintf): fix string width when precision is given. as the result of `memchr` is NULL or its offset from the start cannot exceed the size, the comparison was always false. [ruby-core:62737] [Bug #9861] Sun May 25 11:32:42 2014 Zachary Scott * lib/yaml.rb: Remove Psych::EngineManager [Bug #8344] * test/psych/*: ditto. Sun May 25 10:34:15 2014 Zachary Scott * doc/regexp.rdoc: [DOC] Clarify whitespace matching by @allolex [Fixes GH-606] https://github.com/ruby/ruby/pull/606 Sun May 25 10:19:34 2014 Zachary Scott * enum.c: [DOC] Use #find in example to clarify alias by @rachellogie Patch submitted via documenting-ruby/ruby#34 Sun May 25 10:16:43 2014 Zachary Scott * cont.c: [DOC] Fix rdoc in example for Fiber#transfer by @majjoha Patch submitted via documenting-ruby/ruby#33 Sun May 25 10:01:11 2014 Zachary Scott * lib/irb.rb: [DOC] Fixed syntax error in example by @jasdeepsingh. Patch submitted via documenting-ruby/ruby#32 Sun May 25 09:58:02 2014 SHIBATA Hiroshi * test/fileutils/test_fileutils.rb (test_chown_R): Add tests for chown_R. [Feature #9383][ruby-core:59641] Sun May 25 09:57:09 2014 SHIBATA Hiroshi * test/fileutils/test_fileutils.rb: Added recursively chown tests. [Feature #9303][ruby-core:59325] Sun May 25 09:41:56 2014 Zachary Scott * class.c: [DOC] Fixed grammar and examples of instance_methods. By @alex-frost via documenting-ruby/ruby#31 Sun May 25 09:40:44 2014 Tanaka Akira * test/lib/minitest/unit.rb: Show leaked threads and tempfiles. Sun May 25 08:54:38 2014 SHIBATA Hiroshi * test/openssl/test_partial_record_read.rb: Testing read_nonblock on a partial TLS record results in IO::WaitReadable by @mohamedhafez. [fix GH-547] Sun May 25 08:43:16 2014 SHIBATA Hiroshi * lib/logger.rb: refactored to include Logger::Period. Sun May 25 06:50:19 2014 Zachary Scott * vm_eval.c: [DOC] Improve instance_eval description when given a block or String arguments. By @nathanl via documenting-ruby/ruby#28 Sun May 25 06:29:39 2014 Zachary Scott * array.c: [DOC] Clarify default argument for Array.new. By @Elffers [Fixes GH-610] Sat May 24 22:37:20 2014 SHIBATA Hiroshi * array.c: [DOC] Add more documents to shuffle! and shuffle. Contributed by @JuanitoFatas [ci skip][fix GH-612] Sat May 24 22:28:55 2014 SHIBATA Hiroshi * test/lib/minitest/.document: removed unused configuration. Sat May 24 19:08:47 2014 Tanaka Akira * test/lib/minitest/spec.rb: Unused file removed. * test/lib/minitest/autorun.rb: Don't require minitest/spec. * test/lib/minitest/benchmark.rb: Ditto. Sat May 24 18:45:30 2014 Tanaka Akira * test/benchmark/test_benchmark.rb: Use test/unit. Sat May 24 16:20:59 2014 Eric Wong * process.c (proc_getgroups, proc_setgroups): use ALLOCV_N [Bug #9856] Sat May 24 15:49:39 2014 Tanaka Akira * test/lib/minitest/unit.rb (parallelize_me!): Removed. This fixes the line-by-line structure of the test result in verbose mode. [ruby-core:54905] * test/lib/minitest/parallel_each.rb: Removed. * test/minitest/test_minitest_mock.rb: Don't call parallelize_me!. * test/minitest/test_minitest_spec.rb: Ditto. * test/minitest/test_minitest_unit.rb: Ditto. Tests for parallel feature removed. Sat May 24 15:29:10 2014 Tanaka Akira * test/lib/minitest/hell.rb: Unused file removed. * test/lib/minitest/pride.rb: Ditto. Sat May 24 15:05:32 2014 yui-knk * enumerator.c (yielder_yield_push): Insert a break after the method return value. [fix GH-617] Sat May 24 14:59:12 2014 Tanaka Akira * test/lib/minitest: Remove comments not appropriate now. * test/minitest: Ditto. Sat May 24 14:02:04 2014 SHIBATA Hiroshi * NEWS: added minitest changes. Sat May 24 13:42:46 2014 SHIBATA Hiroshi * test/lib/test/unit/test-unit.gemspec: removed needless gemspec file. Sat May 24 09:39:06 2014 SHIBATA Hiroshi * defs/default_gems: removed minitest entry. Sat May 24 06:17:33 2014 Ryan Davis * lib/minitest: minitest 4.7.5 removed. Need to support proper gem packaging / installation before minitest 5 can be added. Sat May 24 05:54:06 2014 Tanaka Akira * ext/socket/mkconstants.rb: More constants Sat May 24 00:25:34 2014 Ayumu AIZAWA * NEWS: add information of incompatibility about Prime.prime? * lib/prime.rb: fix docs. Fri May 23 21:36:28 2014 Josh Goebel * net/protocol.rb (using_each_crlf_line): fix SMTP dot-stuffing for messages not ending with a new-line. [ruby-core:61441] [Bug #9627] [fix GH-616] Fri May 23 03:48:08 2014 Eric Wong * gc.c (rb_free_m_tbl): mark function as static * method.h (rb_free_m_tbl): remove prototype Thu May 22 22:58:27 2014 Tanaka Akira * ext/socket/mkconstants.rb: More TCP option constants. Describe Linux and glibc versions. Thu May 22 20:38:10 2014 NARUSE, Yui * file.c (stat_birthtime): add birthtime support [Feature #9647] * file.c (rb_stat_birthtime): add File::Stat.birthtime * file.c (rb_file_s_birthtime): add File.birthtime * file.c (rb_file_birthtime): add File#birthtime * configure.in: check struct stat.st_birthtimespec. Thu May 22 19:38:14 2014 NARUSE, Yui * file.c: remove IO::Statfs because of reject. [Feature #9772] Thu May 22 14:02:13 2014 Nobuyoshi Nakada * enc/jis/props.kwd: constify character property tables of JIS based encodings by perfect hash. * enc/euc_jp.c, enc/shift_jis.c: use character property functions. Wed May 21 12:21:10 2014 Tanaka Akira * ext/socket/option.c: Fix compilation error on Android. Bionic doesn't define TCP state constants. Wed May 21 11:42:31 2014 Nobuyoshi Nakada * configure.in: workaround for Info.plist to get rid of `dsymutil` crash by wrong files in parent directories. [ruby-core:62594] [Bug #9840] Tue May 20 20:57:34 2014 SHIBATA Hiroshi * test/ruby/test_dir.rb (test_glob): added testcase of double slash path. Tue May 20 04:58:54 2014 Tanaka Akira * ext/socket/extconf.rb: Don't check fields of struct tcp_info if the structure is not available. Mon May 19 23:13:33 2014 Tanaka Akira * ext/socket/option.c (inspect_tcp_info): Permit longer data. (glibc 2.7 adds tcpi_rcv_rtt, tcpi_rcv_space and tcpi_total_retrans to struct tcp_info.) Mon May 19 20:49:07 2014 Tanaka Akira * ext/socket/option.c (inspect_tcp_info): New function to inspect struct tcp_info. (sockopt_inspect): Use inspect_tcp_info. * ext/socket/extconf.rb: Check tcp_info related things. * ext/socket/rubysocket.h: Include netinet/tcp_fsm.h if available. Mon May 19 19:36:39 2014 Tanaka Akira * test/dbm/test_dbm.rb: Use Etc.uname. * test/gdbm/test_gdbm.rb: Ditto. Mon May 19 16:54:22 2014 Nobuyoshi Nakada * ext/etc/etc.c (etc_uname): add support for Windows using GetVersionExW(), GetSystemInfo(), and GetComputerNameExW() with `ComputerNameDnsHostname`. [Feature #9842] Mon May 19 16:29:48 2014 Nobuyoshi Nakada * string.c (rb_pat_search): advance by byte offset but not by char offset. [ruby-core:62669] [Bug #9849] Mon May 19 14:06:18 2014 Shota Fukumori * bin/testrb: Removed. Forgot to remove in r45971. [Feature #9711] [ruby-core:62620] Sun May 18 16:42:08 2014 Tanaka Akira * test/ruby/test_m17n_comb.rb (test_str_crypt): Use Etc.confstr to detect the glibc version. libc.so is not an executable on Debian GNU/kFreeBSD 7.0 (wheezy). Sun May 18 12:15:54 2014 Jonathan Mukai-Heidt * io.c (argf_each_line, argf_inplace_mode_set): [DOC] Update ARGF documentation examples. `ARGF.lines` has been deprecated in favor of `ARGF.each_line`. [Fixes GH-615] Sun May 18 11:59:25 2014 Tanaka Akira * missing/nextafter.c: Include ruby/missing.h. Sun May 18 11:09:28 2014 Tanaka Akira * win32/Makefile.sub: Add nextafter.obj to MISSING. Sun May 18 10:46:04 2014 Tanaka Akira * ext/etc/etc.c: Etc.sysconf, Etc.confstr and IO#pathconf implemented. * ext/etc/extconf.rb: Check sysconf(), confstr() and fpathconf(). * ext/etc/mkconstants.rb: New file. [ruby-core:62600] [Feature #9842] Sun May 18 09:58:17 2014 Tanaka Akira * ext/etc/etc.c: Etc.uname method implemented. * ext/etc/extconf.rb: Check uname() function. [ruby-core:62139] [Feature #9770] Sun May 18 09:16:33 2014 Tanaka Akira * configure.in: Check nextafter() availability. * include/ruby/missing.h (nextafter): New optional declaration. * missing/nextafter.c: New file. * numeric.c: Float#next_float and Float#prev_float implemented. [ruby-core:62562] [Feature #9834] Sun May 18 09:02:17 2014 Tanaka Akira * enum.c: Enumerable#slice_after implemented. * enumerator.c: Enumerator::Lazy#slice_after implemented. Requested by Tsuyoshi Sawada. [ruby-core:58123] [Feature #9071] Sun May 18 08:22:25 2014 Nobuyoshi Nakada * io.c (io_setstrbuf): always check if the buffer is modifiable. [ruby-core:62643] [Bug #9847] Sun May 18 01:21:23 2014 Tanaka Akira * include/ruby/ruby.h: Hide Rational internal. (RRational): Moved to internal.h (RRATIONAL): Ditto. (RRATIONAL_SET_NUM): Moved to rational.c. (RRATIONAL_SET_DEN): Ditto. * rational.c (rb_rational_num): New function. (rb_rational_den): Ditto. * include/ruby/intern.h (rb_rational_num): Declared. (rb_rational_den): Ditto. * ext/bigdecimal/bigdecimal.c: Follow the above change. * ext/date/date_core.c: Ditto. [ruby-core:60665] [Feature #9513] Sat May 17 17:04:32 2014 Shota Fukumori * NEWS: Add news about removal of lib/test/**/*.rb. Sat May 17 16:57:33 2014 Shota Fukumori * lib/test: Removed because ruby's test cases now independent to lib/test by r45970. [Feature #9711] [ruby-core:62620] I'm still considering about the future of lib/minitest, lib/test. (bundling gems?) Sat May 17 15:06:40 2014 SHIBATA Hiroshi * test/runner.rb: remove dependency test-unit and minitest from stdlib when running with test-all. [Feature #9711][ruby-core:61890] * test/testunit/*.rb: ditto. * test/lib: ditto. Sat May 17 11:02:49 2014 Nobuyoshi Nakada * dir.c (glob_helper): try match PLAIN as well as ALPHA, which are separated by previous commits. [ruby-core:61552] [Bug #9648] * dir.c (glob_make_pattern): set PLAIN for non-magical path to skip parts which not need to glob. [ruby-core:61552] [Bug #9648] * dir.c (has_magic): return ALPHA at alphabetical name regardless FNM_CASEFOLD flag. * dir.c (glob_helper): fix conditions for ALPHA. [ruby-core:61552] [Bug #9648] Sat May 17 01:49:27 2014 Nobuyoshi Nakada * dir.c (glob_helper): reduce matching at non-magical path on Windows. Sat May 17 01:49:23 2014 Nobuyoshi Nakada * dir.c (glob_pattern_type): separate names with alphabet but no magical from plain. * dir.c (glob_helper): match plain names as-is to treat super-root same as the root. [ruby-core:61552] [Bug #9648] Fri May 16 17:38:22 2014 Koichi Sasada * gc.c (gc_marks, gc_marks_body): increase the counter of young objects at the major GC because AGE2Promotion changes all old objects into young objects at major GC. Fri May 16 17:26:24 2014 Koichi Sasada * gc.c (gc_before_sweep): heap_pages_swept_slots should contains heap_pages_increment. For example, GC by exceeding malloc_limit can remain heap_pages_increment. Thu May 15 21:18:43 2014 Hiroshi Shirosaki * configure.in: enable SSE2 on mingw. target='i386-pc-mingw32'. [ruby-core:62095] [Bug #8358] Thu May 15 21:04:06 2014 Hiroshi Shirosaki * lib/test/unit/parallel.rb: fix test-all parallel failure if a test is skipped after raise. DL::TestFunc#test_sinf is skipped after raise on mingw ruby. But it causes Marshal.load failure due to undefined class/module DL::DLError when doing test-all parallel and test-all doesn't complete. We create new MiniTest::Skip object to avoid Marshal.load failure. [ruby-core:62133] [Bug #9767] * test/testunit/test_parallel.rb (TestParallel): add a test. * test/testunit/tests_for_parallel/ptest_forth.rb: ditto. Thu May 15 18:57:23 2014 Koichi Sasada * gc.c (garbage_collect_body): move gc_heap_prepare_minimum_pages() from gc_sweep(). Thu May 15 18:51:25 2014 Koichi Sasada * gc.c (heap_extend_pages): calculate next growing heap size. * gc.c (heap_set_increment): accept addition pages instead of minimum pages. * gc.c (gc_after_sweep): use heap_etend_pages(). * gc.c (gc_heap_prepare_minimum_pages): add only 1 page. * gc.c (heap_ready_to_gc): add only 1 page. Thu May 15 18:42:49 2014 Koichi Sasada * gc.c: introduce macros to remove magic number. GC_HEAP_FREE_SLOTS_MIN_RATIO = 0.3: guarantee minimum empty slots ratio after sweep. GC_HEAP_FREE_SLOTS_MAX_RATIO = 0.8: allow to free pages 0.2 (= 1-0.8) of current existing slots. Thu May 15 17:32:51 2014 Hiroshi Shirosaki * thread_win32.c (rb_w32_stack_overflow_handler): use Structured Exception Handling by AddVectoredExceptionHandler() for machine stack overflow on mingw. This would be equivalent to the handling using __try and __except on mswin introduced by r43748. Wed May 14 19:31:03 2014 Koichi Sasada * ext/openssl/depend: remove dependency from internal headers. [Feature #9612] * ext/openssl/ossl.c (ossl_fips_mode_set): ditto. * ext/coverage/depend: ditto. * include/ruby/thread_native.h: added. This header file only provides wrapper functions to control native threads. These wrapper functions are used by MRI implementation. * vm_core.h: use include/ruby/thread_native.h. * thread.c: ditto. * thread_pthread.h: ditto. * thread_win32.h: ditto. * thread_native.h: removed. Wed May 14 18:03:28 2014 Koichi Sasada * gc.c: enable RGENGC_AGE2_PROMOTION. Wed May 14 18:02:30 2014 Koichi Sasada * gc.c (rgengc_rememberset_mark): promote remembered object earlier. Mon May 12 23:57:15 2014 Nobuyoshi Nakada * configure.in (rb_cv_atan2_inf_c99): check whether runtime atan2 handles Inf as C99. [ruby-core:62536] [Bug #9831] Mon May 12 20:33:01 2014 Tanaka Akira * configure.in: Invoke AC_REPLACE_FUNCS for each function. Mon May 12 19:52:11 2014 Koichi Sasada * gc.c: count young object correctly and show it in GC.stat on RGENGC_AGE2_PROMOTION. * gc.c (RVALUE_PROMOTE_YOUNG): decrement young object count on YOUNG->OLD. * gc.c (obj_free): decrement young object count when young object freed. * gc.c (gc_marks): should not clear young object count. * gc.c (gc_stat_internal): GC.stat :young_object information. Mon May 12 01:30:59 2014 Tanaka Akira * ext/socket/ifaddr.c (IS_IFADDRS): Unused macro removed. * ext/strscan/strscan.c (BUFSIZE): Ditto. * ext/zlib/zlib.c (OBJ_IS_FREED): Ditto. Sun May 11 22:27:18 2014 Tanaka Akira * compile.c (BUFSIZE): Unused macro removed. * vm.c (BUFSIZE): Ditto. * pack.c (INT64toNUM): Ditto. (UINT64toNUM): Ditto. (BYTEWIDTH): Ditto. * time.c (lshift): Ditto. (UINT64toNUM): Ditto. (id_lshift): Unused variable removed. Sun May 11 21:23:27 2014 Tanaka Akira * pack.c (swaps): Unused macro removed. (swapi): Ditto. (swapl): Ditto. (swapll): Ditto. Sun May 11 08:02:49 2014 Eric Wong * vm_core.h (rb_vm_t): list_head and counter for living_threads (rb_thread_t): vmlt_node for living_threads linkage (rb_vm_living_threads_init): new function wrapper (rb_vm_living_threads_insert): ditto (rb_vm_living_threads_remove): ditto * vm.c (rb_vm_living_threads_foreach): new function wrapper * thread.c (terminate_i, thread_start_func_2, thread_create_core, thread_fd_close_i, thread_fd_close): update to use new APIs * vm.c (vm_mark_each_thread_func, rb_vm_mark, ruby_vm_destruct, vm_memsize, vm_init2, Init_VM): ditto * vm_trace.c (clear_trace_func_i, rb_clear_trace_func): ditto * benchmark/bm_vm_thread_close.rb: added to show improvement * ccan/build_assert/build_assert.h: added as a dependency of list.h * ccan/check_type/check_type.h: ditto * ccan/container_of/container_of.h: ditto * ccan/licenses/BSD-MIT: ditto * ccan/licenses/CC0: ditto * ccan/str/str.h: ditto (stripped of unused macros) * ccan/list/list.h: ditto * common.mk: add CCAN_LIST_INCLUDES [ruby-core:61871][Feature #9632 (part 1)] Sun May 11 01:10:31 2014 Nobuyoshi Nakada * signal.c (rb_f_kill): directly enqueue an ignored signal to self, except for SIGSEGV and SIGBUS. [ruby-dev:48203] [Bug #9820] Sat May 10 22:37:56 2014 Nobuyoshi Nakada * dir.c (push_glob): match in UTF-8 on Mac OS X. [ruby-dev:48213] [Bug #9825] Sat May 10 13:32:18 2014 Nobuyoshi Nakada * thread.c (thread_start_func_2): stop if forked in a sub-thread, the thread has become the main thread. [ruby-core:62070] [Bug #9751] Sat May 10 09:32:19 2014 SHIBATA Hiroshi * man/ruby.1: remove deadlink. [ruby-core:62145][Bug #9773] Sat May 10 08:47:36 2014 Tanaka Akira * signal.c (trap): Return "SYSTEM_DEFAULT" if SIG_DFL is set. Fri May 9 14:27:05 2014 Nobuyoshi Nakada * configure.in (RUBY_SETJMP_TYPE): check for setjmp type after CCDLFLAGS is appended to CFLAGS, since __builtin_setjmp can be affected. [ruby-core:62469] [Bug #9818] Fri May 9 03:59:06 2014 Ayumu AIZAWA * lib/delegate.rb: Fix example of using delegator. patched from Andrey Koleshko. [Fixes GH-505] Fri May 9 03:42:43 2014 Ayumu AIZAWA * lib/shell.rb: add documentation in lib/shell.rb patched from reprah. [Fixes GH-516] Fri May 9 03:28:04 2014 Ayumu AIZAWA * lib/fileutils.rb: show fileutils require at top. patched from Richard Schneeman. [Fixes GH-604] Fri May 9 03:07:09 2014 Ayumu AIZAWA * lib/prime.rb (Prime#prime?): negative numbers can't be primes by definition. reported by Ivan Kataitsev. [Bug #7395] * test/test_prime.rb: add test. Thu May 8 14:34:29 2014 Nobuyoshi Nakada * class.c (rb_mod_init_copy): always clear instance variable, constant and method tables first, regardless the source tables. [ruby-dev:48182] [Bug #9813] Thu May 8 10:53:14 2014 NARUSE, Yui * configure.in: OpenBSD needs to include sys/param.h before include sys/mount.h. [ruby-dev:48167] Thu May 8 10:17:04 2014 Karsten Sperling * lib/webrick/httpserver.rb (WEBrick::HTTPServer#run): stop handling requests on shutdown, even if the socket is readable and IO.select() returns true. [Fixes GH-607] * lib/webrick/server.rb (WEBrick::GenericServer#start): IO.select() raises ENOTSOCK on shutdown on Windows. Wed May 7 21:45:00 2014 Tanaka Akira * ext/openssl/lib/openssl/ssl.rb (OpenSSL::SSL::SSLServer#accept): Consider Socket#accept as well as TCPServer#accept. Reported by Sam Stelfox. [ruby-core:62064] [Bug #9750] Wed May 7 17:24:07 2014 Nobuyoshi Nakada * numeric.c (num_step_scan_args): check keyword arguments and fail if they conflict with positional arguments. [ruby-dev:48177] [Bug #9811] Wed May 7 12:06:14 2014 Koichi Sasada * benchmark/driver.rb: remove debug output and output results into specified file. Wed May 7 11:55:40 2014 Koichi Sasada * benchmark/driver.rb: add '--rawdata-output=[FILE] option to output raw results into FILE. Wed May 7 11:25:41 2014 Nobuyoshi Nakada * vm_eval.c (rb_f_local_variables): exclude variables hidden by shadowing. [ruby-core:60501] [Bug #9486] * vm.c (collect_local_variables_in_iseq): ditto. Tue May 6 23:29:05 2014 Nobuyoshi Nakada * parse.y (new_bv_gen): no duplicated names, if already added in shadowing_lvar(). * parse.y (local_tbl_gen): remove local variables duplicated with arguments. [ruby-core:60501] [Bug #9486] Tue May 6 18:48:50 2014 Tanaka Akira * lib/time.rb (Time.make_time): Adjust the time zone of "now". Tue May 6 18:33:12 2014 Tadayoshi Funaba * io.c (io_{read,write}_nonblock): use rb_get_kwargs instead of rb_hash_aref. Tue May 6 18:03:05 2014 Tanaka Akira * lib/time.rb (Time.make_time): Argument validation code moved from Time.parse and Time.strptime. Tue May 6 17:27:06 2014 Tanaka Akira * lib/time.rb (Time.parse): [DOC] Fix an example in the documentation to use EST. Reported by Marcus Stollsteimer. [ruby-core:60778] [Bug #9521] and [ruby-core:61718] [Bug #9682] Tue May 6 04:31:48 2014 Tadayoshi Funaba * file.c (rb_f_test): removed meaningless "case 'a'". Tue May 6 01:28:14 2014 Tanaka Akira * lib/open-uri.rb (OpenURI.open_uri): Call StringIO#close only if the StringIO object is not closed yet. Reported by Jordi Massaguer Pla. [ruby-core:42538] [Bug #6010] Tue May 6 01:08:01 2014 Koichi Sasada * benchmark/driver.rb: define File::NULL if not defined and /dev/null is available to run benchmark driver on ruby 1.9.2. Mon May 5 23:53:24 2014 Tanaka Akira * ext/socket/mkconstants.rb: Add IP_TRANSPARENT. IP_TRANSPARENT is provieded since glibc-2.12. Reported by Eliezer Croitoru. [ruby-core:50372] [Bug #7476] Mon May 5 22:29:47 2014 Tanaka Akira * process.c (check_exec_redirect): Open the file in write mode for redirect from [:out, :err]. Proposed and implemented by Yusuke Endoh. [ruby-dev:41430] [Feature #3348] Mon May 5 21:52:35 2014 Tanaka Akira * ext/pathname/lib/pathname.rb (cleanpath_aggressive): make all separators File::SEPARATOR from File::ALT_SEPARATOR. Reported by Daniel Rikowski. Fixed by Nobuyoshi Nakada. [Bug #9618] * ext/pathname/lib/pathname.rb (cleanpath_conservative): ditto. Mon May 5 21:48:04 2014 Tanaka Akira * ext/pathname/lib/pathname.rb (Pathname#/): Aliased to Pathname#+. Suggested by Alexey Muranov. [ruby-core:61432] [Feature #9625] Mon May 5 17:26:09 2014 Tadayoshi Funaba * math.c (rb_math_sqrt): omitted exporting an unused function, anyway. * internal.h: follows the above change. Mon May 5 11:44:03 2014 Tanaka Akira * lib/time.rb (Time.strptime): Raise ArgumentError if Date._strptime doesn't extract date information. Reported by tadayoshi funaba. [ruby-core:62349] Mon May 5 01:12:27 2014 Tadayoshi Funaba * ext/date/date_core.c (rt_rewrite_frags): a new feature (not a bug fix) of strptime. applies offset even if the given date is not local time (%s and %Q). This is an exceptional feature and I do NOT recommend to use this at all. Thank you git community. Sun May 4 20:51:32 2014 Tanaka Akira * lib/time.rb (Time.force_zone!): Use usual local time if it has expected offset from UTC. Sun May 4 17:58:12 2014 Tanaka Akira * lib/time.rb (Time.force_zone!): New private method. (Time.make_time): Use Time.force_zone!. (Time.strptime): Ditto. (Time.rfc2822): Ditto. (Time.xmlschema): Ditto. * lib/rss/rss.rb (Time.w3cdtf): Use Time.force_zone!. Sun May 4 10:22:59 2014 Nobuyoshi Nakada * math.c (math_atan2): return values like as expected by C99 if both two arguments are infinity. based on the patch by cremno phobia in [ruby-core:62310]. [Feature #9799] Sun May 4 03:46:42 2014 Tanaka Akira * lib/time.rb (Time.httpdate): Always return a UTC Time object. Sun May 4 03:26:39 2014 Tanaka Akira * lib/time.rb (Time.make_time): Refactored. Sun May 4 02:53:17 2014 Tanaka Akira * lib/time.rb (Time.rfc2822): Fix year completion. Produce fixed-offset time object if appropriate. (Time.xmlschema): Produce fixed-offset time object if appropriate. Sat May 3 23:52:20 2014 Tanaka Akira * lib/time.rb (make_time): Produce fixed-offset time object if appropriate. (Time.strptime): Use d[:zone] instead of d[:offset]. * lib/rss/rss.rb (Time.w3cdtf): Produce fixed-offset time object if appropriate. Sat May 3 20:21:38 2014 Tanaka Akira * lib/time.rb (Time.strptime): Use d[:offset] if d[:seconds] is not given. Reported by tadayoshi funaba. [ruby-core:62322] Sat May 3 04:04:16 2014 Eric Wong * complex.c (parse_comp): replace ALLOCA_N with ALLOCV_N/ALLOCV_END [Bug #9608] * rational.c (read_digits): ditto Sat May 3 00:06:30 2014 Naohisa Goto * file.c (HAVE_STRUCT_STATVFS_F_BASETYPE): File::Statfs#fstypename is supported on AIX, HP-UX, and Solaris, by using the value of struct statvfs.f_basetype. * configure.in (HAVE_STRUCT_STATVFS_F_BASETYPE): check struct statvfs.f_basetype which is available on AIX, HP-UX, and Solaris. Fri May 2 21:04:02 2014 Nobuyoshi Nakada * parse.y (next_id): no reason to set ID_STATIC_SYM here, as ID returned by rb_intern3 can be a dynamic symbol and the static symbol flag is set otherwise. [Bug #9787] Fri May 2 11:32:51 2014 Nobuyoshi Nakada * test/ruby/test_io.rb (test_seek, test_seek_symwhence): defer File::Statfs#type call which may not be implemented, to mitigate errors on platforms where SEEK_DATA is available but f_type in struct statfs is not. [ruby-dev:48154] [Bug #9789] Fri May 2 10:37:55 2014 Nobuyoshi Nakada * parse.y (rb_id_attrset): turn dynamically interned Symbol into an ID, since rb_str_dynamic_intern returns a Symbol but not an ID. [ruby-core:62226] [Bug #9787] Thu May 1 22:19:34 2014 Kazuhiro NISHIYAMA * file.c: Change AND condition to nested condition. Thu May 1 00:36:26 2014 Naohisa Goto * file.c (FSTATFS): check availability of struct statfs and struct statvfs in addition to fstatfs(2) and fstatvfs(2). This fixes error in Solaris. [Bug #9788] [ruby-dev:48145] Wed Apr 30 19:46:23 2014 Narihiro Nakamura * gc.c (gc_after_sweep): suppress unnecessary expanding heap. Tomb heap pages are freed pages here, so expanding heap is not required. Wed Apr 30 17:58:40 2014 Koichi Sasada * vm.c (invoke_block_from_c): add VM_FRAME_FLAG_BMETHOD to record it is bmethod frame. * vm.c (vm_exec): invoke RUBY_EVENT_RETURN event if rollbacked frame is VM_FRAME_FLAG_BMETHOD. [Bug #9759] * test/ruby/test_settracefunc.rb: add a test for TracePoint/set_trace_func. * vm_core.h: rename rb_thread_t::passed_me to rb_thread_t::passed_bmethod_me to clarify the usage. * vm_insnhelper.c (vm_call_bmethod_body): use renamed member. Wed Apr 30 17:06:49 2014 Nobuyoshi Nakada * parse.y (rb_id_attrset): pin down dynamic symbol only. it is possible that attrset ID can be registered as a static symbol after the corresponding attrget ID has been registered as a dynamic, and then the latter may be collected. [ruby-core:62226] [Bug #9787] Tue Apr 29 14:17:57 2014 Tanaka Akira * lib/tmpdir.rb: Rescue LoadError on etc.so for miniruby. Revert r45707, r45711, r45717. Tue Apr 29 12:50:02 2014 Tanaka Akira * lib/fileutils.rb: Don't need to define fu_get_gid and fu_get_gid in rescue LoadError on 'etc'. Tue Apr 29 10:21:38 2014 Kazuki Tsujimoto * parse.y (symbols_i): like r45492, call rb_gc_resurrect(). Tue Apr 29 04:29:05 2014 Kazuhiro NISHIYAMA * file.c (HAVE_STRUCT_STATFS_T_F_FSTYPENAME): Add new macro for statfs_t. * file.c (HAVE_STRUCT_STATFS_T_F_TYPE): ditto. * file.c (rb_io_statfs): check FSTATFS macro only instead of HAVE_FSTATFS and HAVE_FSTATVFS. * file.c (statfs_type): use new macro. * file.c (statfs_fstypename): ditto. * file.c (statfs_inspect): ditto. Tue Apr 29 00:20:26 2014 Rajarshi Das * bootstraptest/test_literal.rb: fix typo of "dynamic". [ci skip] * regexp.rdoc: fix typo of "organized". [ci skip] * lib/session.rb: fix typo of "recognized". [ci skip] Mon Apr 28 21:40:27 2014 NARUSE, Yui * configure.in (HAVE_STRUCT_STATFS_F_TYPE): check struct statfs.f_type to support OpenBSD. * file.c (statfs_type): use above macro to switch. * file.c (statfs_inspect): ditto. Mon Apr 28 18:06:08 2014 NARUSE, Yui * configure.in: check struct statvfs and struct statvfs.f_fstypename. * configure.in: on NetBSD fstatfs is obsoleted. * file.c: support NetBSD for File::Statfs. Mon Apr 28 17:42:42 2014 Narihiro Nakamura * gc.c: This argument must be a pointer. Mon Apr 28 17:40:15 2014 Narihiro Nakamura * gc.c: Fix typos. These are undefined variables. Sun Apr 27 19:39:42 2014 Tadayoshi Funaba * ext/date/date_strptime.c (date__strptime_internal): do not overwrite century. Sat Apr 26 11:50:08 2014 SHIBATA Hiroshi * test/ruby/test_enum.rb (test_flat_map): Added test for flat_map. Contribute from @igaiga. [fix GH-598] Sat Apr 26 10:55:33 2014 Nobuyoshi Nakada * compile.c (compile_array_): make copy a first hash not to modify the argument itself. keyword splat should be non-destructive. [ruby-core:62161] [Bug #9776] Sat Apr 26 08:05:36 2014 Tanaka Akira * test/ruby/test_process.rb (test_rlimit_nofile): Don't limit RLIMIT_NOFILE too small. This fix sporadic "[ASYNC BUG] thread_timer: select" on GNU/Linux. Fri Apr 25 22:54:34 2014 Naohisa Goto * lib/fileutils.rb (rmdir): rescue Errno::EEXIST in addition to ENOTEMPTY (and ENOENT), because SUSv3 describes that "If the directory is not an empty directory, rmdir() shall fail and set errno to [EEXIST] or [ENOTEMPTY]" and Solaris uses EEXIST. [Bug #9571] [ruby-dev:48017] Fri Apr 25 19:16:30 2014 Tanaka Akira * lib/webrick/utils.rb: Don't rescue LoadError for 'etc' extension. Fri Apr 25 14:55:59 2014 Nobuyoshi Nakada * configure.in (rb_cv_func___builtin_unreachable): try with an external variable not only by a warning, which might not be shown due to the optimization. [ruby-core:61647] [Bug #9665] Fri Apr 25 13:11:49 2014 NARUSE, Yui * configure.in: NetBSD's ksh, used by configure, needs escapes. Fri Apr 25 12:51:08 2014 NARUSE, Yui * configure.in: correct pthread_setname_np's prototype on NetBSD. [Bug #9586] Thu Apr 24 23:17:25 2014 NAKAMURA Usaku * lib/fileutils.rb (fu_get_uid, fu_get_gid): Etc.getpwnam/getgrnam may returns nil. * lib/webrick/utils.rb (su): ditto. Thu Apr 24 22:55:22 2014 Tanaka Akira * bootstraptest/test_io.rb: Add etc.so to $" before require 'tmpdir'. Thu Apr 24 21:09:55 2014 Kazuhiro NISHIYAMA * man/ruby.1: fix broken link. Thu Apr 24 20:53:02 2014 Tanaka Akira * lib/tmpdir.rb: Don't need to rescue LoadError for etc.so. Thu Apr 24 17:39:53 2014 NARUSE, Yui * file.c (statfs_inspect): suppress warnings. assume those values won't be larger than LONG_LONG_MAX. Thu Apr 24 11:53:28 2014 Nobuyoshi Nakada * ext/openssl/ossl_asn1.c (ossl_asn1_initialize): SYMID on a value other than Symbol is an undefined behavior. fix up r31699. [ruby-core:62142] [Bug #9771] Thu Apr 24 11:21:37 2014 Nobuyoshi Nakada * parse.y (rb_sym2id, rb_sym2id_without_pindown): return 0 for non-symbol values, for the time being. Thu Apr 24 05:50:13 2014 NARUSE, Yui * parse.y (dsym_node_gen): like r45492, call rb_gc_resurrect(). Wed Apr 23 20:36:22 2014 Tanaka Akira * ext/etc/extconf.rb: Build ext/etc unconditionally. Wed Apr 23 14:10:50 2014 NARUSE, Yui * file.c (statfs_fsid): remove statfs.f_fsid because it doesn't return meaningful value portably. http://togetter.com/li/658517 Wed Apr 23 11:03:41 2014 Nobuyoshi Nakada * ext/stringio/stringio.c (strio_write): use rb_str_append to reuse coderange bits other than ASCII-8BIT, and keep taintedness. [ruby-dev:48118] [Bug #9769] Wed Apr 23 00:43:00 2014 NAKAMURA Usaku * win32/win32.c, include/ruby/win32.h (ustatfs): implementation of statfs(2) clone. [EXPERIMENTAL] * file.c (rb_io_statfs): use above function. * configure.in, win32/Makefile.sub (struct statfs): available. Tue Apr 22 23:56:24 2014 NAKAMURA Usaku * file.c (rb_io_stafs): use statfs(2) if fstatfs(2) is unavailable. * configure.in (fstatfs): check it. Tue Apr 22 22:15:51 2014 NAKAMURA Usaku * file.c (rb_io_statfs): need to define even if the system doesn't have fstatfs(2). * test/ruby/test_file.rb (TestFile#test_statfs): skip if IO#stafs is not implemented. Tue Apr 22 19:32:48 2014 NARUSE, Yui * file.c: newly added a class File::Statfs. (experimental) Tue Apr 22 08:22:33 2014 Koichi Sasada * gc.c (objspace_malloc_increase): don't cause GC by malloc_increase when memop type is MEMOP_TYPE_REALLOC. GC at realloc is not well maintained. We need a time to make it safe. [ruby-dev:48117] Tue Apr 22 06:54:15 2014 Nobuyoshi Nakada * gc.c (objspace_malloc_increase): run full mark if 0x04 bit is set in ruby_gc_stress. [ruby-core:62103] [Feature #9761] * gc.c (objspace_malloc_increase): run GC after realloc not only malloc and calloc by GC.stress. [ruby-core:62103] [Feature #9761] Mon Apr 21 19:12:20 2014 NARUSE, Yui * string.c (rb_str_coderange_scan_restartable): coderange is always ENC_CODERANGE_VALID if the string is ASCII-8BIT and already has a non ASCII character. Mon Apr 21 19:02:44 2014 NARUSE, Yui * string.c (coderange_scan): remove useless condition `p < e` after search_nonascii. * string.c (rb_str_coderange_scan_restartable): ditto. Mon Apr 21 18:55:21 2014 NARUSE, Yui * ext/-test-/string/coderange.c: add Bug::String.new#coderange_scan to explicitly scan coderange. Mon Apr 21 18:19:35 2014 NARUSE, Yui * string.c (coderange_scan): remove unused logic. * string.c (rb_str_coderange_scan_restartable): ditto. Mon Apr 21 14:11:48 2014 Nobuyoshi Nakada * ext/stringio/stringio.c (strio_putc): fix for non-ascii encoding, like as IO#putc. [ruby-dev:48114] [Bug #9765] Sun Apr 20 12:57:15 2014 Masaya Tarui * st.c (st_foreach_check): change start point of search at check from top to current. [ruby-dev:48047] [Bug #9646] Sun Apr 20 08:41:33 2014 Andrew DeMaria * lib/mkmf.rb (link_command, libpathflag, create_makefile): prefer user specified `$LIBPATH` than `$DEFLIBPATH`. [ruby-core:62100] [ruby-trunk - Bug #9760] Sun Apr 20 06:01:18 2014 Eric Wong * gc.c (rb_gc_writebarrier): drop special case for big hash/array [Bug #9518] Sat Apr 19 15:38:29 2014 Nobuyoshi Nakada * parse.y (primary): flush cmdarg flags inside left-paren in a command argument, to allow parenthesed do-block as an argument without arguments parentheses. [ruby-core:61950] [Bug #9726] Sat Apr 19 10:07:24 2014 Tanaka Akira * internal.h (struct RBignum): Use size_t for len. * include/ruby/intern.h (rb_big_new): Use size_t instead of long to specify the size of bignum. (rb_big_resize): Ditto. * bignum.c: Follow above changes. * rational.c: Follow above changes. * marshal.c: Follow above changes. Sat Apr 19 00:32:07 2014 Tanaka Akira * numeric.c (rb_num2long): Returns a long. (rb_num2ulong): Returns a unsigned long. * bignum.c (rb_big2long): Returns a long. (rb_big2ulong): Returns a unsigned long. * include/ruby/intern.h: Follow above changes. * include/ruby/ruby.h: Follow above changes. (rb_num2long_inline): No need to cast. (rb_num2ulong_inline): Ditto. Sat Apr 19 00:17:20 2014 Nobuyoshi Nakada * string.c (SHARABLE_SUBSTRING_P): predicate if substring can be shared with the original string. true if just at the end of the original string, for the time being. all substring will be able to be shared in the future. Fri Apr 18 21:48:24 2014 Nobuyoshi Nakada * string.c (rb_str_new_frozen): consider the shared string at middle. * string.c (rb_str_subseq, rb_str_substr, str_byte_substr): share middle of a string. Fri Apr 18 15:40:05 2014 NARUSE, Yui * string.c: use uintptr_t instead of VALUE because they are not ruby object. Fri Apr 18 14:51:42 2014 NARUSE, Yui * string.c: check str_strlen's argument, and add comment or use NULL if simply it uses str's enc. Fri Apr 18 14:32:40 2014 NARUSE, Yui * string.c (str_strlen): use enc_strlen if the coderange is known. Fri Apr 18 14:21:21 2014 NARUSE, Yui * string.c (enc_strlen): move UTF-8 optimization from str_strlen to enc_strlen. Fri Apr 18 08:50:18 2014 Nobuyoshi Nakada * configure.in (rb_cv_getcwd_malloc): check if getcwd allocates buffer if NULL is given [ruby-core:62072] [Bug #9752] Thu Apr 17 16:28:10 2014 SHIBATA Hiroshi * prelude.rb: [DOC] Update Thread::exclusive docs by @stevenharman. Thu Apr 17 10:03:53 2014 Nobuyoshi Nakada * lib/fileutils.rb (FileUtils#copy_entry): update rdoc about preserve option and permissions, following r31123. [ruby-core:62065] [Bug #9748] Wed Apr 16 23:47:36 2014 Nobuyoshi Nakada * enum.c (dont_recycle_block_arg): fix condition to recycle block argument. lambda with rest can get internal array directly. [ruby-core:62060] [Bug #9749] Wed Apr 16 09:51:16 2014 Nobuyoshi Nakada * ext/openssl/ossl_pkey.c (ossl_pkey_verify): as EVP_VerifyFinal() finalizes only a copy of the digest context, the context must be cleaned up after initialization by EVP_MD_CTX_cleanup() or a memory leak will occur. [ruby-core:62038] [Bug #9743] Tue Apr 15 19:36:42 2014 NAKAMURA Usaku * include/ruby/win32.h (rb_w32_cmdvector): removed. * win32/win32.c (rb_w32_sysinit): use WCHAR version of GetCommandLine() internally. * win32/win32.c (w32_cmdvector): renamed from rb_w32_cmdvector. use WCHAR* instead of char* internally. these changes are expected to not changing the behavior yet. Tue Apr 15 19:26:05 2014 Tanaka Akira * ext/extmk.rb: Re-generate extmk.mk and dummy makefiles only if really required. This fixes a problem to run multiple test-all concurrently as: make test-all & make test-all & make test-all & ... Tue Apr 15 12:49:53 2014 Sam Rawlins * enum.c (enum_each_slice, enum_each_cons): make more efficient by allocating less and recycling block argument arrays if possible. [Fixes GH-596] Mon Apr 14 18:44:45 2014 NARUSE, Yui * addr2line.c (fill_lines): get base addrs in fill_lines to use it with dladdr_fbases introduced at r45563. it didn't get before if the executable is not pie. Mon Apr 14 18:05:48 2014 NARUSE, Yui * addr2line.c (main_exe_path): support FreeBSD. At least sh, csh, tcsh, bash, and zsh sets realpath of the main executable for dladdr, but gdb doesn't. Mon Apr 14 17:20:10 2014 Nobuyoshi Nakada * proc.c (umethod_bind): use the ancestor iclass instead of new iclass to get rid of infinite recursion, if the defined module is already included. [ruby-core:62014] [Bug #9721] Sun Apr 13 12:46:58 2014 Tanaka Akira * bignum.c (SIZEOF_BDIGIT): Renamed from SIZEOF_BDIGITS. * internal.h: Ditto. * marshal.c: Ditto. * rational.c: Ditto. Sun Apr 13 10:18:09 2014 Tanaka Akira * common.mk: Unused target, $(MKMAIN_CMD), removed. * Makefile.in (MKMAIN_CMD): Unused macro removed. * win32/Makefile.sub (MKMAIN_CMD): Ditto. Sat Apr 12 22:11:10 2014 Nobuyoshi Nakada * string.c (sym_to_proc), proc.c (rb_block_clear_env_self): clear caller's self which is useless, so that it can get collected. [Fixes GH-592] Sat Apr 12 09:26:48 2014 Eric Hodel * ext/openssl/ossl_ocsp.c: [DOC] Document OpenSSL::OCSP. Fri Apr 11 18:52:38 2014 Koichi Sasada * array.c (ARY_SET): added. ARY_SET() is same functionality of RARRAY_ASET(), but it has an assertion (`ary' doesn't have shared array). Fri Apr 11 16:54:26 2014 Koichi Sasada * array.c: make shared arrays WB-protected objects. Shared arrays were WB-unprotected object because sharing array can modify shared array's buffer if it occupied shared array. [sharing array (ary)] -> [shared array (shared)] -> | A +---------------------------------------+ write `buff' with WB(ary, &buff[i], obj) -> if `ary' and `shared' are old, then only `ary' will be remembered. -> traverse from `ary'. But `shared' is old, so that written `obj' is not marked. It cause WB miss so that shared arrays were WB-unprotected. (WB-unprotected objects are marked everytime if it is living) This patch insert WB() for `shared' if it is needed. Fri Apr 11 15:05:26 2014 Nobuyoshi Nakada * proc.c (rb_method_call_with_block, umethod_bind): call with IClass including the module for a module instance method. [ruby-core:61936] [Bug #9721] * vm_insnhelper.c (vm_search_super_method): allow bound UnboundMethod case. Fri Apr 11 12:02:30 2014 NARUSE, Yui * addr2line.c (rb_dump_backtrace_with_lines): set base address which is retrieved from dladdr to dladdr_fbases, to skip already parsed objects. Fri Apr 11 12:44:50 2014 Nobuyoshi Nakada * array.c (ary_reject): may be turned into a shared array during the given block. [ruby-dev:48101] [Bug #9727] Thu Apr 10 23:41:21 2014 Akinori MUSHA * lib/net/ftp.rb (Net::FTP#login): [DOC] The default password for anonymous login was changed to "anonymous@" in r25313. Thu Apr 10 19:22:58 2014 Koichi Sasada * test/ruby/test_array.rb: remove useless `assert'. Thu Apr 10 19:11:11 2014 Koichi Sasada * array.c (rb_ary_modify): remember shared array owner if a shared array owner is promoted and a shared array is not promoted. Now, shared array is WB-unprotected so that shared arrays are not promoted. All objects referred from shared array should be marked correctly. [ruby-core:61919] [ruby-trunk - Bug #9718] * test/ruby/test_array.rb: add a test for above. Thu Apr 10 18:57:12 2014 Koichi Sasada * gc.c (gc_verify_internal_consistency): move lines and enable allrefs_dump() on RGENGC_CHECK_MODE >= 4. Thu Apr 10 15:01:06 2014 NARUSE, Yui * addr2line.c (append_obj): clear allocated memory. * addr2line.c (rb_dump_backtrace_with_lines): free `base_addrs'. Thu Apr 10 14:40:18 2014 Koichi Sasada * gc.c (rb_gc_writebarrier_unprotect_promoted): disable to dump debug message when RGENGC_CHECK_MODE == 0. Thu Apr 10 08:13:47 2014 Tanaka Akira * signal.c (check_stack_overflow): Don't use ucontext_t if ucontext.h is not available. Fixes build on Android (x86). Wed Apr 9 23:22:44 2014 Tanaka Akira * gc.c (mark_current_machine_context): Call SET_STACK_END. This reverts a hunk of r40703 by ko1. This fixes [ruby-dev:48098] [Bug #9717]. Wed Apr 9 21:02:04 2014 Tanaka Akira * process.c (OBJ2UID1): Defined even if getpwnam_r is not usable. (OBJ2GID1): Defined even if getgrnam_r is not usable. This fixes compilation error on Android. Wed Apr 9 15:16:59 2014 Nobuyoshi Nakada * encoding.c (rb_enc_default_internal): fix rdoc. `__FILE__` is in filesystem encoding but not `default_internal`. [ruby-core:61894] [Bug #9713] Wed Apr 9 14:43:00 2014 Koichi Sasada * test/ruby/test_gc.rb: more long timeout. This test failed under RGENGC_CHECK_MODE >= 2. Wed Apr 9 13:07:13 2014 Nobuyoshi Nakada * configure.in: get rid of __builtin_setjmp/__builtin_longjmp on x64-mingw, which causes SEGV with callcc. [ruby-core:61887] [Bug #9710] Wed Apr 9 12:44:54 2014 Nobuyoshi Nakada * string.c (str_buf_cat): should round up the capacity by 4KiB, but not number of rooms. [ruby-core:61886] [Bug #9709] Tue Apr 8 22:55:32 2014 Akinori MUSHA * lib/mkmf.rb (MakeMakefile#dir_config): [DOC] Improve documentation. Tue Apr 8 22:31:44 2014 Koichi Sasada * gc.c: rename `RGENGC_THREEGEN' to `RGENGC_AGE2_PROMOTION'. * gc.c (rgengc_rememberset_mark): don't promote, but remain in remember set for infant objects. * gc.c (RVALUE_PROMOTE_INFANT, RVALUE_PROMOTE_YOUNG): count numbers in these functions. Mon Apr 7 21:11:49 2014 Tanaka Akira * ext/socket/socket.c (sock_s_getnameinfo): Save errno for EAI_SYSTEM. Reported by Saravana kumar. [ruby-core:61820] [Bug #9697] Fixed by Heesob Park. [ruby-core:61868] Mon Apr 7 07:20:23 2014 NARUSE, Yui * lib/xmlrpc/client.rb (do_rpc): don't check body length. If HTTP content-encoding is used, the length may be different. [Bug #8182] [ruby-core:53811] Mon Apr 7 02:39:48 2014 Marc-Andre Lafortune * lib/matrix.rb: Add Matrix#cofactor [fix GH-568] Add first_minor [fix GH-568] Handle empty diagonal matrix case [fix GH-576] Patches by gogotanaka Sun Apr 6 08:52:50 2014 Bugra Barin * dln.c (dln_load): use wchar version to load a library in non-ascii path on Windows. based on the patch by Bugra Barin in [ruby-core:61845]. [Bug #9699] Sat Apr 5 19:36:33 2014 Tadayoshi Funaba * ext/date/date_core.c (d_lite_cmp): should compare with #<. Sat Apr 5 00:31:21 2014 Nobuyoshi Nakada * ext/readline/extconf.rb (rl_hook_func_t): check pointer type. [ruby-dev:48089] [Bug #9702] Fri Apr 4 07:13:44 2014 Nobuyoshi Nakada * configure.in (ac_cv_func___builtin_setjmp): should not skip flags restoration in RUBY_WERROR_FLAG by `break`. [ruby-dev:48086] [Bug #9698] Wed Apr 2 21:50:06 2014 Nobuyoshi Nakada * configure.in (ac_cv_func___builtin_setjmp): __builtin_longjmp() in clang 5.1 uses `void**`, not `jmp_buf`. [Bug #9692] Wed Apr 2 20:57:15 2014 Koichi Sasada * gc.c, gc.h (rb_objspace_each_objects_without_setup): Add a new (hidden) C-API to iterate objspace snapshot. This API is not safe to call any C-APIs in a given callback function. Be careful to use this C-API. Wed Apr 2 17:43:17 2014 Nobuyoshi Nakada * configure.in (ac_cv_func___builtin_setjmp): gcc 4.9 disallows a variable as the second argument of __builtin_longjmp(). [ruby-core:61800] [Bug #9692] Wed Apr 2 15:12:18 2014 SHIBATA Hiroshi * common.mk: Use redmine-2.x url for DeveloperHowto wiki. [ruby-core:60657] [Bug #9511] Wed Apr 2 11:46:29 2014 Kazuhiro NISHIYAMA * ext/pathname/lib/pathname.rb (Pathname#join): Fix error with empty args. Reported by ko1 via IRC. * test/pathname/test_pathname.rb (TestPathname#test_join): Add the test for above case. Tue Apr 1 11:39:57 2014 James Edward Gray II * lib/csv.rb: Symbol HeaderConverter: strip leading/trailing space. Reported by Skye Shaw [Fixes GH-575] Tue Apr 1 11:34:04 2014 James Edward Gray II * lib/csv.rb: Don't attempt to convert nil headers. Reported by Skye Shaw Tue Apr 1 17:29:35 2014 Nobuyoshi Nakada * tool/config_files.rb (ConfigFiles.download): show failed URI. [ruby-core:61792] [Bug #9690] Tue Apr 1 12:06:49 2014 NARUSE, Yui * addr2line.c (rb_dump_backtrace_with_lines): don't depend hard coded symbol '_start'. * addr2line.c (fill_lines): instead of above, get a dynamic symbol in the main executable and use it to know the base address. * addr2line.c (follow_debuglink0): use obj_info_t instead of line_info_t to handle object related data. * addr2line.c (main_exe_path): defined for Linux. Tue Apr 1 08:58:39 2014 Kazuki Tsujimoto * parse.y (rb_str_dynamic_intern): set mark bit if dynamic symbol is before sweeping. Tue Apr 1 07:37:00 2014 NARUSE, Yui * addr2line.c (fill_lines): use dynsym, which is used for dynamic linking and always exists, if there's no symtab. Tue Apr 1 07:27:15 2014 NARUSE, Yui * vm_dump.c (rb_print_backtrace): current implementation uses dladdr to get the path of objects. Mon Mar 31 23:57:45 2014 Nobuyoshi Nakada * ext/readline/extconf.rb: fix typo, `$defs` not `$DEFS`. [ruby-core:61756] [Bug #9578] Mon Mar 31 17:23:50 2014 NAKAMURA Usaku * test/ruby/memory_status.rb: require envutil before accessing EnvUtil module. reported by ko1 via twitter. Mon Mar 31 10:28:01 2014 Eric Wong * st.c (st_init_table_with_size): update comment [Feature #9425] Sun Mar 30 23:39:26 2014 NAKAMURA Usaku * win32/win32.c (rb_w32_accept, open_ifs_socket, socketpair_internal): reset inherit flag of socket to avoid unintentional inheritance of socket. note that the return value of SetHandleInformation() is not verified intentionally because old Windows may return an error. [Bug #9688] [ruby-core:61754] Sat Mar 29 13:04:22 2014 Koichi Sasada * gc.c (gc_before_sweep): cap `malloc_limit' to gc_params.malloc_limit_max. It can grow and grow with such case: `loop{"a" * (1024 ** 2)}' [Bug #9687] This issue is pointed by Tim Robertson. http://www.omniref.com/blog/blog/2014/03/27/ruby-garbage-collection-still-not-ready-for-production/ Fri Mar 28 19:32:13 2014 Nobuyoshi Nakada * struct.c (not_a_member): extract name error and use same error messages. based on the patch by Marcus Stollsteimer at [ruby-core:61721]. [Bug #9684] Fri Mar 28 09:21:54 2014 SHIBATA Hiroshi * ext/psych/psych.gemspec: update gemspec for psych-2.0.5 Fri Mar 28 09:11:06 2014 SHIBATA Hiroshi * ext/psych/lib/psych.rb: Merge psych-2.0.5. bump version to libyaml-0.1.6 for CVE-2014-2525. * ext/psych/yaml/config.h: ditto. * ext/psych/yaml/scanner.c: ditto. * ext/psych/yaml/yaml_private.h: ditto. Thu Mar 27 18:58:10 2014 Nobuyoshi Nakada * re.c (match_regexp): set regexp for MatchData from string. * re.c (rb_backref_set_string): create MatchData from string and set backref. * string.c (rb_pat_search, rb_str_sub, rb_str_sub_bang, str_gsub), (scan_once, rb_str_scan, rb_str_partition): use rb_str_index instead of rb_reg_search() when pattern is a String. based on the patch by Sam Rawlins [Fixes GH-579] Thu Mar 27 11:58:55 2014 NARUSE, Yui * addr2line.c (fill_lines): check shdr[i].sh_type because even if .symtab section exists, the section's type can be SHT_NOBITS and actual data doesn't exist in the file. revert r45441. Wed Mar 26 14:57:35 2014 NAKAMURA Usaku * parse.y: inline must be static (for mswin). fixed build error introduced at r45426. Wed Mar 26 14:33:00 2014 Narihiro Nakamura * internal.h (USE_SYMBOL_GC): enable Symbol GC by default (USE_SYMBOL_GC == 1). Tue Mar 25 22:57:11 2014 Narihiro Nakamura * parse.y: support Symbol GC. [ruby-trunk Feature #9634] See this ticket about Symbol GC. * include/ruby/ruby.h: Declare few functions. * rb_sym2id: almost same as old SYM2ID but support dynamic symbols. * rb_id2sym: almost same as old ID2SYM but support dynamic symbols. * rb_sym2str: almost same as `rb_id2str(SYM2ID(sym))` but not pin down a dynamic symbol. Declare a new struct. * struct RSymbol: represents a dynamic symbol as object in Ruby's heaps. Add few macros. * STATIC_SYM_P: check a static symbol. * DYNAMIC_SYM_P: check a dynamic symbol. * RSYMBOL: cast to RSymbol * gc.c: declare RSymbol. support T_SYMBOL. * internal.h: Declare few functions. * rb_gc_free_dsymbol: free up a dynamic symbol. GC call this function at a sweep phase. * rb_str_dynamic_intern: convert a string to a dynamic symbol. * rb_check_id_without_pindown: not pinning function. * rb_sym2id_without_pindown: ditto. * rb_check_id_cstr_without_pindown: ditto. * string.c (Init_String): String#intern and String#to_sym use rb_str_dynamic_intern. * template/id.h.tmpl: use LSB of ID as a flag for determining a static symbol, so we shift left other ruby_id_types. * string.c: use rb_sym2str instead `rb_id2str(SYM2ID(sym))` to avoid pinning. * load.c: use xx_without_pindown function at creating temporary ID to avoid pinning. * object.c: ditto. * sprintf.c: ditto. * struct.c: ditto. * thread.c: ditto. * variable.c: ditto. * vm_method.c: ditto. Wed Mar 26 13:25:54 2014 NARUSE, Yui * addr2line.c (fill_lines): loop reverse order not to overwrite the basis of base addresses comparison. * addr2line.c: use uintptr_t instead of intptr_t for pointers. * addr2line.c (rb_dump_backtrace_with_lines): don't use syms. * vm_dump.c (rb_print_backtrace): ditto. * addr2line.h: ditto. Wed Mar 26 11:20:50 2014 Nobuyoshi Nakada * marshal.c (w_object): internal objects are not dumpable. [ruby-core:61677] [Bug #9674] * ext/thread/thread.c (undumpable): ConditionVariable and Queue are not dumpable. [ruby-core:61677] [Bug #9674] Wed Mar 26 10:36:39 2014 NARUSE, Yui * addr2line.c (follow_debuglink): show message if it closes opened (and maybe used) elf binary. Wed Mar 26 10:34:25 2014 NARUSE, Yui * addr2line.c (fill_line): pass and use offset instead of curobj_baseaddr. Wed Mar 26 09:07:48 2014 Yutaka Kanemoto * configure.in: add --disable-pie. [Feature #9673] Wed Mar 26 08:47:04 2014 NARUSE, Yui * addr2line.c (fill_lines): don't run fill_lines multiple times. Wed Mar 26 08:45:00 2014 Sam Rawlins * internal.h: add prototype for rb_reg_search0 * re.c: rename rb_reg_search to rb_reg_search0, add set_backref_str argument to allow callers to indicate that they don't require the backref string to be allocated. * string.c: don't allocate backref str if replacement string is provided [GH-578] [Bug #9676] [ruby-core:61682] Wed Mar 26 08:29:43 2014 mo khan * lib/rubygems.rb: fix spelling of Jim Weirich. [Fixes GH-577] Wed Mar 26 01:55:45 2014 NARUSE, Yui * addr2line.c (rb_dump_backtrace_with_lines): a function to get must be a function in the main executable, whose absolute path is not available by dladdr, and ruby get it by /proc/self/exe on Linux. Wed Mar 26 01:34:50 2014 NARUSE, Yui * addr2line.c (fill_lines): skip if path is NULL. Tue Mar 25 23:57:17 2014 Nobuyoshi Nakada * parse.y (parser_yylex): only a newline after label should be significant. [ruby-core:61658] [Bug #9669] Tue Mar 25 23:32:25 2014 Kazuhiro NISHIYAMA * ext/pathname/lib/pathname.rb (Pathname#join): remove unnecessary unshift. * test/pathname/test_pathname.rb (TestPathname#test_join): add tests. Tue Mar 25 16:47:36 2014 Nobuyoshi Nakada * parse.y (lex_state_e, parser_params, f_arglist, parser_yylex): separate EXPR_LABELARG from EXPR_BEG and let newline significant, so that required keyword argument can place at the end of argument list without parentheses. [ruby-core:61658] [Bug #9669] Mon Mar 24 22:19:56 2014 Nobuyoshi Nakada * parse.y (ripper_initialize): filename can not be modified. Mon Mar 24 15:19:47 2014 NARUSE, Yui * addr2line.c (rb_dump_backtrace_with_lines): fetch path of the executable from /proc/self/exe on Linux. Mon Mar 24 14:14:37 2014 SHIBATA Hiroshi * gc.c: Fix up default GC params by @csfrancis [fix GH-556] Mon Mar 24 13:13:36 2014 NARUSE, Yui * addr2line.c (parse_debug_line_cu): explicitly specify signed char because DWARF's line_Base is signed char and char maybe unsigned. patched by Rei Odaira. [ruby-dev:48068] [Bug #9654] Sun Mar 23 11:03:50 2014 Kohei Suzuki * vm_method.c (rb_method_entry_get_without_cache): me->klass is 0 for a method aliased in a module. [ruby-core:61636] [Bug #9663] Sun Mar 23 08:12:27 2014 Eric Wong * st.c (hash_pos): use bitwise AND to avoid slow modulo op (new_size): power-of-two sizes for hash_pos change (st_numhash): adjust for common keys due to lack of prime modulo [Feature #9425] * hash.c (rb_any_hash): right shift for symbols * benchmark/bm_hash_aref_miss.rb: added to show improvement * benchmark/bm_hash_aref_sym_long.rb: ditto * benchmark/bm_hash_aref_str.rb: ditto * benchmark/bm_hash_aref_sym.rb: ditto * benchmark/bm_hash_ident_num.rb: added to prevent regression * benchmark/bm_hash_ident_obj.rb: ditto * benchmark/bm_hash_ident_str.rb: ditto * benchmark/bm_hash_ident_sym.rb: ditto Sat Mar 22 22:56:45 2014 NARUSE, Yui * addr2line.c (fill_lines): compare the file names of object in which symbols exist. [Bug #9654] [ruby-dev:48058] Sat Mar 22 06:46:16 2014 Nobuyoshi Nakada * lib/cgi/util.rb (escape_html, unescape_html): make synonyms aliases instead of wrapper methods. * lib/cgi/util.rb (escape_element, unescape_element): ditto. [Fixes GH-573] Fri Mar 21 21:57:34 2014 Akinori MUSHA * configure.in: Fix a build problem with clang and --with-opt-dir. If ruby is configured with --with-opt-dir=dir when using clang as compiler, a warning `clang: warning: argument unused during compilation: '-I dir'` is emitted almost every time clang compiles a file. Unfortunately, RUBY_CHECK_PRINTF_PREFIX takes any output from the compiler as fatal error, and the check thus fails due to the warning. This is an attempt to fix the problem by adding a flag -Qunused-arguments to CFLAGS locally in the function to suppress the warning. [ruby-dev:48062] [Bug #9658] [Fixes GH-571] https://github.com/ruby/ruby/pull/571 Fri Mar 21 16:31:56 2014 Zachary Scott * gc.c: [DOC] Fix call-seq for GC.start by @jasonrclark [Fixes GH-572] https://github.com/ruby/ruby/pull/572 Thu Mar 20 11:37:28 2014 James Edward Gray II * lib/csv.rb: Fixed a broken regular expression that was causing CSV to miss escaping some special meaning characters when used in parsing. Reported by David Unric [ruby-core:54986] [Bug #8405] Thu Mar 20 16:53:07 2014 Koichi Sasada * gc.c (objspace_malloc_increase): should not invoke garbage_collect_with_gvl() here on non-ruby threads. Should just ignore the malloc_increase. This issue is pointed by Eric Wong [ruby-core:61519]. Thu Mar 20 13:05:16 2014 Koichi Sasada * struct.c (rb_struct_alloc): use RARRAY_CONST_PTR() instead of RARRAY_PTR(). Thu Mar 20 12:59:39 2014 Koichi Sasada * include/ruby/intern.h (rb_obj_call_init, rb_class_new_instance): constify a parameter (VALUE *). I believe this incompatibility doesn't break any code. However, if you have trouble, please tell us. * eval.c, object.c: ditto. Thu Mar 20 12:31:26 2014 Nobuyoshi Nakada * vm_method.c (rb_method_entry_get_without_cache): get rid of infinite recursion at aliases in a subclass and a superclass. return actually defined class for other than singleton class. [ruby-core:60431] [Bug #9475] Wed Mar 19 17:13:06 2014 Eric Wong * time.c (time_mload): freeze and preserve marshal-loaded time zone * test/ruby/test_time.rb: add test for GC on loaded object [Bug #9652] Tue Mar 18 23:20:12 2014 Shota Fukumori * vm_eval.c (eval_string_with_cref): Unify to use NIL_P. Tue Mar 18 22:03:41 2014 Shota Fukumori * vm_eval.c (eval_string_with_cref): Use file path even if scope is given. Related to [ruby-core:56099] [Bug #8662] and r42103. Mon Mar 17 13:17:47 2014 Koichi Sasada * enumerator.c (enumerator_block_call): use RARRAY_CONST_PTR() instead of RARRAY_PTR(). * io.c (rb_io_s_popen): ditto. * numeric.c (num_step_size): ditto. * vm_eval.c (rb_apply): ditto. * vm_eval.c (rb_eval_cmd): ditto. Mon Mar 17 10:11:59 2014 Eric Wong * variable.c (rb_const_set): delete existing entry on redefinition [Bug #9645] * test/ruby/test_const.rb (test_redefinition): test for leak Sun Mar 16 21:33:01 2014 Zachary Scott * lib/time.rb: [DOC] Fix timezone in example of Time.parse [Bug #9521] Based on patch by @stomar Sun Mar 16 13:21:40 2014 Nobuyoshi Nakada * configure.in (DLDFLAGS): insert a space between option and its argument for non-GCC compilers. [ruby-core:61429] [Bug #9624] Sun Mar 16 08:05:06 2014 Eric Wong * gc.c (objspace_xcalloc): fix GC accounting Sun Mar 16 06:33:35 2014 NARUSE, Yui * addr2line.c (fill_lines): return address is just after calling address. Therefore noreturn function with tail call's return address may be in another function. Sun Mar 16 05:51:55 2014 Zachary Scott * lib/gserver.rb: [DOC] Fixed typo in example by @stomar [Bug #9543] Sat Mar 15 18:54:03 2014 Kazuki Tsujimoto * ext/.document: remove refinement from documentable directories. Sat Mar 15 11:02:58 2014 Nobuyoshi Nakada * configure.in (DLDFLAGS): check for each options to control symbol resolution. [ruby-core:61429] [Bug #9624] Sat Mar 15 07:02:35 2014 Eric Wong * st.c (st_update): remove unnecessary assignment Fri Mar 14 14:58:38 2014 NARUSE, Yui * addr2line.c (fill_lines): fetch symbol names from ELF binary's symbol table if it is built with cc -g and not stripped. Now ruby can show static symbols on Linux though glibc's backtrace_symbols(3) don't show them. * addr2line.c (rb_dump_backtrace_with_lines): use dladdr(3) to detect what object file declares the symbol because dl_iterate_phdr can't detect the main executable file and codes on the stack. NOTE: signal trampolines sometimes on the user stack. (FreeBSD) * addr2line.c (rb_dump_backtrace_with_lines): stop showing backtrace if the function's name is main. NOTE: FreeBSD's backtrace (libexecinfo) shows _start and an additional address. Why it doesn't remove them on dladdr phase is, dladdr may fail to detect the main function but detect as _start function. Therefore it must be after scanning the symbol table and getting correct name. Fri Mar 14 12:07:46 2014 Zachary Scott * doc/syntax/literals.rdoc: [DOC] Single quote strings allows escape of backslash as well, patch by @idupree [Fixes GH-553] https://github.com/ruby/ruby/pull/553 Fri Mar 14 01:18:24 2014 Nobuyoshi Nakada * vm.c (invoke_block_from_c): add splattable argument. * vm.c (vm_invoke_proc): disallow to splat when directly invoked. * vm_insnhelper.c (vm_callee_setup_arg_complex, vm_callee_setup_arg): relax arity check of yielded lambda. [ruby-core:61340] [Bug #9605] * test/ruby/test_yield.rb (TestRubyYieldGen#emu_bind_params): no longer raise ArgumentError when splatting to lambda. Thu Mar 13 23:51:02 2014 NAKAMURA Usaku * ext/-test-/win32/dln/libdlntest.c (dlntest_ordinal): no need to specify export in the source file because .def file do it. get rid of warning on linking. Wed Mar 12 11:19:03 2014 Nobuyoshi Nakada * vm_insnhelper.c (vm_callee_setup_arg): disable fastpath if splat argument, since argc may differ for each calls. [ruby-core:61422] [Bug #9622] * vm_insnhelper.c (vm_callee_setup_arg): turn a macro into an inline function. Wed Mar 12 07:26:05 2014 Eric Wong * insns.def (opt_regexpmatch2): respect redefined match op Thanks to Sam Rawlins for the fix. * test/ruby/test_string.rb: test based on Tsuyoshi Sawada's report [Bug #9581] Tue Mar 11 22:31:25 2014 Kazuki Tsujimoto * ext/.document: add objspace/objspace_dump.c to document file. Tue Mar 11 22:22:38 2014 Kazuki Tsujimoto * test/objspace/test_objspace.rb (TestObjSpace#test_dump_uninitialized_file): remove dependency on json library. Tue Mar 11 10:55:10 2014 Nobuyoshi Nakada * README.EXT{,.ja} (Appendix B): update contents of `ruby_options` and replace `ruby_run` with `ruby_run_node`. based on the patch by Kaneko Yuichiro at [ruby-dev:48030] [Bug #9619]. Tue Mar 11 06:54:00 2014 Scott Francis * ext/objspace/objspace_dump.c: Check fptr before trying to dump RFILE object fd. [GH-562] * test/objspace/test_objspace.rb: add test Tue Mar 11 02:04:36 2014 NARUSE, Yui * vm_dump.c (rb_vm_bugreport): show vm maps on FreeBSD. * vm_dump.c (procstat_vm): copied from FreeBSD. http://svnweb.freebsd.org/base/head/usr.bin/procstat/procstat_vm.c?revision=261780 Mon Mar 10 12:14:26 2014 NARUSE, Yui * configure.in: always check dladdr(1). * addr2line.c (fill_lines): show the line number in C backtrace if ruby is built without --enable-shared (PIE) on Linux. patch is originally by Shinichiro Hamaji https://twitter.com/shinh/status/441957774264504321 NOTE: ld doesn't insert __executable_start for PIE. dladdr(3)'s argument must be a function pointer. Mon Mar 10 10:51:17 2014 ksss * test/ruby/test_enumerator.rb (test_iterators): fix test for hash iterators. [Fixes GH-558] Sun Mar 9 14:14:49 2014 Eric Wong * class.c (rb_class_subclass_add): use xmalloc * class.c (rb_module_add_to_subclasses_list): ditto * class.c (rb_class_remove_from_super_subclasses): use xfree * class.c (rb_class_remove_from_module_subclasses): ditto [Bug #9616] Sun Mar 9 13:51:16 2014 Nobuyoshi Nakada * ext/fiddle/function.c (function_call): fix memory leak when an exception occurs at argument conversion or the function call. Sun Mar 9 06:42:40 2014 Eric Wong * variable.c (struct global_variable): shrink by 8 bytes on 64-bit Sat Mar 8 17:42:51 2014 Eric Wong * vm.c (add_opt_method): cleanup to use rb_method_entry_at Sat Mar 8 13:46:40 2014 Nobuyoshi Nakada * ext/dl/cptr.c (dlptr_free), ext/dl/handle.c (dlhandle_free), ext/fiddle/handle.c (fiddle_handle_free), ext/fiddle/pointer.c (fiddle_ptr_free): fix memory leak. based on the patch Heesob Park at [ruby-dev:48021] [Bug #9599]. Sat Mar 8 13:30:39 2014 Nobuyoshi Nakada * process.c (obj2uid, obj2gid): now getpwnam_r() and getgrnam_r() may need larger buffers than sysconf values, so retry with expanding the buffer when ERANGE is returned. [ruby-core:61325] [Bug #9600] Fri Mar 7 19:29:13 2014 Eric Wong * vm_eval.c (vm_call0_body): use RARRAY_CONST_PTR (check_funcall_exec): ditto [ruby-core:61360] Fri Mar 7 19:14:11 2014 Eric Wong * vm_eval.c (vm_call0_body): fix RB_GC_GUARD location (check_funcall_exec): ditto [Bug #9609] Fri Mar 7 14:48:17 2014 Narihiro Nakamura * parse.y (ENC_SINGLE): Unused macro removed. Fri Mar 7 12:06:19 2014 Martin Bosslet * test/openssl/test_ssl.rb: Reuse TLS default options from OpenSSL::SSL::SSLContext::DEFAULT_PARAMS. Thu Mar 6 15:15:24 2014 Zachary Scott * doc/syntax/assignment.rdoc: [DOC] Fix assignment directions By @idupree [Fixes GH-555] https://github.com/ruby/ruby/pull/555 Thu Mar 6 15:07:18 2014 Zachary Scott * doc/syntax/methods.rdoc: [DOC] Fix example for block arguments By @idupree [Fixes GH-554] https://github.com/ruby/ruby/pull/554 Thu Mar 6 10:33:31 2014 Martin Bosslet * lib/openssl/ssl.rb: Explicitly whitelist the default SSL/TLS ciphers. Forbid SSLv2 and SSLv3, disable compression by default. Reported by Jeff Hodges. [ruby-core:59829] [Bug #9424] Wed Mar 5 15:56:18 2014 Nobuyoshi Nakada * parse.y (f_arg_asgn): define optional arguments as argument variables in the rhs default expressions. [ruby-core:61299] [Bug #9593] Wed Mar 5 11:58:30 2014 Nobuyoshi Nakada * ext/openssl/ossl.c (ossl_make_error): check NULL for unknown error reasons with old OpenSSL, and insert a colon iff formatted message is not empty. Wed Mar 5 00:42:00 2014 Kazuki Tsujimoto * ext/pathname/lib/pathname.rb (Pathname#find): add "ignore_error" keyword argument defaulted to true as well as Find#find. Tue Mar 4 23:00:18 2014 NAKAMURA Usaku * test/ruby/test_eval.rb (TestEval#make_test_binding): renamed. it's not test method. Tue Mar 4 20:50:59 2014 Masaya Tarui * st.c (st_foreach): fix type of hash. not st_data_t but st_index_t. Tue Mar 4 19:41:40 2014 Tanaka Akira * Makefile.in: ".DEFAULT" target removed because it is not for specifying default target. Tue Mar 4 00:25:35 2014 Kazuki Tsujimoto * lib/find.rb (Find#find): should pass ignore_error option to enumerators. Mon Mar 3 13:27:35 2014 NAKAMURA Usaku * test/test_find.rb (TestFind#test_unsearchable_dir): ruby cannot make directory unreachable by owner on Windows. Mon Mar 3 08:10:04 2014 Eric Wong * vm_method.c (rb_method_entry_get_without_cache): disable GMC writing if GMC is disabled. [ruby-core:61218] Mon Mar 3 07:47:17 2014 Eric Wong * README.EXT: wrap GetDBM with do/while(0) * README.EXT.ja: ditto * ext/dbm/dbm.c: ditto, likewise for GetDBM2 * ext/gdbm/gdbm.c: ditto * ext/sdbm/init.c: ditto [ruby-core:61217] Mon Mar 3 07:17:31 2014 Zachary Scott * NEWS: [DOC] Update doc regarding filesystem load when flushing IO Mon Mar 3 04:37:50 2014 NAKAMURA Usaku * io.c (rb_io_fsync): need to fsync even if on Windows. fixed mistake of r45254 and r45256. Mon Mar 3 04:21:34 2014 NAKAMURA Usaku * test/win32ole: get rid of warnings (unused variable). Mon Mar 3 02:53:53 2014 NAKAMURA Usaku * io.c (rb_io_flush_raw): [EXPERIMENTAL] remove force syncing for Win32 to speed up IO. this may break some tests, and they'll be fixed later. [ruby-core:58570] [Bug #9153] Mon Mar 3 00:17:43 2014 NAKAMURA Usaku * test/ruby/test_backtrace.rb: get rid of warnings. unused variable, shadowing. Sun Mar 2 11:15:10 2014 Nobuyoshi Nakada * lib/find.rb (Find#find): add "ignore_error" keyword argument defaulted to true. [ruby-core:51025] [Feature #7596] Sun Mar 2 11:13:30 2014 Nobuyoshi Nakada * ext/readline/extconf.rb (rl_hook_func_t): define as Function for very old readline versions. [ruby-core:61209] [Bug #9578] Sun Mar 2 10:47:58 2014 Eric Wong * load.c (ruby_init_ext): make idempotent to suppress warnings Sat Mar 1 19:51:42 2014 Tanaka Akira * lib/open3.rb (Open3.capture3): Ignore Errno::EPIPE for writing stdin_data. (Open3.capture2): Ditto. (Open3.capture2e): Ditto. Sat Mar 1 19:06:47 2014 Eric Wong * gc.c (ruby_gc_set_params): simplify condition Sat Mar 1 16:18:40 2014 Tanaka Akira * ext/readline/readline.c (Init_readline): Use rl_hook_func_t instead of Function to support readline-6.3. (rl_hook_func_t is available since readline-4.2.) Reported by Dmitry Medvinsky. [ruby-core:61141] [Bug #9578] Sat Mar 1 16:05:58 2014 Eric Wong * gc.c (ruby_gc_set_params): fix building without RGenGC Sat Mar 1 11:08:00 2014 Aaron Patterson * ext/psych/lib/psych/visitors/yaml_tree.rb: support dumping Encoding objects. * ext/psych/lib/psych/visitors/to_ruby.rb: support loading Encoding objects. * test/psych/test_encoding.rb: add test * ext/psych/lib/psych.rb: add version Sat Mar 1 10:52:34 2014 Zachary Scott * README.EXT.ja: [DOC] Fix typo "macro macro" @utenmiki [Fixes GH-551] https://github.com/ruby/ruby/pull/551 Fri Feb 28 11:16:55 2014 Marc-Andre Lafortune * numeric.c: Fix Numeric#step with 0 unit [Bug #9575] Thu Feb 27 17:59:01 2014 Zachary Scott * lib/optparse.rb: [DOC] Add example of generating help with optparse. Patch by @joelmccracken documenting-ruby/ruby#19 https://github.com/documenting-ruby/ruby/pull/19 Thu Feb 27 12:10:09 2014 Nobuyoshi Nakada * numeric.c (ruby_num_interval_step_size): check signs and get rid of implementation dependent behavior of negative division. [ruby-core:61106] [Bug #9570] Thu Feb 27 03:55:45 2014 Zachary Scott * thread.c: [DOC] Typo in comment for _FORTIFY_SOURCE [Fixes GH-548] Patch by @qnet-herwin https://github.com/ruby/ruby/pull/548 Wed Feb 26 18:43:43 2014 Koichi Sasada * gc.c (heap_pages_free_unused_pages): check tomb page availability at first. And return immediately if we don't touch sorted list any more. Wed Feb 26 14:10:44 2014 Nobuyoshi Nakada * eval.c (setup_exception): preserve exception class name encoding in debug mode messages. * eval.c (setup_exception): preserve errinfo across calling #to_s method on the exception. [ruby-core:61091] [Bug #9568] Wed Feb 26 01:29:27 2014 NARUSE, Yui * string.c (sym_find): Add Symbol.find(str), which returns whether given string is defined as symbol or not. [Feature #7854] Tue Feb 25 22:52:02 2014 Kazuhiro NISHIYAMA * ext/dl/dl.c (rb_dl_realloc): use NUM2SIZET instead of NUM2INT. * ext/fiddle/fiddle.c (rb_fiddle_realloc): ditto. Tue Feb 25 22:49:30 2014 Kazuhiro NISHIYAMA * ext/dl/dl.c (rb_dl_malloc): use NUM2SIZET instead of NUM2INT. Coverity Scan found this bug. * ext/fiddle/fiddle.c (rb_fiddle_malloc): ditto. Tue Feb 25 12:06:13 2014 NARUSE, Yui * win32/Makefile.sub: define PACKED_STRUCT. Mon Feb 24 21:41:56 2014 NAKAMURA Usaku * README.md, README.ja.md: removed (wrong) mode setting for emacs. Mon Feb 24 20:05:41 2014 Eric Wong * configure.in: define PACKED_STRUCT_UNALIGNED for x86* * timev.h (struct vtm): use PACKED_STRUCT_UNALIGNED * time.c (struct time_object): ditto [Bug #9558] non-x86 cannot safely access unaligned addresses Mon Feb 24 18:10:02 2014 SHIBATA Hiroshi * test/fiddle/test_function.rb: remove unused variables. * test/fileutils/test_fileutils.rb: ditto. * test/io/console/test_io_console.rb: ditto. Mon Feb 24 12:37:51 2014 Eric Wong * configure.in: use -Wno-packed-bitfield-compat for GCC 4.4+ use __attribute__((packed)) if available * timev.h: shrink and pack struct vtm * time.c: pack struct time_object and adjust/introduce helpers [ruby-core:60794] Sun Feb 23 17:55:50 2014 Kouhei Sutou * lib/rexml/xmltokens.rb: Add missing non ASCII valid characters to element name characters. Now, REXML name tokens exactly match "[5] Name" in the XML spec and "[4] NCName" in the Namespaces in XML spec. See comment about the details. [Bug #9539] [ruby-core:60901] Reported by Mario Barcala. Thanks!!! * test/rexml/xpath/test_node.rb: Add tests for the above case. Sun Feb 23 12:18:54 2014 Nobuyoshi Nakada * ext/socket/raddrinfo.c (inet_pton): use rb_w32_inet_pton, instead of inet_pton directly, which is unavailable on older version Windows. * include/ruby/win32.h, win32/win32.c (rb_w32_inet_pton): add a wrapper function for inet_pton minimum supported client is Vista, as well as inet_ntop. Sun Feb 23 11:33:25 2014 SHIBATA Hiroshi * test/net/imap/test_imap.rb: remove unused variables. * test/net/imap/test_imap_response_parser.rb: ditto. * test/net/pop/test_pop.rb: ditto. Sun Feb 23 02:19:51 2014 Tanaka Akira * lib/resolv.rb (bind_random_port): Rescue EPERM for FreeBSD which security.mac.portacl.port_high is changed. See mac_portacl(4) for details. Reported by Jakub Szafranski. [ruby-core:60917] [Bug #9544] Sat Feb 22 23:17:01 2014 Kouhei Sutou * lib/rexml/xpath_parser.rb: Fix indent. Sat Feb 22 23:15:35 2014 Kouhei Sutou * test/rexml/xpath/test_attribute.rb: Simplify. Sat Feb 22 20:28:47 2014 NAKAMURA Usaku * tool/redmine-backporter.rb: more friendly. Sat Feb 22 20:24:43 2014 Kouhei Sutou * test/rexml/test_xpath*.rb: Move to ... * test/rexml/xpath/*.rb: ... here. Sat Feb 22 20:04:41 2014 Kouhei Sutou * test/rexml/listener.rb: Untabify. Sat Feb 22 19:07:31 2014 NAKAMURA Usaku * ext/io/console/console.c (console_dev): need read access for conout$ because some functions need it. [Bug#9554] Sat Feb 22 18:40:58 2014 Eric Wong * .gitignore: ignore benchmark files Sat Feb 22 01:22:24 2014 Yusuke Endoh * bignum.c (bary_mul_precheck): fix a copy-paste error. Coverity Scan found this bug. Sat Feb 22 00:58:51 2014 Kazuhiro NISHIYAMA * ext/socket/raddrinfo.c (rb_getaddrinfo): second argument of MEMZERO is type. Coverity Scan found this bug. Fri Feb 21 23:47:24 2014 Shugo Maeda * ext/socket/init.c (wait_connectable): break if the socket is writable to avoid infinite loops on FreeBSD and other platforms which conforms to SUSv3. This problem cannot be reproduced with loopback interfaces, so it's hard to write test code. rsock_connect() and wait_connectable() are overly complicated, so they should be refactored, but I commit this fix as a workaround for the release of Ruby 1.9.3 scheduled on Feb 24. [ruby-core:60940] [Bug #9547] Fri Feb 21 23:03:39 2014 NARUSE, Yui * tool/redmine-backporter.rb: added to handle redmine tickets. Fri Feb 21 20:42:01 2014 Nobuyoshi Nakada * class.c (rb_mod_init_copy): do nothing if copying self. [ruby-dev:47989] [Bug #9535] * hash.c (rb_hash_initialize_copy): ditto. Fri Feb 21 16:45:54 2014 Nobuyoshi Nakada * lib/logger.rb (next_rotate_time, previous_period_end): consider DST change. * lib/logger.rb (Logger::LogDevice#check_shift_log): compare the current time with the time for the next rotation to fix rotation miss when date changed between the comparison and log writing. based on the patch by megayu . [Fixes GH-539] Fri Feb 21 10:39:33 2014 SHIBATA Hiroshi * test/monitor/test_monitor.rb: remove unused variables. * test/resolv/test_dns.rb: ditto. * test/rexml/test_functions.rb: ditto. * test/rss/test_setup_maker_itunes.rb: ditto. Fri Feb 21 09:48:56 2014 Eric Wong * ext/socket/ancdata.c (bsock_sendmsg_internal): only retry on error (bsock_recvmsg_internal): ditto * test/socket/test_unix.rb: test above for infinite loop Fri Feb 21 08:27:19 2014 Eric Wong * include/ruby/ruby.h (RB_GC_GUARD): use rb_gc_guarded_ptr_val on non-GCC/MSC * gc.c (rb_gc_guarded_ptr_val): rename and adjust argument. RB_GC_GUARD should be robust enough for any compiler. [ruby-core:60816] [Bug #7805] Thu Feb 20 22:21:26 2014 Tanaka Akira * ext/socket/raddrinfo.c (numeric_getaddrinfo): Use xcalloc. Suggested by Eric Wong. https://bugs.ruby-lang.org/issues/9525#note-14 Thu Feb 20 11:21:13 2014 Masaki Matsushita * hash.c (rb_hash_flatten): fix behavior of flatten(-1). [ruby-dev:47988] [Bug #9533] * test/ruby/test_array.rb: test for above. Wed Feb 19 18:57:02 2014 Tanaka Akira * ext/socket: Bypass getaddrinfo() if node and serv are numeric. Reporeted by Naotoshi Seo. [ruby-core:60801] [Bug #9525] * ext/socket/extconf.rb: Detect struct sockaddr_in6.sin6_len. * ext/socket/sockport.h (SET_SIN6_LEN): New macro. (INIT_SOCKADDR_IN6): Ditto. * ext/socket/rubysocket.h (struct rb_addrinfo): Add allocated_by_malloc field. * ext/socket/raddrinfo.c (numeric_getaddrinfo): New function. (rb_getaddrinfo): Call numeric_getaddrinfo at first. (rb_freeaddrinfo): Free struct addrinfo properly when it is allocated by numeric_getaddrinfo. Wed Feb 19 18:31:48 2014 Tanaka Akira * ext/socket: Wrap struct addrinfo by struct rb_addrinfo. Wed Feb 19 17:47:01 2014 Tanaka Akira * ext/socket/ipsocket.c (ip_s_getaddress): Don't access freed memory. Wed Feb 19 11:39:41 2014 NARUSE, Yui * configure.in: it must see rb_cv_broken_memmem not rb_cv_func_memmem. Tue Feb 18 23:18:41 2014 SHIBATA Hiroshi * test/socket/test_socket.rb: unix socket is required by test case. Tue Feb 18 20:48:38 2014 SHIBATA Hiroshi * test/socket/test_addrinfo.rb: remove unused variables. * test/socket/test_nonblock.rb: ditto. * test/socket/test_socket.rb: ditto. * test/socket/test_unix.rb: ditto. * test/testunit/test_parallel.rb: ditto. * test/webrick/test_filehandler.rb: ditto. * test/xmlrpc/test_features.rb: ditto. * test/zlib/test_zlib.rb: ditto. Tue Feb 18 14:27:18 2014 Shota Fukumori * lib/test/unit.rb: Requires minitest < 5.0.0 if Gem is available. Tue Feb 18 14:24:07 2014 Shota Fukumori * lib/test/unit/test-unit.gemspec: Add minitest < 5.0.0 dependency * tool/rbinstall.rb: Add empty implementations for `add_dependency`, `add_runtime_dependency`, `add_development_dependency` for Gem::Specification. Tue Feb 18 12:06:39 2014 Tanaka Akira * configure.in (FILE_COUNT): Removed. (win32.c defines it in itself.) (FILE_READPTR): Ditto. Tue Feb 18 09:35:44 2014 SHIBATA Hiroshi * test/test/psych/test_string.rb: remove unused variables. * test/test/psych/test_yaml.rb: ditto. Mon Feb 17 21:31:31 2014 Koichi Sasada * test/ruby/test_gc.rb: ignore warning messages for running with -w option such as chkbuild. Mon Feb 17 20:00:27 2014 Tanaka Akira * internal.h: Move BDIGIT and related definitions from include/ruby/defines.h. Mon Feb 17 17:41:55 2014 Nobuyoshi Nakada * marshal.c (marshal_dump, marshal_load): do not recycle wrapper objects, to prevent from segfault with continuation. [ruby-dev:47970] [Bug #9523] Mon Feb 17 15:43:59 2014 Zachary Scott * doc/keywords.rdoc: [DOC] Add keywords doc by documenting-ruby/ruby#29 https://github.com/documenting-ruby/ruby/pull/29 Mon Feb 17 12:31:31 2014 Koichi Sasada * gc.c (get_envparam_double): fix a warning message. Mon Feb 17 12:09:52 2014 Koichi Sasada * gc.c: introduce new environment variable "RUBY_GC_HEAP_OLDOBJECT_LIMIT_FACTOR" to control major/minor GC frequency. Do full GC when the number of old objects is more than R * N where R is this factor and N is the number of old objects just after last full GC. * test/ruby/test_gc.rb: add a test. Mon Feb 17 11:28:40 2014 SHIBATA Hiroshi * test/test_pty.rb: ignore warnings to unused variables. Mon Feb 17 11:27:36 2014 SHIBATA Hiroshi * test/test_find.rb: remove unused variables. Sun Feb 17 02:12:00 2014 Kenta Murata * ext/bigdecimal/bigdecimal.c (BigDecimal_initialize): Insert GC guard. * ext/bigdecimal/bigdecimal.c (BigDecimal_global_new): ditto. Sun Feb 16 15:53:36 2014 SHIBATA Hiroshi * test/test_securerandom.rb: File.exists? is deprecated. use File.exist? Sun Feb 16 15:05:00 2014 SHIBATA Hiroshi * test/pathname/test_pathname.rb: File.exists? is deprecated. use File.exist? Sun Feb 16 15:00:28 2014 SHIBATA Hiroshi * test/net/ftp/test_ftp.rb: remove unused variables. * test/logger/test_logger.rb: ditto. Sun Feb 16 14:52:46 2014 Eric Wong * dir.c (dir_s_glob): RB_GC_GUARD instead of volatile Sun Feb 16 14:33:52 2014 Tanaka Akira * include/ruby/ruby.h (RBIGNUM_SIGN): Defined for compatibility. (RBIGNUM_POSITIVE_P): Ditto. (RBIGNUM_NEGATIVE_P): Ditto. Sun Feb 16 12:46:47 2014 Eric Wong * io.c (rb_f_backquote): trade volatile for manual recycle rb_gc_force_recycle ensures object is visible until recycle Sun Feb 16 11:55:14 2014 Eric Wong * marshal.c (marshal_dump): use rb_gc_force_recycle for GC-safety (marshal_load): ditto [ruby-core:60730] [Bug #7805] Sun Feb 16 08:11:23 2014 Zachary Scott * README.EXT.ja: [DOC] Fix typo by @utenmiki [Fixes GH-534] https://github.com/ruby/ruby/pull/534 Sun Feb 16 07:48:20 2014 Tanaka Akira * ext/bigdecimal/bigdecimal.c (BIGNUM_ZERO_P): Unused macro removed. Sun Feb 16 06:12:23 2014 Tanaka Akira * internal.h: Rename macro names: RBIGNUM_FOO to BIGNUM_FOO. (BIGNUM_EMBED_LEN_NUMBITS): Renamed from RBIGNUM_EMBED_LEN_NUMBITS. (BIGNUM_EMBED_LEN_MAX): Renamed from RBIGNUM_EMBED_LEN_MAX. (BIGNUM_SIGN_BIT): Renamed from RBIGNUM_SIGN_BIT. (BIGNUM_SIGN): Renamed from RBIGNUM_SIGN. (BIGNUM_SET_SIGN): Renamed from RBIGNUM_SET_SIGN. (BIGNUM_POSITIVE_P): Renamed from RBIGNUM_POSITIVE_P. (BIGNUM_NEGATIVE_P): Renamed from RBIGNUM_NEGATIVE_P. (BIGNUM_EMBED_FLAG): Renamed from RBIGNUM_EMBED_FLAG. (BIGNUM_EMBED_LEN_MASK): Renamed from RBIGNUM_EMBED_LEN_MASK. (BIGNUM_EMBED_LEN_SHIFT): Renamed from RBIGNUM_EMBED_LEN_SHIFT. (BIGNUM_LEN): Renamed from RBIGNUM_LEN. (RBIGNUM_DIGITS): Renamed from RBIGNUM_DIGITS. (BIGNUM_LENINT): Renamed from RBIGNUM_LENINT. * bignum.c: Follow the above change. * gc.c: Ditto. * marshal.c: Ditto. * math.c: Ditto. * numeric.c: Ditto. * random.c: Ditto. * rational.c: Ditto. * sprintf.c: Ditto. * ext/-test-/bignum/bigzero.c: Ditto. * ext/-test-/bignum/intpack.c: Ditto. * ext/bigdecimal/bigdecimal.c: Ditto. Sat Feb 15 20:48:49 2014 Tanaka Akira * configure.in (FILE_READEND): Don't detect it because it is not used. Sat Feb 15 13:22:28 2014 Eric Wong * probes_helper.h (RUBY_DTRACE_HOOK): correct type for _id Sat Feb 15 11:47:47 2014 Tanaka Akira * bignum.c (rb_big_cmp): Avoid bignum allocation for comparison between bignum and fixnum. Sat Feb 15 10:55:12 2014 Hiroshi Shirosaki * ext/-test-/win32/fd_setsize/depend: fix wrong dependencies. [ruby-dev:47253] Sat Feb 15 00:38:54 2014 Tanaka Akira * enum.c: Enumerable#{min,min_by,max,max_by} extended to take an optional argument. (nmin_cmp): New function. (nmin_block_cmp): Ditto (nmin_filter): Ditto. (nmin_i): Ditto. (nmin_run): Ditto. (enum_min): Call nmin_run if the optional argument is given. (nmin_max): Ditto. (nmin_min_by): Ditto. (nmin_max_by): Ditto. * range.c: Range#{min,max} extended to take an optional argument. (range_min): Call range_first if the optional argument is given. (range_max): Call rb_call_super if the optional argument is given. [ruby-core:57111] [Feature #8887] Sat Feb 15 00:27:46 2014 Tanaka Akira * include/ruby/ruby.h, internal.h, ext/-test-/bignum/bigzero.c: Hide a Bignum definition. [ruby-core:42891] [Feature #6083] Sat Feb 15 00:13:14 2014 Tanaka Akira * include/ruby/intern.h, include/ruby/io.h, include/ruby/ruby.h, include/ruby/win32.h, include/ruby/backward/rubysig.h, bignum.c, gc.c, io.c, process.c, safe.c, struct.c, thread.c, ext/socket/rubysocket.h, ext/-test-/old_thread_select: Remove deprecated definitions [ruby-core:60581] [Feature #9502] Fri Feb 14 18:38:46 2014 Eric Wong * string.c (rb_str_format_m): trade volatile for RB_GC_GUARD RB_GC_GUARD meaning is clear and has better code generation. [ruby-core:60688] Thu Feb 13 23:30:30 2014 Shugo Maeda * vm_insnhelper.c (vm_call_method): should check ci->me->flag of a refining method in case the method is private. [ruby-core:60111] [Bug #9452] * vm_method.c (make_method_entry_refined): set me->flag of a refined method entry to NOEX_PUBLIC in case the original method is private and it is refined as a public method. The original flag is stored in me->def->body.orig_me, so it's OK to make a refined method entry public. [ruby-core:60111] [Bug #9452] * test/ruby/test_refinement.rb: related tests. Thu Feb 13 18:38:15 2014 Eric Wong * re.c (rb_reg_raise): remove volatile Unnecessary since r41597 Thu Feb 13 18:28:51 2014 Eric Wong * re.c (rb_reg_regcomp): remove volatile Unnecessary since r13261 Thu Feb 13 16:54:32 2014 Zachary Scott * test/ruby/test_array.rb: Ensure flatten! is used for test_flatten Patch by @ksss [Fixes GH-530] https://github.com/ruby/ruby/pull/530 Thu Feb 13 15:43:16 2014 Nobuyoshi Nakada * parse.y (IDSET_ATTRSET_FOR_INTERN): fix off-by-one bug. * parse.y (rb_enc_symname_type): junk ID succeeded by '=' is also attrset ID. [ruby-core:60668] [Bug #8756] Thu Feb 13 11:06:32 2014 Nobuyoshi Nakada * configure.in: check if pthread_setname_np is available. * thread_pthread.c: pthread_setname_np is not available on old Darwins. [ruby-core:60524] [Bug #9492] Thu Feb 13 00:56:59 2014 Masaki Matsushita * configure.in: revert r44922. I should have used AC_CHECK_FUNCS() to just define a symbol if the function is available. Thu Feb 13 00:20:58 2014 Masaki Matsushita * configure.in: use AC_CHECK_FUNC instead of AC_CHECK_FUNCS if available. Thu Feb 13 00:15:10 2014 Masaki Matsushita * configure.in: fix to undefine HAVE_MEMMEM correctly if it is broken. Tue Feb 11 23:54:40 2014 Tanaka Akira * bignum.c (rb_big_cmp): Specialize a comparison to zero. * ext/bigdecimal/bigdecimal.c (is_negative): Use rb_big_cmp instead of RBIGNUM_NEGATIVE_P. (BigMath_s_log): Ditto. Tue Feb 11 22:59:10 2014 Tanaka Akira * ext/openssl/ossl_bn.c (ossl_bn_initialize): Use rb_integer_pack. Fix SEGV by OpenSSL::BN.new(1 << (2**34)). Tue Feb 11 17:00:38 2014 Zachary Scott * ext/tk/README.tcltklib: [DOC] Fix typo by @xta [Fixes GH-532] Sun Feb 9 13:59:29 2014 Tanaka Akira * configure.in: Fix compilation error. https://bugs.ruby-lang.org/issues/8358#note-16 Sun Feb 9 05:20:24 2014 NARUSE, Yui * configure.in (rb_cv_gnu_qsort_r): use compile error "conflicting types for 'qsort_r'" instead of AC_RUN_IFELSE. Sun Feb 9 04:07:34 2014 Zachary Scott * lib/yaml.rb: [DOC] Add links to syck and psych on github [Bug #9501] Based on a patch by Giorgos Tsiftsis Sun Feb 9 02:13:53 2014 Nobuyoshi Nakada * include/ruby/ruby.h (OBJ_TAINTABLE, OBJ_TAINT, OBJ_INFECT), marshal.c (r_entry0): all Numerics never be tainted now. [ruby-core:57346] [Bug #8945] Sat Feb 8 23:40:35 2014 Vit Ondruch * configure.in: add quoting brackets and append wildcard for the rest after target_cpu, to properly detect platform for SSE2 instructions. [ruby-core:60576] [Bug #8358] Sat Feb 8 21:44:07 2014 Masaki Matsushita * configure.in: check qsort_r(3) and whether it is GNU version. BSD version has different prototype. * util.h: use qsort_r() as ruby_qsort() if it is GNU version. * util.c: define ruby_qsort() if needed. Sat Feb 8 16:34:36 2014 Tanaka Akira * lib/resolv.rb (Resolv::DNS::Message::MessageDecoder#get_labels): Make it iterative. Sat Feb 8 15:54:12 2014 Koichi Sasada * gc.c, gc.h (rb_objspace_marked_object_p): added. This function *ONLY* works just after marking phase, before any sweeping. This function is highly depending current GC implementation and can be removed future version. Sat Feb 8 15:41:37 2014 Tanaka Akira * lib/resolv.rb: Don't set CLOEXEC flag explicitly. (Ruby set it by default.) Sat Feb 8 15:27:02 2014 Tanaka Akira * lib/resolv.rb (Resolv::DNS::Message::MessageDecoder): Raise DecodeError if no data before the limit. Reported by Will Bryant. [ruby-core:60557] [Bug #9498] Sat Feb 8 15:11:21 2014 Tanaka Akira * io.c (SMALLBUF): Unused macro removed. Fri Feb 7 23:37:49 2014 Tanaka Akira * lib/resolv.rb: Ignore name servers which cause EAFNOSUPPORT on socket creation. Reported by Bjoern Rennhak. [ruby-core:60442] [Bug #9477] Fri Feb 7 21:58:48 2014 Zachary Scott * lib/open-uri.rb: [DOC] use lower case version of core classes, same as commit r44878, based on patch by Jonathan Jackson [Bug #9483] Fri Feb 7 21:54:53 2014 Zachary Scott * ext/ripper/lib/ripper/lexer.rb: [DOC] use lower case version of core classes when referring to return value, since we aren't directly talking about the class. Patch by Jonathan Jackson [Bug #9483] Fri Feb 7 05:28:38 2014 Eric Wong * constant.h: reduce rb_const_entry_t size on 64-bit Patch by Adam Avilla [ruby-core:60542] [Feature #9496] Thu Feb 6 15:27:46 2014 Koichi Sasada * gc.c (get_envparam_int): correct warning messages. * gc.c (get_envparam_double): ditto. Thu Feb 6 15:17:30 2014 Koichi Sasada * gc.c (get_envparam_int): don't accept a value equals to lowerbound (changed by last commit) because "" or "foo" (not a number) strings are parsed as 0. They should be rejected. * gc.c (get_envparam_double): ditto. Thu Feb 6 09:00:35 2014 Koichi Sasada * gc.c (ruby_gc_set_params): if RUBY_GC_OLDMALLOC_LIMIT is provided, then set objspace->rgengc.oldmalloc_increase_limit. Without this fix, the env variable RUBY_GC_OLDMALLOC_LIMIT does not work. * gc.c (get_envparam_int): accept a value equals to lowerbound. * gc.c (get_envparam_double): ditto. Thu Feb 6 08:23:28 2014 Eric Wong * ext/thread/thread.c (rb_szqueue_max_set): use correct queue and limit wakeups. [Bug #9343][ruby-core:60517] * test/thread/test_queue.rb (test_sized_queue_assign_max): test for bug Thu Feb 6 07:18:01 2014 Eric Hodel * lib/rubygems: Update to RubyGems 2.2.2. Complete history at: http://rubygems.rubyforge.org/rubygems-update/History_txt.html#label-2.2.2+%2F+2014-02-05 * test/rubygems: ditto. Wed Feb 5 20:56:32 2014 Nobuyoshi Nakada * marshal.c (to_be_skipped_id): ignore anonymous attributes. * pack.c (Init_pack): use anonymous ID so that associated objects do not appear in the packed result. * parse.y (rb_make_internal_id): return an anonymous ID for internal use. Wed Feb 5 14:41:56 2014 Koichi Sasada * vsnprintf.c: remove duplicated def of `UNINITIALIZED_VAR()'. Wed Feb 5 14:40:16 2014 Koichi Sasada * ext/objspace/objspace_dump.c (dump_object): use STR_SHARED_P() instead of removed STR_NOCAPA_P() macro. Wed Feb 5 13:51:33 2014 Koichi Sasada * internal.h, vm_core.h: move LIKELY/UNLIKELY/UNINITIALIZED_VAR() macros from vm_core.h to internal.h. * string.c: remove dependency to "vm_core.h". * common.mk: ditto. Wed Feb 5 13:29:01 2014 Koichi Sasada * string.c (rb_str_free): use FL_TEST(str, STR_SHARED) directly because str is not embed. * string.c (str_replace): remove `FL_SET(str, STR_SHARED)' line because STR_SET_SHARED() set STR_SHARED. Wed Feb 5 13:18:08 2014 Koichi Sasada * internal.h: remove macros STR_NOCAPA and STR_NOCAPA_P(). * string.c (rb_str_resize): remove `STR_SET_NOEMBED(str)' because str_make_independent_expand() set NOEMBED flag. * string.c (rb_str_resize): remove `STR_NOCAPA_P(str)' check because `str' is independent (not shared). Wed Feb 5 12:54:25 2014 Koichi Sasada * string.c: refactoring, especially about string flags. * string.c (STR_UNSET_NOCAPA): removed. Use FL_UNSET() with STR_SHARED. * string.c (rb_str_capacity): check STR_SHARED directly because it is not a embed string. * string.c (rb_str_modify_expand): ditto. * string.c (rb_str_shared_replace): use STR_SET_SHARED(). * string.c (str_make_independent_expand): remove STR_UNSET_NOCAPA() because `str' is not shared string. Wed Feb 5 12:11:04 2014 Koichi Sasada * string.c (RESIZE_CAPA): should not resize shared string. Wed Feb 5 11:46:42 2014 Koichi Sasada * gc.c (gc_mark_children): STR_ASSOC is no longer available. Reported by @nagachika. http://d.hatena.ne.jp/nagachika/20140204 Wed Feb 5 11:27:22 2014 Koichi Sasada * string.c (rb_str_new_frozen): refactoring code. * Move code from str_new_frozen_with_klass() (and remove it) * `aux.shared' should not be 0 for STR_SHARED strings. Wed Feb 5 04:23:41 2014 Aaron Patterson * ext/psych/lib/psych.rb: New release of psych. * ext/psych/psych.gemspec: ditto Wed Feb 5 04:16:41 2014 Aaron Patterson * ext/psych/yaml/emitter.c: merge libyaml 0.1.5 * ext/psych/yaml/loader.c: ditto * ext/psych/yaml/parser.c: ditto * ext/psych/yaml/reader.c: ditto * ext/psych/yaml/scanner.c: ditto * ext/psych/yaml/writer.c: ditto * ext/psych/yaml/yaml_private.h: ditto Tue Feb 4 19:10:29 2014 Koichi Sasada * string.c: use long allocator names instead of numbered allocator names. * rb_str_new2 -> rb_str_new_cstr * rb_str_new4 -> rb_str_new_frozen * rb_str_new5 -> rb_str_new_with_class * str_new3 -> str_new_shared * str_new4 -> str_new_frozen_with_klass Tue Feb 4 17:20:03 2014 Nobuyoshi Nakada * dir.c (glob_helper): return the filename with actual cases on the filesystem if it is case-insensitive. [ruby-core:42469] [Feature #5994] Tue Feb 4 16:16:58 2014 Koichi Sasada * string.c: use STR_SHARED instead of ELTS_SHARED. (same value, but more clear meaning) Tue Feb 4 16:09:14 2014 Koichi Sasada * string.c: remove STR_ASSOC related code. By r44804, string objects can not have STR_ASSOC flag. * internal.h: ditto. * ext/objspace/objspace_dump.c (dump_object): ditto. Tue Feb 4 14:07:20 2014 Nobuyoshi Nakada * pack.c (str_associate, str_associated): keep associated objects in an instance variables, instead of in the internal structure. * string.c (rb_str_associate, rb_str_associated): deprecate. Tue Feb 4 12:55:31 2014 Nobuyoshi Nakada * string.c (rb_str_modify_expand): enable capacity and disable association with packed objects when setting capa, so that pack("p") string fails to unpack properly after modified. Tue Feb 4 12:45:15 2014 Nobuyoshi Nakada * dir.c (glob_make_pattern): all alphabets are magic characters on case-insensitive filesystems. [ruby-core:42469] [Feature #5994] Tue Feb 4 09:47:57 2014 Eric Hodel * lib/rubygems: Update to RubyGems 2.2.2 prerelease to check fixes to CI. * test/rubygems: ditto. Mon Feb 3 12:04:47 2014 Kazuhiro NISHIYAMA * error.c: [DOC] Exception#cause may return nil. [ci skip] Sun Feb 2 05:48:42 2014 Eric Wong * io.c (rb_io_syswrite): add RB_GC_GUARD [Bug #9472][ruby-core:60407] Sat Feb 1 15:09:16 2014 Masaki Suketa * ext/win32ole/win32ole.c (ole_typedesc2val): add VT_RECORD case. Sat Feb 1 06:38:51 2014 Zachary Scott * lib/drb/drb.rb: [DOC] Add note about start_service for each process Based on a patch by @rosenfeld [Fixes GH-514] [ci skip] https://github.com/ruby/ruby/pull/514 Sat Feb 1 06:30:20 2014 Zachary Scott * error.c: [DOC] Document Exception#cause by @jasonrclark [ci skip] [Fixes GH-519] https://github.com/ruby/ruby/pull/519 Sat Feb 1 06:10:49 2014 Zachary Scott * lib/securerandom.rb: [DOC] Add note on require for examples Based on a patch by @schneems [Fixes GH-518] [ci skip] https://github.com/ruby/ruby/pull/518 Sat Feb 1 06:04:56 2014 Zachary Scott * numeric.c: [DOC] Fix typo in example for #step [ci skip] Patch by @ksss [Fixes GH-522] https://github.com/ruby/ruby/pull/522 Fri Jan 31 17:01:47 2014 Eric Wong * ext/socket/init.c (rsock_socket0): split out SOCK_CLOEXEC version * ext/socket/socket.c (rsock_socketpair0): ditto [ruby-core:60377] Fri Jan 31 03:48:40 2014 Eric Wong * benchmark/driver: avoid large alloc in driver process [ruby-core:59869] [Bug #9430] Thu Jan 30 14:45:49 2014 Shugo Maeda * configure.in: use $@ instead of $(.TARGET) because .TARGET is not supported by GNU make. Thu Jan 30 08:26:21 2014 Yusuke Endoh * ext/fiddle/closure.c: use sizeof(*pcl) for correct sizeof value. [ruby-core:57599] [Bug #8978]. Wed Jan 29 20:08:15 2014 Nobuyoshi Nakada * io.c (nogvl_copy_stream_sendfile): check socket on other than linux, as sendfile(2) on non-socket fd works only on linux. [Feature #9427] Wed Jan 29 18:09:48 2014 Eric Wong * io.c (nogvl_copy_stream_sendfile): remove socket check [ruby-core:59856][Feature #9427] Wed Jan 29 04:29:54 2014 Aaron Patterson * ext/openssl/ossl_ssl.c: pass read_nonblock options to underlying IO when SSL session has not been started. * test/openssl/test_ssl.rb: test for change. Wed Jan 29 03:49:36 2014 Aaron Patterson * ext/fiddle/closure.c: use sizeof(*pcl) for correct sizeof value. [ruby-core:57599] [Bug #8978]. Thanks mame! Wed Jan 29 03:36:42 2014 Eric Wong * doc/contributing.rdoc: allow/encourage other git hosts [ruby-core:59807][misc #9421] Tue Jan 28 23:36:01 2014 Tanaka Akira * ext/socket: Avoid redundant fcntl/fstat syscalls for cloexec sockets. Patch by Eric Wong. [ruby-core:59429] [Feature #9330] Tue Jan 28 20:51:07 2014 Tanaka Akira * process.c (READ_FROM_CHILD): Apply the last hunk of 0001-process.c-avoid-EINTR-from-Process.spawn.patch written by Eric Wong in [Bug #8770]. Tue Jan 28 16:31:13 2014 Nobuyoshi Nakada * thread_pthread.c (ruby_init_stack, ruby_stack_overflowed_p): place get_stack above others to get stack boundary information. [ruby-core:60113] [Bug #9454] Tue Jan 28 15:27:36 2014 NARUSE, Yui * thread_pthread.c: rlimit is only available on Linux. At least r44712 breaks FreeBSD. [ruby-core:60113] [Bug #9454] Tue Jan 28 15:17:59 2014 Zachary Scott * lib/set.rb: [DOC] Add examples for Set#intersect? and Set#disjoint? Patch by xavier nayrac [Bug #9331] [ci skip] Tue Jan 28 15:12:22 2014 Zachary Scott * ext/zlib/zlib.c (rb_zlib_adler32): [DOC] Add example for adler32 Patch by Vajrasky Kok [Bug #9307] [ci skip] Tue Jan 28 08:56:00 2014 Charlie Somerville * compile.c (iseq_build_from_ary_body): Use :blockptr instead of :block as hash key when loading serialized instruction sequences from arrays. [Bug #9455] [ruby-core:60146] Mon Jan 27 21:52:55 2014 Nobuyoshi Nakada * thread_pthread.c: get current main thread stack size, which may be expanded than allocated size at initialization, by rlimit(). [ruby-core:60113] [Bug #9454] Sat Jan 25 22:17:02 2014 Kazuhiro NISHIYAMA * README.ja.md, README.md: update the controller address of mailing lists. Sat Jan 25 14:50:42 2014 Eric Wong * process.c (send_child_error): retry write on EINTR to fix occasional Errno::EINTR from Process.spawn. * process.c (recv_child_error): retry read on EINTR to fix occasional Errno::EINTR from Process.spawn. Sat Jan 25 14:21:06 2014 Nobuyoshi Nakada * compile.c (iseq_compile_each): result of assignment should be its rhs instead of returned value from a method. [ruby-core:60071] [Bug #9448] Sat Jan 25 11:16:19 2014 Nobuyoshi Nakada * class.c (rb_extract_keywords): treat nil keyword_hash same as 0, for the case rb_scan_args returns nil if no keyword hash. Fri Jan 24 15:13:20 2014 Zachary Scott * lib/racc/rdoc/grammar.en.rdoc: [DOC] Correct grammar and typos Patch by Giorgos Tsiftsis [Bug #9429] [ci skip] Thu Jan 23 20:20:17 2014 Koichi Sasada * test/ruby/envutil.rb: try to wait a bit (0.1sec) when ruby process exits by signals because some SEGV tests fail because of not enough error output. Thu Jan 23 20:06:27 2014 Koichi Sasada * test/ruby/test_settracefunc.rb: check the target thread. Thu Jan 23 19:59:16 2014 Koichi Sasada * test/ruby/test_settracefunc.rb: check the target thread. Thu Jan 23 14:26:44 2014 Zachary Scott * lib/fileutils.rb: [DOC] Fix typo in options_of() example [Bug #9392] Patch by Giorgos Tsiftsis Thu Jan 23 13:56:16 2014 Zachary Scott * README -> README.md: [DOC] Format README with Markdown [Bug #9255] * README.ja -> README.ja.md: ditto Wed Jan 22 15:59:39 2014 Nobuyoshi Nakada * ext/thread/thread.c (Init_thread): ConditionVariable and Queue are not able to copy. [ruby-core:59961] [Bug #9440] Tue Jan 21 20:14:55 2014 Nobuyoshi Nakada * thread_pthread.c (rb_thread_create_timer_thread): fix for platforms where PTHREAD_STACK_MIN is a dynamic value and not a compile-time constant. [ruby-dev:47911] [Bug #9436] Tue Jan 21 17:55:09 2014 Zachary Scott * lib/uri/common.rb: [DOC] Use static w3.org uri [ci skip] Patch by @ykzts [Fix GH-484] https://github.com/ruby/ruby/pull/484 Tue Jan 21 16:43:22 2014 Zachary Scott * enum.c: [DOC] Add simple example of Enumerable#zip [ci skip] Patch by @nruth on documenting-ruby/ruby#22 https://github.com/documenting-ruby/ruby/pull/22 Tue Jan 21 16:26:44 2014 Nobuyoshi Nakada * thread_pthread.c (rb_thread_create_timer_thread): expand timer thread stack size to get rid of segfault on FreeBSD/powerpc64. based on the patch by Steve Wills at [ruby-core:59923]. [ruby-core:56590] [Bug #8783] Tue Jan 21 04:31:23 2014 Tanaka Akira * ext/socket/option.c: Use "int" for IP_MULTICAST_LOOP and IP_MULTICAST_TTL on Mac OS X and Windows. Tue Jan 21 00:39:15 2014 Tanaka Akira * ext/socket/option.c: Use "byte" as default argument for IP_MULTICAST_LOOP and IP_MULTICAST_TTL socket option to follow the original multicast implementation. Mon Jan 20 20:20:27 2014 Tanaka Akira * ext/socket/option.c: Use preprocessor macros to avoid repeated conditionals. Mon Jan 20 13:55:03 2014 Zachary Scott * lib/rubygems/version.rb: [DOC] Use gender-neutral pronouns [ci skip] * lib/rubygems/security.rb: ditto Sun Jan 19 06:38:48 2014 Benoit Daloze * compar.c (cmp_equal): warn for this release and still rescue standard exceptions for a nicer transition. See #7688. Partly reverts r44502. * test/ruby/test_comparable.rb: adapt assertion to match new behavior. Sun Jan 19 06:27:18 2014 Benoit Daloze * test/ruby/test_comparable.rb: specify behavior for the different kind of exceptions rescued (or not) by Comparable#==. Sat Jan 18 23:12:19 2014 Tanaka Akira * ext/socket: Avoid unnecessary ppoll/select on Linux. Patch by Eric Wong. [ruby-core:57950] [Bug #9039] Sat Jan 18 22:57:44 2014 Tanaka Akira * lib/resolv.rb (Resolv::DNS::Resource::TXT#data): Return concatenated string. Patch by Ryan Brunner. [ruby-core:58220] [Bug #9093] Sat Jan 18 22:35:15 2014 Tanaka Akira * io.c (rb_update_max_fd): Return immediately if the given fd is small enough. Sat Jan 18 22:25:53 2014 Tanaka Akira * io.c: Test O_CLOEXEC only once. Patch by Eric Wong. [ruby-core:59419] [Feature #9328] Sat Jan 18 21:24:49 2014 Tanaka Akira * ext/socket/option.c: IP_MULTICAST_LOOP and IP_MULTICAST_TTL socket option takes a byte on OpenBSD. Fixed by Jeremy Evans. [ruby-core:59496] [Bug #9350] Sat Jan 18 21:19:04 2014 Tanaka Akira * lib/open-uri.rb: Make proxy disabling working again. Fixed by Christophe Philemotte. [ruby-core:59650] [Bug #9385] Fri Jan 17 20:05:02 2014 Nobuyoshi Nakada * lib/delegate.rb (Delegator): keep source information methods which start and end with '__'. [ruby-core:59718] [Bug #9403] Fri Jan 17 17:58:04 2014 Nobuyoshi Nakada * eval.c (rb_mod_s_constants): return its own constants for other than Module itself. [ruby-core:59763] [Bug #9413] Tue Jan 16 00:17:00 2014 Kenta Murata * ext/bigdecimal/bigdecimal.gemspec: bigdecimal version 1.2.5. Wed Jan 15 20:30:31 2014 Masaki Matsushita * io.c (io_binwrite): use writev(2) to avoid double write if available. * configure.in: check writev(2) Wed Jan 15 14:04:33 2014 Nobuyoshi Nakada * string.c (get_encoding): respect BOM on pseudo encodings. [ruby-dev:47895] [Bug #9415] Wed Jan 15 14:03:47 2014 Nobuyoshi Nakada * string.c (get_actual_encoding): get actual encoding according to the BOM if exists. * string.c (rb_str_inspect): use according encoding, instead of pseudo encodings, UTF-{16,32}. [ruby-core:59757] [Bug #8940] Tue Jan 14 21:07:22 2014 Masaki Matsushita * ext/thread/thread.c (rb_szqueue_clear): notify SZQUEUE_WAITERS on SizedQueue#clear. [ruby-core:59462] [Bug #9342] * test/thread/test_queue.rb: add test. the patch is from Justin Collins. Tue Jan 14 15:58:43 2014 Nobuyoshi Nakada * ext/bigdecimal/bigdecimal.c (CLASS_NAME): macro to wrap depending on PRIsVALUE for 1.9. [Backport #9406] * ext/bigdecimal/bigdecimal.c (DECIMAL_SIZE_OF_BITS): fallback definition for 2.1 or older. [ruby-core:59750] [Backport #9406] Tue Jan 14 11:28:44 2014 Yuki Yugui Sonoda * vm_exec.c (cfp): Fixes a SEGV issue in r44554. r11 can be broken by subroutine and sometimes causes SEGV at runtime. Use r13 instead. Tue Jan 14 02:20:00 2014 Kenta Murata * ext/bigdecimal/bigdecimal.c (BigDecimal_divide): Add an additional digit for the quotient to be compatible with bigdecimal 1.2.1 and the former. [ruby-core:59365] [#9316] [#9305] * test/bigdecimal/test_bigdecimal.rb: tests for the above change. * ext/bigdecimal/bigdecimal.gemspec: bigdecimal version 1.2.4. Mon Jan 13 14:55:31 2014 Zachary Scott * lib/xmlrpc/client.rb: [DOC] Remove note about SSL package on RAA Since RAA has been deprecated, and the SSL package has been replaced with net/https this statement is entirely false and should be deleted. [Bug #9152] Mon Jan 13 14:47:07 2014 Zachary Scott * lib/net/smtp.rb: [DOC] Remove dead link to RAA by Giorgos Tsiftsis Fixes the following bugs: [Bug #9152] [Bug #9268] [Bug #9394] * lib/open-uri.rb: ditto Mon Jan 13 14:25:55 2014 Zachary Scott * ext/openssl/ossl_pkey_dh.c: Fixed typo by Sandor Szuecs [Bug #9243] Mon Jan 13 12:03:00 2014 Charlie Somerville * ext/thread/thread.c (rb_szqueue_push): check GET_SZQUEUE_WAITERS instead of GET_QUEUE_WAITERS to prevent deadlock. Patch by Eric Wong. [Bug #9302] [ruby-core:59324] * test/thread/test_queue.rb: add test Sun Jan 12 16:41:10 2014 Nobuyoshi Nakada * iseq.c (iseq_load): keep type_map to get rid of memory leak. based on a patch by Eric Wong at [ruby-core:59699]. [Bug #9399] Sun Jan 12 09:21:35 2014 Nobuyoshi Nakada * include/ruby/util.h (DECIMAL_SIZE_OF_BITS): a preprocessor constant macro to approximate decimal representation size of n-bits integer. * iseq.c (register_label): use DECIMAL_SIZE_OF_BITS for better approximation. * ext/bigdecimal/bigdecimal.c (BigMath_s_log): ditto. * common.mk (iseq.o), ext/bigdecimal/depend (bigdecimal.o): add dependency to ruby/util.h for DECIMAL_SIZE_OF_BITS. Fri Jan 10 16:27:20 2014 Yuki Yugui Sonoda * vm_exec.c (cfp): Avoid generating invalid binary for NativeClient. r15 on x86_64 is reserved by NativeClient. So r15 to cfp used to generate invalid binary under some combinations of compiler optimization flags. Fri Jan 10 18:01:41 2014 Nobuyoshi Nakada * vm_insnhelper.c (vm_search_super_method): allow bound method from a module, yet another method transplanting. Fri Jan 10 13:34:04 2014 Aman Gupta * insns.def (opt_aref_with): new instruction to optimize Hash#[], removing any allocation overhead when used with a string literal key. Patch by normalperson (Eric Wong). [ruby-core:59640] [Bug #9382] * insns.def (opt_aset_with): new instruction to optimize Hash#[]= * compile.c (iseq_compile_each): compiler shortcuts for new instructions * hash.c (static VALUE rb_hash_compare_by_id_p): fix documentation for Hash#compare_by_identity to reflect frozen string sharing * test/ruby/test_hash.rb (class TestHash): test for new behavior Fri Jan 10 06:23:21 2014 Benoit Daloze * range.c (Range#size): [DOC] improve description and add examples. Patch by @skade. [Fixes GH-501] Fri Jan 10 00:47:52 2014 Josef Stribny * ext/tk/extconf.rb: fix to pass arrays instead of strings to libpathflag. patch at [ruby-core:59665]. [Bug #9386] Thu Jan 9 20:49:22 2014 Nobuyoshi Nakada * configure.in: -mstackrealign is necessary for -msse2 working. [ruby-core:54716] [Bug #8349] * configure.in: use SSE2 instructions to drop unexpected precisions on other than mingw. [ruby-core:59472] [Bug #8358] Thu Jan 9 20:31:10 2014 NAKAMURA Usaku * hash.c (rb_objid_hash): should return `long'. brushup r44534. * object.c (rb_obj_hash): follow above change. Thu Jan 9 19:12:37 2014 Koichi Sasada * vm.c (rb_vm_pop_cfunc_frame): added. It cares c_return event. The patch base by drkaes (Stefan Kaes). [Bug #9321] * variable.c (rb_mod_const_missing): use rb_vm_pop_cfunc_frame() instead of rb_frame_pop(). * vm_eval.c (raise_method_missing): ditto. * vm_eval.c (rb_iterate): ditto. * internal.h (rb_vm_pop_cfunc_frame): add decl. * test/ruby/test_settracefunc.rb: add tests. provided by drkaes (Stefan Kaes). * vm.c, eval.c, include/ruby/intern.h (rb_frame_pop): move definition of rb_frame_pop() and deprecate it. It doesn't care about `return' events. Thu Jan 9 17:40:28 2014 NAKAMURA Usaku * hash.c (rb_any_hash): should treat the return value of rb_objid_hash() as `long', because ruby assumes the hash value of the object id of an object is `long'. this fixes test failures on mswin64 introduced at r44525. Thu Jan 9 09:55:20 2014 Aaron Patterson * ext/psych/lib/psych/visitors/yaml_tree.rb: dumping strings with quotes should not have changed. [ruby-core:59316] [Bug #9300] * ext/psych/lib/psych.rb: fixed missing require. * test/psych/test_string.rb: test Thu Jan 9 09:51:00 2014 Aaron Patterson * ext/psych/lib/psych/visitors/to_ruby.rb: anonymous structs should be able to roundtrip. Thanks @splattael! * test/psych/test_object_references.rb: test for change Wed Jan 8 22:53:16 2014 Nobuyoshi Nakada * vm_insnhelper.c (vm_search_super_method): when super called in a bound UnboundMethod generated from a module, no superclass is found since the current defined class is the module, then call method_missing in that case. [ruby-core:59619] [Bug #9377] Wed Jan 8 15:55:21 2014 Nobuyoshi Nakada * hash.c (rb_objid_hash): return hash value from object ID with a salt, extract from rb_any_hash(). * object.c (rb_obj_hash): return same value as rb_any_hash(). fix r44125. [ruby-core:59638] [Bug #9381] Wed Jan 8 13:12:41 2014 Nobuyoshi Nakada * lib/timeout.rb (Timeout::ExitException.catch): pass arguments for new instance. * lib/timeout.rb (Timeout::ExitException#exception): fallback to Timeout::Error if couldn't throw. [ruby-dev:47872] [Bug #9380] * lib/timeout.rb (Timeout#timeout): initialize ExitException with message for the fallback case. Tue Jan 7 12:43:06 2014 Nobuyoshi Nakada * lib/timeout.rb (Timeout#timeout): should not rescue ordinarily raised ExitException, which should not be thrown. * lib/timeout.rb (Timeout::ExitException.catch): set @thread only if it ought to be caught. * lib/timeout.rb (Timeout#timeout): when a custom exception is given, no instance is needed to be caught, so defer creating new instance until it is raised. [ruby-core:59511] [Bug #9354] Tue Jan 7 10:16:02 2014 Eric Hodel * lib/rubygems: Update to RubyGems master 21e409d / RubyGems 2.2.1. See http://rubygems.rubyforge.org/rubygems-update/History_txt.html for a list of bug fixes. * test/rubygems: ditto. Tue Jan 7 10:10:46 2014 Eric Wong * ext/json/generator/depend: add build dependencies for json extension [Bug #9374] [ruby-core:59609] * ext/json/parser/depend: ditto Tue Jan 7 04:35:46 2014 Aman Gupta * array.c (ary_add_hash): Fix consistency issue between Array#uniq and Array#uniq! [Bug #9340] [ruby-core:59457] * test/ruby/test_array.rb (class TestArray): regression test for above. Mon Jan 6 21:28:48 2014 Kazuhiro NISHIYAMA * .gitignore: ignore *-fake.rb generated even when CROSS_COMPILING = no since r42862. Sun Jan 5 20:14:14 2014 Benoit Daloze * compar.c (cmp_equal): remove error hiding in Comparable#==. Comparable#== no longer rescues exceptions silently. This was the cause of quite a couple bugs. See #7688. [EXPERIMENTAL] * test/ruby/test_comparable.rb: adapt assertion to match new behavior. * lib/rdoc/method_attr.rb: fix bugs discovered by this change. * test/rdoc/test_rdoc_normal_class.rb: fix bugs in tests. Sat Jan 4 22:44:00 2014 Charlie Somerville * struct.c (rb_struct_set): return assigned value from setter method rather than struct object. [Bug #9353] [ruby-core:59509] * test/ruby/test_struct.rb (test_setter_method_returns_value): add test Sat Jan 4 21:44:31 2014 Kazuhiro NISHIYAMA * test/ruby/test_gc.rb (TestGc#test_latest_gc_info): use GC.stat(:key) instead of GC.stat. Sat Jan 4 19:15:29 2014 Nobuyoshi Nakada * ext/socket/socket.c (rsock_syserr_fail_host_port): use format flags, '+' to inspect, ' ' to quote unprintables. * ext/socket/socket.c (rsock_syserr_fail_path): ditto. * ext/socket/socket.c (rsock_syserr_fail_raddrinfo): ditto. * ext/socket/socket.c (rsock_syserr_fail_host_port): add errno argument version and use rb_syserr_fail_str() instead of rb_sys_fail_str() with restoring errno. * ext/socket/socket.c (rsock_syserr_fail_path): ditto, and rb_syserr_fail(). * ext/socket/socket.c (rsock_sys_fail_sockaddr): ditto, use rsock_syserr_fail_raddrinfo(). * ext/socket/socket.c (rsock_sys_fail_raddrinfo): ditto. * ext/socket/socket.c (setup_domain_and_type): ditto. Sat Jan 4 17:18:58 2014 Kazuki Tsujimoto * vm.c (RubyVM::OPTS): get rid of a garbage character. Sat Jan 4 10:17:54 2014 Eric Hodel * lib/rinda/ring.rb (Rinda::RingFinger#make_socket): Use ipv4_multicast_ttl option for portability. Sat Jan 4 10:15:47 2014 Eric Hodel * lib/rinda/ring.rb (Rinda::RingFinger#make_socket): Use ipv4_multicast_loop option for portability. Patch by Jeremy Evans. [ruby-trunk - Bug #9351] Fri Jan 3 19:09:00 2014 Eric Wong * ext/socket/socket.c (rsock_sys_fail_host_port): save and restore errno before calling rb_sys_fail_str to prevent [BUG] errno == 0. Patch by Eric Wong. [ruby-core:59498] [Bug #9352] * ext/socket/socket.c (rsock_sys_fail_path): ditto * ext/socket/socket.c (rsock_sys_fail_sockaddr): ditto * ext/socket/socket.c (rsock_sys_fail_raddrinfo): ditto * ext/socket/socket.c (rsock_sys_fail_raddrinfo_or_sockaddr): ditto Fri Jan 3 10:43:57 2014 Aman Gupta * test/net/imap/cacert.pem: generate new CA cert, since the last one expired. [Bug #9341] [ruby-core:59459] * test/net/imap/server.crt: new server cert signed with updated CA. * test/net/imap/Makefile: add `make regen_certs` to automate this process. Fri Jan 3 00:09:54 2014 Benoit Daloze * ext/bigdecimal: update class method call style from :: to . in documentation and usage. * ext/bigdecimal/lib/bigdecimal/math.rb: [DOC] fix examples values. Computations were made using ruby 2.0.0p247 to ensure no effect of the recent BigDecimal bug. * ext/bigdecimal/sample/nlsolve.rb: fix indent. Thu Jan 2 16:07:21 2014 Masaki Matsushita * io.c (io_fwrite): freeze converted str. Thu Jan 2 04:15:13 2014 Nobuyoshi Nakada * eval.c (rb_longjmp): remove an extra modifier from the forward declaration to match the actual definition. [ruby-core:59451] [Bug #9338] Thu Jan 2 01:23:30 2014 Masaki Matsushita * vm_eval.c (method_missing): use ALLOCV_N() instead of ALLOCA_N() and rb_ary_tmp_new(). Thu Jan 2 00:53:16 2014 Masaki Matsushita * array.c (rb_ary_zip): use ALLOCV_N() instead of ALLOCA_N(). Thu Jan 2 00:04:29 2014 Masaki Matsushita * hash.c (rb_hash_keys): make rb_hash_keys() static. it is no longer used from array.c since r43969. the patch is from normalperson (Eric Wong). [ruby-core:59449] [Feature #9336] * internal.h: remove definition of rb_hash_keys(). Wed Jan 1 18:19:35 2014 Nobuyoshi Nakada * configure.in: reset LDFLAGS and DLDFLAGS for opt-dir again after LIBPATHFLAG and RPATHFLAG are set. [ruby-dev:47868] [Bug #9317] Wed Jan 1 11:12:29 2014 Nobuyoshi Nakada * configure.in: use SSE2 instructions for drop unexpected precisions. [ruby-core:54738] [Bug #8358] Tue Dec 31 23:49:07 2013 Nobuyoshi Nakada * eval.c (rb_f_raise): add cause: optional keyword argument. [ruby-core:58610] [Feature #8257] [EXPERIMENTAL] Tue Dec 31 21:44:17 2013 Akio Tajima * win32/Makefile.sub: remove HAVE_FSEEKO because fseeko removed from win32/win32.c Fixed [Bug #9333]. Tue Dec 31 21:02:27 2013 Masaki Matsushita * io.c (io_fwrite): allocate frozen str only when str is not converted. Tue Dec 31 15:44:48 2013 Nobuyoshi Nakada * lib/mkmf.rb (RbConfig): expand RUBY_SO_NAME for extensions backward compatibility. [ruby-core:59426] [Bug #9329] Mon Dec 30 23:33:07 2013 Ayumu AIZAWA * variable.c: [DOC] adding extra example in docs. patched by Steve Klabnik. [Bug #9210] Mon Dec 30 18:34:18 2013 Nobuyoshi Nakada * encoding.c (must_encindex, rb_enc_from_index, rb_obj_encoding): mask encoding index and ignore dummy flags. [ruby-core:59354] [Bug #9314] Mon Dec 30 16:11:52 2013 WATANABE Hirofumi * tool/make-snapshot: needs CXXFLAGS. [ruby-core:59393][Bug #9320] Sun Dec 29 18:36:54 2013 Shota Fukumori * lib/mkmf.rb (configuration): Make CXXFLAGS customizable. Patch by Kohei Suzuki (eagletmt). [Fixes GH-492] Sun Dec 29 12:11:11 2013 Nobuyoshi Nakada * proc.c (mnew_from_me): keep iclass as-is, to make inheritance chain consistent. [ruby-core:59358] [Bug #9315] * proc.c (method_owner): return the original defined_class from prepended iclass, instead. Sun Dec 29 08:47:24 2013 Lucas Allan Amorim * test/ruby/test_sprintf.rb (test_hash): Added tests for sprintf with a hash as parameter. [Fixes GH-491] Sun Dec 29 07:27:51 2013 Benoit Daloze * compar.c (cmp_eq_recursive): Fix the return value, the value for failed #<=> should be nil. It was raising a NoMethodError for the test case TestComparable#test_no_cmp (undefined method `>' for false:FalseClass). Yet one more reason for #7688. Sat Dec 28 22:21:59 2013 Benoit Daloze * object.c (Kernel#<=>) surround Comparable operators with tags. The #== method was hidden in ri/rdoc's output and was highlighting the line instead. Sat Dec 28 17:24:00 2013 DV Suresh * benchmark/bm_so_meteor_contest.rb: [DOC] Fix a few typos * ext/fiddle/lib/fiddle/import.rb: ditto * ext/psych/lib/psych.rb: ditto * ext/psych/lib/psych/nodes/sequence.rb: ditto * ext/tk/lib/multi-tk.rb: ditto * ext/tk/lib/tcltk.rb: ditto Sat Dec 28 00:42:37 2013 Nobuyoshi Nakada * parse.y (local_push_gen, local_pop_gen): save cmdarg_stack to isolate command argument state from outer scope. [ruby-core:59342] [Bug #9308] Fri Dec 27 13:25:03 2013 NAKAMURA Usaku * win32/{setup.mak,Makefile.sub}: update fake.rb like template/fake.rb.in. Thu Dec 26 16:10:41 2013 NAKAMURA Usaku * win32/Makefile.sub (fake.rb): should depend on version.h because if RUBY_VERSION is updated, fake.rb need to say the new version to avoid install error in rbconfig.rb. Thu Dec 26 14:25:03 2013 Nobuyoshi Nakada * hash.c (HASH_REJECT_COPY_EXTRA_STATES): turn off the old behavior, copying extra states by accident. Thu Dec 26 10:49:14 2013 Yukihiro Matsumoto * version.h (RUBY_VERSION): 2.2.0 development has started. Thu Dec 26 10:27:53 2013 NAKAMURA Usaku * tool/merger.rb (tag): support 2.1.1 semi-automatic tagging and 2.2.0 explicit tagging. Thu Dec 26 06:35:25 2013 Marc-Andre Lafortune * proc.c: Having any mandatory keyword argument increases min arity [#9299] Thu Dec 26 06:27:08 2013 Marc-Andre Lafortune * proc.c: Having optional keyword arguments makes maximum arity +1, not unlimited [#8072] Thu Dec 26 01:09:57 2013 NAKAMURA Usaku * tool/release.sh: make symbolic links. Thu Dec 26 00:45:33 2013 NAKAMURA Usaku * tool/make-snapshot: support new version scheme. Wed Dec 25 22:44:14 2013 Nobuyoshi Nakada * compile.c (iseq_set_arguments): set arg_keyword_check from nd_cflag, which is set by parser. internal ID is used for unnamed keyword rest argument, which should be separated from no keyword check. * iseq.c (rb_iseq_parameters): if no keyword check, keyword rest is present. * parse.y (new_args_tail_gen): set keywords check to nd_cflag, which equals to that keyword rest is not present. Wed Dec 25 22:32:19 2013 Zachary Scott * lib/abbrev.rb: [DOC] rdoc format patch by Giorgos Tsiftsis [Bug #9146] Wed Dec 25 20:30:10 2013 Nobuyoshi Nakada * iseq.c (rb_iseq_parameters): push argument type symbol only for unnamed rest keywords argument. Wed Dec 25 20:28:48 2013 Nobuyoshi Nakada * proc.c (rb_iseq_min_max_arity): maximum argument is unlimited if having rest keywords argument. [ruby-core:53298] [Bug #8072] Wed Dec 25 18:29:22 2013 Koichi Sasada * vm_insnhelper.c (argument_error): insert dummy frame to make a backtrace object intead of modify backtrace string array. [Bug #9295] * test/ruby/test_backtrace.rb: add a test for this patch. fix test to compare a result of Exception#backtrace with a result of Exception#backtrace_locations. Wed Dec 25 13:00:54 2013 Nobuyoshi Nakada * configure.in: let mingw do something black-magic, and check if _gmtime64_s() is available actually. * win32/win32.c (gmtime_s, localtime_s): use _gmtime64_s() and _localtime64_s() if available, not depending on very confusing mingw variants macros. based on the patch by phasis68 (Heesob Park) at [ruby-core:58764]. [ruby-core:58391] [Bug #9119] Wed Dec 25 12:33:41 2013 Yusuke Endoh * sample/trick2013/: added the award-winning entries of TRICK 2013. See https://github.com/tric/trick2013 for the contest outline. (Matz has approved the attachment.) Wed Dec 25 10:42:02 2013 Yamashita Yuu * ext/openssl/ossl_ssl.c (Init_ossl_ssl): Declare a constant `OP_MSIE_SSLV2_RSA_PADDING` only if the macro is defined. The `SSL_OP_MSIE_SSLV2_RSA_PADDING` has been removed from latest snapshot of OpenSSL 1.0.1. [Fixes GH-488] Wed Dec 25 01:03:00 2013 Nobuyoshi Nakada * proc.c (bind_local_variables): allowing binding to list its local variables. patch by Jack Danger Canty at [ruby-core:56543]. [Feature #8773] Tue Dec 24 23:20:38 2013 Nobuyoshi Nakada * test/fileutils/fileasserts.rb (assert_ownership_user): new assertion for user ownership. * test/fileutils/test_fileutils.rb (test_chown_error), (test_chown_without_permission, test_chown_with_root): based on the patch by vajrasky (Vajrasky Kok) at [ruby-core:59298]. [Feature #9292] Tue Dec 24 16:28:05 2013 Nobuyoshi Nakada * proc.c (rb_mod_define_method): consider visibility only if self in the caller is same as the receiver, otherwise make public as well as old behavior. [ruby-core:57747] [Bug #9005] [ruby-core:58497] [Bug #9141] * vm.c (rb_vm_cref_in_context): return ruby level cref if self is same. Tue Dec 24 14:13:14 2013 Koichi Sasada * README.EXT: add a refer to URL. Tue Dec 24 13:48:45 2013 Koichi Sasada * README.EXT: add a document about RGenGC. Reviewed by havenwood. [misc #8962] * README.EXT.ja: ditto. Tue Dec 24 12:11:43 2013 Koichi Sasada * include/ruby/ruby.h (RARRAY_ASET): try to avoid compiler warning. [Bug #9287] Tue Dec 24 05:04:56 2013 NAKAMURA Usaku * test/fileutils/test_fileutils.rb (setup): should not call Process.groups for Windows. get rid of many errors introduced by r44364. Mon Dec 23 18:37:16 2013 Nobuyoshi Nakada * test/fileutils/fileasserts.rb (assert_ownership_group): new assertion for group ownership. * test/fileutils/test_fileutils.rb (test_chown{,_verbose,_noop}): based on the patch by vajrasky (Vajrasky Kok) at [ruby-core:59281]. [Feature #9286] Mon Dec 23 15:53:45 2013 Nobuyoshi Nakada * hash.c (HAS_EXTRA_STATES): warn extra states only when something differ. [ruby-core:59254] [Bug #9275] Mon Dec 23 12:42:13 2013 Marc-Andre Lafortune * array.c: Have to_h raise on elements that are not key-value pairs [#9239] * enum.c: ditto Mon Dec 23 05:01:55 2013 Zachary Scott * doc/syntax/methods.rdoc: [DOC] Added example for underscore conventions in method names. Also added doc to clarify encoding character set support for Ruby programs and elaborated on defining predicate and bang methods. Based on a patch by @gaurish [Fixes GH-477] https://github.com/ruby/ruby/pull/477 Mon Dec 23 03:18:09 2013 Zachary Scott * doc/ChangeLog-1.9.3: [DOC] Fix typos by @dvsuresh [Fixes GH-485] https://github.com/ruby/ruby/pull/485 * ext/openssl/ossl_config.c: ditto * lib/rss/utils.rb, lib/time.rb: ditto * test/ruby/envutil.rb: ditto Sun Dec 22 23:56:56 2013 Zachary Scott * lib/{rake,rdoc,rss}/*, test/rexml/test_listener.rb: [DOC] Fix typos by @dvsuresh [Fixes GH-486] https://github.com/ruby/ruby/pull/486 Sun Dec 22 11:08:47 2013 Eric Hodel * test/rubygems/test_gem_ext_builder.rb: Fix warning due to ambiguous expression. Sun Dec 22 11:05:53 2013 Eric Hodel * lib/rubygems/commands/install_command.rb: Restore gem install --ignore-dependencies for remote gems * test/rubygems/test_gem_commands_install_command.rb: Test for the above. Sun Dec 22 10:23:40 2013 Eric Hodel * lib/rdoc.rb: Set RDoc to release version. Sun Dec 22 10:19:07 2013 Eric Hodel * lib/rubygems.rb: Set RubyGems to release version. Sun Dec 22 10:16:08 2013 Eric Hodel * lib/rubygems.rb (module Gem): Fix comment for Gem::load_path_insert_index. Sun Dec 22 04:07:55 2013 Koichi Sasada * gc.c (ruby_gc_set_params): don't show obsolete warnings for RUBY_FREE_MIN/RUBY_HEAP_MIN_SLOTS if RUBY_GC_HEAP_FREE_SLOTS/RUBY_GC_HEAP_INIT_SLOTS are given. [Bug #9276] Sat Dec 21 13:00:20 2013 Nobuyoshi Nakada * file.c: remove unnecessary the source path from EEXIST error messages and show the destination path only. [ruby-core:59202] [Feature #9263] Sat Dec 21 12:37:19 2013 Nobuyoshi Nakada * lib/resolv.rb (Resolv::Hosts#lazy_initialize): should not consider encodings in hosts file. [ruby-core:59239] [Bug #9273] * lib/resolv.rb (Resolv::Config.parse_resolv_conf): ditto. Sat Dec 21 05:43:27 2013 NAKAMURA Usaku * tool/make-snapshot: replace RUBY_PATCHLEVEL_STR in version.h to show users that this ruby is a preview/rc version. Sat Dec 21 05:03:49 2013 NAKAMURA Usaku * win32/Makefile.sub (fake.rb): fixed wrong RUBY_PLATFORM, to correctly install win32.h. [ruby-core:58801][Bug #9199] reported by arton. For the changes before 2.1.0, see doc/ChangeLog-2.1.0 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 Local variables: coding: us-ascii add-log-time-format: (lambda () (let* ((time (current-time)) (system-time-locale "C") (diff (+ (cadr time) 32400)) (lo (% diff 65536)) (hi (+ (car time) (/ diff 65536)))) (format-time-string "%a %b %e %H:%M:%S %Y" (list hi lo) t))) indent-tabs-mode: t tab-width: 8 change-log-indent-text: 2 end: vim: tabstop=8 shiftwidth=2