------------------------------------------------------------------------
r60153 | naruse | 2017-10-10 18:24:07 +0900 (Tue, 10 Oct 2017) | 1 line

add tag v2_5_0_preview1
------------------------------------------------------------------------
r60150 | svn | 2017-10-10 17:58:23 +0900 (Tue, 10 Oct 2017) | 1 line

* properties.
------------------------------------------------------------------------
r60149 | hsbt | 2017-10-10 17:58:22 +0900 (Tue, 10 Oct 2017) | 3 lines

Merge rubygems-2.6.14 changes.

  It fixed http://blog.rubygems.org/2017/10/09/unsafe-object-deserialization-vulnerability.html
------------------------------------------------------------------------
r60148 | hsbt | 2017-10-10 13:54:49 +0900 (Tue, 10 Oct 2017) | 3 lines

Removed obsoleted test for RubyToken.

  [Bug #13991][ruby-core:83188] Patch by MSP-Greg.
------------------------------------------------------------------------
r60147 | svn | 2017-10-10 11:01:01 +0900 (Tue, 10 Oct 2017) | 1 line

* remove trailing spaces.
------------------------------------------------------------------------
r60146 | hsbt | 2017-10-10 11:01:00 +0900 (Tue, 10 Oct 2017) | 6 lines

Merge rdoc-6.0.0.beta3.

  * It version introduced did you mean? feature for ri command:
    https://github.com/ruby/rdoc/pull/533
  * Removed obbsoleted ruby_token.rbb.
    [Bug #13990][ruby-core:83180]
------------------------------------------------------------------------
r60145 | svn | 2017-10-10 04:00:23 +0900 (Tue, 10 Oct 2017) | 1 line

* 2017-10-10
------------------------------------------------------------------------
r60144 | normal | 2017-10-10 04:00:22 +0900 (Tue, 10 Oct 2017) | 5 lines

webrick: avoid needless wakeup from IO.select

Since r51231 ("webrick/server.rb: stop immediately"),
there is no need to poll on the @status change every
two seconds.
------------------------------------------------------------------------
r60143 | kazu | 2017-10-09 20:20:00 +0900 (Mon, 09 Oct 2017) | 3 lines

Remove unused test files related `$SAFE>=2`

unused since r14024
------------------------------------------------------------------------
r60142 | svn | 2017-10-09 12:08:03 +0900 (Mon, 09 Oct 2017) | 1 line

* 2017-10-09
------------------------------------------------------------------------
r60141 | nobu | 2017-10-09 12:08:02 +0900 (Mon, 09 Oct 2017) | 5 lines

verconf.h.tmpl: site and vendor directories

* template/verconf.h.tmpl: disable site and vendor directories
  when removed.  based on the path by arnoldwald (arnold w) at
  [ruby-core:81563].  [Bug #13631]
------------------------------------------------------------------------
r60140 | hsbt | 2017-10-08 18:13:03 +0900 (Sun, 08 Oct 2017) | 3 lines

Removed unnecessary json loading.

  It causes test fail on http://ci.rvm.jp/results/trunk-test@frontier/101990
------------------------------------------------------------------------
r60139 | kazu | 2017-10-08 16:00:01 +0900 (Sun, 08 Oct 2017) | 1 line

Remove unnecessary `require 'thread'`
------------------------------------------------------------------------
r60138 | nobu | 2017-10-08 15:00:57 +0900 (Sun, 08 Oct 2017) | 4 lines

parse.y: fix a typo

* parse.y (f_kw): fix typo.  needs the argument value, not the
  label twice.  [ruby-core:83174] [Bug #13987]
------------------------------------------------------------------------
r60137 | nobu | 2017-10-08 14:14:18 +0900 (Sun, 08 Oct 2017) | 5 lines

.gdbinit: newline at rp_id [ci skip]

* .gdbinit (rp_id): add a newline.

* .gdbinit (print_id): should not print a newline here.
------------------------------------------------------------------------
r60136 | svn | 2017-10-08 10:32:22 +0900 (Sun, 08 Oct 2017) | 1 line

* properties.
------------------------------------------------------------------------
r60135 | svn | 2017-10-08 10:32:22 +0900 (Sun, 08 Oct 2017) | 1 line

* remove trailing spaces, append newline at EOF.
------------------------------------------------------------------------
r60134 | svn | 2017-10-08 10:32:20 +0900 (Sun, 08 Oct 2017) | 1 line

* 2017-10-08
------------------------------------------------------------------------
r60133 | hsbt | 2017-10-08 10:32:18 +0900 (Sun, 08 Oct 2017) | 4 lines

Merge rubygems master.

  This is RC version of Rubygems 2.7.0.
  https://github.com/rubygems/rubygems/commit/688fb7e83c13c3fe7c2bb03c49a2db4c82852aee
------------------------------------------------------------------------
r60132 | svn | 2017-10-07 11:23:28 +0900 (Sat, 07 Oct 2017) | 1 line

* 2017-10-07
------------------------------------------------------------------------
r60131 | nobu | 2017-10-07 11:23:27 +0900 (Sat, 07 Oct 2017) | 5 lines

zlib.c: ensure to free

* ext/zlib/zlib.c (zlib_gunzip): gz0 is a structure variable on
  the stack, no longer valid after exit by an exception.  ensure
  to free instead.  [Bug #13982]
------------------------------------------------------------------------
r60130 | nobu | 2017-10-06 22:41:37 +0900 (Fri, 06 Oct 2017) | 4 lines

zlib.c: memory leak in gunzip

* ext/zlib/zlib.c (zlib_gunzip): clear zstream to fix memory leak.
  [ruby-core:83162] [Bug #13982]
------------------------------------------------------------------------
r60129 | naruse | 2017-10-06 20:17:38 +0900 (Fri, 06 Oct 2017) | 6 lines

configure.ac: detect mandoc and set MANTYPE=doc

OpenBSD uses mandoc [Feature #13981] [ruby-core:83146]
Note: AC_PATH_PROGS_FEATURE_CHECK is autoconf 2.62 feature,
but current CRuby declares AC_PREREQ(2.67); it's safe to use.
Patched by kernigh (George Koehler)
------------------------------------------------------------------------
r60128 | nobu | 2017-10-06 15:11:25 +0900 (Fri, 06 Oct 2017) | 6 lines

.gdbinit: print_id in rp_id [ci skip]

* .gdbinit (rp_id): use print_id instead of calling
  lookup_id_str() in a debugger context.

* symbol.c (ID_ENTRY_UNIT): made visible to debuggers.
------------------------------------------------------------------------
r60127 | nobu | 2017-10-06 14:55:11 +0900 (Fri, 06 Oct 2017) | 7 lines

proc.c: super_method of included method

* proc.c (method_super_method): search the next super method along
  the included ancestor chain.  [ruby-core:83114] [Bug #13973]

* vm_method.c (rb_callable_method_entry_without_refinements):
  return the defined class.
------------------------------------------------------------------------
r60126 | nobu | 2017-10-06 14:55:10 +0900 (Fri, 06 Oct 2017) | 1 line

proc.c: prefer name method result to inspect
------------------------------------------------------------------------
r60125 | nobu | 2017-10-06 09:15:08 +0900 (Fri, 06 Oct 2017) | 4 lines

No more ubygems in trunk

[Fix GH-1711]
Author:    MSP-Greg <MSP-Greg@users.noreply.github.com>
------------------------------------------------------------------------
r60124 | svn | 2017-10-06 06:53:54 +0900 (Fri, 06 Oct 2017) | 1 line

* 2017-10-06
------------------------------------------------------------------------
r60123 | normal | 2017-10-06 06:53:54 +0900 (Fri, 06 Oct 2017) | 7 lines

webrick: avoid unnecessary IO#sync= call

Sockets and pipes are always created with FMODE_SYNC flag
already set (otherwise many things would be broken).

* lib/webrick/server.rb (accept_client): remove unnecessary
  IO#sync= call
------------------------------------------------------------------------
r60122 | hsbt | 2017-10-05 17:32:01 +0900 (Thu, 05 Oct 2017) | 8 lines

Fixed broken `bundle gem` command.

  This patch is provided by @gyugyu (Yusuke Yagyu)

  * Remove README* entry from no_install that there is no README* files except README.md.tt
  * Rename .travis.yml.tt to travis.yml.tt like gitignore.tt

  [Bug #13975][ruby-dev:50278][fix GH-1710]
------------------------------------------------------------------------
r60121 | nobu | 2017-10-05 11:35:58 +0900 (Thu, 05 Oct 2017) | 5 lines

io.c: [DOC] about buffering [ci skip]

* io.c (rb_file_initialize): [DOC] stated that non-tty file is
  buffered by the default, and added links to related methods.
  [ruby-core:83081] [Bug #13965]
------------------------------------------------------------------------
r60120 | nobu | 2017-10-05 10:53:22 +0900 (Thu, 05 Oct 2017) | 4 lines

parse.y: fix KWD2EID

* parse.y (KWD2EID): should respect the previous callback result
  for keywords.  [ruby-core:83106] [Bug #13971]
------------------------------------------------------------------------
r60119 | hsbt | 2017-10-05 10:43:47 +0900 (Thu, 05 Oct 2017) | 1 line

Fixed invalid gemspec.
------------------------------------------------------------------------
r60118 | svn | 2017-10-05 10:30:09 +0900 (Thu, 05 Oct 2017) | 1 line

* 2017-10-05
------------------------------------------------------------------------
r60117 | hsbt | 2017-10-05 10:30:08 +0900 (Thu, 05 Oct 2017) | 3 lines

Followed up [ruby-core:83093]. Update gemspec attributes.

  Added metadata for rubygems.org.
------------------------------------------------------------------------
r60116 | nobu | 2017-10-04 15:47:29 +0900 (Wed, 04 Oct 2017) | 13 lines

parse.y: fix var_field

* parse.y (mlhs_node): dispatch var_field as well as lhs.

* parse.y (lhs, var_hs): dispatch var_field before assignable
  check so it is inside assign_error at a wrong assignment, as
  well as backref_assign_error.

* parse.y (var_field_gen): wrap var_field value with the variable
  ID.

* parse.y (assignable_gen, const_decl_gen): return the callback
  result on a syntax error.
------------------------------------------------------------------------
r60115 | nobu | 2017-10-04 14:48:33 +0900 (Wed, 04 Oct 2017) | 4 lines

parse.y: reserved words as <id>

* parse.y (reswords): declare reserved words as <id> to remove
  extra cast.
------------------------------------------------------------------------
r60114 | nobu | 2017-10-04 14:30:44 +0900 (Wed, 04 Oct 2017) | 4 lines

test_sexp.rb: test for fname

* test/ripper/test_sexp.rb (test_def_fname): test for fname in def
  statement.  [ruby-core:83089] [Bug #13967]
------------------------------------------------------------------------
r60113 | nobu | 2017-10-04 13:43:00 +0900 (Wed, 04 Oct 2017) | 4 lines

parse.y: Revert r60102

* parse.y (op): do not set event ID here to dispatch on_op.
  [ruby-core:83089] [Bug #13967]
------------------------------------------------------------------------
r60112 | svn | 2017-10-04 09:04:52 +0900 (Wed, 04 Oct 2017) | 1 line

* properties.
------------------------------------------------------------------------
r60111 | normal | 2017-10-04 09:04:51 +0900 (Wed, 04 Oct 2017) | 23 lines

Dir.empty? releases GVL

This converts all slow syscalls in the Dir.empty? implementation
to release GVL.  We avoid unnecessarily GVL release and
reacquire for each slow call (opendir, readdir, closedir) and
instead only release and acquire the GVL once in the common
case.

Benchmark results show a small degradation in single-threaded
performance:
Execution time (sec)
name	trunk	built
dir_empty_p	0.689	0.758

Speedup ratio: compare with the result of `trunk' (greater is better)
name	built
dir_empty_p	0.909

* dir.c (rb_gc_for_fd_with_gvl): new function
  (nogvl_dir_empty_p): ditto
  (dir_s_empty_p): use new functions to release GVL
* benchmark/bm_dir_empty_p.rb: new benchmark
  [ruby-core:83071] [Feature #13958]
------------------------------------------------------------------------
r60110 | normal | 2017-10-04 08:47:53 +0900 (Wed, 04 Oct 2017) | 17 lines

file.c: release GVL around lstat(2)

Like stat(2), lstat(2) can be expensive on slow filesystems and
should not block other threads.  There should be a minor, but
not significant slowdowns in single-threaded performance similar
to benchmarks around the more-portable stat(2):
[ruby-core:83012] [Bug #13941]

* file.c (no_gvl_lstat): new function for rb_thread_call_without_gvl
  (lstat_without_gvl): new wrapper to replace lstat(2) calls
  (rb_file_s_lstat): s/lstat/&_without_gvl/
  (rb_file_lstat): ditto
  (rb_file_symlink_p): ditto
  (rb_file_s_ftype): ditto
  (rb_file_expand_path_internal): ditto
  (realpath_rec): ditto
  [ruby-core:83075] [Feature #13963]
------------------------------------------------------------------------
r60109 | svn | 2017-10-04 08:47:30 +0900 (Wed, 04 Oct 2017) | 1 line

* 2017-10-04
------------------------------------------------------------------------
r60108 | normal | 2017-10-04 08:47:29 +0900 (Wed, 04 Oct 2017) | 3 lines

file.c: release GVL in File.{setuid?,setgid?,sticky?}

* file.c (check3rdbyte): use rb_stat to release GVL
------------------------------------------------------------------------
r60107 | kazu | 2017-10-03 21:06:14 +0900 (Tue, 03 Oct 2017) | 1 line

Fix leaked file descriptor
------------------------------------------------------------------------
r60106 | nobu | 2017-10-03 16:51:37 +0900 (Tue, 03 Oct 2017) | 1 line

test_parser_events.rb: backref_assign_error
------------------------------------------------------------------------
r60105 | nobu | 2017-10-03 13:56:23 +0900 (Tue, 03 Oct 2017) | 5 lines

parse.y: extract callback results

* parse.y: stripping wrapping NODEs from ripper callback results,
  when storing in Array objects.  NODEs must not appear in Ruby
  level.
------------------------------------------------------------------------
r60104 | nobu | 2017-10-03 13:47:13 +0900 (Tue, 03 Oct 2017) | 1 line

parse.y: set ripper event IDs to keyword variables
------------------------------------------------------------------------
r60103 | svn | 2017-10-03 10:38:54 +0900 (Tue, 03 Oct 2017) | 1 line

* 2017-10-03
------------------------------------------------------------------------
r60102 | nobu | 2017-10-03 10:38:52 +0900 (Tue, 03 Oct 2017) | 1 line

parse.y: set ripper event ID symbols to operators
------------------------------------------------------------------------
r60101 | nobu | 2017-10-02 21:23:17 +0900 (Mon, 02 Oct 2017) | 1 line

use rb_hash_new_with_size()
------------------------------------------------------------------------
r60100 | nobu | 2017-10-02 20:43:36 +0900 (Mon, 02 Oct 2017) | 5 lines

test_call.rb: refine test_safe_call

* test/ruby/test_call.rb (test_safe_call): rhs should not be
  evaluated when the receiver is nil.  simplified the assertion
  for  [Bug #13964].
------------------------------------------------------------------------
r60099 | nobu | 2017-10-02 17:33:30 +0900 (Mon, 02 Oct 2017) | 5 lines

compile.c: fix stack consitency error

* compile.c (iseq_compile_each0): fix stack consitency error on
  attr-assign with safe navigation operator when the receiver is
  nil, should pop it too.  [ruby-core:83078] [Bug #13964]
------------------------------------------------------------------------
r60098 | glass | 2017-10-02 16:51:27 +0900 (Mon, 02 Oct 2017) | 3 lines

Revert "vm_eval.c: add rb_yield_assoc_or_values()"

This reverts commit r60095 to prevent performance degradation.
------------------------------------------------------------------------
r60097 | nobu | 2017-10-02 15:46:42 +0900 (Mon, 02 Oct 2017) | 5 lines

io.c: check null char

* io.c (ruby_set_inplace_mode): check if null is contained.  based
  on the patch by tommy (Masahiro Tomita) in [ruby-dev:50272].
  [Bug #13960]
------------------------------------------------------------------------
r60096 | nobu | 2017-10-02 15:46:41 +0900 (Mon, 02 Oct 2017) | 7 lines

test_argf.rb: indent here docs

* test/ruby/test_argf.rb (assert_src_expected): default line
  number to caller's location.

* test/ruby/test_argf.rb (test_lineno, test_lineno2): get rid of a
  bug of wrong indentation after $. in Emacs 25.3 ruby-mode.el
------------------------------------------------------------------------
r60095 | glass | 2017-10-02 14:29:11 +0900 (Mon, 02 Oct 2017) | 11 lines

vm_eval.c: add rb_yield_assoc_or_values()

The new function rb_yield_assoc_or_values() will reduce branching.

* vm_eval.c: add rb_yield_assoc_or_values()

* internal.h: ditto

* hash.c: use rb_yield_assoc_or_values()

* struct.c: ditto
------------------------------------------------------------------------
r60094 | nobu | 2017-10-02 13:06:55 +0900 (Mon, 02 Oct 2017) | 1 line

ruby-additional.el: shorten here-doc markers
------------------------------------------------------------------------
r60093 | ko1 | 2017-10-02 10:57:27 +0900 (Mon, 02 Oct 2017) | 5 lines

use `ra` instead of new variables.

* file.c (rb_file_s_rename): `struct rename_args ra` already has members
  which contain C ptrs. Pointed by MSP-Greg. Thanks!

------------------------------------------------------------------------
r60092 | ko1 | 2017-10-02 10:22:11 +0900 (Mon, 02 Oct 2017) | 4 lines

catch up r60088 for DOSISH.

* file.c (rb_file_s_rename): src and dst are used only on DOSISH env.

------------------------------------------------------------------------
r60091 | normal | 2017-10-02 06:29:27 +0900 (Mon, 02 Oct 2017) | 5 lines

NEWS: entries for GVL release in File and Dir

(more to come)

* NEWS: updates for [Bug #13941] and [Feature #13951]
------------------------------------------------------------------------
r60090 | svn | 2017-10-02 06:19:25 +0900 (Mon, 02 Oct 2017) | 1 line

* properties.
------------------------------------------------------------------------
r60089 | svn | 2017-10-02 06:19:25 +0900 (Mon, 02 Oct 2017) | 1 line

* 2017-10-02
------------------------------------------------------------------------
r60088 | normal | 2017-10-02 06:19:24 +0900 (Mon, 02 Oct 2017) | 23 lines

File#rename releases GVL

rename(2) requires two pathname resolution operations which can
take considerable time on slow filesystems, release the GVL so
operations on other threads may proceed.

On fast, local filesystems, this change results in some slowdown
as shown by the new benchmark.  I consider the performance trade
off acceptable as cases are avoided.

benchmark results:
minimum results in each 3 measurements.
Execution time (sec)
name	trunk	built
file_rename	2.648	2.804

Speedup ratio: compare with the result of `trunk' (greater is better)
name	built
file_rename	0.944

* file.c (no_gvl_rename): new function
  (rb_file_s_rename): release GVL for renames
* benchmark/bm_file_rename.rb: new benchmark
------------------------------------------------------------------------
r60087 | svn | 2017-10-01 22:44:50 +0900 (Sun, 01 Oct 2017) | 1 line

* properties.
------------------------------------------------------------------------
r60086 | glass | 2017-10-01 22:44:49 +0900 (Sun, 01 Oct 2017) | 7 lines

string.c: avoid unnecessary call of str_strlen()

* string.c (rb_strseq_index): refactor and avoid
  call of str_strlen() when offset == 0.
  it will improve performance of String#index and #include?

* benchmark/bm_string_index.rb: benchmark for this change
------------------------------------------------------------------------
r60085 | glass | 2017-10-01 13:26:25 +0900 (Sun, 01 Oct 2017) | 9 lines

use rb_hash_new_with_size()

* hash.c: use rb_hash_new_with_size().

* marshal.c: ditto

* struct.c: ditto

* vm_args.c: ditto
------------------------------------------------------------------------
r60084 | nobu | 2017-10-01 12:46:59 +0900 (Sun, 01 Oct 2017) | 1 line

common.mk (UNICODE_DOWNLOAD): set cache directory
------------------------------------------------------------------------
r60083 | nobu | 2017-10-01 11:39:22 +0900 (Sun, 01 Oct 2017) | 3 lines

generic_erb.rb: -i option

* tool/generic_erb.rb: -i option to merge multiple template files.
------------------------------------------------------------------------
r60082 | nobu | 2017-10-01 11:24:11 +0900 (Sun, 01 Oct 2017) | 5 lines

test_refinement.rb: test for r59946

* test/ruby/test_refinement.rb (test_dsym_literal): test for
  r59946, interning dynamic symbol should not be affected by
  refinements too.
------------------------------------------------------------------------
r60081 | normal | 2017-10-01 10:44:47 +0900 (Sun, 01 Oct 2017) | 12 lines

file.c: remove unnecessary volatile use

For apply2files, all callers use the `path' VALUE for
generating exceptions, so there is no need to guard it.
In realpath_rec, RB_GC_GUARD is already used on link_orig.

In rb_check_realpath_internal, RB_GC_GUARD is necessary and
preferable (see Appendix E. of doc/extension.rdoc)

* file.c (apply2files): remove unnecessary volatile
  (realpath_rec): ditto
  (rb_check_realpath_internal): ditto, and add RB_GC_GUARD
------------------------------------------------------------------------
r60080 | svn | 2017-10-01 06:50:42 +0900 (Sun, 01 Oct 2017) | 1 line

* 2017-10-01
------------------------------------------------------------------------
r60079 | normal | 2017-10-01 06:50:42 +0900 (Sun, 01 Oct 2017) | 6 lines

thread_pthread.c: do not wakeup inside child processes

* thread_pthread.c (rb_thread_wakeup_timer_thread): check
  ownership before incrementing
  (rb_thread_wakeup_timer_thread_low): ditto
  [Bug #13794] [ruby-core:83064]
------------------------------------------------------------------------
r60078 | glass | 2017-09-30 22:14:09 +0900 (Sat, 30 Sep 2017) | 1 line

hash.c: use rb_hash_new_with_size()
------------------------------------------------------------------------
r60077 | nobu | 2017-09-30 21:26:23 +0900 (Sat, 30 Sep 2017) | 4 lines

eval.c: check type

* eval.c (ignored_block): check argument type, which must be
  Module.  [ruby-dev:50270] [Bug #13956]
------------------------------------------------------------------------
r60076 | glass | 2017-09-30 20:58:33 +0900 (Sat, 30 Sep 2017) | 9 lines

hash.c: remove special treatments on deletion

st.c was improved in r56650 that it permits deletion during iteration.
In this commit, special treatments for previous implementation are
removed.

* hash.c: don't use *_check and *_safe functions in st.c

* internal.h: remove HASH_DELETED flag
------------------------------------------------------------------------
r60075 | nobu | 2017-09-30 20:50:14 +0900 (Sat, 30 Sep 2017) | 1 line

dbm.c: suppress unused-but-set-variable warning
------------------------------------------------------------------------
r60074 | nobu | 2017-09-30 20:06:05 +0900 (Sat, 30 Sep 2017) | 1 line

gdbm.c: use the default external encoding
------------------------------------------------------------------------
r60073 | glass | 2017-09-30 18:27:30 +0900 (Sat, 30 Sep 2017) | 4 lines

configure.ac: remove --enable-pthread option.

* configure.ac: remove --enable-pthread option.
  it was obsoleted in 2009.
------------------------------------------------------------------------
r60072 | nobu | 2017-09-30 18:07:13 +0900 (Sat, 30 Sep 2017) | 1 line

dbm.c: removed useless assignments
------------------------------------------------------------------------
r60071 | nobu | 2017-09-30 17:35:23 +0900 (Sat, 30 Sep 2017) | 3 lines

ext: check if null byte is contained

[ruby-dev:50267] [Bug #13953]
------------------------------------------------------------------------
r60070 | glass | 2017-09-30 15:45:24 +0900 (Sat, 30 Sep 2017) | 1 line

configure.ac: remove unused macro
------------------------------------------------------------------------
r60069 | nobu | 2017-09-30 15:42:24 +0900 (Sat, 30 Sep 2017) | 1 line

ripper/lexer.rb: remove double quotes
------------------------------------------------------------------------
r60068 | glass | 2017-09-30 15:30:44 +0900 (Sat, 30 Sep 2017) | 4 lines

configure.ac: use m4_version_prereq

* configure.ac: use m4_version_prereq to check
  running autoconf version.
------------------------------------------------------------------------
r60067 | ktsj | 2017-09-30 12:31:32 +0900 (Sat, 30 Sep 2017) | 4 lines

test_find.rb: improve branch coverage

* test/test_find.rb (test_to_path): add a test
  for to_path conversion.
------------------------------------------------------------------------
r60066 | nobu | 2017-09-30 09:01:23 +0900 (Sat, 30 Sep 2017) | 5 lines

string.c: fix ASCII-only on succ

* string.c (str_succ): clear coderange cache when no alpha-numeric
  character case, carried part may become ASCII-only.
  [ruby-core:83062] [Bug #13952]
------------------------------------------------------------------------
r60065 | nobu | 2017-09-30 08:41:19 +0900 (Sat, 30 Sep 2017) | 4 lines

sizes.c.tmpl: prototype

* template/sizes.c.tmpl (Init_limits): turned a K&R style
  declaration into a prototype declaration.
------------------------------------------------------------------------
r60064 | svn | 2017-09-30 02:19:38 +0900 (Sat, 30 Sep 2017) | 1 line

* 2017-09-30
------------------------------------------------------------------------
r60063 | sonots | 2017-09-30 02:19:37 +0900 (Sat, 30 Sep 2017) | 5 lines

test_etc.rb: fix test_getgrnam for duplicated group names

* test/etc/test_etc.rb: Etc.getgrnam would not return the first entry in the order of Etc.group for duplicated group names.

follow-up: [Bug #6935]
------------------------------------------------------------------------
r60062 | nobu | 2017-09-29 22:21:17 +0900 (Fri, 29 Sep 2017) | 8 lines

configure.ac

* configure.ac: renamed configure.in.  [Feature #13946]

* Makefile.in, common.mk, ext/rbconfig/sizeof/depend: use
  configure.ac.

* README.ja.md, README.md: update document for configure.ac.
------------------------------------------------------------------------
r60061 | kazu | 2017-09-29 20:00:00 +0900 (Fri, 29 Sep 2017) | 3 lines

Use unpack1 instead of unpack and `[0]`

[Feature #13943][ruby-core:83027]
------------------------------------------------------------------------
r60060 | nobu | 2017-09-29 17:15:50 +0900 (Fri, 29 Sep 2017) | 4 lines

string.c: ASCII-incompatible is not ASCII only

* string.c (tr_trans): ASCII-incompatible encoding strings cannot
  be ASCII-only even if valid.  [ruby-core:83056] [Bug #13950]
------------------------------------------------------------------------
r60059 | nobu | 2017-09-29 17:00:47 +0900 (Fri, 29 Sep 2017) | 4 lines

pack.c: unpack "M" may be ASCII only

* pack.c (pack_unpack_internal): set ASCII only properly on "M",
  may be ASCII only.  [ruby-core:83055] [Bug #13949]
------------------------------------------------------------------------
r60058 | svn | 2017-09-29 16:43:23 +0900 (Fri, 29 Sep 2017) | 1 line

* 2017-09-29
------------------------------------------------------------------------
r60057 | nobu | 2017-09-29 16:43:22 +0900 (Fri, 29 Sep 2017) | 47 lines

array.c: improve operations on small arrays

[Feature #13884]

Reduce number of memory allocations for "and", "or" and "diff"
operations on small arrays

Very often, arrays are used to filter parameters and to select
interesting items from 2 collections and very often these
collections are small enough, for example:

```ruby
SAFE_COLUMNS = [:id, :title, :created_at]

def columns
  @all_columns & SAFE_COLUMNS
end
```

In this patch, I got rid of unnecessary memory allocations for
small arrays when "and", "or" and "diff" operations are performed.

name             | HEAD  | PATCH
-----------------+------:+------:
array_small_and  | 0.615 | 0.263
array_small_diff | 0.676 | 0.282
array_small_or   | 0.953 | 0.463

name             | PATCH
-----------------+------:
array_small_and  | 2.343
array_small_diff | 2.392
array_small_or   | 2.056

name             | HEAD  | PATCH
-----------------+------:+------:
array_small_and  | 1.429 | 1.005
array_small_diff | 1.493 | 0.878
array_small_or   | 1.672 | 1.152

name             | PATCH
-----------------+------:
array_small_and  | 1.422
array_small_diff | 1.700
array_small_or   | 1.452

Author:    Dmitry Bochkarev <dimabochkarev@gmail.com>
------------------------------------------------------------------------
r60056 | shirosaki | 2017-09-28 22:55:48 +0900 (Thu, 28 Sep 2017) | 6 lines

test_dln.rb: fix path separator on MinGW

* test/-ext-/win32/test_dln.rb (TestDln#test_check_imported):
  RbConfig::CONFIG["PATH_SEPARATOR"] is : which is a separator on
  msys2 shell building ruby. Use File::PATH_SEPARATOR ; on test.
  [Bug #13642] [ruby-core:81623]
------------------------------------------------------------------------
r60055 | shirosaki | 2017-09-28 22:43:21 +0900 (Thu, 28 Sep 2017) | 9 lines

io.c: fix segfault with closing socket on Windows

* io.c (fptr_finalize_flush): add an argument to keep GVL.
* io.c (fptr_finalize): adjust for above change.
* io.c (io_close_fptr): closing without GVL causes another
  exception while raising exception in another thread. This causes
  segfault on Windows. Keep GVL while closing when another thread
  raises.
  [Bug #13856] [ruby-core:82602]
------------------------------------------------------------------------
r60054 | naruse | 2017-09-28 19:51:37 +0900 (Thu, 28 Sep 2017) | 1 line

Net::HTTP.new: Support no_proxy parameter [Feature #11195]
------------------------------------------------------------------------
r60053 | naruse | 2017-09-28 19:51:31 +0900 (Thu, 28 Sep 2017) | 3 lines

URI::Generic: Separate no_proxy handling

To share with Net::HTTP. see #11195
------------------------------------------------------------------------
r60052 | svn | 2017-09-28 18:20:00 +0900 (Thu, 28 Sep 2017) | 1 line

* properties.
------------------------------------------------------------------------
r60051 | eregon | 2017-09-28 18:19:59 +0900 (Thu, 28 Sep 2017) | 1 line

Update to ruby/spec@691755d
------------------------------------------------------------------------
r60050 | eregon | 2017-09-28 18:19:19 +0900 (Thu, 28 Sep 2017) | 1 line

Update to ruby/mspec@c135328
------------------------------------------------------------------------
r60049 | nobu | 2017-09-28 11:51:41 +0900 (Thu, 28 Sep 2017) | 4 lines

test_io_console.rb: flush

* test/io/console/test_io_console.rb: flush to ensure the second
  data is sent.
------------------------------------------------------------------------
r60048 | svn | 2017-09-28 06:55:33 +0900 (Thu, 28 Sep 2017) | 1 line

* 2017-09-28
------------------------------------------------------------------------
r60047 | naruse | 2017-09-28 06:55:32 +0900 (Thu, 28 Sep 2017) | 4 lines

Remove DevKit path, change zlib link

by MSP-Greg <MSP-Greg@users.noreply.github.com>
fix https://github.com/ruby/ruby/pull/1708
------------------------------------------------------------------------
r60046 | kazu | 2017-09-27 21:32:57 +0900 (Wed, 27 Sep 2017) | 1 line

Fix exception class [ci skip]
------------------------------------------------------------------------
r60045 | duerst | 2017-09-27 16:47:13 +0900 (Wed, 27 Sep 2017) | 1 line

improve grammar in documentation of Array#bsearch [ci skip]
------------------------------------------------------------------------
r60044 | nobu | 2017-09-27 14:27:07 +0900 (Wed, 27 Sep 2017) | 1 line

pty.c: shrink repeated device names
------------------------------------------------------------------------
r60043 | nobu | 2017-09-27 14:27:06 +0900 (Wed, 27 Sep 2017) | 1 line

objspace_dump.c: remove unnecessary break
------------------------------------------------------------------------
r60042 | nobu | 2017-09-27 14:08:53 +0900 (Wed, 27 Sep 2017) | 1 line

ext: adjust indent [ci skip]
------------------------------------------------------------------------
r60041 | nobu | 2017-09-27 11:55:03 +0900 (Wed, 27 Sep 2017) | 4 lines

complex.c: no overflow

* complex.c (rb_complex_infinite_p): get rid of overflow and
  unnecessary multiplication.
------------------------------------------------------------------------
r60040 | nobu | 2017-09-27 11:38:51 +0900 (Wed, 27 Sep 2017) | 4 lines

complex.c: no overflow

* complex.c (rb_complex_finite_p): get rid of overflow and
  unnecessary multiplication.
------------------------------------------------------------------------
r60039 | svn | 2017-09-27 10:01:27 +0900 (Wed, 27 Sep 2017) | 1 line

* 2017-09-27
------------------------------------------------------------------------
r60038 | nobu | 2017-09-27 10:01:26 +0900 (Wed, 27 Sep 2017) | 1 line

* complex.c: fix Complex#infinite? return value. Because nucomp_abs never returns negative value.
------------------------------------------------------------------------
r60037 | nobu | 2017-09-27 08:28:07 +0900 (Wed, 27 Sep 2017) | 4 lines

Show rb_data_type_t definition [ci skip]

[Fix GH-1707]
Author:    hkdnet <hkdnet@users.noreply.github.com>
------------------------------------------------------------------------
r60036 | nobu | 2017-09-27 08:28:06 +0900 (Wed, 27 Sep 2017) | 4 lines

Fix a reference [ci skip]

[Fix GH-1706]
Author:    hkdnet <hkdnet@users.noreply.github.com>
------------------------------------------------------------------------
r60035 | naruse | 2017-09-26 23:00:25 +0900 (Tue, 26 Sep 2017) | 4 lines

Make retries for Net::HTTP configurable [Feature #10674]

by stereobooster
fix https://github.com/ruby/ruby/pull/1654
------------------------------------------------------------------------
r60034 | nobu | 2017-09-26 22:40:14 +0900 (Tue, 26 Sep 2017) | 1 line

parse.y: moved duplicate conditions
------------------------------------------------------------------------
r60033 | nobu | 2017-09-26 21:21:51 +0900 (Tue, 26 Sep 2017) | 1 line

Suppress warnings by other than self-assignments
------------------------------------------------------------------------
r60032 | k0kubun | 2017-09-26 20:50:07 +0900 (Tue, 26 Sep 2017) | 13 lines

erb.rb: drop unreachable method

This seems to be unreachable from first introduction at r21286.

In ERB implementation, `#empty?` is only called for each member of
return value of `String#scan`, and `ERB::Compiler::PercentLine` is never
returned from `String#scan`.

Also, in `ERB::Compiler#compile`, as it's yielded only when stag is nil,
methods called to `ERB::Compiler::PercentLine` object yielded from
`ERB::Compiler::TrimScanner#scan` are only: `#nil?`, `#==`, `to_s`.

Thus `ERB::Compiler::PercentLine#empty?` is never used.
------------------------------------------------------------------------
r60031 | k0kubun | 2017-09-26 20:30:45 +0900 (Tue, 26 Sep 2017) | 1 line

test_erb.rb: add test cases for uncovered methods
------------------------------------------------------------------------
r60030 | k0kubun | 2017-09-26 19:45:14 +0900 (Tue, 26 Sep 2017) | 3 lines

test_features.rb: fix unused variable warning

test/csv/test_features.rb:357: warning: assigned but unused variable - csv
------------------------------------------------------------------------
r60029 | mame | 2017-09-26 13:59:39 +0900 (Tue, 26 Sep 2017) | 1 line

run-lcov.rb: support overwritten tmpdir path
------------------------------------------------------------------------
r60028 | mame | 2017-09-26 13:51:09 +0900 (Tue, 26 Sep 2017) | 1 line

tool/run-lcov.rb: Filter tmp files out
------------------------------------------------------------------------
r60027 | nobu | 2017-09-26 13:13:37 +0900 (Tue, 26 Sep 2017) | 28 lines

Release gvl while doing (f)stat

At the moment rb_stat function is blocking. This patch changes the
behaviour to release the gvl while waiting for OS to return from
f(stat).

There is behaviour impact, but not significant (times are for 100000
iterations):

   $ ~/releaseruby_patch/bin/ruby bench.rb
Rehearsal ------------------------------------------------
File.exist?:   0.036412   0.056616   0.093028 (  0.093075)
--------------------------------------- total: 0.093028sec

                   user     system      total        real
File.exist?:   0.042953   0.049783   0.092736 (  0.092804)

   $ ~/releaseruby_no_patch/bin/ruby bench.rb
Rehearsal ------------------------------------------------
File.exist?:   0.056094   0.026293   0.082387 (  0.082389)
--------------------------------------- total: 0.082387sec

                   user     system      total        real
File.exist?:   0.037250   0.046702   0.083952 (  0.083956)

Based on the patch by Wolf <wolf@wolfsden.cz> at [ruby-core:83012],
with using `rb_thread_io_blocking_region` for `fstat`.
[Bug #13941]
------------------------------------------------------------------------
r60026 | nobu | 2017-09-26 09:07:41 +0900 (Tue, 26 Sep 2017) | 5 lines

test_drb.rb: removed extra spaces

* test/drb/test_drb.rb (TestDRbLarge#test_02_large_ary): removed
  unnecessary extra spaces which make the following parentheses an
  expression.
------------------------------------------------------------------------
r60025 | nobu | 2017-09-26 06:52:00 +0900 (Tue, 26 Sep 2017) | 4 lines

vm.c: unused function

* vm.c (rb_vm_jump_tag_but_local_jump): no longer used since
  r51292.
------------------------------------------------------------------------
r60024 | nobu | 2017-09-26 06:51:56 +0900 (Tue, 26 Sep 2017) | 5 lines

vm.c: fetch retval iff necessary

* vm.c (rb_vm_make_jump_tag_but_local_jump): get rid of fetching
  retval when it is not used.  it is necessary for local jump
  state only.
------------------------------------------------------------------------
r60023 | svn | 2017-09-26 02:38:43 +0900 (Tue, 26 Sep 2017) | 1 line

* 2017-09-26
------------------------------------------------------------------------
r60022 | naruse | 2017-09-26 02:38:42 +0900 (Tue, 26 Sep 2017) | 4 lines

Switch Build to use 2.4 with certs files

patched by MSP-Greg <MSP-Greg@users.noreply.github.com>
fix https://github.com/ruby/ruby/pull/1702
------------------------------------------------------------------------
r60021 | naruse | 2017-09-25 23:28:53 +0900 (Mon, 25 Sep 2017) | 1 line

HTTPHeader#add_field should allow binary [Bug #13926]
------------------------------------------------------------------------
r60020 | mame | 2017-09-25 23:04:59 +0900 (Mon, 25 Sep 2017) | 3 lines

tool/run-lcov.rb: Filter test files out

And refactoring.
------------------------------------------------------------------------
r60019 | naruse | 2017-09-25 17:19:10 +0900 (Mon, 25 Sep 2017) | 7 lines

Fix overflow detection for LLP64 arch [Bug #13748]

FIXNUMs are expected to fit into a long type, but the test is about a
VALUE type. Since long is < than VALUE on LLP64, the overflow is not
detected. As a result "2**31" evaluates to "-2147483648" on Windows with
gcc-7.1.0.
patched by Lars Kanis <lars@greiz-reinsdorf.de>
------------------------------------------------------------------------
r60018 | nobu | 2017-09-25 15:31:38 +0900 (Mon, 25 Sep 2017) | 6 lines

configure.in: install_name without teeny

* configure.in (RUBY_API_VERSION): remove teeny from install_name
  to allow link extension libraries for the same minor version.
  patched by kimuraw (Wataru Kimura) at [ruby-dev:50262].
  [Bug #13931]
------------------------------------------------------------------------
r60017 | naruse | 2017-09-25 15:20:10 +0900 (Mon, 25 Sep 2017) | 1 line

Time#at receives 3rd argument which specifies the unit of 2nd argument [Feature #13919]
------------------------------------------------------------------------
r60016 | sonots | 2017-09-25 15:05:52 +0900 (Mon, 25 Sep 2017) | 3 lines

thread.c: Use 'Class.new' instead of 'Class::new' in doc codes.

patched by Herwin [Fix GH-1700]
------------------------------------------------------------------------
r60015 | yui-knk | 2017-09-25 09:09:44 +0900 (Mon, 25 Sep 2017) | 8 lines

test/ruby/test_iseq.rb: Skip test_safe_call_chain if Coverage is running.

Follow up to r59990.
When Coverage is running, trace2 instructions are inserted
to take branch coverages for safe method invocations.
This insertion makes safe call chains unable to be optimized
and breaks this test case.
So we test it only when Coverage is not running.
------------------------------------------------------------------------
r60014 | svn | 2017-09-25 01:26:23 +0900 (Mon, 25 Sep 2017) | 1 line

* 2017-09-25
------------------------------------------------------------------------
r60013 | rhe | 2017-09-25 01:26:22 +0900 (Mon, 25 Sep 2017) | 32 lines

openssl: import e72d960db262

Sync with master branch of ruby/openssl.git to import changes in
v2.1.0.beta1..v2.0.6. The commit log since v2.1.0.beta1 which was
imported by r59734 can be found at:

	https://github.com/ruby/openssl/compare/v2.1.0.beta1...e72d960db262

----------------------------------------------------------------
Kazuki Yamaguchi (16):
      test/test_pair: fix test_write_nonblock{,_no_exceptions}
      x509name: fix a typo in docs
      test/test_fips: skip if setting FIPS mode fails
      test/test_asn1: fix possible failure in test_utctime
      test/test_ssl: suppress warning in test_alpn_protocol_selection_cancel
      test/test_pair: disable compression
      test/test_ssl: skip tmp_ecdh_callback test for LibreSSL >= 2.6.1
      test/test_ssl: do not run NPN tests for LibreSSL >= 2.6.1
      tool/ruby-openssl-docker: update
      test/test_pair: replace sleep with IO.select
      ssl: prevent SSLSocket#sysread* from leaking uninitialized data
      ossl.c: use struct CRYPTO_dynlock_value for non-dynamic locks
      ossl.c: make legacy locking callbacks reentrant
      test/test_engine: suppress stderr
      test/test_engine: check if RC4 is supported
      Ruby/OpenSSL 2.0.6

SHIBATA Hiroshi (1):
      To use upstream url of github

nobu (1):
      ruby.h: unnormalized Fixnum value
------------------------------------------------------------------------
r60012 | nobu | 2017-09-24 19:07:21 +0900 (Sun, 24 Sep 2017) | 3 lines

common.mk: force link exe/ruby

* common.mk (exe/ruby): force link exe/ruby with miniruby.
------------------------------------------------------------------------
r60011 | nobu | 2017-09-24 18:44:26 +0900 (Sun, 24 Sep 2017) | 4 lines

test_gc.rb: relax criterion

* test/ruby/test_gc.rb (TestGc#test_expand_heap): relax the
  criterion and compare by epsilon.
------------------------------------------------------------------------
r60010 | nobu | 2017-09-24 18:35:09 +0900 (Sun, 24 Sep 2017) | 4 lines

gem.rb: load rubygems.rb

* test/rubygems/test_gem.rb: load rubygems.rb explicitly, for the
  case configured as --disable-rubygems.
------------------------------------------------------------------------
r60009 | hsbt | 2017-09-24 17:10:08 +0900 (Sun, 24 Sep 2017) | 1 line

Added NEWS entry for r60008
------------------------------------------------------------------------
r60008 | hsbt | 2017-09-24 16:52:25 +0900 (Sun, 24 Sep 2017) | 5 lines

Removed ubygems.rb. rubygems.rb is always loaded now.

  * tool/sync_default_gems.rb: removed ubygems.rb from sync target.
  * test/rubygems/test_gem.rb: only enable "-rubygems" option when
    running under the Ruby 1.9.
------------------------------------------------------------------------
r60007 | nobu | 2017-09-24 14:22:23 +0900 (Sun, 24 Sep 2017) | 4 lines

load.c: fix rb_load_protect condition

* load.c (rb_load_protect): fix the condition to load the found
  file.  fixup of r59155.
------------------------------------------------------------------------
r60006 | nobu | 2017-09-24 10:48:25 +0900 (Sun, 24 Sep 2017) | 6 lines

ruby-runner.c: RUBYLIB

* ruby-runner.c (insert_env_path): extracted the function which
  insert path list to an environment variable.

* ruby-runner.c (main): append library paths to RUBYLIB.
------------------------------------------------------------------------
r60005 | nobu | 2017-09-24 09:15:02 +0900 (Sun, 24 Sep 2017) | 4 lines

common.mk: link exe/ruby

* common.mk (exe/ruby): make fixed name symbolic link exe/ruby to
  exe/$(PROGRAM), to run hardcoded bundler tests.
------------------------------------------------------------------------
r60004 | svn | 2017-09-24 08:58:25 +0900 (Sun, 24 Sep 2017) | 1 line

* 2017-09-24
------------------------------------------------------------------------
r60003 | mame | 2017-09-24 08:58:24 +0900 (Sun, 24 Sep 2017) | 4 lines

test/coverage/test_coverage.rb: Refactor coverage tests.

Add `assert_coverage` to invoke Ruby script under coverage measurement
and to compare the result with an expected value.
------------------------------------------------------------------------
r60002 | nobu | 2017-09-23 16:09:07 +0900 (Sat, 23 Sep 2017) | 6 lines

dup String#split return value

* string.c (rb_str_split): return duplicated receiver, when no
  splits.  patched by tompng (tomoya ishida) in [ruby-core:82911],
  and the test case by Seiei Miyagi <hanachin@gmail.com>.
  [Bug#13925] [Fix GH-1705]
------------------------------------------------------------------------
r60001 | nobu | 2017-09-23 16:09:06 +0900 (Sat, 23 Sep 2017) | 6 lines

dup String#rpartition return value

* string.c (rb_str_rpartition): return duplicated receiver, when
  no splits.  [ruby-core:82911] [Bug#13925]

Author:    Seiei Miyagi <hanachin@gmail.com>
------------------------------------------------------------------------
r60000 | nobu | 2017-09-23 16:09:05 +0900 (Sat, 23 Sep 2017) | 6 lines

dup String#partition return value

* string.c (rb_str_partition): return duplicated receiver, when no
  splits.  [ruby-core:82911] [Bug#13925]

Author:    Seiei Miyagi <hanachin@gmail.com>
------------------------------------------------------------------------
r59999 | nobu | 2017-09-23 15:49:35 +0900 (Sat, 23 Sep 2017) | 5 lines

parse.y: token type by identifer ID type

* parse.y (parse_ident): leave identifier type decision (local or
  const) to rb_enc_symname_type, and set the token type by ID
  type.
------------------------------------------------------------------------
r59998 | nobu | 2017-09-23 15:49:34 +0900 (Sat, 23 Sep 2017) | 3 lines

parse.y: missing semicolon

* parse.y (stmt_or_begin): fix missing semicolon.
------------------------------------------------------------------------
r59997 | hsbt | 2017-09-23 13:37:58 +0900 (Sat, 23 Sep 2017) | 3 lines

removed bin/bundle_ruby, It was ignored upstream gemspec.

  * spec/bundler/other/*: Marked exclude tags for ruby repository.
------------------------------------------------------------------------
r59996 | hsbt | 2017-09-23 11:57:12 +0900 (Sat, 23 Sep 2017) | 1 line

update section styles for psych, rubygems, bundler.
------------------------------------------------------------------------
r59995 | hsbt | 2017-09-23 11:55:07 +0900 (Sat, 23 Sep 2017) | 4 lines

Added sections of pysch library to LEGAL.

  * ext/psych/yaml/LICENSE: Integrate libyaml license to LEGAL and
    removed this file from repository.
------------------------------------------------------------------------
r59994 | hsbt | 2017-09-23 11:37:55 +0900 (Sat, 23 Sep 2017) | 1 line

Added bundler's license to LEGAL.
------------------------------------------------------------------------
r59993 | hsbt | 2017-09-23 11:26:10 +0900 (Sat, 23 Sep 2017) | 1 line

Added missing "ubygems.rb" file of rubygems to LEGAL.
------------------------------------------------------------------------
r59992 | hsbt | 2017-09-23 11:24:27 +0900 (Sat, 23 Sep 2017) | 1 line

Integrate LICENSE file of rubygems to LEGAL.
------------------------------------------------------------------------
r59991 | svn | 2017-09-23 09:17:36 +0900 (Sat, 23 Sep 2017) | 1 line

* 2017-09-23
------------------------------------------------------------------------
r59990 | yui-knk | 2017-09-23 09:17:35 +0900 (Sat, 23 Sep 2017) | 1 line

Enable to take branch coverages for safe method invocations
------------------------------------------------------------------------
r59989 | nobu | 2017-09-22 20:21:34 +0900 (Fri, 22 Sep 2017) | 8 lines

Update trick2013/yhara for Ruby 2.4

I need to raise LocalJumpError here (for the first "J" of the
output "JUST ANOTHER RUBY HACKER"), but this `return` does
not raise error in Ruby 2.4.

[Fix GH-1703]
Author:    Yutaka HARA <yutaka.hara+github@gmail.com>
------------------------------------------------------------------------
r59988 | nobu | 2017-09-22 13:56:24 +0900 (Fri, 22 Sep 2017) | 4 lines

numeric.c: reduced repeated calls

* numeric.c (rb_num2ll, rb_num2ull, fix_pow): turn repeated
  RFLOAT_VALUE calls into local variables.
------------------------------------------------------------------------
r59987 | svn | 2017-09-22 12:05:03 +0900 (Fri, 22 Sep 2017) | 1 line

* 2017-09-22
------------------------------------------------------------------------
r59986 | nobu | 2017-09-22 12:05:02 +0900 (Fri, 22 Sep 2017) | 5 lines

numeric.c: use NUM2DBL

* numeric.c (fix_fdiv_double), bignum.c (rb_big_fdiv_double): use
  NUM2DBL on unknown object.  RFLOAT_VALUE is only appliicable to
  T_FLOAT object.  [ruby-core:82924] [Bug #13928]
------------------------------------------------------------------------
r59985 | nobu | 2017-09-21 21:26:16 +0900 (Thu, 21 Sep 2017) | 4 lines

gmake.mk: order test-bundler

* defs/gmake.mk (ORDERED_TEST_TARGETS): order test-bundler too to
  get rid of mixing outputs.
------------------------------------------------------------------------
r59984 | nobu | 2017-09-21 16:29:20 +0900 (Thu, 21 Sep 2017) | 5 lines

load.c: real path to load

* load.c (rb_construct_expanded_load_path): expand load paths to
  real paths to get rid of duplicate loading from symbolic-linked
  directories.  [Feature #10222]
------------------------------------------------------------------------
r59983 | nobu | 2017-09-21 16:29:16 +0900 (Thu, 21 Sep 2017) | 5 lines

file.c: rb_check_realpath

* file.c (rb_check_realpath): returns real path which has no
  symbolic links.  similar to rb_realpath except for returning
  Qnil if any parts did not exist.
------------------------------------------------------------------------
r59982 | eregon | 2017-09-21 07:02:10 +0900 (Thu, 21 Sep 2017) | 4 lines

check_funcall_missing() should call respond_to_missing?(name, priv=true)

* Improve spec rather than constrain implementation.
* Coercion ignores visibility in Ruby.
------------------------------------------------------------------------
r59981 | eregon | 2017-09-21 06:50:14 +0900 (Thu, 21 Sep 2017) | 5 lines

Prefer adapting specs to complicating library code

* lib/net/ftp.rb (Net::FTP#initialize): simplify as per
  the original intent.
* spec/ruby/library/net/ftp/initialize_spec.rb: adapt specs.
------------------------------------------------------------------------
r59980 | eregon | 2017-09-21 05:19:54 +0900 (Thu, 21 Sep 2017) | 4 lines

Adapt tools to follow spec/rubyspec => spec/ruby rename

* [Misc #13792] [ruby-core:82287]
* Prefer test-spec over test-rubyspec in spec/README.
------------------------------------------------------------------------
r59979 | eregon | 2017-09-21 05:18:52 +0900 (Thu, 21 Sep 2017) | 4 lines

Move spec/rubyspec to spec/ruby for consistency

* Other ruby implementations use the spec/ruby directory.
  [Misc #13792] [ruby-core:82287]
------------------------------------------------------------------------
r59978 | svn | 2017-09-21 04:45:20 +0900 (Thu, 21 Sep 2017) | 1 line

* properties.
------------------------------------------------------------------------
r59977 | eregon | 2017-09-21 04:45:19 +0900 (Thu, 21 Sep 2017) | 1 line

Update to ruby/spec@e3b6811
------------------------------------------------------------------------
r59976 | svn | 2017-09-21 03:47:15 +0900 (Thu, 21 Sep 2017) | 1 line

* 2017-09-21
------------------------------------------------------------------------
r59975 | normal | 2017-09-21 03:47:14 +0900 (Thu, 21 Sep 2017) | 11 lines

process: block/unblock signals around fork

As with forking for execve(2) in `spawn', we must block signals
to ensure they are handled correctly in a freshly `fork'-ed child.

* process.c (retry_fork_ruby): block/unblock signals around fork
  (rb_fork_ruby): re-enable signals in forked child
* test/ruby/test_process.rb (test_forked_child_signal): new test
  [ruby-core:82883] [Bug #13916]

  Thanks to Russell Davis for the bug report and test case.
------------------------------------------------------------------------
r59974 | nobu | 2017-09-20 17:38:52 +0900 (Wed, 20 Sep 2017) | 4 lines

parse.y: literal term lex_state

* parse.y (parser_string_term, parser_parse_string): move setting
  lex_state operations from parser_yylex per each token types.
------------------------------------------------------------------------
r59973 | sonots | 2017-09-20 14:01:09 +0900 (Wed, 20 Sep 2017) | 1 line

ruby.c: show help messages of --dump
------------------------------------------------------------------------
r59972 | nobu | 2017-09-20 11:32:55 +0900 (Wed, 20 Sep 2017) | 4 lines

fix up r59949

* ext/ripper/lib/ripper/lexer.rb (List#inspect): splat self data
  to local variables same as members of Elem.
------------------------------------------------------------------------
r59971 | shugo | 2017-09-20 10:40:53 +0900 (Wed, 20 Sep 2017) | 3 lines

Add MonitorMinx#mon_locked? and #mon_owned? to check states of objects

Patched by Satoshi "Moris" Tagomori <tagomoris@gmail.com>.  [Fix GH-1699]
------------------------------------------------------------------------
r59970 | nobu | 2017-09-20 09:53:47 +0900 (Wed, 20 Sep 2017) | 5 lines

ruby.c: paragraph mode by -00

* ruby.c (proc_options): set to paragraph mode, if -00 is given,
  as well as perl and -R0 option in 0.49.
  [ruby-core:81987] [Bug #13736]
------------------------------------------------------------------------
r59969 | svn | 2017-09-20 08:09:11 +0900 (Wed, 20 Sep 2017) | 1 line

* 2017-09-20
------------------------------------------------------------------------
r59968 | nobu | 2017-09-20 08:09:10 +0900 (Wed, 20 Sep 2017) | 1 line

adjust indent
------------------------------------------------------------------------
r59967 | nagachika | 2017-09-19 23:56:03 +0900 (Tue, 19 Sep 2017) | 3 lines

fix a typo in NEWS at r59966.

	* NEWS: fix a typo.
------------------------------------------------------------------------
r59966 | knu | 2017-09-19 17:45:12 +0900 (Tue, 19 Sep 2017) | 5 lines

Alias Set#=== to #include?

* set.rb (Set#===): Added via [Feature #13801] by davidarnold.

Closes #1673.
------------------------------------------------------------------------
r59965 | normal | 2017-09-19 17:39:22 +0900 (Tue, 19 Sep 2017) | 5 lines

webrick: handle EAGAIN/EWOULDBLOCK on proxy connections

* lib/webrick/httpproxy.rb (do_CONNECT): high-level IO methods
  [ruby-core:82861] [Bug #12130]
  Patch by: Keisuke NISHI
------------------------------------------------------------------------
r59964 | hsbt | 2017-09-19 14:01:02 +0900 (Tue, 19 Sep 2017) | 5 lines

Fixup r59961. Use http for libffi downloading.

  A few environments couldn't handle https download.
    * https://rubyci.org/logs/mswinci.japaneast.cloudapp.azure.com/vc12-x64/ruby-trunk/log/20170919T032511Z.fail.html.gz
    * https://rubyci.org/logs/www.rubyist.net/~akr/chkbuild/debian/ruby-trunk/log/20170919T040500Z.fail.html.gz
------------------------------------------------------------------------
r59963 | nobu | 2017-09-19 11:42:08 +0900 (Tue, 19 Sep 2017) | 4 lines

thread.c: report then abort

* thread.c (thread_start_func_2): report then abort on exception,
  if both are set.  [ruby-core:79280] [Bug #13163]
------------------------------------------------------------------------
r59962 | hsbt | 2017-09-19 11:39:40 +0900 (Tue, 19 Sep 2017) | 4 lines

Added documentation
Added documentaiton for installation of bundled gems.

  [Bug #13724][ruby-core:81938]
------------------------------------------------------------------------
r59961 | hsbt | 2017-09-19 11:25:16 +0900 (Tue, 19 Sep 2017) | 1 line

Use https instead of ftp for libffi downloading.
------------------------------------------------------------------------
r59960 | hsbt | 2017-09-19 10:54:28 +0900 (Tue, 19 Sep 2017) | 3 lines

Define the MIME type for JSON in WEBrick::HTTPUtils::DefaultMimeTypes.

  [Feature #10798][ruby-core:67879]
------------------------------------------------------------------------
r59959 | hsbt | 2017-09-19 09:37:38 +0900 (Tue, 19 Sep 2017) | 4 lines

Enabled temporary disabled examples of bundler rspec.

  These are fails when merging at r59779. But these are
  working now.
------------------------------------------------------------------------
r59958 | svn | 2017-09-19 09:22:57 +0900 (Tue, 19 Sep 2017) | 1 line

* 2017-09-19
------------------------------------------------------------------------
r59957 | nobu | 2017-09-19 09:22:56 +0900 (Tue, 19 Sep 2017) | 4 lines

parse.y: lex by lvar

* parse.y (parse_ident): disable tLPAREN_ARG state by local
  variable.  [ruby-list:50578]
------------------------------------------------------------------------
r59956 | ktsj | 2017-09-18 17:21:08 +0900 (Mon, 18 Sep 2017) | 5 lines

vm.c: fix `cfp consistency error' which occurs
when raising exception in bmethod call event

* vm.c (invoke_bmethod): set FINISH flag just before calling vm_exec.
  [ruby-dev:50162] [Bug #13705]
------------------------------------------------------------------------
r59955 | nobu | 2017-09-18 17:05:53 +0900 (Mon, 18 Sep 2017) | 10 lines

error.c: KeyError#receiver and KeyError#key

* error.c: new method KeyError#receiver and KeyError#key.
  [Feature #12063]

* hash.c: make KeyError object with receiver and key.

* sprintf.c: ditto.

Author:    ksss <co000ri@gmail.com>
------------------------------------------------------------------------
r59954 | nobu | 2017-09-18 16:52:58 +0900 (Mon, 18 Sep 2017) | 1 line

configure.in: use newer libtool only
------------------------------------------------------------------------
r59953 | rhe | 2017-09-18 14:37:29 +0900 (Mon, 18 Sep 2017) | 3 lines

re.c: remove unused rb_memcmp() function

It is no longer used or exported as of r13641.
------------------------------------------------------------------------
r59952 | yui-knk | 2017-09-18 14:17:21 +0900 (Mon, 18 Sep 2017) | 5 lines

thread.c: Clear an array for method coverage

* thread.c (reset_coverage_i): Clear an
  array for method coverage just like
  line coverage and branch coverage.
------------------------------------------------------------------------
r59951 | nobu | 2017-09-18 14:16:37 +0900 (Mon, 18 Sep 2017) | 4 lines

intern instruction

* insns.def (intern): new instruction to turn string into symbol.
  opt_call_c_function can not dump.
------------------------------------------------------------------------
r59950 | nobu | 2017-09-18 11:27:13 +0900 (Mon, 18 Sep 2017) | 11 lines

refinements in string interpolation

* compile.c (iseq_compile_each0): insert to_s method call, so that
  refinements activated at the caller should take place.
  [Feature #13812]

* insns.def (tostring): fix up converted object to a string,
  infect and fallback.

* insns.def (branchiftype): new instruction for conversion.
  branches if TOS is an instance of the given type.
------------------------------------------------------------------------
r59949 | nobu | 2017-09-18 09:08:19 +0900 (Mon, 18 Sep 2017) | 7 lines

parse.y: ripper_lex_state_name

* parse.y (ripper_lex_state_name): represent lex_state as OR-ed
  form.

* ext/ripper/lib/ripper/lexer.rb (Ripper::Lexer::Elem#to_a):
  lex_state for inspection.
------------------------------------------------------------------------
r59948 | svn | 2017-09-18 08:56:38 +0900 (Mon, 18 Sep 2017) | 1 line

* 2017-09-18
------------------------------------------------------------------------
r59947 | mame | 2017-09-18 08:56:37 +0900 (Mon, 18 Sep 2017) | 3 lines

ext/objspace/objspace.c: remove unneeded code clones.

`setup_hash` have already performed nil check and empty check.
------------------------------------------------------------------------
r59946 | nobu | 2017-09-17 18:28:58 +0900 (Sun, 17 Sep 2017) | 7 lines

literal symbol by intern

* compile.c (iseq_compile_each0): literal symbol should not be
  affected by redefinition of String#intern method.

* vm_insnhelper.c (rb_vm_str_intern): intern a string into a
  symbol directly.
------------------------------------------------------------------------
r59945 | nobu | 2017-09-17 18:21:47 +0900 (Sun, 17 Sep 2017) | 6 lines

compile.c: optimize unnecessary concatstrings

* compile.c (iseq_peephole_optimize): optimize away unnecessary
  concatenation of single string, following tostring which always
  puts a String instance.
  https://github.com/ruby/ruby/pull/1626#discussion_r139285653
------------------------------------------------------------------------
r59944 | mame | 2017-09-17 17:04:34 +0900 (Sun, 17 Sep 2017) | 3 lines

ext/io/console/lib/console/size.rb: Fix the context of method definition

`console_size` is not a instance method but a class method.
------------------------------------------------------------------------
r59943 | yui-knk | 2017-09-17 16:19:20 +0900 (Sun, 17 Sep 2017) | 5 lines

node.h: Remove a not used macro

* node.h (nd_refinements_): nd_refinements_ was
  introduced on r49894. But this macro has not been
  used since r49897.
------------------------------------------------------------------------
r59942 | nobu | 2017-09-17 15:50:31 +0900 (Sun, 17 Sep 2017) | 4 lines

make-snapshot: after-update

* tool/make-snapshot (package): fix missing after-update for
  libffi and so on.  [ruby-dev:50244] [Bug #13897]
------------------------------------------------------------------------
r59941 | nobu | 2017-09-17 14:51:15 +0900 (Sun, 17 Sep 2017) | 3 lines

suppress warnings

* compile.c: suppress maybe-uninitialized warnings by gcc7.
------------------------------------------------------------------------
r59940 | mame | 2017-09-17 13:30:30 +0900 (Sun, 17 Sep 2017) | 4 lines

run-lcov.rb: wrongly used unique ID as lineno

The second value of key of branch/method coverage is unique ID, not
lineno.
------------------------------------------------------------------------
r59939 | rhe | 2017-09-17 13:26:51 +0900 (Sun, 17 Sep 2017) | 5 lines

ext/date/extconf.rb: check for timezone and altzone

Instead of in configure.in. As of r28592 the HAVE_VAR_TIMEZONE and
HAVE_VAR_ALTZONE macros are only used by ext/date. ext/date doesn't care
whether they are int or long, so just check for the existence.
------------------------------------------------------------------------
r59938 | rhe | 2017-09-17 13:26:48 +0900 (Sun, 17 Sep 2017) | 4 lines

configure.in: don't check for existence of timezone()

HAVE_TIMEZONE and TIMEZONE_VOID macros are not used anymore as of r28592
("strftime.c: unused declarations removed.", 2010-07-09).
------------------------------------------------------------------------
r59937 | nobu | 2017-09-17 13:14:51 +0900 (Sun, 17 Sep 2017) | 5 lines

Rename bin/ruby as exe/ruby

* common.mk, configure.in: rename the bin directory to run build
  executable as exe, to get rid of overwriting true files at the
  installation.  [ruby-dev:50250] [Bug #13911]
------------------------------------------------------------------------
r59936 | svn | 2017-09-17 07:40:10 +0900 (Sun, 17 Sep 2017) | 1 line

* 2017-09-17
------------------------------------------------------------------------
r59935 | nobu | 2017-09-17 07:40:09 +0900 (Sun, 17 Sep 2017) | 1 line

test_fileutils.rb: rmdir should fail on nonexistent directory
------------------------------------------------------------------------
r59934 | nobu | 2017-09-16 20:59:47 +0900 (Sat, 16 Sep 2017) | 4 lines

fileutils.rb: error at rmdir

* lib/fileutils.rb (rmdir): should not ignore errors first, except
  for parent directories.  [ruby-dev:50236] [Bug #13889]
------------------------------------------------------------------------
r59933 | nobu | 2017-09-16 20:50:56 +0900 (Sat, 16 Sep 2017) | 5 lines

file.c: [DOC] separators at dirname and basename

* file.c (rb_file_s_basename, rb_file_s_dirname): [DOC] state
  that trailing separators will be stripped first, like as
  basename(1) and dirname(1).  [ruby-core:82828] [Bug #13908]
------------------------------------------------------------------------
r59932 | nobu | 2017-09-16 20:50:55 +0900 (Sat, 16 Sep 2017) | 1 line

common.mk: make bin directory
------------------------------------------------------------------------
r59931 | hsbt | 2017-09-16 08:46:46 +0900 (Sat, 16 Sep 2017) | 3 lines

To use github url for gemspec.

  [Bug #13906][ruby-core:82817]
------------------------------------------------------------------------
r59930 | nobu | 2017-09-16 04:25:46 +0900 (Sat, 16 Sep 2017) | 1 line

ruby-runner.c: reduce duplicate code
------------------------------------------------------------------------
r59929 | nobu | 2017-09-16 04:25:45 +0900 (Sat, 16 Sep 2017) | 1 line

Makefile.in: make wrappers for each name
------------------------------------------------------------------------
r59928 | nobu | 2017-09-16 02:47:50 +0900 (Sat, 16 Sep 2017) | 1 line

fixup r59927
------------------------------------------------------------------------
r59927 | nobu | 2017-09-16 02:42:00 +0900 (Sat, 16 Sep 2017) | 5 lines

rename ruby-runner as bin/ruby

* Makefile.in, configure.in, tool/runruby.rb: rename ruby-runner
  executable file as $(RUBY_INSTALL_NAME) under bin, to mimic
  dirty `#!/usr/bin/env` hack.
------------------------------------------------------------------------
r59926 | naruse | 2017-09-16 02:00:49 +0900 (Sat, 16 Sep 2017) | 13 lines

Find.find -> Use Dir.children instead of Dir.entries

Dir.children is available since Feature #11302.
Find.find can use of the new list (having no '.' neither '..' entries),
making now superflous an if statement.

This change can improve the performance of Find.find when the path
has lots of entries (thousands?).

https://bugs.ruby-lang.org/issues/11302
patched by Espartaco Palma <esparta@gmail.com>
https://github.com/ruby/ruby/pull/1697 fix GH-1697
[Feature #13896]
------------------------------------------------------------------------
r59925 | naruse | 2017-09-16 01:56:16 +0900 (Sat, 16 Sep 2017) | 4 lines

Fix test code of kconv

patched by tbpgr <tbpgr@tbpgr.jp>
https://github.com/ruby/ruby/pull/1696 fix GH-1696
------------------------------------------------------------------------
r59924 | svn | 2017-09-16 01:53:56 +0900 (Sat, 16 Sep 2017) | 1 line

* 2017-09-16
------------------------------------------------------------------------
r59923 | naruse | 2017-09-16 01:53:55 +0900 (Sat, 16 Sep 2017) | 4 lines

include query parameters in Net::HTTP.post

patched by Samuel Giddins <segiddins@segiddins.me>
https://github.com/ruby/ruby/pull/1686 fix GH-1686
------------------------------------------------------------------------
r59922 | kazu | 2017-09-15 21:03:42 +0900 (Fri, 15 Sep 2017) | 1 line

Fix typos [ci skip]
------------------------------------------------------------------------
r59921 | kazu | 2017-09-15 21:03:41 +0900 (Fri, 15 Sep 2017) | 1 line

Remove needless splat array
------------------------------------------------------------------------
r59920 | nobu | 2017-09-15 17:47:46 +0900 (Fri, 15 Sep 2017) | 4 lines

parse.y: use SET_LEX_STATE

* parse.y (f_arglist, parser_yylex): set lex_state via
  SET_LEX_STATE macro for yydebug messages.
------------------------------------------------------------------------
r59919 | nobu | 2017-09-15 11:01:59 +0900 (Fri, 15 Sep 2017) | 6 lines

object.c: fix conversion failure message

* object.c (convert_type_with_id): fix failure message for
  explicit conversion.  rb_convert_type_with_id and
  rb_check_convert_type_with_id are not only for implicit
  conversions.
------------------------------------------------------------------------
r59918 | nobu | 2017-09-15 09:59:35 +0900 (Fri, 15 Sep 2017) | 4 lines

rubyspec: jobserver fd may not be available

* spec/rubyspec/optional/capi/spec_helper.rb (compile_extension):
  rescue possible EBADF as jobserver fd may not be available.
------------------------------------------------------------------------
r59917 | nobu | 2017-09-15 09:59:34 +0900 (Fri, 15 Sep 2017) | 4 lines

rubyspec: use mock directory

* spec/rubyspec/core/dir/mkdir_spec.rb: the source directory may
  be on a read-only filesystem.
------------------------------------------------------------------------
r59916 | nobu | 2017-09-15 09:59:32 +0900 (Fri, 15 Sep 2017) | 9 lines

rubyspec: fix types

* spec/rubyspec/optional/capi/ext/fixnum_spec.c: FIX2INT and
  FXI2UINT return long, in spite of their names.

* spec/rubyspec/optional/capi/ext/range_spec.c: err is int.

* spec/rubyspec/optional/capi/ext/st_spec.c: st_index_t is larger
  than int.
------------------------------------------------------------------------
r59915 | yui-knk | 2017-09-15 09:40:38 +0900 (Fri, 15 Sep 2017) | 5 lines

ext/coverage/coverage.c (rb_coverage_start): Ensure `opt` is a hash

Ensure `opt` is a hash before using `rb_hash_lookup` to `opt`.
This will prevent SEGV when an inappropriate object (i.e. an array)
is passed to `opt`.
------------------------------------------------------------------------
r59911 | eregon | 2017-09-15 00:56:33 +0900 (Fri, 15 Sep 2017) | 1 line

Update to ruby/spec@a4bc1d8
------------------------------------------------------------------------
r59910 | svn | 2017-09-15 00:56:10 +0900 (Fri, 15 Sep 2017) | 1 line

* 2017-09-15
------------------------------------------------------------------------
r59909 | eregon | 2017-09-15 00:56:09 +0900 (Fri, 15 Sep 2017) | 1 line

Update to ruby/mspec@5bd9409
------------------------------------------------------------------------
r59908 | eregon | 2017-09-14 23:54:29 +0900 (Thu, 14 Sep 2017) | 1 line

time.c (Time#-): Fix documentation.
------------------------------------------------------------------------
r59897 | mame | 2017-09-14 20:16:23 +0900 (Thu, 14 Sep 2017) | 4 lines

lib/webrick/log.rb: sanitize any type of logs

It had failed to sanitize some type of exception messages.  Reported and
patched by Yusuke Endoh (mame) at https://hackerone.com/reports/223363
------------------------------------------------------------------------
r59896 | nobu | 2017-09-14 19:53:47 +0900 (Thu, 14 Sep 2017) | 8 lines

ripper: add states of scanner

* parse.y (ripper_state): add states of scanner to tokens from
  Ripper.lex and Ripper::Filter#on_*.  based on the patch by
  aycabta (Code Ahss) at [ruby-core:81789].  [Feature #13686]

* ext/ripper/tools/preproc.rb (prelude, usercode): generate EXPR_*
  constants from enums.
------------------------------------------------------------------------
r59895 | nobu | 2017-09-14 19:49:29 +0900 (Thu, 14 Sep 2017) | 1 line

parse.y: [DOC] fix call-seq [ci skip]
------------------------------------------------------------------------
r59894 | mame | 2017-09-14 19:45:04 +0900 (Thu, 14 Sep 2017) | 5 lines

ext/coverage/coverage.c: use long instead of int for coverage site id

Coverage generates unique ID numbers for each branch and each method.
Use long instead of int for the IDs.  I don't want to see 2^32 branches
and methods in one file, but just in case...
------------------------------------------------------------------------
r59893 | naruse | 2017-09-14 18:21:48 +0900 (Thu, 14 Sep 2017) | 1 line

fix the case High Sierra's mincore(2) may return -128 [Bug #13895]
------------------------------------------------------------------------
r59892 | nobu | 2017-09-14 17:04:30 +0900 (Thu, 14 Sep 2017) | 4 lines

compile.c: iseq_pop_newarray

* compile.c (iseq_pop_newarray): optimize array literal in
  condition.
------------------------------------------------------------------------
r59891 | mame | 2017-09-14 16:45:17 +0900 (Thu, 14 Sep 2017) | 1 line

ext/coverage/coverage.c (method_coverage): `id` was used uninitialized
------------------------------------------------------------------------
r59890 | mame | 2017-09-14 15:07:05 +0900 (Thu, 14 Sep 2017) | 10 lines

Measure branch and method coverage for `make test-all`

To measure coverage of C code:
`./configure --enable-gcov && make && make exam && make lcov`

To measure coverage of Ruby code:
`./configure && make && make exam COVERAGE=true && make lcov`

To measure coverage of both languages at a time:
`./configure --enable-gcov && make && make exam COVERAGE=true && make lcov`
------------------------------------------------------------------------
r59889 | mame | 2017-09-14 14:27:02 +0900 (Thu, 14 Sep 2017) | 4 lines

Introduce NODE_UNLESS for branch coverage

`unless` statement was a syntactic sugar for `if` statement,
which made the result of branch coverage hard to understand.
------------------------------------------------------------------------
r59888 | mame | 2017-09-14 14:12:34 +0900 (Thu, 14 Sep 2017) | 1 line

Add method coverage
------------------------------------------------------------------------
r59887 | hsbt | 2017-09-14 14:04:38 +0900 (Thu, 14 Sep 2017) | 8 lines

added workaround for APFS file format.

  * TestFileExhaustive#test_atime: It fails with nano-sec precise.
    I changed to use unixtime for this assertion for APFS.
  * TestFileExhaustive#test_expand_path: skip assertion when given
    invalid charactor on APFS.

  [Bug #13816][ruby-core:82383]
------------------------------------------------------------------------
r59886 | mame | 2017-09-14 13:42:23 +0900 (Thu, 14 Sep 2017) | 1 line

Fix the lineno of case statement that has no expression
------------------------------------------------------------------------
r59885 | mame | 2017-09-14 13:32:58 +0900 (Thu, 14 Sep 2017) | 1 line

Add branch coverage for case-when statement
------------------------------------------------------------------------
r59878 | hsbt | 2017-09-14 12:57:22 +0900 (Thu, 14 Sep 2017) | 1 line

Removed needless operator.
------------------------------------------------------------------------
r59877 | mame | 2017-09-14 12:36:05 +0900 (Thu, 14 Sep 2017) | 1 line

Add branch coverage for while and until statements
------------------------------------------------------------------------
r59876 | mame | 2017-09-14 12:25:36 +0900 (Thu, 14 Sep 2017) | 1 line

Add branch coverage for if statement
------------------------------------------------------------------------
r59875 | mame | 2017-09-14 11:53:54 +0900 (Thu, 14 Sep 2017) | 1 line

ext/coverage/coverage.c: Fix the condition for non-experimental mode
------------------------------------------------------------------------
r59874 | mame | 2017-09-14 11:36:26 +0900 (Thu, 14 Sep 2017) | 24 lines

[EXPERIMENTAL] Extend the API of `Coverage.start` and `result`

The old API:

    Coverage.start
    load "foo.rb"
    p Coverage.result #=> {"foo.rb" => [1, 2, nil]}

The new API:

    ENV["COVERAGE_EXPERIMENTAL_MODE"] = "true"
    Coverage.start(lines: true)
    load "foo.rb"
    p Coverage.result #=> {"foo.rb" => {:lines => [1, 2, nil]}}

This new API allows us to add other measuring target types.

Notes:

* To keep compatibility, the old interface is still remained; passing no
  optional argument makes `Coverage.result` return the old format.
* This feature is still experimental.  So, to enable the new API, the
  environment variable `COVERAGE_EXPERIMENTAL_MODE` must be set.  I plan
  to activate this feature by Ruby 2.5.
------------------------------------------------------------------------
r59873 | hsbt | 2017-09-14 11:01:36 +0900 (Thu, 14 Sep 2017) | 4 lines

Update gemspec for gem released versions.

  * These are dbm, fcntl, io-console, sdbm, stringio, strscan, zlib,
    cmath, scanf.
------------------------------------------------------------------------
r59872 | ko1 | 2017-09-14 10:55:59 +0900 (Thu, 14 Sep 2017) | 3 lines

remove an unused variable (sometimes it fails test).


------------------------------------------------------------------------
r59871 | mame | 2017-09-14 10:55:30 +0900 (Thu, 14 Sep 2017) | 4 lines

Add a new instruction `trace2` for hooking with custom data

This is needed for passing to the hook function the measuring target
type (line/branch/method) and the site of coverage event fired.
------------------------------------------------------------------------
r59870 | nobu | 2017-09-14 02:07:19 +0900 (Thu, 14 Sep 2017) | 6 lines

test_rubyoptions.rb: keep paths if necessary

* test/ruby/test_rubyoptions.rb (TestRubyOptions#test_search):
  PATH must keep library loading paths on a platform where it is
  used for that purpose, for extra libraries.
  [ruby-core:81178] [Bug #13569] [Fix GH-1616]
------------------------------------------------------------------------
r59869 | svn | 2017-09-14 00:28:17 +0900 (Thu, 14 Sep 2017) | 1 line

* 2017-09-14
------------------------------------------------------------------------
r59868 | nobu | 2017-09-14 00:28:16 +0900 (Thu, 14 Sep 2017) | 4 lines

LIBPATHENV on Windows

* configure.in, win32/Makefile.sub: set LIBPATHENV to PATH on
  Windows, for extra DLLs.
------------------------------------------------------------------------
r59867 | suke | 2017-09-13 22:24:59 +0900 (Wed, 13 Sep 2017) | 3 lines

test/win32ole/test_word.rb: word quit without confirmation dialog to save 
files. [Bug #13894] Thanks to h.shirosaki.

------------------------------------------------------------------------
r59866 | kazu | 2017-09-13 21:46:13 +0900 (Wed, 13 Sep 2017) | 3 lines

Random.urandom raises RuntimeError instead of returning nil

[ci skip]
------------------------------------------------------------------------
r59865 | hsbt | 2017-09-13 18:06:34 +0900 (Wed, 13 Sep 2017) | 1 line

Removed needless magic-comment for encodings.
------------------------------------------------------------------------
r59864 | hsbt | 2017-09-13 18:06:05 +0900 (Wed, 13 Sep 2017) | 1 line

Fixup r59856. Added workaround for JRuby.
------------------------------------------------------------------------
r59863 | hsbt | 2017-09-13 11:36:46 +0900 (Wed, 13 Sep 2017) | 3 lines

Added executable to bundler template.

  It's same as upstream permission.
------------------------------------------------------------------------
r59862 | hsbt | 2017-09-13 11:21:02 +0900 (Wed, 13 Sep 2017) | 1 line

Fix a typo.
------------------------------------------------------------------------
r59861 | ko1 | 2017-09-13 08:15:34 +0900 (Wed, 13 Sep 2017) | 13 lines

Use mutable strings for mutation tests.

* test/fiddle/test_func.rb (test_string): this test break String buffer
  by `strcpy` ("000" -> "123"). However, the string literal "000" with
  `frozen_string_literal: true` returns a string object from frozen
  string pool. So that after this test "000" from fstring pool becomes
  "123" (modified string). 'test/date/' uses "000" (as fstring) and tests
  are fails (we could check with `make test-all TESTS='fiddle date'`).

* test/fiddle/test_function.rb: ditto.

* test/fiddle/test_import.rb: ditto.

------------------------------------------------------------------------
r59860 | svn | 2017-09-13 03:41:06 +0900 (Wed, 13 Sep 2017) | 1 line

* 2017-09-13
------------------------------------------------------------------------
r59859 | normal | 2017-09-13 03:41:05 +0900 (Wed, 13 Sep 2017) | 3 lines

cont.c: update comment to match r59776 [ci skip]

* cont.c (fiber_switch): th->fiber => th->ec.fiber in comment
------------------------------------------------------------------------
r59858 | mame | 2017-09-12 22:57:36 +0900 (Tue, 12 Sep 2017) | 3 lines

Random.urandom raises an exception instead of returning nil when failed

Early failure looks better in this case.  Refs [Bugs #13885].
------------------------------------------------------------------------
r59857 | rhe | 2017-09-12 22:52:51 +0900 (Tue, 12 Sep 2017) | 10 lines

openssl: merge test fixes from upstream, part 2

This is a combined patch of the following two commits in maint:

	a09d8c78dd30 test/test_ssl: suppress warning in test_alpn_protocol_selection_cancel
	de965374ee85 test/test_pair: disable compression

This hopefully fixes the RubyCI gentoo failure:

	http://rubyci.s3.amazonaws.com/gentoo/ruby-trunk/log/20170912T033004Z.fail.html.gz
------------------------------------------------------------------------
r59856 | hsbt | 2017-09-12 21:51:43 +0900 (Tue, 12 Sep 2017) | 5 lines

Partly reverted r59845.

  All of environments on Ruby CI are fails rdoc generation.
  It may be caused by
  https://github.com/ruby/rdoc/commit/8cfa11d6f1cc7e74e45e42fd8d1d76c5a0646a6e
------------------------------------------------------------------------
r59855 | naruse | 2017-09-12 21:49:38 +0900 (Tue, 12 Sep 2017) | 1 line

output some strings without quotes
------------------------------------------------------------------------
r59854 | hsbt | 2017-09-12 20:52:23 +0900 (Tue, 12 Sep 2017) | 6 lines

Merge fiddle-1.0.0.beta2 from upstream.

  * ext/fiddle/closure.c: use directly declaration for standalone gem
    without internal.h.
  * Specify frozen string literal is true.
  * Update gemspec configuration for release version.
------------------------------------------------------------------------
r59853 | kazu | 2017-09-12 20:15:27 +0900 (Tue, 12 Sep 2017) | 1 line

Add *.gemspec to .editorconfig [ci skip]
------------------------------------------------------------------------
r59852 | kazu | 2017-09-12 20:15:26 +0900 (Tue, 12 Sep 2017) | 1 line

Sort properties in .editorconfig [ci skip]
------------------------------------------------------------------------
r59851 | kazu | 2017-09-12 20:15:25 +0900 (Tue, 12 Sep 2017) | 1 line

Fix problem when open in emacs [ci skip]
------------------------------------------------------------------------
r59850 | hsbt | 2017-09-12 19:40:58 +0900 (Tue, 12 Sep 2017) | 1 line

Fixed copy option for bundler sync
------------------------------------------------------------------------
r59849 | hsbt | 2017-09-12 17:38:06 +0900 (Tue, 12 Sep 2017) | 4 lines

Merge csv-0.1.0 from upstream.

  * csv.gemspec: Update release version.
  * lib/csv.rb: Remove superfluous private clause.
------------------------------------------------------------------------
r59848 | hsbt | 2017-09-12 14:19:20 +0900 (Tue, 12 Sep 2017) | 3 lines

Fixed install error with rdoc.gemspec

  "lib/rdoc" is only workds on rdoc repository structure.
------------------------------------------------------------------------
r59847 | svn | 2017-09-12 12:42:56 +0900 (Tue, 12 Sep 2017) | 1 line

* properties.
------------------------------------------------------------------------
r59846 | svn | 2017-09-12 12:42:55 +0900 (Tue, 12 Sep 2017) | 1 line

* remove trailing spaces.
------------------------------------------------------------------------
r59845 | hsbt | 2017-09-12 12:42:54 +0900 (Tue, 12 Sep 2017) | 4 lines

Merge rdoc-6.0.0.beta2 from upstream.

  * This version changed lexer used Ripper from lexer based IRB.
    see details: https://github.com/ruby/rdoc/pull/512
------------------------------------------------------------------------
r59844 | nobu | 2017-09-12 05:10:34 +0900 (Tue, 12 Sep 2017) | 4 lines

console.c: set winsize on Windows

* ext/io/console/console.c (console_set_winsize): retry shrinking
  window and screen buffer.  [ruby-core:82741] [Bug #13888]
------------------------------------------------------------------------
r59843 | svn | 2017-09-12 05:10:34 +0900 (Tue, 12 Sep 2017) | 1 line

* 2017-09-12
------------------------------------------------------------------------
r59842 | nobu | 2017-09-12 05:10:33 +0900 (Tue, 12 Sep 2017) | 5 lines

test_io_console.rb: test_set_winsize_console

* test/io/console/test_io_console.rb (test_set_winsize_console):
  split from test_get_winsize_console and enable the case when
  attached to a console already
------------------------------------------------------------------------
r59840 | mame | 2017-09-11 21:44:51 +0900 (Mon, 11 Sep 2017) | 9 lines

lib/securerandom.rb: test one byte to determine urandom or openssl

`SecureRandom#gen_random` determines whether urandom is available or not
by trying `Random.urandom(n)`.  But, when n = 0, `Random.urandom(0)`
always succeeds even if urandom is not available, which leads to a wrong
decision.

When failed, `Random.urandom` returns nil instead of returning a shorter
string than required.  So the check for `ret.length != n` is not needed.
------------------------------------------------------------------------
r59839 | hsbt | 2017-09-11 18:44:29 +0900 (Mon, 11 Sep 2017) | 6 lines

Backport test_realworld_default_gem test from Rubygems-2.6.13.

  But this test is always fail on ruby core repository. Because
  default gems is only availabled after installation of Ruby.

  I ignored this test at https://github.com/rubygems/rubygems/pull/1986
------------------------------------------------------------------------
r59838 | naruse | 2017-09-11 17:50:08 +0900 (Mon, 11 Sep 2017) | 1 line

Follow latest VM changes
------------------------------------------------------------------------
r59837 | naruse | 2017-09-11 17:50:07 +0900 (Mon, 11 Sep 2017) | 1 line

suppress unused argument warning
------------------------------------------------------------------------
r59836 | hsbt | 2017-09-11 15:12:40 +0900 (Mon, 11 Sep 2017) | 3 lines

Remove commented out code of URI::HTTP.new.

  [Misc #13871][ruby-core:82655] Patch by @aycabta
------------------------------------------------------------------------
r59835 | hsbt | 2017-09-11 15:11:37 +0900 (Mon, 11 Sep 2017) | 3 lines

Remove commented out code of SecureRandom.random_number.

  [Misc #13870][ruby-core:82654] Patch by @aycabta.
------------------------------------------------------------------------
r59834 | hsbt | 2017-09-11 12:05:07 +0900 (Mon, 11 Sep 2017) | 1 line

Fixed unterminated backquote for bundler sync task.
------------------------------------------------------------------------
r59833 | hsbt | 2017-09-11 11:29:11 +0900 (Mon, 11 Sep 2017) | 3 lines

Update bundled gems.

  * rake-12.1.0 from 12.0.0
------------------------------------------------------------------------
r59832 | hsbt | 2017-09-11 10:33:46 +0900 (Mon, 11 Sep 2017) | 1 line

Added [Feature #12733] to NEWS entry.
------------------------------------------------------------------------
r59831 | ko1 | 2017-09-11 04:00:08 +0900 (Mon, 11 Sep 2017) | 13 lines

store ec instead of thread in rb_context_t.

* cont.c (rb_context_t): introduce saved_ec instaad of saved_thread.
  We only need to transfer ec data (not all of thread data).

  Introduce `thread_value` field to point creation thread.
  To acccess this field, `cont_thread_value()` is introduced.

* vm.c (rb_execution_context_mark): remove `static` and use it
  from cont.c (use this function instead of `rb_thread_mark`).

* vm_insnhelper.c (rb_vm_push_frame): accept ec instead of th.

------------------------------------------------------------------------
r59830 | ko1 | 2017-09-11 03:37:55 +0900 (Mon, 11 Sep 2017) | 7 lines

avoid false positive on fiber_verify().

* cont.c (fiber_store): move `cont_save_machine_stack()` timing to
  avoid `fiber_verify()` false positive on `FIBER_USE_NATIVE == 0`
  and `GC.stress = true`.
  This patch is very dirty and it should be removed soon.

------------------------------------------------------------------------
r59829 | ko1 | 2017-09-11 02:30:16 +0900 (Mon, 11 Sep 2017) | 7 lines

clear `stack_end`.

* cont.c (cont_save_thread): clear only `stack_end`. Clearing tells
  GC mark function to ignore this macine stack (not allocated yet).
  `stack_start` will be used by machine stack store/restore phase
  (on FIBER_USE_NATIVE == 0), so that only `stack_end` is cleared.

------------------------------------------------------------------------
r59828 | nobu | 2017-09-11 01:19:40 +0900 (Mon, 11 Sep 2017) | 4 lines

compile.c: pop coverage trace

* compile.c (iseq_compile_each0): pop trace for coverage only and
  clear its corresponding line.  [ruby-core:82726] [Bug #13886]
------------------------------------------------------------------------
r59827 | nobu | 2017-09-11 01:19:39 +0900 (Mon, 11 Sep 2017) | 1 line

cont.c: fix typo [ci skip]
------------------------------------------------------------------------
r59826 | svn | 2017-09-11 00:49:46 +0900 (Mon, 11 Sep 2017) | 1 line

* 2017-09-11
------------------------------------------------------------------------
r59825 | ko1 | 2017-09-11 00:49:45 +0900 (Mon, 11 Sep 2017) | 18 lines

move th->machine to ec->machine.

* vm_core.h: move rb_thread_t::machine to rb_execution_context_t::machine.

* vm_core.h, gc.c (rb_gc_mark_machine_stack): accept ec instead of th.
  it enables to call this func from rb_execution_context_mark() in vm.c.

* cont.c (fiber_setcontext): catch up this fix.
  fiber_restore_thread() restores machine stack information too.

* gc.c: catch up structure layout changes.

* thread.c: ditto.

* thread_pthread.c: ditto.

* thread_win32.c: ditto.

------------------------------------------------------------------------
r59824 | nobu | 2017-09-10 21:35:06 +0900 (Sun, 10 Sep 2017) | 3 lines

merger.rb: separate logs

* tool/merger.rb: separate each commit logs by an empty line.
------------------------------------------------------------------------
r59821 | nobu | 2017-09-10 20:52:56 +0900 (Sun, 10 Sep 2017) | 6 lines

cli_spec.rb: prefer BUNDLE_RUBY

* spec/bundler/bundler/cli_spec.rb: prefer BUNDLE_RUBY over env
  hack.  on macOS 10.11 or later, some system commands, e.g.
  /bin/sh and /usr/bin/env, clear DYLD_LIBRARY_PATH environment
  variable which is necessary to run not-yet installed command.
------------------------------------------------------------------------
r59810 | hsbt | 2017-09-10 12:21:58 +0900 (Sun, 10 Sep 2017) | 5 lines

BUNDLER_SPECS rquires a relative path with srcdir.

  default targets are all of bundler specs. if you run only
  commands/add_spec.rb spec:
    make test-bundler BUNDLER_SPECS=commands/add_spec.rb
------------------------------------------------------------------------
r59804 | nobu | 2017-09-10 07:08:01 +0900 (Sun, 10 Sep 2017) | 3 lines

runruby.rb: set envvars for bundler

* tool/runruby.rb: set gem and bundler environment variables.
------------------------------------------------------------------------
r59803 | mame | 2017-09-10 00:19:19 +0900 (Sun, 10 Sep 2017) | 3 lines

Add a note to Random.urandom

The method may return nil for some reasons.
------------------------------------------------------------------------
r59802 | svn | 2017-09-10 00:12:11 +0900 (Sun, 10 Sep 2017) | 1 line

* 2017-09-10
------------------------------------------------------------------------
r59801 | mame | 2017-09-10 00:12:10 +0900 (Sun, 10 Sep 2017) | 5 lines

Update a test of SecureRandom according to r57384

SecureRandom uses urandom by default.  So the test for a case where
openssl is unavailable makes no sense.  Instead, a simple test for a
case where urandom is unavailable is added.
------------------------------------------------------------------------
r59794 | mame | 2017-09-09 22:09:21 +0900 (Sat, 09 Sep 2017) | 8 lines

Support LCOV visualization for both C and Ruby code

`./configure --enable-gcov && make exam && make lcov` will create
`lcov-c-out/index.html` for coverage of C code of the interpreter.
`make exam COVERAGE=true && make lcov` will create
`lcov-rb-out/index.html` for coverage of Ruby stdlib code.
Using both `--enable-gcov` and `COVERAGE=true` will create
`lcov-out/index.html` for total coverage.
------------------------------------------------------------------------
r59792 | nobu | 2017-09-09 20:30:32 +0900 (Sat, 09 Sep 2017) | 10 lines

spec/bundler/support: paths for ruby core

* spec/bundler/support/path.rb (Spec::Path#for_ruby_core?): helper
  method to tell whether running in Ruby Core or not.

* spec/bundler/support/helpers.rb (Spec::Helpers#bundle): use
  Path.bindir for ruby core case.

* spec/bundler/support/rubygems_ext.rb (Spec::Rubygems.setup):
  ditto.
------------------------------------------------------------------------
r59791 | nobu | 2017-09-09 20:30:31 +0900 (Sat, 09 Sep 2017) | 4 lines

Makefile.in: test-bundler-prepare

* Makefile.in (test-bundler-prepare): install with --install-dir
  option instead of GEM_HOME and GEM_PATH environment variables.
------------------------------------------------------------------------
r59790 | nobu | 2017-09-09 19:20:38 +0900 (Sat, 09 Sep 2017) | 4 lines

rubygems_ext.rb: use BUNDLE_GEM

* spec/bundler/support/rubygems_ext.rb (install_gems): use
  BUNDLE_GEM set in Makefile.in instead of the installed command.
------------------------------------------------------------------------
r59789 | nobu | 2017-09-09 18:16:59 +0900 (Sat, 09 Sep 2017) | 4 lines

sprintf.c: NULL as str

* sprintf.c (ruby_vsnprintf, ruby_snprintf): allow NULL as str,
  just count the expected buffer size.
------------------------------------------------------------------------
r59788 | nobu | 2017-09-09 18:16:56 +0900 (Sat, 09 Sep 2017) | 4 lines

compile.c: replaced switch by TYPE

* compile.c (int_param): prefer FIXNUM_P and NIL_P to switch by
  TYPE.
------------------------------------------------------------------------
r59787 | kazu | 2017-09-09 11:34:30 +0900 (Sat, 09 Sep 2017) | 2 lines

Sync .gitignore and svn:ignore and cleanup [ci skip]

------------------------------------------------------------------------
r59786 | svn | 2017-09-09 08:51:15 +0900 (Sat, 09 Sep 2017) | 1 line

* 2017-09-09
------------------------------------------------------------------------
r59785 | normal | 2017-09-09 08:51:14 +0900 (Sat, 09 Sep 2017) | 9 lines

fiber: fix machine stack marking when FIBER_USE_NATIVE is 0

* cont.c (cont_mark): mark Fiber machine stack correctly when
  FIBER_USE_NATIVE is 0
* test/ruby/test_fiber.rb (test_mark_fiber): new test
  [Bug #13875] [ruby-core:82681]

This bug appears to be introduced with r59557.
("refactoring Fiber status")
------------------------------------------------------------------------
r59781 | hsbt | 2017-09-08 17:50:57 +0900 (Fri, 08 Sep 2017) | 3 lines

Rollback to v1.15.4 version.

  In r59779, it contains current master version of bundler repository.
------------------------------------------------------------------------
r59780 | svn | 2017-09-08 17:45:47 +0900 (Fri, 08 Sep 2017) | 1 line

* properties.
------------------------------------------------------------------------
r59779 | hsbt | 2017-09-08 17:45:41 +0900 (Fri, 08 Sep 2017) | 15 lines

Merge bundler to standard libraries.

  rubygems 2.7.x depends bundler-1.15.x. This is preparation for
  rubygems and bundler migration.

  * lib/bundler.rb, lib/bundler/*: files of bundler-1.15.4
  * spec/bundler/*: rspec examples of bundler-1.15.4. I applied patches.
    * https://github.com/bundler/bundler/pull/6007
    * Exclude not working examples on ruby repository.
    * Fake ruby interpriter instead of installed ruby.
  * Makefile.in: Added test task named `test-bundler`. This task is only
    working macOS/linux yet. I'm going to support Windows environment later.
  * tool/sync_default_gems.rb: Added sync task for bundler.

  [Feature #12733][ruby-core:77172]
------------------------------------------------------------------------
r59778 | nobu | 2017-09-08 17:03:18 +0900 (Fri, 08 Sep 2017) | 7 lines

configure.in: moved flags

* configure.in (-DRUBY_DEVEL): moved from debugflags to XCFLAGS.
  this flags should be applied to the ruby core only.

* configure.in (-fno-fast-math): moved from optflags to CFLAGS.
  this flag is not for optimization.
------------------------------------------------------------------------
r59777 | nobu | 2017-09-08 16:22:47 +0900 (Fri, 08 Sep 2017) | 1 line

fix up r59776
------------------------------------------------------------------------
r59776 | ko1 | 2017-09-08 15:21:30 +0900 (Fri, 08 Sep 2017) | 5 lines

move th->fiber to ec->fiber.

* vm_core.h (rb_thread_t::fiber): move fiber field to
  rb_execution_context_t::fiber.

------------------------------------------------------------------------
r59775 | hsbt | 2017-09-08 14:33:12 +0900 (Fri, 08 Sep 2017) | 4 lines

Update latest bundled-gems.

  * minitest 5.10.3
  * test-unit 3.2.5
------------------------------------------------------------------------
r59774 | hsbt | 2017-09-08 14:18:18 +0900 (Fri, 08 Sep 2017) | 3 lines

fix a label for bundled gems.

  "bundle gems" is a wrong name.
------------------------------------------------------------------------
r59773 | usa | 2017-09-08 02:45:34 +0900 (Fri, 08 Sep 2017) | 5 lines

the working directory may not be srcdir

* test/runner.rb (COVERAGE): should use require_relative instead of require,
  because the working directory may not be srcdir.

------------------------------------------------------------------------
r59772 | svn | 2017-09-08 00:40:30 +0900 (Fri, 08 Sep 2017) | 1 line

* properties.
------------------------------------------------------------------------
r59771 | svn | 2017-09-08 00:40:30 +0900 (Fri, 08 Sep 2017) | 1 line

* 2017-09-08
------------------------------------------------------------------------
r59770 | mame | 2017-09-08 00:40:29 +0900 (Fri, 08 Sep 2017) | 20 lines

Measure the test coverage without SimpleCov

Now `make test-all COVERAGE=true` measures the test coverage by using
`coverage.so` directly, and visualize the result by simplecov-html.

There has been some problems in coverage measurement with SimpleCov.
(They are not SimpleCov's fault, though.)

(1) It is difficult to extract the measured data as a machine-readable
format, such as Marshal.  I want to visualize the coverage data with
other coverage tools, such as LCOV and Cobertura.
(I know we can use SimpleCov's formatter mechanism, but I don't want
to depend upon SimpleCov so much.)

(2) SimpleCov seems to miss some coverage data.  For example,
`lib/cgi.rb` and `lib/ostruct.rb` are dropped.  I don't know why.

(3) I have a plan to enhance `coverage.so` with branch coverage.
It would be difficult to continue to only use SimpleCov as is.
This is the most important reason.
------------------------------------------------------------------------
r59769 | mame | 2017-09-07 21:36:01 +0900 (Thu, 07 Sep 2017) | 11 lines

Remove unneeded trace instruction for coverage

When no instruction is emitted in `iseq_compile_each0`
(i.e., when the line has no significant code), trace
instruction for `RUBY_EVENT_LINE` has been optimized out.
But trace for `RUBY_EVENT_COVERAGE` has not been removed.
Now, it is also removed.

`TestISeq#test_to_a_lines` has failed a long time under
coverage measurement (`make test-all COVERAGE=true`).
This change makes it pass.
------------------------------------------------------------------------
r59768 | kazu | 2017-09-07 21:31:50 +0900 (Thu, 07 Sep 2017) | 1 line

Use `%i`-literal instead of array of symbols
------------------------------------------------------------------------
r59767 | nobu | 2017-09-07 17:25:13 +0900 (Thu, 07 Sep 2017) | 4 lines

common.mk: fix golf

* common.mk (golf): MAINOBJ must be single object file name, so
  moved golf_prelude to EXTOBJS.  [ruby-dev:50214] [Bug #13854]
------------------------------------------------------------------------
r59766 | svn | 2017-09-07 12:24:09 +0900 (Thu, 07 Sep 2017) | 1 line

* 2017-09-07
------------------------------------------------------------------------
r59765 | nobu | 2017-09-07 12:24:08 +0900 (Thu, 07 Sep 2017) | 4 lines

ruby.h: unnormalized Fixnum value

* include/ruby/ruby.h (ST2FIX): fix unnormalized Fixnum value bug
  on mingw/mswin.  [ruby-core:82687] [Bug #13877]
------------------------------------------------------------------------
r59764 | kazu | 2017-09-06 22:46:31 +0900 (Wed, 06 Sep 2017) | 1 line

Fix a typo [ci skip]
------------------------------------------------------------------------
r59763 | nobu | 2017-09-06 22:11:44 +0900 (Wed, 06 Sep 2017) | 5 lines

string.c: fix false coderange

* string.c (rb_enc_str_scrub): enc can differ from the actual
  encoding of the string, the cached coderange is useless then.
  [ruby-core:82674] [Bug #13874]
------------------------------------------------------------------------
r59762 | nobu | 2017-09-06 21:50:10 +0900 (Wed, 06 Sep 2017) | 4 lines

string.c: optimize enumerate_grapheme_clusters

* string.c (rb_str_enumerate_grapheme_clusters): optimize when
  single byte only.
------------------------------------------------------------------------
r59761 | duerst | 2017-09-06 17:19:12 +0900 (Wed, 06 Sep 2017) | 3 lines

add mention of upgrade to Unicode 10.0.0 to NEWS file

(this completes [Feature #13685]; [ci skip])
------------------------------------------------------------------------
r59760 | duerst | 2017-09-06 17:12:02 +0900 (Wed, 06 Sep 2017) | 3 lines

remove Unicode 9.0.0-related files

We don't need these files anymore because we upgraded to Unicode 10.0.0.
------------------------------------------------------------------------
r59759 | duerst | 2017-09-06 16:56:41 +0900 (Wed, 06 Sep 2017) | 6 lines

update Ruby to Unicode 10.0.0

- In common.mk, set UNICODE_VERSION  to 10.0.0
- Generate and add enc/unicode/10.0.0/casefold.h and
  enc/unicode/10.0.0/name2ctype.h
- Update lib/unicode_normalize/tables.rb
------------------------------------------------------------------------
r59758 | mame | 2017-09-06 16:46:31 +0900 (Wed, 06 Sep 2017) | 4 lines

Update SimpleCov version (v0.10.0 -> v0.15.0)

To suppress warnings of Fixnum.
Also simplecov-html updated (v0.10.0 -> v0.10.2).
------------------------------------------------------------------------
r59757 | hsbt | 2017-09-06 12:53:25 +0900 (Wed, 06 Sep 2017) | 3 lines

Fixed compilationn error with VMDEBUG=3.

  [fix GH-1690] Patch from @musaprg(Kotaro Inoue)
------------------------------------------------------------------------
r59756 | ko1 | 2017-09-06 12:39:26 +0900 (Wed, 06 Sep 2017) | 9 lines

accept ec instead of th.

* vm.c: VM_EP_IN_HEAP_P() and vm_ep_in_heap_p_() only requires ec
  pointed from th.

* vm.c (rb_execution_context_mark): GET_THREAD() returns current
  running thread and we need to use marking thread here. Pass marking
  thread's ec instead of current thread.

------------------------------------------------------------------------
r59755 | ko1 | 2017-09-06 12:18:19 +0900 (Wed, 06 Sep 2017) | 1 line

th is not defined
------------------------------------------------------------------------
r59754 | ko1 | 2017-09-06 11:51:34 +0900 (Wed, 06 Sep 2017) | 1 line

thread_context -> execution_context
------------------------------------------------------------------------
r59753 | svn | 2017-09-06 11:47:00 +0900 (Wed, 06 Sep 2017) | 1 line

* 2017-09-06
------------------------------------------------------------------------
r59752 | ko1 | 2017-09-06 11:46:59 +0900 (Wed, 06 Sep 2017) | 4 lines

rb_execution_context_mark.

* vm.c (rb_execution_context_mark): separate from thread_mark().

------------------------------------------------------------------------
r59751 | rhe | 2017-09-05 18:47:59 +0900 (Tue, 05 Sep 2017) | 8 lines

openssl: merge test fixes from upstream

Fix platform-dependent or fragile test cases added by r59734. This is a
combined patch of the three commits below:

	4fc17977350a test/test_fips: skip if setting FIPS mode fails
	b25179fbeebf test/test_asn1: fix possible failure in test_utctime
	8ed81ff4b0a8 test/test_pair: fix test_write_nonblock{,_no_exceptions}
------------------------------------------------------------------------
r59750 | hsbt | 2017-09-05 17:25:26 +0900 (Tue, 05 Sep 2017) | 1 line

Update credentials for Travis/Slack integration.
------------------------------------------------------------------------
r59749 | mame | 2017-09-05 17:15:54 +0900 (Tue, 05 Sep 2017) | 3 lines

Hide NotImplementedError for windows

https://github.com/ruby/ruby/commit/440dc6b7e0b3b74db221eed81871516e301d4b3e#commitcomment-24074203
------------------------------------------------------------------------
r59748 | nobu | 2017-09-05 16:52:08 +0900 (Tue, 05 Sep 2017) | 4 lines

st.c: fix num_entries

* st.c (st_insert2): should manage num_entries when the key is
  undefined, as well as st_insert().
------------------------------------------------------------------------
r59747 | nobu | 2017-09-05 16:50:13 +0900 (Tue, 05 Sep 2017) | 6 lines

st.c: fix false assertions

* st.c: split assertion conditions.

* st.c (rb_hash_bulk_insert): the number of arguments should be
  even.
------------------------------------------------------------------------
r59746 | shyouhei | 2017-09-05 13:49:01 +0900 (Tue, 05 Sep 2017) | 7 lines

optimize rb_hash_bulk_insert to generally outperform 2.4.

Specialized routine for small linear-probling hash instances to
boost creation of such things [Bug #13861]

Signed-off-by: Urabe, Shyouhei <shyouhei@ruby-lang.org>

------------------------------------------------------------------------
r59745 | svn | 2017-09-05 13:48:19 +0900 (Tue, 05 Sep 2017) | 1 line

* 2017-09-05
------------------------------------------------------------------------
r59744 | shyouhei | 2017-09-05 13:48:19 +0900 (Tue, 05 Sep 2017) | 9 lines

add rb_hash_new_with_size()

Sometimes, size of a hash can be calcluated a priori.  By providing
such info to the constructor we can avoid unnecessary internal re-
allocations.  This can boost for instance creation of hash literals.
[Bug #13861]

Signed-off-by: Urabe, Shyouhei <shyouhei@ruby-lang.org>

------------------------------------------------------------------------
r59743 | nobu | 2017-09-04 23:04:54 +0900 (Mon, 04 Sep 2017) | 4 lines

string.c: grapheme clusters on frozen string

* string.c (rb_str_enumerate_grapheme_clusters): enumerate on
  shared frozen string.
------------------------------------------------------------------------
r59742 | nobu | 2017-09-04 23:04:50 +0900 (Mon, 04 Sep 2017) | 4 lines

string.c: enumerator_element

* string.c (enumerator_element): push or yield elements, and
  return 1 if needs checks.
------------------------------------------------------------------------
r59741 | mame | 2017-09-04 22:25:01 +0900 (Mon, 04 Sep 2017) | 3 lines

Improve line covearge of ext/io/nonblock/nonblock.c from 54.5% to 95.5%

Not so good test, but it would be better than nothing, I guess...
------------------------------------------------------------------------
r59740 | svn | 2017-09-04 21:15:07 +0900 (Mon, 04 Sep 2017) | 1 line

* 2017-09-04
------------------------------------------------------------------------
r59739 | kazu | 2017-09-04 21:15:06 +0900 (Mon, 04 Sep 2017) | 4 lines

gc.c: fix typo: nubmer -> number

Signed-off-by: Antonio Terceiro <terceiro@softwarelivre.org>
[Bug #13862]
------------------------------------------------------------------------
r59738 | mame | 2017-09-03 23:26:06 +0900 (Sun, 03 Sep 2017) | 8 lines

Refactor the internal data format for coverage measurement

To prepare new measuring targets: branch and method coverages.
So far, iseq->coverage was an array of counts executed for line coverage.
Now, it is a three-element array for each measuring target,
whose first element is an array for line coverage.
The second element is planned for branch coverage, and the third will be
for method coverage.
------------------------------------------------------------------------
r59737 | rhe | 2017-09-03 22:31:34 +0900 (Sun, 03 Sep 2017) | 3 lines

ext/.document: follow-up r59734

ext/openssl/ossl_pkcs5.c has been renamed to ossl_kdf.c.
------------------------------------------------------------------------
r59736 | nobu | 2017-09-03 22:21:07 +0900 (Sun, 03 Sep 2017) | 4 lines

string.c: make array in WANTARRAY

* string.c (WANTARRAY): make array for the result in method
  functions and pass it to enumerator functions.
------------------------------------------------------------------------
r59735 | svn | 2017-09-03 21:35:29 +0900 (Sun, 03 Sep 2017) | 1 line

* properties.
------------------------------------------------------------------------
r59734 | rhe | 2017-09-03 21:35:27 +0900 (Sun, 03 Sep 2017) | 112 lines

openssl: import v2.1.0.beta1

Import Ruby/OpenSSL 2.1.0.beta1. The full commit log since v2.0.5
(imported by r59567) can be found at:

	https://github.com/ruby/openssl/compare/v2.0.5...v2.1.0.beta1

----------------------------------------------------------------
Antonio Terceiro (1):
      test/test_ssl: explicitly accept TLS 1.1 in corresponding test

Colby Swandale (1):
      document using secure protocol to fetch git master in Bundler

Colton Jenkins (1):
      Add fips_mode_get to return fips_mode

Kazuki Yamaguchi (85):
      Start preparing for 2.1.0
      Remove support for OpenSSL 0.9.8 and 1.0.0
      bn: refine tests
      bn: implement unary {plus,minus} operators for OpenSSL::BN
      bn: implement OpenSSL::BN#negative?
      Don't define main() when built with --enable-debug
      test: let OpenSSL::TestCase include OpenSSL::TestUtils
      test: prepare test PKey instances on demand
      Add OpenSSL.print_mem_leaks
      Enable OSSL_MDEBUG on CI builds
      ssl: move default DH parameters from OpenSSL::PKey::DH
      Make exceptions with the same format regardless of OpenSSL.debug
      ssl: show reason of 'certificate verify error' in exception message
      ssl: remove OpenSSL::ExtConfig::TLS_DH_anon_WITH_AES_256_GCM_SHA384
      ssl: do not confuse different ex_data index registries
      ssl: assume SSL/SSL_CTX always have a valid reference to the Ruby object
      Fix RDoc markup
      ssl: suppress compiler warning
      ext/openssl/deprecation.rb: remove broken-apple-openssl
      extconf.rb: print informative message if OpenSSL can't be found
      Rakefile: compile the extension before test
      kdf: introduce OpenSSL::KDF module
      ossl.h: add NUM2UINT64T() macro
      kdf: add scrypt
      Expand rb_define_copy_func() macro
      Expand FPTR_TO_FD() macro
      Remove SafeGet*() macros
      cipher: rename GetCipherPtr() to ossl_evp_get_cipherbyname()
      digest: rename GetDigestPtr() to ossl_evp_get_digestbyname()
      Add ossl_str_new(), an exception-safe rb_str_new()
      bio: simplify ossl_membio2str() using ossl_str_new()
      Remove unused functions and macros
      Drop support for LibreSSL 2.3
      ocsp: add OpenSSL::OCSP::Request#signed?
      asn1: infinite length -> indefinite length
      asn1: rearrange tests
      ssl: remove a needless NULL check in SSL::SSLContext#ciphers
      ssl: return nil in SSL::SSLSocket#cipher if session is not started
      asn1: remove an unnecessary function prototype
      asn1: require tag information when instantiating generic type
      asn1: initialize 'unused_bits' attribute of BitString with 0
      asn1: check for illegal 'unused_bits' value of BitString
      asn1: disallow NULL to be passed to asn1time_to_time()
      asn1: avoid truncating OID in OpenSSL::ASN1::ObjectId#oid
      asn1: allow constructed encoding with definite length form
      asn1: prohibit indefinite length form for primitive encoding
      asn1: allow tag number to be >= 32 for universal tag class
      asn1: use ossl_asn1_tag()
      asn1: clean up OpenSSL::ASN1::Constructive#to_der
      asn1: harmonize OpenSSL::ASN1::*#to_der
      asn1: prevent EOC octets from being in the middle of the content
      asn1: do not treat EOC octets as part of content octets
      x509name: add 'loc' and 'set' kwargs to OpenSSL::X509::Name#add_entry
      ssl: do not call session_remove_cb during GC
      Backport "Merge branch 'topic/test-memory-leak'" to maint
      cipher: update the documentation for Cipher#auth_tag=
      Rakefile: let sync:to_ruby know about test/openssl/fixtures
      test: fix formatting
      test/utils: remove OpenSSL::TestUtils.silent
      test/utils: add SSLTestCase#tls12_supported?
      test/utils: have start_server yield only the port number
      test/utils: do not set ecdh_curves in start_server
      test/utils: let server_loop close socket
      test/utils: improve error handling in start_server
      test/utils: add OpenSSL::TestUtils.openssl? and .libressl?
      test/utils: do not use DSA certificates in SSL tests
      test/test_ssl: remove test_invalid_shutdown_by_gc
      test/test_ssl: move test_multibyte_read_write to test_pair
      test/test_ssl_session: rearrange tests
      test/test_pair, test/test_ssl: fix for TLS 1.3
      ssl: remove useless call to rb_thread_wait_fd()
      ssl: fix NPN support
      ssl: mark OpenSSL::SSL::SSLContext::DEFAULT_{1024,2048} as private
      ssl: use 2048-bit group in the default tmp_dh_cb
      ssl: ensure that SSL option flags are non-negative
      ssl: update OpenSSL::SSL::OP_* flags
      ssl: prefer TLS_method() over SSLv23_method()
      ssl: add SSLContext#min_version= and #max_version=
      ssl: rework SSLContext#ssl_version=
      test/test_x509name: change script encoding to ASCII-8BIT
      x509name: refactor OpenSSL::X509::Name#to_s
      x509name: add OpenSSL::X509::Name#to_utf8
      x509name: add OpenSSL::X509::Name#inspect
      x509name: update regexp in OpenSSL::X509::Name.parse
      Ruby/OpenSSL 2.1.0.beta1

Marcus Stollsteimer (1):
      Fix rdoc for core Integer class

nobu (4):
      [DOC] {read,write}_nonblock with exception: false
      [DOC] keyword argument _exception_
      [DOC] mark up literals
      Revert r57690 except for read_nonblock
------------------------------------------------------------------------
r59733 | rhe | 2017-09-03 21:35:25 +0900 (Sun, 03 Sep 2017) | 4 lines

vm_insnhelper.c: fix opt_regexpmatch2 instruction

A fix-up for r58390 ("split insns.def into functions", 2017-04-18) which
accidentally swapped the arguments.
------------------------------------------------------------------------
r59732 | nobu | 2017-09-03 11:08:55 +0900 (Sun, 03 Sep 2017) | 4 lines

string.c: enumerator_wantarray

* string.c (enumerator_wantarray): show warnings at method
  functions for proper method names.
------------------------------------------------------------------------
r59731 | nobu | 2017-09-03 10:47:19 +0900 (Sun, 03 Sep 2017) | 4 lines

string.c: fix for non-Unicode encodings

* string.c (rb_str_enumerate_grapheme_clusters): should enumerate
  chars for non-Unicode encodings.  [Feature #13780]
------------------------------------------------------------------------
r59730 | nobu | 2017-09-03 09:39:23 +0900 (Sun, 03 Sep 2017) | 4 lines

string.c: suppress a warning

* string.c (rb_str_enumerate_grapheme_clusters): suppress a
  maybe-uninitialized warning by old gcc.
------------------------------------------------------------------------
r59729 | nobu | 2017-09-03 09:32:27 +0900 (Sun, 03 Sep 2017) | 4 lines

default.mspec: suppress warnings

* spec/default.mspec: suppress tons of useless use of == in void
  context warnings.
------------------------------------------------------------------------
r59728 | nobu | 2017-09-03 09:25:01 +0900 (Sun, 03 Sep 2017) | 4 lines

test_io.rb: suppress a warning

* test/ruby/test_io.rb (test_single_exception_on_close): suppress
  ambiguous first argument warning with RUBYOPT=-w.
------------------------------------------------------------------------
r59727 | nobu | 2017-09-03 09:13:15 +0900 (Sun, 03 Sep 2017) | 7 lines

test_coverage.rb: suppress warnings

* test/coverage/test_coverage.rb (test_nonpositive_linenumber):
  suppress method redefinition warnings.

* test/coverage/test_coverage.rb (test_eval): suppress literal in
  void context warning.
------------------------------------------------------------------------
r59726 | svn | 2017-09-03 09:02:24 +0900 (Sun, 03 Sep 2017) | 1 line

* 2017-09-03
------------------------------------------------------------------------
r59725 | nobu | 2017-09-03 09:02:23 +0900 (Sun, 03 Sep 2017) | 6 lines

test_coverage.rb: use real path

* test/coverage/test_coverage.rb (test_restarting_coverage): use
  real directory path for the case $TMPDIR contains symlinks.  on
  macOS, it is defaulted to a path under /var which is a symlink
  to /private/var.
------------------------------------------------------------------------
r59724 | mame | 2017-09-02 22:55:12 +0900 (Sat, 02 Sep 2017) | 12 lines

test/coverage/test_coverage.rb: run the tests in separated processes

The tests had been disabled under coverage measurement (during
`ENV['COVERAGE']`), since they call `Coverage.result` which stops
coverage measurement.
So, we couldn't measure both C-level and Ruby-level coverage of Ruby
simultaneously.
In short, `./configure --enable-gcov && make exam COVERAGE=true`
misses some coverages.

Now, the test runs in another process.  They does not stop coverage
measurement, so we can now enable the tests under coverage measurement.
------------------------------------------------------------------------
r59723 | rhe | 2017-09-02 15:17:52 +0900 (Sat, 02 Sep 2017) | 1 line

proc.c: [DOC] fixup r59720
------------------------------------------------------------------------
r59722 | nobu | 2017-09-02 11:05:34 +0900 (Sat, 02 Sep 2017) | 4 lines

getoptlong.rb: multiline regexps

* lib/getoptlong.rb: make regexps multiline safe.
  [ruby-core:82627] [Bug #13858]
------------------------------------------------------------------------
r59721 | nobu | 2017-09-02 10:47:43 +0900 (Sat, 02 Sep 2017) | 4 lines

cont.c: fix root fiber to_s

* cont.c (fiber_to_s): fix Fiber#to_s on root fibers which have no
  procs.  [ruby-core:82629] [Bug #13859]
------------------------------------------------------------------------
r59720 | nobu | 2017-09-02 10:41:14 +0900 (Sat, 02 Sep 2017) | 6 lines

Add Method#original_name code example [ci skip]

* proc.c (method_original_name): [DOC] add code example.
  [Fix GH-1693]

Author:    Seiei Miyagi <hanachin@gmail.com>
------------------------------------------------------------------------
r59719 | nobu | 2017-09-02 10:08:27 +0900 (Sat, 02 Sep 2017) | 6 lines

Update Hash#compact! documentation [ci skip]

* hash.c (rb_hash_compact_bang): [DOC] update the case if no
  changes were made.  [ruby-core:82591] [Bug #13855] [Fix GH-1692]

Author:    Lucas Buchala <lucasbuchala@gmail.com>
------------------------------------------------------------------------
r59718 | svn | 2017-09-02 09:26:38 +0900 (Sat, 02 Sep 2017) | 1 line

* 2017-09-02
------------------------------------------------------------------------
r59717 | suke | 2017-09-02 09:26:37 +0900 (Sat, 02 Sep 2017) | 3 lines

* ext/win32ole/win32ole.c (fole_initialize): fix typo. thanks to Gray Wolf. 
  [Feature #13828]

------------------------------------------------------------------------
r59716 | mame | 2017-09-01 23:58:52 +0900 (Fri, 01 Sep 2017) | 5 lines

ext/coverage/coverage.c: add Coverage.enabled?

* ext/coverage/coverage.c (rb_coverage_running): add to quickly
check if coverage is enabled.  patched by Burke Libbey <burke AT
libbey.me> in [ruby-core:81726].  [Feature #13667]
------------------------------------------------------------------------
r59715 | duerst | 2017-09-01 19:22:09 +0900 (Fri, 01 Sep 2017) | 4 lines

replace copyrights by explanatory text in data files for GB2312/GB12345 mappings

Replace the copyrights and explanatory texts in the data files used for mapping
GB2312/GB12345 to/from Unicode with short explanatory texts. [Bug #12598] [ci skip]
------------------------------------------------------------------------
r59714 | rhe | 2017-09-01 17:16:38 +0900 (Fri, 01 Sep 2017) | 4 lines

object.c: fix potential oob write in rb_str_to_dbl()

Ensure space for the terminating NUL byte. Note that this code path is
reachable only when Ruby is compiled with SHARABLE_MIDDLE_SUBSTRING=1.
------------------------------------------------------------------------
r59713 | hsbt | 2017-09-01 12:34:18 +0900 (Fri, 01 Sep 2017) | 4 lines

Exclude Changelog files from documentation.

  Patch from larskanis (Lars Kanis).
  [Misc #13704][ruby-core:81878]
------------------------------------------------------------------------
r59712 | ko1 | 2017-09-01 11:09:02 +0900 (Fri, 01 Sep 2017) | 2 lines

skip unless PLATFORM is darwin.

------------------------------------------------------------------------
r59711 | svn | 2017-09-01 10:13:54 +0900 (Fri, 01 Sep 2017) | 1 line

* properties.
------------------------------------------------------------------------
r59710 | naruse | 2017-09-01 10:13:53 +0900 (Fri, 01 Sep 2017) | 3 lines

Fix C level backtrace on Darwin

SEGV caused by invalid instruction call.
------------------------------------------------------------------------
r59709 | nobu | 2017-09-01 09:58:52 +0900 (Fri, 01 Sep 2017) | 4 lines

compile.c: fix loading pathobj

* compile.c (ibf_load_iseq_each): location.pathobj may not be a
  mere string now.
------------------------------------------------------------------------
r59708 | nobu | 2017-09-01 09:43:00 +0900 (Fri, 01 Sep 2017) | 4 lines

compile.c: ensure after toplevel return

* compile.c (iseq_compile_each0): toplevel returns should fire
  ensures.  [ruby-core:82492] [Bug #13844]
------------------------------------------------------------------------
r59707 | svn | 2017-09-01 00:41:55 +0900 (Fri, 01 Sep 2017) | 1 line

* 2017-09-01
------------------------------------------------------------------------
r59706 | sorah | 2017-09-01 00:41:54 +0900 (Fri, 01 Sep 2017) | 7 lines

Skip test_open_tempfile_path on EINVAL

Looks like File::Constants::TMPFILE could be defined even when not
supported on system.  Just skip the test when we get EINVAL on open(2).

* test/ruby/test_file.rb(test_open_tempfile_path):
  Skip when EINVAL occured on File.open.
------------------------------------------------------------------------
r59705 | sorah | 2017-08-31 20:22:15 +0900 (Thu, 31 Aug 2017) | 1 line

add NEWS entry for [Feature #13568] r59704
------------------------------------------------------------------------
r59704 | sorah | 2017-08-31 20:14:36 +0900 (Thu, 31 Aug 2017) | 24 lines

File#path: Raise IOError when a file is O_TMPFILE

File#path for a file opened with O_TMPFILE has no meaning.

A filepath returned by this method isn't guarranteed about its accuracy,
but files opened with O_TMPFILE are known its recorded path has no
meaning. So let them not to return any pathname.

After a discussion in ruby-core, just returning Qnil makes guessing the
root cause difficult. Instead, this patch makes the method to raise an
error.

Other consideration is calling fnctl(2) on rb_file_path, but it adds a
overhead, and it's difficult to determine O_TMPFILE status  after fd has
been closed.

[Feature #13568]

* io.c(rb_file_open_generic): Set Qnil to fptr->pathv when opening a
  file using O_TMPFILE

* file.c(rb_file_path): Raise IOError when fptr->pathv is Qnil

* file.c(rb_file_path): [DOC] Update for the new behavior
------------------------------------------------------------------------
r59703 | naruse | 2017-08-31 17:33:35 +0900 (Thu, 31 Aug 2017) | 1 line

Added NEWS for r59702
------------------------------------------------------------------------
r59702 | naruse | 2017-08-31 17:29:38 +0900 (Thu, 31 Aug 2017) | 3 lines

Add Socket::Ifaddr.vhid on supported platforms [Feature #13803]

patched by Alan Somers
------------------------------------------------------------------------
r59701 | nobu | 2017-08-31 17:21:46 +0900 (Thu, 31 Aug 2017) | 6 lines

io.c: shrink read buffer

* io.c (io_setstrbuf): return true if the buffer is newly created.

* io.c (io_set_read_length): shrink the read buffer if it is a new
  object and is too large.  [ruby-core:81370] [Bug #13597]
------------------------------------------------------------------------
r59700 | nobu | 2017-08-31 17:07:59 +0900 (Thu, 31 Aug 2017) | 4 lines

string.c: adjust indent [ci skip]

* string.c (rb_str_enumerate_grapheme_clusters): adjust indent.
  [Feature #13780]
------------------------------------------------------------------------
r59699 | nobu | 2017-08-31 17:04:49 +0900 (Thu, 31 Aug 2017) | 4 lines

test_syntax.rb: suppress warnings

* test/ruby/test_syntax.rb (TestSyntax#test_return_toplevel):
  suppress unreachable statement warnings.
------------------------------------------------------------------------
r59698 | naruse | 2017-08-31 15:35:28 +0900 (Thu, 31 Aug 2017) | 3 lines

String#each_grapheme_cluster and String#grapheme_clusters

added to enumerate grapheme clusters [Feature #13780]
------------------------------------------------------------------------
r59697 | nobu | 2017-08-31 12:06:05 +0900 (Thu, 31 Aug 2017) | 4 lines

test_syntax.rb: assert output

* test/ruby/test_syntax.rb (TestSyntax#test_return_toplevel):
  assert expected output if given.
------------------------------------------------------------------------
r59696 | kazu | 2017-08-31 09:05:29 +0900 (Thu, 31 Aug 2017) | 3 lines

`$=` is no longer effective.  [ci skip]

* doc/globals.rdoc: [DOC] `$=` is no longer effective.
------------------------------------------------------------------------
r59695 | ko1 | 2017-08-31 07:23:45 +0900 (Thu, 31 Aug 2017) | 4 lines

to_str -> to_s

* lib/net/http/header.rb (set_field): `val` can not have `to_str`.

------------------------------------------------------------------------
r59694 | svn | 2017-08-31 02:24:05 +0900 (Thu, 31 Aug 2017) | 1 line

* 2017-08-31
------------------------------------------------------------------------
r59693 | naruse | 2017-08-31 02:24:05 +0900 (Thu, 31 Aug 2017) | 1 line

A HTTP Header value must not contain CR or LF.
------------------------------------------------------------------------
r59692 | nobu | 2017-08-30 17:26:16 +0900 (Wed, 30 Aug 2017) | 4 lines

array.c: refine binomial_coefficient

* array.c (binomial_coefficient): get rid of bignums by division
  after each multiplications.
------------------------------------------------------------------------
r59691 | nobu | 2017-08-30 16:55:19 +0900 (Wed, 30 Aug 2017) | 3 lines

array.c: refine descending_factorial

* array.c (descending_factorial): reduce factorial multipication.
------------------------------------------------------------------------
r59690 | svn | 2017-08-30 14:37:00 +0900 (Wed, 30 Aug 2017) | 1 line

* 2017-08-30
------------------------------------------------------------------------
r59689 | nobu | 2017-08-30 14:36:59 +0900 (Wed, 30 Aug 2017) | 10 lines

array.c: integer calculations

* array.c (rb_ary_cycle_size, descending_factorial): use
  rb_int_mul instead of rb_funcallv.

* array.c (binomial_coefficient): use rb_int_idiv instead of
  rb_funcallv.

* array.c (rb_ary_repeated_permutation_size): use
  rb_int_positive_pow.
------------------------------------------------------------------------
r59688 | nobu | 2017-08-29 21:13:37 +0900 (Tue, 29 Aug 2017) | 3 lines

array.c: use rb_check_array_type

* array.c (ary_join_1): simplified by rb_check_array_type.
------------------------------------------------------------------------
r59687 | svn | 2017-08-29 20:52:52 +0900 (Tue, 29 Aug 2017) | 1 line

* remove trailing spaces.
------------------------------------------------------------------------
r59686 | hsbt | 2017-08-29 20:52:50 +0900 (Tue, 29 Aug 2017) | 4 lines

Merge rdoc-6.0.0.beta1.

  This version fixed strange behavior of ruby code parser.
  We will list all of impromovement to Changelog when 6.0.0 releasing.
------------------------------------------------------------------------
r59685 | nobu | 2017-08-29 20:35:35 +0900 (Tue, 29 Aug 2017) | 4 lines

array.c: nested encoding

* array.c (ary_join_1): ignore encodings in nested arrays as an
  initial encoding.
------------------------------------------------------------------------
r59684 | nobu | 2017-08-29 19:49:40 +0900 (Tue, 29 Aug 2017) | 4 lines

array.c: join encoding

* array.c (ary_join_1): copy the encoding of the converted string
  of the first element by to_str too, as an initial encoding.
------------------------------------------------------------------------
r59683 | hsbt | 2017-08-29 19:22:47 +0900 (Tue, 29 Aug 2017) | 3 lines

Partly reverted r59642. Because IO#close is idempotent since Ruby 2.3.

  Reported by Eric Wong. Thank you.
------------------------------------------------------------------------
r59682 | nobu | 2017-08-29 16:11:52 +0900 (Tue, 29 Aug 2017) | 1 line

test/ruby: tweaked heredocs
------------------------------------------------------------------------
r59681 | ko1 | 2017-08-29 16:01:27 +0900 (Tue, 29 Aug 2017) | 1 line

fix error message.
------------------------------------------------------------------------
r59680 | sonots | 2017-08-29 15:24:31 +0900 (Tue, 29 Aug 2017) | 4 lines

.gitignore: ignore run.gdb

* .gitignore: ignore run.gdb which is assumed to be generated
  by make gdb and customized manually during development
------------------------------------------------------------------------
r59679 | glass | 2017-08-29 13:58:29 +0900 (Tue, 29 Aug 2017) | 1 line

resolv.rb: remove unnecessary require statement
------------------------------------------------------------------------
r59678 | nobu | 2017-08-29 08:25:56 +0900 (Tue, 29 Aug 2017) | 5 lines

win32.c: fix function pointer

* win32/win32.c (rb_w32_set_thread_description): fix the condition
  if the API function pointer is found.
  [ruby-core:82494] [Bug #13845]
------------------------------------------------------------------------
r59677 | svn | 2017-08-29 01:05:11 +0900 (Tue, 29 Aug 2017) | 1 line

* 2017-08-29
------------------------------------------------------------------------
r59676 | naruse | 2017-08-29 01:05:11 +0900 (Tue, 29 Aug 2017) | 5 lines

Increase STACKFRAME_FOR_CALL_CFUNC

On below env, miniruby requires 568 and ruby requires 838 to pass.
* ruby -v: ruby 2.5.0dev (2017-08-28 trunk 59670) [x86_64-freebsd10.3]
* gcc8 (FreeBSD Ports Collection) 8.0.0 20170828 (experimental)
------------------------------------------------------------------------
r59675 | nobu | 2017-08-28 23:21:40 +0900 (Mon, 28 Aug 2017) | 3 lines

compile.c: compile_if

* compile.c (compile_if): extract from iseq_compile_each.
------------------------------------------------------------------------
r59674 | kazu | 2017-08-28 20:20:08 +0900 (Mon, 28 Aug 2017) | 1 line

[DOC] Fix typo in rdoc of `transform_values!` [ci skip]
------------------------------------------------------------------------
r59673 | glass | 2017-08-28 19:55:37 +0900 (Mon, 28 Aug 2017) | 4 lines

string.c: fix potential bug in String#split

* string.c (rb_str_split_m): fix potential bug when rb_memsearch()
  matches a octet in the middle of a multi-byte character sequence.
------------------------------------------------------------------------
r59672 | hsbt | 2017-08-28 17:31:28 +0900 (Mon, 28 Aug 2017) | 4 lines

Merge rubygems-2.6.13.

  see details for this update:
  http://blog.rubygems.org/2017/08/27/2.6.13-released.html
------------------------------------------------------------------------
r59671 | glass | 2017-08-28 16:54:00 +0900 (Mon, 28 Aug 2017) | 3 lines

lib/csv.rb: refactor and optimize. This change
includes the patch from marshall-lee.
close #1168
------------------------------------------------------------------------
r59670 | nobu | 2017-08-28 01:18:17 +0900 (Mon, 28 Aug 2017) | 3 lines

compile.c: compile_ensure

* compile.c (compile_ensure): extract from iseq_compile_each.
------------------------------------------------------------------------
r59669 | nobu | 2017-08-28 01:15:19 +0900 (Mon, 28 Aug 2017) | 3 lines

compile.c: compile_resbody

* compile.c (compile_resbody): extract from iseq_compile_each.
------------------------------------------------------------------------
r59668 | svn | 2017-08-28 01:04:27 +0900 (Mon, 28 Aug 2017) | 1 line

* 2017-08-28
------------------------------------------------------------------------
r59667 | nobu | 2017-08-28 01:04:26 +0900 (Mon, 28 Aug 2017) | 3 lines

compile.c: compile_rescue

* compile.c (compile_rescue): extract from iseq_compile_each.
------------------------------------------------------------------------
r59666 | shugo | 2017-08-27 15:32:00 +0900 (Sun, 27 Aug 2017) | 4 lines

lib/net/imap.rb: Accept continuation requests without response text

The IMAP server of DOCOMO returns such continuation requests.
[ruby-list:50558]
------------------------------------------------------------------------
r59665 | suke | 2017-08-27 08:39:43 +0900 (Sun, 27 Aug 2017) | 2 lines

* ext/win32ole/win32ole.c (fole_initialize): support licensed COM server. Thanks to Gray Wolf. [Feature :#13828]

------------------------------------------------------------------------
r59664 | nobu | 2017-08-27 06:02:23 +0900 (Sun, 27 Aug 2017) | 3 lines

vcs.rb: refresh after dcommit

* tool/vcs.rb (VCS::GIT#commit): refresh until sync after dcommit.
------------------------------------------------------------------------
r59663 | svn | 2017-08-27 05:55:32 +0900 (Sun, 27 Aug 2017) | 1 line

* 2017-08-27
------------------------------------------------------------------------
r59662 | nobu | 2017-08-27 05:55:31 +0900 (Sun, 27 Aug 2017) | 1 line

NEWS: Thread#name= on Windows [ci skip]
------------------------------------------------------------------------
r59661 | nobu | 2017-08-26 23:22:31 +0900 (Sat, 26 Aug 2017) | 4 lines

win32.c: fix return value

* win32/win32.c (rb_w32_set_thread_description_str): return the
  result when name is nil.
------------------------------------------------------------------------
r59660 | nobu | 2017-08-26 09:30:03 +0900 (Sat, 26 Aug 2017) | 7 lines

thread_win32.c: set thread name

* thread_win32.c (native_set_another_thread_name): set thread name
  by SetThreadDescription.

* win32/win32.c (rb_w32_set_thread_description): dynamically try
  SetThreadDescription.
------------------------------------------------------------------------
r59659 | svn | 2017-08-26 00:47:05 +0900 (Sat, 26 Aug 2017) | 1 line

* 2017-08-26
------------------------------------------------------------------------
r59658 | kazu | 2017-08-26 00:47:04 +0900 (Sat, 26 Aug 2017) | 3 lines

`$IGNORECASE` is no longer effective.  [ci skip]

* lib/English.rb: [DOC] `$IGNORECASE` is no longer effective.
------------------------------------------------------------------------
r59657 | glass | 2017-08-25 17:13:32 +0900 (Fri, 25 Aug 2017) | 7 lines

csv.rb: optimize CSV::Table#to_a and #to_csv

* lib/csv.rb (CSV::Table#to_a, #to_csv): use Array#push instead of
  Array#concat for performance improvement. This performance improvement is
  proposed by zdennis <zach.dennis@gmail.com>. The patch is from
  Mau Magnaguagno <maumagnaguagno@gmail.com>.
  close #946
------------------------------------------------------------------------
r59656 | nobu | 2017-08-25 12:41:43 +0900 (Fri, 25 Aug 2017) | 4 lines

compile.c: unreachable chunk

* compile.c (iseq_peephole_optimize): remove unreachable chunk
  which appeared by useless jump elimination.
------------------------------------------------------------------------
r59655 | nobu | 2017-08-25 12:33:32 +0900 (Fri, 25 Aug 2017) | 4 lines

compile.c: useless jump elimination

* compile.c (iseq_peephole_optimize): eliminate useless if/unless
  just before jump.
------------------------------------------------------------------------
r59654 | svn | 2017-08-25 11:37:39 +0900 (Fri, 25 Aug 2017) | 1 line

* 2017-08-25
------------------------------------------------------------------------
r59653 | nobu | 2017-08-25 11:37:38 +0900 (Fri, 25 Aug 2017) | 4 lines

compile.c: moved comments [ci skip]

* compile.c (iseq_peephole_optimize): moved comments inside proper
  blocks.
------------------------------------------------------------------------
r59652 | nobu | 2017-08-24 16:31:56 +0900 (Thu, 24 Aug 2017) | 4 lines

compile.c: show failed instructions

* compile.c (iseq_set_sequence): show failed instructions at
  adjuststack mismatch.
------------------------------------------------------------------------
r59651 | svn | 2017-08-24 16:26:06 +0900 (Thu, 24 Aug 2017) | 1 line

* 2017-08-24
------------------------------------------------------------------------
r59650 | nobu | 2017-08-24 16:26:05 +0900 (Thu, 24 Aug 2017) | 1 line

compile.c: free before adjust error
------------------------------------------------------------------------
r59649 | nobu | 2017-08-23 13:01:39 +0900 (Wed, 23 Aug 2017) | 4 lines

gc.c: restore cfp at finalizer

* gc.c (run_finalizer): restore cfp for the case an exception
  raised in a finalizer.  [ruby-core:82432] [Bug #13832]
------------------------------------------------------------------------
r59648 | nobu | 2017-08-23 12:14:05 +0900 (Wed, 23 Aug 2017) | 1 line

skip unless finalizers run
------------------------------------------------------------------------
r59647 | nobu | 2017-08-23 11:26:02 +0900 (Wed, 23 Aug 2017) | 4 lines

gc.c: run all finalizers

* gc.c (run_finalizer): revert r59155 partially. finalizing loop
  should continue even after an exception is rescued.
------------------------------------------------------------------------
r59646 | svn | 2017-08-23 11:23:48 +0900 (Wed, 23 Aug 2017) | 1 line

* 2017-08-23
------------------------------------------------------------------------
r59645 | ko1 | 2017-08-23 11:23:47 +0900 (Wed, 23 Aug 2017) | 3 lines

remove debug code.


------------------------------------------------------------------------
r59644 | nobu | 2017-08-22 22:21:18 +0900 (Tue, 22 Aug 2017) | 4 lines

parse.y: primary should not be 0

* parse.y (primary): should not be 0, since it can be a receiver.
  [ruby-core:82447] [Bug #13836]
------------------------------------------------------------------------
r59643 | hsbt | 2017-08-22 15:57:00 +0900 (Tue, 22 Aug 2017) | 3 lines

Fixed regression to convert blank value at r45497.

  [Bug #11126][ruby-core:69088]
------------------------------------------------------------------------
r59642 | hsbt | 2017-08-22 15:40:59 +0900 (Tue, 22 Aug 2017) | 3 lines

Gracefully handle CSV IO when file descriptor closed.

  [Bug #10504][ruby-core:66240]
------------------------------------------------------------------------
r59641 | hsbt | 2017-08-22 15:34:27 +0900 (Tue, 22 Aug 2017) | 3 lines

Fixed equality method fails when given the object that doesn't support table method.

  [Bug #12422][ruby-core:75707]
------------------------------------------------------------------------
r59640 | hsbt | 2017-08-22 15:17:42 +0900 (Tue, 22 Aug 2017) | 3 lines

Fixed to write_headers option behavior when given no rows.

  [Bug #9988][ruby-core:63375]
------------------------------------------------------------------------
r59639 | hsbt | 2017-08-22 14:32:34 +0900 (Tue, 22 Aug 2017) | 5 lines

Escape skip_lines string before convert to Regexp.

  It ignored all of lines when given Regexp special characters.

  [Feature #9147][ruby-core:58549]
------------------------------------------------------------------------
r59638 | nobu | 2017-08-22 13:40:16 +0900 (Tue, 22 Aug 2017) | 1 line

pack insn_operand_info and insn_len_info
------------------------------------------------------------------------
r59637 | nobu | 2017-08-22 13:37:08 +0900 (Tue, 22 Aug 2017) | 1 line

pack insns_name_info
------------------------------------------------------------------------
r59636 | nobu | 2017-08-22 13:22:01 +0900 (Tue, 22 Aug 2017) | 1 line

tool/instruction.rb: move logics to templates
------------------------------------------------------------------------
r59635 | nobu | 2017-08-22 12:07:01 +0900 (Tue, 22 Aug 2017) | 4 lines

insns.inc.tmpl: ensure info size

* template/insns.inc.tmpl (ASSERT_VM_INSTRUCTION_SIZE): static
  assertion for VM instruction info tables.
------------------------------------------------------------------------
r59634 | nobu | 2017-08-22 11:46:16 +0900 (Tue, 22 Aug 2017) | 4 lines

signal.c: fatal stack

* signal.c (check_stack_overflow): raise fatal when the last tag
  is in danger zone.
------------------------------------------------------------------------
r59633 | nobu | 2017-08-22 11:42:23 +0900 (Tue, 22 Aug 2017) | 1 line

signal.c: removed raise_stack_overflow:
------------------------------------------------------------------------
r59632 | svn | 2017-08-22 09:41:25 +0900 (Tue, 22 Aug 2017) | 1 line

* 2017-08-22
------------------------------------------------------------------------
r59631 | ko1 | 2017-08-22 09:41:24 +0900 (Tue, 22 Aug 2017) | 5 lines

split out struct cont_saved_vm_stack.

* cont.c: introduce `struct cont_saved_vm_stack` which was part of
  `struct rb_context_struct`.

------------------------------------------------------------------------
r59630 | nobu | 2017-08-21 23:15:31 +0900 (Mon, 21 Aug 2017) | 7 lines

prevent stack overflow

* gc.c: enable PREVENT_STACK_OVERFLOW.

* vm.c (invoke_iseq_block_from_c): prevent stack overflow.

* vm_eval.c (stack_check): raise preallocated exception instance.
------------------------------------------------------------------------
r59629 | yui-knk | 2017-08-21 22:38:35 +0900 (Mon, 21 Aug 2017) | 6 lines

Remove a meaningless local variable assignment

* iseq.c (rb_iseq_disasm_insn): Remove a meaningless
  local variable assignment. `insn` is never changed
  in this function, so a result of `insn_op_types(insn)`
  is also never changed.
------------------------------------------------------------------------
r59628 | svn | 2017-08-21 15:46:47 +0900 (Mon, 21 Aug 2017) | 1 line

* 2017-08-21
------------------------------------------------------------------------
r59627 | nobu | 2017-08-21 15:46:46 +0900 (Mon, 21 Aug 2017) | 7 lines

vm_core.h: ruby_error_stackfatal

* vm_core.h (ruby_special_exceptions): rename sysstack_gc as
  stackfatal.

* eval.c (Init_eval): modified the message for stackfatal error as
  "critical region".
------------------------------------------------------------------------
r59626 | nobu | 2017-08-20 15:08:25 +0900 (Sun, 20 Aug 2017) | 6 lines

non-keywords hash

* class.c (rb_scan_args), include/ruby/ruby.h (rb_scan_args_set):
  return non-keywords elements only in the last hash when keyword
  arguments are extracted from it, as well as methods defined in
  ruby level.  [ruby-core:82427] [Bug #13830]
------------------------------------------------------------------------
r59625 | svn | 2017-08-20 08:39:04 +0900 (Sun, 20 Aug 2017) | 1 line

* 2017-08-20
------------------------------------------------------------------------
r59624 | nobu | 2017-08-20 08:39:03 +0900 (Sun, 20 Aug 2017) | 7 lines

ruby.h: fix rb_scan_args_trail_idx

* include/ruby/ruby.h (rb_scan_args_trail_idx): fix the case both
  of optional and rest arguments are defined.
  [ruby-core:82427] [Bug #13830]

* include/ruby/ruby.h (rb_scan_args_n_trail): ditto.
------------------------------------------------------------------------
r59623 | ktsj | 2017-08-19 19:02:57 +0900 (Sat, 19 Aug 2017) | 1 line

gems/bundled_gems: Update to power_assert 1.1.0
------------------------------------------------------------------------
r59622 | nobu | 2017-08-19 10:04:15 +0900 (Sat, 19 Aug 2017) | 4 lines

class.c: check kw hash

* class.c (rb_keyword_error_new): get rid of an intermediate
  string and check if keys are symbols.
------------------------------------------------------------------------
r59621 | svn | 2017-08-19 09:45:23 +0900 (Sat, 19 Aug 2017) | 1 line

* 2017-08-19
------------------------------------------------------------------------
r59620 | nobu | 2017-08-19 09:45:22 +0900 (Sat, 19 Aug 2017) | 1 line

class.c: call rb_hash_keys directly
------------------------------------------------------------------------
r59619 | nobu | 2017-08-18 21:44:30 +0900 (Fri, 18 Aug 2017) | 4 lines

vm_insnhelper.c: vm_cfp_consistent_p

* vm_insnhelper.c (vm_cfp_consistent_p): extracted the conditions
  for cfp consistency.
------------------------------------------------------------------------
r59618 | nobu | 2017-08-18 21:17:59 +0900 (Fri, 18 Aug 2017) | 4 lines

vm_insnhelper.c: raise ruby_error_sysstack_gc

* vm_insnhelper.c (rb_threadptr_stack_overflow): rb_fatal is not
  available during GC.  raise the preallocated fatal error.
------------------------------------------------------------------------
r59617 | shugo | 2017-08-18 14:16:05 +0900 (Fri, 18 Aug 2017) | 3 lines

test/net/imap/test_imap.rb: Use Addrinfo.tcp in case localhost is ::1.

[ruby-dev:50208] [Bug #13825]
------------------------------------------------------------------------
r59616 | nobu | 2017-08-18 08:31:41 +0900 (Fri, 18 Aug 2017) | 4 lines

Revert r59612

* method.h (rb_method_definition_t): rb_method_type_t should be
  unsigned as it needs 5bits at least for signed extension.
------------------------------------------------------------------------
r59615 | svn | 2017-08-18 01:34:40 +0900 (Fri, 18 Aug 2017) | 1 line

* 2017-08-18
------------------------------------------------------------------------
r59614 | naruse | 2017-08-18 01:34:40 +0900 (Fri, 18 Aug 2017) | 36 lines

Add optimization for creating zerofill string

```
require 'benchmark'
n = 1 * 1024 * 1024 * 1024
Benchmark.bmbm do |x|
  x.report("*") { 0.chr * n }
  x.report("ljust") { String.new(capacity: n).ljust(n, "\0") }
end
```

Before

```% ./ruby test.rb
Rehearsal -----------------------------------------
*       0.358396   0.392753   0.751149 (  1.134231)
ljust   0.203277   0.389223   0.592500 (  0.594816)
-------------------------------- total: 1.343649sec

            user     system      total        real
*       0.282647   0.304600   0.587247 (  0.589205)
ljust   0.201834   0.283801   0.485635 (  0.487617)
```

After

```% ./ruby test.rb
Rehearsal -----------------------------------------
*       0.000522   0.000021   0.000543 (  0.000534)
ljust   0.208551   0.321030   0.529581 (  0.542083)
-------------------------------- total: 0.530124sec

            user     system      total        real
*       0.000069   0.000006   0.000075 (  0.000069)
ljust   0.206698   0.301032   0.507730 (  0.517674)
```
------------------------------------------------------------------------
r59613 | nobu | 2017-08-17 23:58:11 +0900 (Thu, 17 Aug 2017) | 5 lines

vm_method.c: alias warning at refined method

* vm_method.c (rb_method_entry_make): suppress a warning at
  refined method which will not be redefined.
  [ruby-core:82385] [Bug #13817]
------------------------------------------------------------------------
r59612 | nobu | 2017-08-17 23:36:57 +0900 (Thu, 17 Aug 2017) | 4 lines

method.h: enum rb_method_definition_t::type

* method.h (rb_method_definition_t): define type as an enum for
  debugging.
------------------------------------------------------------------------
r59611 | nobu | 2017-08-17 21:33:41 +0900 (Thu, 17 Aug 2017) | 4 lines

parse.y: unexpected tINTEGER message

* parse.y (parser_number_literal_suffix): keep token after numeric
  suffix to show the value in an error message.
------------------------------------------------------------------------
r59610 | svn | 2017-08-17 21:31:11 +0900 (Thu, 17 Aug 2017) | 1 line

* 2017-08-17
------------------------------------------------------------------------
r59609 | kazu | 2017-08-17 21:31:10 +0900 (Thu, 17 Aug 2017) | 4 lines

Use `*` instead of `**` in .editorconfig

It seems `**` is same as `*` when no `/` exist.
[ci skip]
------------------------------------------------------------------------
r59608 | hsbt | 2017-08-16 18:45:58 +0900 (Wed, 16 Aug 2017) | 3 lines

Extract files variables of ipaddr.gemspec for non git environment.

  [Bug #13808][ruby-core:82358]
------------------------------------------------------------------------
r59607 | hsbt | 2017-08-16 18:37:03 +0900 (Wed, 16 Aug 2017) | 4 lines

Added gemspec of digest library.

  standalone repository is https://github.com/ruby/digest
  [Misc #13771][ruby-core:82179]
------------------------------------------------------------------------
r59606 | nobu | 2017-08-16 16:18:45 +0900 (Wed, 16 Aug 2017) | 5 lines

vm_insnhelper.c: cfp error at stack overflow

* vm_insnhelper.c (threadptr_stack_overflow): set stack overflow
  flag until handling execptions, to get rid of cfp consistency
  error when exec tag was rewound.  [ruby-core:80618] [Bug #13412]
------------------------------------------------------------------------
r59605 | naruse | 2017-08-16 06:39:38 +0900 (Wed, 16 Aug 2017) | 3 lines

Partially revert "suppress warning: assigned but unused variable - line"

revert unexpected changes
------------------------------------------------------------------------
r59604 | naruse | 2017-08-16 06:36:16 +0900 (Wed, 16 Aug 2017) | 1 line

suppress warning: assigned but unused variable - line
------------------------------------------------------------------------
r59603 | svn | 2017-08-16 06:33:44 +0900 (Wed, 16 Aug 2017) | 1 line

* 2017-08-16
------------------------------------------------------------------------
r59602 | naruse | 2017-08-16 06:33:43 +0900 (Wed, 16 Aug 2017) | 1 line

High Sierra's APFS cannot use invalid filenames [Bug #13816]
------------------------------------------------------------------------
r59601 | nobu | 2017-08-15 22:53:38 +0900 (Tue, 15 Aug 2017) | 4 lines

parse.y: removed useless check

* parse.y (singleton): literal nodes are always value expressions,
  no check is necessary.
------------------------------------------------------------------------
r59600 | yui-knk | 2017-08-15 22:12:39 +0900 (Tue, 15 Aug 2017) | 6 lines

Remove not exist arguments from comments of insns

is_local argument was introduced on r11639 and removed on r11813.

* insns.def (getinstancevariable, setinstancevariable): Remove a not
  exist argument.
------------------------------------------------------------------------
r59599 | naruse | 2017-08-15 22:05:18 +0900 (Tue, 15 Aug 2017) | 1 line

suppress warning: assigned but unused variable - line
------------------------------------------------------------------------
r59598 | nobu | 2017-08-15 10:05:50 +0900 (Tue, 15 Aug 2017) | 4 lines

ftp.rb: fix example format [ci skip]

* lib/uri/ftp.rb: [DOC] fix format of example URLs.  patched by
  aycabta (Code Ahss) at [ruby-core:82379].  [Bug #13814]
------------------------------------------------------------------------
r59597 | nobu | 2017-08-15 09:50:22 +0900 (Tue, 15 Aug 2017) | 5 lines

ripper.rb: fix License format [ci skip]

* ext/ripper/lib/ripper.rb: [DOC] fix format of the License
  description and the author.  patched by aycabta (Code Ahss) at
  [ruby-core:82376].  [Bug #13813]
------------------------------------------------------------------------
r59596 | nobu | 2017-08-15 09:45:14 +0900 (Tue, 15 Aug 2017) | 3 lines

compile.c: compile_retry

* compile.c (compile_retry): extract from iseq_compile_each.
------------------------------------------------------------------------
r59595 | nobu | 2017-08-15 09:45:13 +0900 (Tue, 15 Aug 2017) | 3 lines

compile.c: compile_redo

* compile.c (compile_redo): extract from iseq_compile_each.
------------------------------------------------------------------------
r59594 | nobu | 2017-08-15 09:18:47 +0900 (Tue, 15 Aug 2017) | 3 lines

compile.c: compile_next

* compile.c (compile_next): extract from iseq_compile_each.
------------------------------------------------------------------------
r59593 | nobu | 2017-08-15 08:55:34 +0900 (Tue, 15 Aug 2017) | 3 lines

compile.c: compile_break

* compile.c (compile_break): extract from iseq_compile_each.
------------------------------------------------------------------------
r59592 | svn | 2017-08-15 01:04:36 +0900 (Tue, 15 Aug 2017) | 1 line

* 2017-08-15
------------------------------------------------------------------------
r59591 | duerst | 2017-08-15 01:04:35 +0900 (Tue, 15 Aug 2017) | 2 lines

fix documentation of REXML::Formatters::Default (id_hack -> ie_hack) [ci skip]

------------------------------------------------------------------------
r59590 | nobu | 2017-08-14 23:25:27 +0900 (Mon, 14 Aug 2017) | 3 lines

compile.c: compile_loop

* compile.c (compile_loop): extract from iseq_compile_each.
------------------------------------------------------------------------
r59589 | nobu | 2017-08-14 23:18:29 +0900 (Mon, 14 Aug 2017) | 1 line

type is invariant inside this block
------------------------------------------------------------------------
r59588 | svn | 2017-08-14 22:26:38 +0900 (Mon, 14 Aug 2017) | 1 line

* 2017-08-14
------------------------------------------------------------------------
r59587 | yui-knk | 2017-08-14 22:26:37 +0900 (Mon, 14 Aug 2017) | 5 lines

Fix a class of a returned value

* ext/objspace/object_tracing.c (allocation_sourceline): Fix
  a class of a returned value. allocation_sourceline returns
  an integer.
------------------------------------------------------------------------
r59586 | nobu | 2017-08-13 22:43:36 +0900 (Sun, 13 Aug 2017) | 6 lines

script.rb: skip empty directories

* spec/mspec/lib/mspec/utils/script.rb (entries): skip empty
  directories so that at least one file would run.

Merged https://github.com/ruby/spec/issues/459
------------------------------------------------------------------------
r59585 | nobu | 2017-08-13 22:34:26 +0900 (Sun, 13 Aug 2017) | 8 lines

parse.y: set used flag in gettable

* parse.y (dvar_defined_ref, dvar_defined): rename macros.  only
  gettable uses the former.  assignable should not set LVAR_USED
  flag.

* parse.y (gettable_gen): set used flag on local/dynamic variables
  instead of setting in lexer.  [ruby-core:82368] [Bug #13809]
------------------------------------------------------------------------
r59584 | kou | 2017-08-13 21:14:24 +0900 (Sun, 13 Aug 2017) | 6 lines

REXML: Fix a bug that unexpected methods can be called as a XPath function

[HackerOne:249295]

Reported by Andrea Jegher. Thanks!!!

------------------------------------------------------------------------
r59583 | nobu | 2017-08-13 16:53:04 +0900 (Sun, 13 Aug 2017) | 4 lines

stringio.c: suppress a warning [ci skip]

* ext/stringio/stringio.c (strio_read): suppress an
  implicit-fallthrough warning.
------------------------------------------------------------------------
r59582 | nobu | 2017-08-13 16:31:49 +0900 (Sun, 13 Aug 2017) | 4 lines

stringio.c: encoding at empty chomped result

* ext/stringio/stringio.c (strio_gets): should return string with
  the external encoding, at empty chomped result .
------------------------------------------------------------------------
r59581 | nobu | 2017-08-13 16:21:13 +0900 (Sun, 13 Aug 2017) | 4 lines

stringio.c: encoding at empty result

* ext/stringio/stringio.c (strio_gets): should return string with
  the external encoding, at empty result.
------------------------------------------------------------------------
r59580 | svn | 2017-08-13 02:41:49 +0900 (Sun, 13 Aug 2017) | 1 line

* 2017-08-13
------------------------------------------------------------------------
r59579 | naruse | 2017-08-13 02:41:48 +0900 (Sun, 13 Aug 2017) | 1 line

Suppress warning: shadowing outer local variable - klass
------------------------------------------------------------------------
r59578 | nobu | 2017-08-12 10:47:09 +0900 (Sat, 12 Aug 2017) | 5 lines

stringio.c: encoding at EOF

* ext/stringio/stringio.c (strio_read): should return string with
  the external encoding, at EOF too.
  [ruby-core:82349] [Bug #13806]
------------------------------------------------------------------------
r59577 | svn | 2017-08-12 10:34:14 +0900 (Sat, 12 Aug 2017) | 1 line

* 2017-08-12
------------------------------------------------------------------------
r59576 | nobu | 2017-08-12 10:34:13 +0900 (Sat, 12 Aug 2017) | 4 lines

test_stringio.rb: more assertions

* test/stringio/test_stringio.rb (test_read): add assertions
  of return value of read with a buffer string.
------------------------------------------------------------------------
r59575 | nobu | 2017-08-11 11:44:30 +0900 (Fri, 11 Aug 2017) | 1 line

enum.c: make constant argument static
------------------------------------------------------------------------
r59574 | nobu | 2017-08-11 11:05:24 +0900 (Fri, 11 Aug 2017) | 4 lines

re.c: options for sub-regexp

* re.c (rb_reg_to_s): needs embedded options to check syntax of
  sub-regexp.  [ruby-core:82328] [Bug #13798]
------------------------------------------------------------------------
r59573 | svn | 2017-08-11 10:27:25 +0900 (Fri, 11 Aug 2017) | 1 line

* 2017-08-11
------------------------------------------------------------------------
r59572 | nobu | 2017-08-11 10:27:24 +0900 (Fri, 11 Aug 2017) | 6 lines

separate hash literal and keyword arguments

* compile.c (compile_array_keyword_arg): separate keyword splat
  inside hash literal from argument list.

* parse.y (rparen): flag hash literal.
------------------------------------------------------------------------
r59571 | yui-knk | 2017-08-10 23:46:51 +0900 (Thu, 10 Aug 2017) | 5 lines

Fix types of function argument

* doc/extension.ja.rdoc: Fix types of rb_ary_aref argument

* doc/extension.rdoc: ditto
------------------------------------------------------------------------
r59570 | nagachika | 2017-08-10 21:57:07 +0900 (Thu, 10 Aug 2017) | 3 lines

fix a typo in comment.

	* cont.c (typedef struct rb_context_struct): fix a typo in comment.
------------------------------------------------------------------------
r59569 | knu | 2017-08-10 21:37:04 +0900 (Thu, 10 Aug 2017) | 3 lines

Import ruby-electric.el version 2.3.1 from upstream

It now supports [enh-ruby-mode](https://github.com/zenspider/enhanced-ruby-mode).
------------------------------------------------------------------------
r59568 | nobu | 2017-08-10 20:40:49 +0900 (Thu, 10 Aug 2017) | 4 lines

vm_core.h: unreachable VM_UNREACHABLE

* vm_core.h (VM_UNREACHABLE): tell unreachable if possible.
  suppress an invalid-noreturn warning at rb_fiber_start.
------------------------------------------------------------------------
r59567 | rhe | 2017-08-10 18:23:45 +0900 (Thu, 10 Aug 2017) | 26 lines

openssl: import v2.0.5

Import Ruby/OpenSSL 2.0.5. The full commit history since v2.0.4
(imported at r59081) can be found at:

	https://github.com/ruby/openssl/compare/v2.0.4...v2.0.5

This will fix the test failure on latest Debian sid and the "no
OPENSSL_Applink" issue on mswin.

----------------------------------------------------------------
Kazuki Yamaguchi (11):
      test/test_ssl: allow 3DES cipher suites in test_sslctx_set_params
      bio: prevent possible GC issue in ossl_obj2bio()
      bio: do not use the FILE BIO method in ossl_obj2bio()
      Rakefile: install_dependencies: install only when needed
      appveyor.yml: test against Ruby 2.4
      ossl_pem_passwd_cb: relax passphrase length constraint
      ossl_pem_passwd_cb: do not check for taintedness
      ossl_pem_passwd_cb: handle nil from the block explicitly
      ssl: remove unsupported TLS versions from SSLContext::METHODS
      ssl: fix compile error with OpenSSL 1.0.0
      Ruby/OpenSSL 2.0.5

Lars Kanis (1):
      Add msys2 library dependency tag in gem metadata
------------------------------------------------------------------------
r59566 | ko1 | 2017-08-10 15:26:52 +0900 (Thu, 10 Aug 2017) | 2 lines

use VM_UNREACHABLE() instead of rb_bug().

------------------------------------------------------------------------
r59565 | ko1 | 2017-08-10 15:01:57 +0900 (Thu, 10 Aug 2017) | 6 lines

introduce fiber_restore_thread.

* cont.c (fiber_restore_thread): added (separate from cont_restore_thread).

* cont.c (fiber_setcontext): call fiber_restore_thread() directly.

------------------------------------------------------------------------
r59564 | nobu | 2017-08-10 14:54:56 +0900 (Thu, 10 Aug 2017) | 5 lines

ruby.c: ignore non-option in shebang line

* ruby.c (moreswitches): process all words as options only in
  an environment variable, but not in a shebang line.
  [ruby-core:82267] [Bug #13786]
------------------------------------------------------------------------
r59563 | ko1 | 2017-08-10 13:55:12 +0900 (Thu, 10 Aug 2017) | 6 lines

rename rb_execution_context_t::stack(_size) to vm_stack(_size).

* vm_core.h: Ruby processes run with two stacks, a machine stack and a
  VM stack. To make it clear, this fix renames
  rb_execution_context_t::stack(_size) to vm_stack(_size).

------------------------------------------------------------------------
r59562 | nobu | 2017-08-10 13:03:48 +0900 (Thu, 10 Aug 2017) | 1 line

cont.c: fix up r59557 for !FIBER_USE_NATIVE
------------------------------------------------------------------------
r59561 | ko1 | 2017-08-10 12:34:25 +0900 (Thu, 10 Aug 2017) | 3 lines

constify some variables.


------------------------------------------------------------------------
r59560 | ko1 | 2017-08-10 12:20:39 +0900 (Thu, 10 Aug 2017) | 7 lines

Define Thread#to_s (as Thread#inspect) and make alias `inspect` as `to_s`.

* thread.c: "Thread#to_s" is not defined without any reason. So this fix
  define "Thread#to_s" which returns a string with some thread information.
  Also this fix makes alias "inspect" which refers "to_s". This manner is
  same as other objects.

------------------------------------------------------------------------
r59559 | ko1 | 2017-08-10 12:09:51 +0900 (Thu, 10 Aug 2017) | 2 lines

remove additional newline.

------------------------------------------------------------------------
r59558 | ko1 | 2017-08-10 11:58:36 +0900 (Thu, 10 Aug 2017) | 7 lines

Fiber#to_s (#inspect) return richer information.

* cont.c (fiber_to_s): return with block and status information.

* proc.c (proc_to_s_): removed and introduce rb_block_to_s() function
  to return block information string.

------------------------------------------------------------------------
r59557 | ko1 | 2017-08-10 10:47:13 +0900 (Thu, 10 Aug 2017) | 16 lines

refactoring Fiber status.

* cont.c: revisit fiber status.
  "FIBER_RUNNING" status represents fiber is resumed or suspended.
  This fix separate these two status explicitly.
  FIBER_CREATED: Just after Fiber.new. Not resumed yet.
  FIBER_RESUMED (new): Fiber#resumed. Now this fiber is running.
  FIBER_SUSPENDED (new): Suspended by Fiber.yield. Not running.
  FIBER_TERMINATED: Terminated.

  Add sevral assertions to check consistency with these status.

* cont.c (fiber_status_set): added to change status.

* cont.c (FIBER_xxx_P): added to check fiber status.

------------------------------------------------------------------------
r59556 | nobu | 2017-08-10 09:50:45 +0900 (Thu, 10 Aug 2017) | 5 lines

compile.c: fix KW_SPLAT flag condition

* compile.c (compile_array_keyword_arg): fix the condition of
  KW_SPLAT flag.  splat is value node only without key node,
  simple assoc argument is not.  [ruby-core:82291] [Bug #13793]
------------------------------------------------------------------------
r59555 | svn | 2017-08-10 09:32:13 +0900 (Thu, 10 Aug 2017) | 1 line

* 2017-08-10
------------------------------------------------------------------------
r59554 | nobu | 2017-08-10 09:32:12 +0900 (Thu, 10 Aug 2017) | 5 lines

vm_args.c: prefer optarg to keyword splat

* vm_args.c (setup_parameters_complex): prefer optional argument
  to splat keyword arguments for backward compatibility.
  [ruby-core:82280] [Bug #13791]
------------------------------------------------------------------------
r59549 | nobu | 2017-08-09 20:03:55 +0900 (Wed, 09 Aug 2017) | 13 lines

ruby.c: origarg

* ruby.c (dladdr_path, ruby_set_argv): add guards for origarg.
  [ruby-core:82272] [Bug #13788]

* ruby.c (proc_options, process_options, ruby_process_options):
  set origarg if not set yet.

* ruby.c (process_options): prefer argv in the argument to origarg
  as program name.

* ruby.c (ruby_sysinit): set origarg only if argc and argv seem
  valid.
------------------------------------------------------------------------
r59536 | svn | 2017-08-09 17:17:53 +0900 (Wed, 09 Aug 2017) | 1 line

* 2017-08-09
------------------------------------------------------------------------
r59535 | usa | 2017-08-09 17:17:52 +0900 (Wed, 09 Aug 2017) | 4 lines

Missed `#` in usage

* tool/generate-backport-changelog.rb (usage): missed `#` in usage

------------------------------------------------------------------------
r59529 | nobu | 2017-08-08 19:43:19 +0900 (Tue, 08 Aug 2017) | 5 lines

dir.c: fix up r59527

* dir.c (glob_helper): fix up r59527, dot files other than current
  directory should not be included unless FNM_DOTMATCH is given.
  [ruby-core:82266] [Bug #13785]
------------------------------------------------------------------------
r59528 | svn | 2017-08-08 17:34:11 +0900 (Tue, 08 Aug 2017) | 1 line

* 2017-08-08
------------------------------------------------------------------------
r59527 | nobu | 2017-08-08 17:34:10 +0900 (Tue, 08 Aug 2017) | 5 lines

dir.c: fix up r59481 for old kernels

* dir.c (glob_helper): fix up r59481 for old kernels, which
  provide d_type member but just always set DT_UNKNOWN for any
  entries.  [ruby-core:82266] [Bug #13785]
------------------------------------------------------------------------
r59526 | nobu | 2017-08-07 13:15:19 +0900 (Mon, 07 Aug 2017) | 1 line

enum.c: optimize for integers
------------------------------------------------------------------------
r59525 | nobu | 2017-08-07 13:08:46 +0900 (Mon, 07 Aug 2017) | 1 line

enum.c: prefer rb_funcallv to rb_funcall
------------------------------------------------------------------------
r59524 | svn | 2017-08-07 12:45:33 +0900 (Mon, 07 Aug 2017) | 1 line

* 2017-08-07
------------------------------------------------------------------------
r59523 | nobu | 2017-08-07 12:45:32 +0900 (Mon, 07 Aug 2017) | 1 line

enum.c: use predefined IDs
------------------------------------------------------------------------
r59522 | svn | 2017-08-06 14:22:27 +0900 (Sun, 06 Aug 2017) | 1 line

* 2017-08-06
------------------------------------------------------------------------
r59521 | duerst | 2017-08-06 14:22:26 +0900 (Sun, 06 Aug 2017) | 1 line

add some more assertions to test_ill_formed_utf_8_replace 
------------------------------------------------------------------------
r59519 | nobu | 2017-08-05 15:58:44 +0900 (Sat, 05 Aug 2017) | 7 lines

splat keyword hash

* compile.c (compile_array_keyword_arg): set keyword splat flag if
  explicitly splatted.  [ruby-core:68124] [Bug #10856]

* vm_args.c (setup_parameters_complex): try keyword hash splat if
  given.
------------------------------------------------------------------------
r59518 | nobu | 2017-08-05 15:51:08 +0900 (Sat, 05 Aug 2017) | 4 lines

vm_core.h: vm_call_flag_bits

* vm_core.h (vm_call_flag_bits): define VM_CALL flags by using
  enum constants.
------------------------------------------------------------------------
r59509 | svn | 2017-08-05 02:05:44 +0900 (Sat, 05 Aug 2017) | 1 line

* 2017-08-05
------------------------------------------------------------------------
r59508 | eregon | 2017-08-05 02:05:43 +0900 (Sat, 05 Aug 2017) | 1 line

* man/ruby.1: Move paragraph which is related to -S, not -s.
------------------------------------------------------------------------
r59502 | ko1 | 2017-08-04 23:57:31 +0900 (Fri, 04 Aug 2017) | 13 lines

use stable sort.

* lib/rubygems/resolver.rb (sort_dependencies): use stable sort.
  TestGemRequestSetLockfile#test_to_s_gem_dependency_non_default
  fails because this method return unstable results.
  Note that Enumerable#sort_by is unstable.

  I'm not sure the "stable" nature is required for RubyGems.
  The fact is that using stable sort, the test passed on
  mswin64+VS2017 where the sort results was reverse (unstable) order.
  Also using `-i` instead of `i` (it means forcing unstable sort)
  this test fails on other platform where the test successed before.

------------------------------------------------------------------------
r59499 | kazu | 2017-08-04 21:00:00 +0900 (Fri, 04 Aug 2017) | 1 line

Fix `NameError: uninitialized constant Net`
------------------------------------------------------------------------
r59498 | kazu | 2017-08-04 20:59:59 +0900 (Fri, 04 Aug 2017) | 1 line

Use `register_scanner` instead of `regist_scanner`
------------------------------------------------------------------------
r59497 | kazu | 2017-08-04 20:59:57 +0900 (Fri, 04 Aug 2017) | 1 line

Add deprecated warning to ERB::Compiler::SimpleScanner2
------------------------------------------------------------------------
r59496 | nobu | 2017-08-04 13:39:53 +0900 (Fri, 04 Aug 2017) | 5 lines

string.c: improve String#scan

* string.c (rb_str_rstrip_bang): improve the performance in 50%
  for a string pattern, and in 10% for a regexp pattern.  get rid
  of making MatchData in middle, which is not used.
------------------------------------------------------------------------
r59495 | svn | 2017-08-04 13:25:13 +0900 (Fri, 04 Aug 2017) | 1 line

* 2017-08-04
------------------------------------------------------------------------
r59494 | nobu | 2017-08-04 13:25:12 +0900 (Fri, 04 Aug 2017) | 1 line

benchmarks for String#scan
------------------------------------------------------------------------
r59487 | kazu | 2017-08-03 21:31:21 +0900 (Thu, 03 Aug 2017) | 1 line

Use the same variable name as in dir.c
------------------------------------------------------------------------
r59486 | svn | 2017-08-03 18:39:26 +0900 (Thu, 03 Aug 2017) | 1 line

* properties.
------------------------------------------------------------------------
r59485 | naruse | 2017-08-03 18:39:25 +0900 (Thu, 03 Aug 2017) | 1 line

Add initial test for lldb extension
------------------------------------------------------------------------
r59484 | nobu | 2017-08-03 17:11:57 +0900 (Thu, 03 Aug 2017) | 1 line

disable rdoc for internal constants [ci skip]
------------------------------------------------------------------------
r59483 | nobu | 2017-08-03 17:09:24 +0900 (Thu, 03 Aug 2017) | 5 lines

ruby.h: NULL as empty array

* include/ruby/ruby.h (rb_yield_values, rb_funcall): call with
  NULL when no arguments, for clang which defines static array
  when an empty array is used.
------------------------------------------------------------------------
r59482 | nobu | 2017-08-03 16:08:00 +0900 (Thu, 03 Aug 2017) | 1 line

extract IDs
------------------------------------------------------------------------
r59481 | nobu | 2017-08-03 13:13:12 +0900 (Thu, 03 Aug 2017) | 5 lines

dir.c: reduce syscalls

* dir.c (glob_helper): utilize d_type even if no recursive
  pattern, to reduce stat/lstat syscalls in subsequent
  glob_helper.
------------------------------------------------------------------------
r59480 | nobu | 2017-08-03 12:41:50 +0900 (Thu, 03 Aug 2017) | 1 line

fix typo in help [ci skip]
------------------------------------------------------------------------
r59479 | nobu | 2017-08-03 12:39:33 +0900 (Thu, 03 Aug 2017) | 4 lines

dir.c: relative path Dir base

* dir.c (glob_helper): fix globbing based on a relative path Dir.
  [Feature #13056]
------------------------------------------------------------------------
r59478 | usa | 2017-08-03 12:31:38 +0900 (Thu, 03 Aug 2017) | 4 lines

Should show the entity of $PATH_SEPARATOR

* win32/configure.bat (--help): should show the entity of $PATH_SEPARATOR.

------------------------------------------------------------------------
r59477 | usa | 2017-08-03 12:25:46 +0900 (Thu, 03 Aug 2017) | 4 lines

Mention about `--with-opt-dir`

* win32/configure.bat (--help): mention about `--with-opt-dir`.

------------------------------------------------------------------------
r59476 | nobu | 2017-08-03 11:14:51 +0900 (Thu, 03 Aug 2017) | 4 lines

dir.c: relax base option

* dir.c (dir_glob_options): relax base option.  ignore when nil
  or an empty string as :base option.  [Feature #13056]
------------------------------------------------------------------------
r59475 | nobu | 2017-08-03 09:53:25 +0900 (Thu, 03 Aug 2017) | 5 lines

spec_helper.rb: pass jobserver fds

* spec/rubyspec/optional/capi/spec_helper.rb (compile_extension):
  pass jobserver fds explicitly, because other specs might have
  set close_on_exec flags on these fds.
------------------------------------------------------------------------
r59474 | ko1 | 2017-08-03 06:48:51 +0900 (Thu, 03 Aug 2017) | 12 lines

fix stack storing for root fibers.

* cont.c (root_fiber_alloc): this function is called by fiber_current()
  and fiber_store(). fiber_current() should clear VM stack information
  in a fiber data because runnning thread knows stack information and has
  responsibility to manage it. However fiber_store() requires to remain
  VM stack information in a fiber data because the responsibility to manage
  VM stack is moved to the Fiber from the Thread (and switch to another
  fiber).

* cont.c (root_fiber_alloc): save thread's fiber and root_fiber information.

------------------------------------------------------------------------
r59473 | kazu | 2017-08-03 00:10:43 +0900 (Thu, 03 Aug 2017) | 4 lines

Fix URI::FTP.build code example typo

ref https://github.com/rurema/doctree/pull/462
[ci skip]
------------------------------------------------------------------------
r59472 | kazu | 2017-08-03 00:10:42 +0900 (Thu, 03 Aug 2017) | 3 lines

Fix variable name in example of net/pop

[ci skip]
------------------------------------------------------------------------
r59471 | kazu | 2017-08-03 00:10:40 +0900 (Thu, 03 Aug 2017) | 4 lines

Fix net/pop code example syntax error

ref https://github.com/rurema/doctree/pull/455
[ci skip]
------------------------------------------------------------------------
r59470 | svn | 2017-08-03 00:10:39 +0900 (Thu, 03 Aug 2017) | 1 line

* 2017-08-03
------------------------------------------------------------------------
r59469 | kazu | 2017-08-03 00:10:38 +0900 (Thu, 03 Aug 2017) | 4 lines

Fix cgi/core code example missing comma

ref https://github.com/rurema/doctree/pull/448
[ci skip]
------------------------------------------------------------------------
r59468 | yugui | 2017-08-02 14:27:25 +0900 (Wed, 02 Aug 2017) | 3 lines

Port more commands from .gdbinit to lldb

* misc/lldb_cury.py (dump_node, SDR, rb_count_objects): added
------------------------------------------------------------------------
r59467 | nobu | 2017-08-02 12:02:22 +0900 (Wed, 02 Aug 2017) | 1 line

suppress warnings when RUBY_USE_SETJMPEX
------------------------------------------------------------------------
r59466 | nobu | 2017-08-02 11:40:29 +0900 (Wed, 02 Aug 2017) | 9 lines

eval.c: suppress warnings

* eval.c (exc_setup_message): setup exception message as an
  exception instance, and a cause from a previous exception.
  split from setup_exception to suppress a warning when
  RUBY_USE_SETJMPEX is enabled.

* eval.c (setup_exception): make state volatile to suppress a
  warning too.
------------------------------------------------------------------------
r59465 | knu | 2017-08-02 11:20:48 +0900 (Wed, 02 Aug 2017) | 1 line

ipaddr is now a default gem with an upstream at: https://github.com/ruby/ipaddr
------------------------------------------------------------------------
r59464 | hsbt | 2017-08-02 11:19:04 +0900 (Wed, 02 Aug 2017) | 1 line

Partly reverted email notification on travis configuration.
------------------------------------------------------------------------
r59463 | nobu | 2017-08-02 09:54:13 +0900 (Wed, 02 Aug 2017) | 4 lines

eval.c: fix state type

* eval.c (setup_exception): state is a raised thread flag, not for
  EXEC_TAG.
------------------------------------------------------------------------
r59462 | ko1 | 2017-08-02 09:50:42 +0900 (Wed, 02 Aug 2017) | 16 lines

release VM stack properly.

* cont.c: r55766 change the handling method of Fiber's VM stack.
  Resumed Fiber points NULL as VM stack and running Thread has
  responsibility to manage it (marking and releasing).

  However, thread_start_func_2()@thread.c and thread_free()@vm.c
  doesn't free the VM stack if corresponding root Fiber is exist.
  This causes memory leak. [Bug #13772]

* cont.c (root_fiber_alloc): fib->cont.saved_thread.ec.stack should be NULL
  because running thread has responsibility to manage this stack.

* vm.c (rb_thread_recycle_stack_release): assert given stack is not NULL
  (callers should care it).

------------------------------------------------------------------------
r59461 | svn | 2017-08-02 09:20:42 +0900 (Wed, 02 Aug 2017) | 1 line

* 2017-08-02
------------------------------------------------------------------------
r59460 | kazu | 2017-08-02 09:20:41 +0900 (Wed, 02 Aug 2017) | 3 lines

Remove "make update-rubyspec"

because it is no-op for compatibility
------------------------------------------------------------------------
r59459 | nobu | 2017-08-01 20:59:45 +0900 (Tue, 01 Aug 2017) | 5 lines

assertions.rb: AllFailures#message encoding

* test/lib/test/unit/assertions.rb (AllFailures#message): put
  indented messages back to the original encoding, to get rid of
  Encoding::CompatibilityError when key has non-ASCII characters.
------------------------------------------------------------------------
r59458 | nobu | 2017-08-01 17:32:18 +0900 (Tue, 01 Aug 2017) | 4 lines

parse.y: simplify parse_ident

* parse.y (parse_ident): simplified selecting identifier types by
  the suffix.
------------------------------------------------------------------------
r59457 | ko1 | 2017-08-01 11:10:19 +0900 (Tue, 01 Aug 2017) | 9 lines

should not copy promoted flags.

* include/ruby/ruby.h (rb_clone_setup): should not copy some flags
  (FL_PROMOTED0|FL_PROMOTED1|FL_FINALIZE).
  [Bug #13775]

* test/ruby/test_object.rb: add a test (note that this test will fail
  only when RGENGC_CHECK_MODE >= 2).

------------------------------------------------------------------------
r59456 | svn | 2017-08-01 09:19:10 +0900 (Tue, 01 Aug 2017) | 1 line

* 2017-08-01
------------------------------------------------------------------------
r59455 | kazu | 2017-08-01 09:19:10 +0900 (Tue, 01 Aug 2017) | 1 line

Use `&.` instead of modifier if
------------------------------------------------------------------------
r59454 | nobu | 2017-07-31 13:04:10 +0900 (Mon, 31 Jul 2017) | 5 lines

configure.in: use libtool

* configure.in: use libtool on macOS to suppress a warning against
  debug_counter.o, which has no symbols unless USE_DEBUG_COUNTER
  is set to non-zero.
------------------------------------------------------------------------
r59453 | svn | 2017-07-31 12:35:23 +0900 (Mon, 31 Jul 2017) | 1 line

* 2017-07-31
------------------------------------------------------------------------
r59452 | kazu | 2017-07-31 12:35:22 +0900 (Mon, 31 Jul 2017) | 3 lines

Improve error message

ref [Bug #13761]
------------------------------------------------------------------------
r59451 | nobu | 2017-07-30 23:59:40 +0900 (Sun, 30 Jul 2017) | 5 lines

UNALIGNED_MEMBER_ACCESS only for clang

* eval_intern.h (UNALIGNED_MEMBER_ACCESS): enable only on clang.
  gcc does not complain about pointers to member of unaligned
  struct.
------------------------------------------------------------------------
r59450 | nobu | 2017-07-30 23:48:45 +0900 (Sun, 30 Jul 2017) | 4 lines

UNALIGNED_MEMBER_ACCESS

* eval_intern.h (UNALIGNED_MEMBER_ACCESS): suppress
  address-of-packed-member warnings by clang 4.0.
------------------------------------------------------------------------
r59449 | nobu | 2017-07-30 11:56:30 +0900 (Sun, 30 Jul 2017) | 5 lines

hash.c: refactor env_enc_str_new

* hash.c (env_enc_str_new): convert to the expected encoding
  without intermediate string, and set econv flags if default
  internal encoding is set too.
------------------------------------------------------------------------
r59448 | nobu | 2017-07-30 11:56:29 +0900 (Sun, 30 Jul 2017) | 5 lines

string.c: rb_str_initialize

* string.c (rb_str_initialize): new function to (re)initialize a
  string with data and encoding.  extracted from
  rb_external_str_new_with_enc.
------------------------------------------------------------------------
r59447 | svn | 2017-07-30 09:40:44 +0900 (Sun, 30 Jul 2017) | 1 line

* 2017-07-30
------------------------------------------------------------------------
r59446 | nobu | 2017-07-30 09:40:43 +0900 (Sun, 30 Jul 2017) | 4 lines

compile.c: replace adjuststack

* compile.c (iseq_set_sequence): replace adjuststack with pop, or
  remove if possible instead of two nops.
------------------------------------------------------------------------
r59445 | nobu | 2017-07-29 21:42:42 +0900 (Sat, 29 Jul 2017) | 7 lines

visibility of inherited method

* vm_insnhelper.c (vm_call_method_each_type): honor the original
  visibility of inherited methods when a refinement is defined but
  not activated.  [ruby-core:82209] [Bug #13776]

Author:    Mon_Ouie (Mon ou?e) <mon.ouie@gmail.com>
------------------------------------------------------------------------
r59444 | nobu | 2017-07-29 21:42:41 +0900 (Sat, 29 Jul 2017) | 4 lines

adjust indent [ci skip]

* vm_insnhelper.c (vm_call_method_each_type): adjust indent of a
  block in switch.
------------------------------------------------------------------------
r59443 | nobu | 2017-07-29 21:11:51 +0900 (Sat, 29 Jul 2017) | 4 lines

file.c: [DOC] File.mkfifo

* file.c (rb_file_s_mkfifo): enclose rdoc by ifdef so it will be
  generated properly.
------------------------------------------------------------------------
r59442 | nobu | 2017-07-29 11:03:11 +0900 (Sat, 29 Jul 2017) | 5 lines

compile.c: fix flip-flop value

* compile.c (iseq_compile_each0): as compile_flip_flop always ends
  with a jump instruction, successive instruction is never reached,
  but caused stack consistency error without peephole optimization.
------------------------------------------------------------------------
r59441 | svn | 2017-07-29 01:47:51 +0900 (Sat, 29 Jul 2017) | 1 line

* 2017-07-29
------------------------------------------------------------------------
r59440 | odaira | 2017-07-29 01:47:50 +0900 (Sat, 29 Jul 2017) | 4 lines

Include sys/select.h when checking HAVE_RB_FD_INIT

* configure.in: include sys/select.h for fd_mask on AIX
  [Feature #13637]
------------------------------------------------------------------------
r59439 | kou | 2017-07-28 23:16:17 +0900 (Fri, 28 Jul 2017) | 6 lines

rexml: Remove needless document

[Fix GH-1671]

Patch by madblobfish. Thanks!!!

------------------------------------------------------------------------
r59438 | svn | 2017-07-28 16:46:21 +0900 (Fri, 28 Jul 2017) | 1 line

* 2017-07-28
------------------------------------------------------------------------
r59437 | glass | 2017-07-28 16:46:20 +0900 (Fri, 28 Jul 2017) | 10 lines

csv.rb: fix incompatibility introduced in r59428

* lib/csv.rb: fix incompatibility introduced in r59428.
              CSV.new takes options as keyword arguments.

* test/csv/test_features.rb: add a test to ensure it raises error againt
                             unknown options

* test/csv/test_features.rb: add a test to ensure row_sep option is properly
                             applied
------------------------------------------------------------------------
r59436 | nobu | 2017-07-27 21:54:55 +0900 (Thu, 27 Jul 2017) | 1 line

set auto-props to avoid commits setting properties
------------------------------------------------------------------------
r59435 | nobu | 2017-07-27 21:25:42 +0900 (Thu, 27 Jul 2017) | 4 lines

fix type

* spec/rubyspec/optional/capi/ext/io_spec.c (io_spec_rb_io_wait_readable):
  fix type of read(2).
------------------------------------------------------------------------
r59434 | nobu | 2017-07-27 21:17:56 +0900 (Thu, 27 Jul 2017) | 4 lines

vm_core.h: shrink trap_list size

* vm_core.h (rb_vm_struct): separate trap_list cmd and safe to
  each arrays, to shrink the size.
------------------------------------------------------------------------
r59433 | svn | 2017-07-27 21:10:42 +0900 (Thu, 27 Jul 2017) | 1 line

* properties.
------------------------------------------------------------------------
r59432 | eregon | 2017-07-27 21:10:41 +0900 (Thu, 27 Jul 2017) | 1 line

Update to ruby/spec@c3e6b90
------------------------------------------------------------------------
r59431 | svn | 2017-07-27 21:10:24 +0900 (Thu, 27 Jul 2017) | 1 line

* properties.
------------------------------------------------------------------------
r59430 | eregon | 2017-07-27 21:10:23 +0900 (Thu, 27 Jul 2017) | 1 line

Update to ruby/mspec@353605f
------------------------------------------------------------------------
r59429 | hsbt | 2017-07-27 20:56:54 +0900 (Thu, 27 Jul 2017) | 5 lines

Update configuration for slack notification.

  * Encrypted slack token.
  * Only notify when build fails and it recovered.
  * Only notify trunk build without pull requests.
------------------------------------------------------------------------
r59428 | glass | 2017-07-27 18:53:58 +0900 (Thu, 27 Jul 2017) | 5 lines

csv.rb: use keyword parameters

* lib/csv.rb: usb keyword parameters to receive options

* test/csv/test_features.rb: remove a test for checking options
------------------------------------------------------------------------
r59427 | svn | 2017-07-27 15:49:28 +0900 (Thu, 27 Jul 2017) | 1 line

* 2017-07-27
------------------------------------------------------------------------
r59426 | glass | 2017-07-27 15:49:27 +0900 (Thu, 27 Jul 2017) | 3 lines

csv.rb: use Array#to_h

* lib/csv.rb (CSV::Row#to_hash): use Array#to_h
------------------------------------------------------------------------
r59425 | nobu | 2017-07-26 21:44:12 +0900 (Wed, 26 Jul 2017) | 4 lines

vcs.rb: commit

* tool/vcs.rb (commit): do commit, reset svn revision to sync git
  mirror.
------------------------------------------------------------------------
r59424 | shugo | 2017-07-26 16:47:34 +0900 (Wed, 26 Jul 2017) | 3 lines

lib/net/imap.rb: support CHANGEDSINCE and MODSEQ

Patch by plehoux (Philippe-Antoine Lehoux).  [ruby-core:64272] [Feature #10119]
------------------------------------------------------------------------
r59423 | hsbt | 2017-07-26 15:06:33 +0900 (Wed, 26 Jul 2017) | 3 lines

To use slack notification instead of email notification.

  It's easily customize configuration of test notify.
------------------------------------------------------------------------
r59422 | hsbt | 2017-07-26 14:42:27 +0900 (Wed, 26 Jul 2017) | 3 lines

Removed definitions of mspec and ruby/spec.

  They are no longer used on ruby core repository.
------------------------------------------------------------------------
r59421 | hsbt | 2017-07-26 14:39:41 +0900 (Wed, 26 Jul 2017) | 1 line

Removed Ruby 2.1 from Travis CI. It's EOL status on 2017.
------------------------------------------------------------------------
r59420 | nobu | 2017-07-26 09:56:44 +0900 (Wed, 26 Jul 2017) | 6 lines

parse.y: brace after array literal arg

* parse.y (parser_yylex): array is another literal.  set state to
  END too not only ENDARG and after a literal, so that a left
  brace after it should be a primary block bound to the literal,
  which causes syntax error.  [ruby-core:81037] [Bug #13547]
------------------------------------------------------------------------
r59419 | svn | 2017-07-26 09:01:27 +0900 (Wed, 26 Jul 2017) | 1 line

* 2017-07-26
------------------------------------------------------------------------
r59418 | kazu | 2017-07-26 09:01:26 +0900 (Wed, 26 Jul 2017) | 1 line

Fix typos [ci skip]
------------------------------------------------------------------------
r59417 | nobu | 2017-07-25 17:30:11 +0900 (Tue, 25 Jul 2017) | 5 lines

parse.y: limit codepoint length

* parse.y (parser_tokadd_codepoint): limit Unicode codepoint
  length.  too long codepoint has been split unexpectedly since
  r57050.
------------------------------------------------------------------------
r59416 | normal | 2017-07-25 14:55:22 +0900 (Tue, 25 Jul 2017) | 10 lines

dir.c (ruby_brace_expand): RB_GC_GUARD safety

The lifetime of a String VALUE must match or exceed the lifetime
of its R*_PTR result; otherwise the GC can while reclaim the
VALUE while the R*_PTR result is in use.

* dir.c (ruby_brace_expand): add var parameter for GC guard
  (ruby_brace_glob_with_enc): adjust call
  (file_s_fnmatch): ditto
  (push_glob): remove misplaced GC guard
------------------------------------------------------------------------
r59415 | svn | 2017-07-25 10:08:52 +0900 (Tue, 25 Jul 2017) | 1 line

* 2017-07-25
------------------------------------------------------------------------
r59414 | nobu | 2017-07-25 10:08:51 +0900 (Tue, 25 Jul 2017) | 7 lines

socket: system getaddrinfo on Windows

* ext/socket/extconf.rb: use system getaddrinfo, getnameinfo, and
  freeaddrinfo on Windows if they are provided.  they conflict
  with addrinfo.h and cannot compile.  conftest.exe linked against
  msvcr90.dll segfaults when invoked in extconf.rb for unknown
  reason, and failed to check them.
------------------------------------------------------------------------
r59413 | svn | 2017-07-24 10:56:05 +0900 (Mon, 24 Jul 2017) | 1 line

* 2017-07-24
------------------------------------------------------------------------
r59412 | nobu | 2017-07-24 10:56:04 +0900 (Mon, 24 Jul 2017) | 5 lines

optparse.rb: case-sensitive candidate

* lib/optparse.rb (candidate): short options are case-sensitive by
  the default, should not match case-different options..
  https://github.com/mernen/completion-ruby/pull/9#issuecomment-317287946
------------------------------------------------------------------------
r59411 | svn | 2017-07-23 18:44:49 +0900 (Sun, 23 Jul 2017) | 1 line

* 2017-07-23
------------------------------------------------------------------------
r59410 | nobu | 2017-07-23 18:44:48 +0900 (Sun, 23 Jul 2017) | 4 lines

sprintf.c: width too big

* sprintf.c (rb_str_format): explicitly reject too big negative
  width, instead of an empty string.
------------------------------------------------------------------------
r59394 | svn | 2017-07-22 21:26:20 +0900 (Sat, 22 Jul 2017) | 1 line

* remove trailing spaces.
------------------------------------------------------------------------
r59393 | yugui | 2017-07-22 21:26:19 +0900 (Sat, 22 Jul 2017) | 1 line

Add Doxygen comments
------------------------------------------------------------------------
r59392 | kazu | 2017-07-22 17:07:58 +0900 (Sat, 22 Jul 2017) | 1 line

Fix documents
------------------------------------------------------------------------
r59391 | kazu | 2017-07-22 17:07:56 +0900 (Sat, 22 Jul 2017) | 1 line

Fix typos and indent
------------------------------------------------------------------------
r59390 | svn | 2017-07-22 15:30:54 +0900 (Sat, 22 Jul 2017) | 1 line

* remove trailing spaces.
------------------------------------------------------------------------
r59389 | yugui | 2017-07-22 15:30:53 +0900 (Sat, 22 Jul 2017) | 1 line

Add documents
------------------------------------------------------------------------
r59388 | nobu | 2017-07-22 15:01:38 +0900 (Sat, 22 Jul 2017) | 6 lines

compile.c: COMPILE_ERROR

* compile.c: raise COMPILE_ERROR instead of compile_bug which is
  very rarely (or never, actually) useful to debug instruction
  sequence.  COMPILE_ERROR is usually SyntaxError, or fatal error
  if compile_debug is enabled,
------------------------------------------------------------------------
r59387 | nobu | 2017-07-22 07:45:13 +0900 (Sat, 22 Jul 2017) | 3 lines

compile.c: dump iseq at adjust bug

* compile.c (fix_sp_depth): dump instructions at adjust bug too.
------------------------------------------------------------------------
r59386 | svn | 2017-07-22 04:06:08 +0900 (Sat, 22 Jul 2017) | 1 line

* 2017-07-22
------------------------------------------------------------------------
r59385 | normal | 2017-07-22 04:06:07 +0900 (Sat, 22 Jul 2017) | 12 lines

NEWS: add entries for thread_sync.c changes

I'm slightly worried about some external code subclassing
ConditionVariable, Queue, and SizedQueue and relying on them
being Structs.  However, they only started being Structs with
Ruby 2.1, and were implemented in pure Ruby before that; so
hopefully nobody notices that implementation detail.

Also, note the Mutex change as it may affect program design
when space can be saved.

* NEWS: entries for [Feature #13552] and [Feature #13517]
------------------------------------------------------------------------
r59384 | nobu | 2017-07-21 22:30:46 +0900 (Fri, 21 Jul 2017) | 5 lines

strscan.c: fix segfault in aref

* ext/strscan/strscan.c (strscan_aref): fix segfault after
  get_byte or getch which do not apply regexp.
  [ruby-core:82116] [Bug #13759]
------------------------------------------------------------------------
r59383 | nobu | 2017-07-21 17:31:47 +0900 (Fri, 21 Jul 2017) | 4 lines

optparse.rb: [DOC] fix keys

* lib/optparse.rb (getopts): [DOC] parameter keys are strings, not
  symbols.
------------------------------------------------------------------------
r59382 | rhe | 2017-07-21 13:29:46 +0900 (Fri, 21 Jul 2017) | 12 lines

ripper: add kwrest_param parser event

* parse.y (f_kwrest): Dispatch kwrest_param event. This is especially
  useful for unnamed kwrest parameter for which we expose the internal
  ID currently.  [ruby-core:75528] [Feature #12387]

* test/ripper/dummyparser.rb (on_kwrest_param): Add handler for
  kwrest_param parser event.

* test/ripper/test_parser_events.rb (test_params): Adapt to the change
  in DummyParser.
  (test_kwrest_param): Test that kwrest_param event handler is called.
------------------------------------------------------------------------
r59381 | kazu | 2017-07-21 08:34:03 +0900 (Fri, 21 Jul 2017) | 1 line

Use `unpack1` instead of `unpack` and `[0]`
------------------------------------------------------------------------
r59380 | sonots | 2017-07-21 01:47:26 +0900 (Fri, 21 Jul 2017) | 11 lines

logger.rb: Fix handling progname

Because progname was memoized with ||= a logger call that involved
outputting false would be nil. Example code:

  logger = Logger.new(STDOUT)
  logger.info(false)  # => nil

Perform an explicit nil check instead of ||= so that false will be output.

patched by Gavin Miller <gavingmiller@gmail.com> [Fix GH-1667]
------------------------------------------------------------------------
r59379 | sonots | 2017-07-21 01:29:20 +0900 (Fri, 21 Jul 2017) | 1 line

NEWS: Add String#delete_suffix and String#delete_suffix!
------------------------------------------------------------------------
r59378 | svn | 2017-07-21 01:29:20 +0900 (Fri, 21 Jul 2017) | 1 line

* 2017-07-21
------------------------------------------------------------------------
r59377 | sonots | 2017-07-21 01:29:19 +0900 (Fri, 21 Jul 2017) | 10 lines

string.c: add String#delete_suffix and String#delete_suffix!
to remove trailing suffix [Feature #13665] [Fix GH-1661]

* string.c (rb_str_delete_suffix_bang): add a new method
  to remove suffix destuctively.

* string.c (rb_str_delete_suffix): add a new method
  to remove suffix non-destuctively.

* test/ruby/test_string.rb: add tests.
------------------------------------------------------------------------
r59376 | yugui | 2017-07-20 20:00:39 +0900 (Thu, 20 Jul 2017) | 5 lines

Remove dead code

* eval.c (errinfo_setter): dead for 10 years since r13091.
  (rb_rubylevel_errinfo): not used and not exported.
  usually removed or hidden by linker.
------------------------------------------------------------------------
r59375 | nobu | 2017-07-20 14:48:26 +0900 (Thu, 20 Jul 2017) | 5 lines

parse.y: empty hash in defined

* parse.y (command): NODE_ARRAY with NULL is invalid.  traversal
  in defined_expr0 is simplified than iseq_compile_each0.
  [ruby-core:82113] [Bug #13756]
------------------------------------------------------------------------
r59374 | nobu | 2017-07-20 11:43:45 +0900 (Thu, 20 Jul 2017) | 5 lines

compile.c: restore stack at return

* compile.c (iseq_compile_each0): restore the stack depth after
  return to the previous depth, to fix the stack depth at
  returning from rescue iseq.  [ruby-core:82108] [Bug #13755]
------------------------------------------------------------------------
r59373 | shugo | 2017-07-20 08:38:31 +0900 (Thu, 20 Jul 2017) | 3 lines

lib/net/pop.rb: support timeout for TLS handshake

Patch by ahorek (Pavel Rosick?).  [ruby-core:80490] [Feature #13389]
------------------------------------------------------------------------
r59372 | shugo | 2017-07-20 08:08:34 +0900 (Thu, 20 Jul 2017) | 4 lines

lib/net/imap.rb: Ignore trailing space for Microsoft Exchange Server

Based on the patch by keysen (J?r?my Carlier).
[ruby-core:81641] [Bug #13649]
------------------------------------------------------------------------
r59371 | svn | 2017-07-20 00:01:01 +0900 (Thu, 20 Jul 2017) | 1 line

* 2017-07-20
------------------------------------------------------------------------
r59370 | kazu | 2017-07-20 00:01:01 +0900 (Thu, 20 Jul 2017) | 1 line

Sort entries [ci skip]
------------------------------------------------------------------------
r59369 | kazu | 2017-07-19 22:59:58 +0900 (Wed, 19 Jul 2017) | 3 lines

NEWS: Add Hash#transform_keys and Hash#transform_keys!

[Feature #13583] [ruby-core:81290] [ci skip]
------------------------------------------------------------------------
r59368 | nobu | 2017-07-19 12:16:58 +0900 (Wed, 19 Jul 2017) | 4 lines

random.c: ensure initialized

* random.c (get_rnd, try_get_rnd): ensure initialized to get rid
  of crash in forked processes.  [ruby-core:82100] [Bug #13753]
------------------------------------------------------------------------
r59367 | nobu | 2017-07-19 12:16:08 +0900 (Wed, 19 Jul 2017) | 4 lines

test_rand.rb: improved assert_fork_status

* test/ruby/test_rand.rb (assert_fork_status): deal with errors
  from children.
------------------------------------------------------------------------
r59366 | nobu | 2017-07-19 11:28:45 +0900 (Wed, 19 Jul 2017) | 1 line

st.c: adjust style
------------------------------------------------------------------------
r59365 | svn | 2017-07-19 10:35:05 +0900 (Wed, 19 Jul 2017) | 1 line

* 2017-07-19
------------------------------------------------------------------------
r59364 | normal | 2017-07-19 10:35:04 +0900 (Wed, 19 Jul 2017) | 4 lines

revert r59359, r59356, r59355, r59354

These caused numerous CI failures I haven't been able to
reproduce [ruby-core:82102]
------------------------------------------------------------------------
r59362 | hsbt | 2017-07-18 20:28:49 +0900 (Tue, 18 Jul 2017) | 4 lines

Copy openssl library finder for ext/digest from OpenSSL extention.

  * ext/digest/digest_conf.rb: Support to search variaous filenames of
    OpenSSL/LibreSSL libraries.
------------------------------------------------------------------------
r59361 | nobu | 2017-07-18 19:49:10 +0900 (Tue, 18 Jul 2017) | 1 line

fix typo
------------------------------------------------------------------------
r59360 | nobu | 2017-07-18 19:29:19 +0900 (Tue, 18 Jul 2017) | 4 lines

descriptive asssertions

* test/ruby/test_string.rb (test_uplus_minus): prefer more
  descriptive asssertions than assert_equal.
------------------------------------------------------------------------
r59359 | normal | 2017-07-18 18:52:55 +0900 (Tue, 18 Jul 2017) | 6 lines

string: preserve taint flag with String#-@ (uminus)

* string.c (tainted_fstr_update): move up
  (rb_fstring): support registering tainted strings
  (register_fstring_tainted): extract from rb_fstring_existing0
  (rb_tainted_fstring_existing): use register_fstring_tainted instead
------------------------------------------------------------------------
r59358 | nobu | 2017-07-18 17:31:02 +0900 (Tue, 18 Jul 2017) | 10 lines

vm_eval.c: rb_lambda_call

* enum.c (enum_collect): make the block arity same as the given
  block.  [Bug #13391]

* internal.h (vm_ifunc): store arity instead of unused id.

* proc.c (rb_vm_block_min_max_arity): return ifunc arity.

* vm_eval.c (rb_lambda_call): call method with lambda block.
------------------------------------------------------------------------
r59357 | nobu | 2017-07-18 16:48:37 +0900 (Tue, 18 Jul 2017) | 4 lines

proc.c: rb_block_min_max_arity

* proc.c (rb_block_min_max_arity): new function to get arity range
  from the current block.
------------------------------------------------------------------------
r59356 | normal | 2017-07-18 16:21:05 +0900 (Tue, 18 Jul 2017) | 4 lines

test/ruby/test_string.rb: ensure we do not have tainted strings

Trying to figure out [ruby-core:82092]
cf. https://gist.github.com/e2c899c453f3f66e7934095c32505486
------------------------------------------------------------------------
r59355 | normal | 2017-07-18 13:30:08 +0900 (Tue, 18 Jul 2017) | 9 lines

newhash insn reuses existing keys

This gives the newhash VM instruction the same string reuse
capabilities as rb_hash_aset.

* st.c (str_key): new wrapper function to call rb_fstring_existing
  (rb_hash_bulk_insert): use str_key
* test/ruby/test_optimization.rb (test_hash_reuse_fstring):
  ensure key reuse for newhash instructions
------------------------------------------------------------------------
r59354 | normal | 2017-07-18 11:29:59 +0900 (Tue, 18 Jul 2017) | 26 lines

hash: keep fstrings of tainted strings for string keys

The same hash keys may be loaded from tainted data sources
frequently (e.g. parsing headers from socket or loading
YAML data from a file).  If a non-tainted fstring already
exists (because the application expects the hash key),
cache and deduplicate the tainted version in the new
tainted_frozen_strings table.

For non-embedded strings, this also allows sharing with the
underlying malloc-ed data.

* vm_core.h (rb_vm_struct): add tainted_frozen_strings
* vm.c (ruby_vm_destruct): free tainted_frozen_strings
  (Init_vm_objects): initialize tainted_frozen_strings
  (rb_vm_tfstring_table): accessor for tainted_frozen_strings
* internal.h: declare rb_fstring_existing, rb_vm_tfstring_table
* hash.c (fstring_existing_str): remove (moved to string.c)
  (hash_aset_str): use rb_fstring_existing
* string.c (rb_fstring_existing): new, based on fstring_existing_str
  (tainted_fstr_update): new
  (rb_fstring_existing0): new, based on fstring_existing_str
  (rb_tainted_fstring_existing): new, special case for tainted strings
  (rb_str_free): delete from tainted_frozen_strings table
* test/ruby/test_optimization.rb (test_hash_reuse_fstring): new test
  [ruby-core:82012] [Bug #13737]
------------------------------------------------------------------------
r59353 | normal | 2017-07-18 11:10:50 +0900 (Tue, 18 Jul 2017) | 6 lines

doc/extension.rdoc: start documenting threading and IO APIs

This will hopefully be useful for folks writing C extensions.

* doc/extension.rdoc: start documenting threading and IO APIs
  [ruby-core:82016] [Feature #13740]
------------------------------------------------------------------------
r59352 | svn | 2017-07-18 10:59:29 +0900 (Tue, 18 Jul 2017) | 1 line

* 2017-07-18
------------------------------------------------------------------------
r59351 | normal | 2017-07-18 10:59:28 +0900 (Tue, 18 Jul 2017) | 8 lines

webrick: fix SNI support

* lib/webrick/https.rb: check ssl context of virtual host.
* lib/webrick/ssl.rb: ensure to return ssl context.
* test/webrick/test_https.rb: test returned cert is correct.
  [Feature #13729][ruby-dev:50173]

Author: Tietew <tietew@gmail.com>
------------------------------------------------------------------------
r59350 | nobu | 2017-07-17 10:16:07 +0900 (Mon, 17 Jul 2017) | 4 lines

gmake.mk: extract after update gems

* defs/gmake.mk (extract-gems): should wait for update-gems to
  finish when doing both.
------------------------------------------------------------------------
r59349 | nobu | 2017-07-17 09:11:38 +0900 (Mon, 17 Jul 2017) | 10 lines

parse.y: refine literal error messages

* parse.y (parser_yyerror): strip newline in error source which
  will not be printed, when lex_p has passed it.

* parse.y (parser_tokadd_utf8): unterminated Unicode escape even
  after invalid Unicode escape.

* parse.y (parser_parse_string): show the error source line when
  unterminated literal at end of file.
------------------------------------------------------------------------
r59348 | nobu | 2017-07-17 08:45:48 +0900 (Mon, 17 Jul 2017) | 7 lines

parse.y: refine invalid Unicode escape message

* parse.y (literal_flush): rename from numeric_literal_flush, as
  it is not just for numerics now.

* parse.y (parser_tokadd_codepoint): show invalid character
  position, but not the start of Unicode escape.
------------------------------------------------------------------------
r59347 | svn | 2017-07-17 00:28:51 +0900 (Mon, 17 Jul 2017) | 1 line

* 2017-07-17
------------------------------------------------------------------------
r59346 | nobu | 2017-07-17 00:28:50 +0900 (Mon, 17 Jul 2017) | 4 lines

assertions.rb: frozen string buffer

* test/lib/test/unit/assertions.rb (assert_pattern_list): make
  frozen string literals modifiable as buffers.
------------------------------------------------------------------------
r59345 | nobu | 2017-07-16 23:32:41 +0900 (Sun, 16 Jul 2017) | 1 line

parse.y (numeric_literal_flush): fix typo
------------------------------------------------------------------------
r59344 | nobu | 2017-07-16 22:39:18 +0900 (Sun, 16 Jul 2017) | 5 lines

parse.y: utf-8 codepoints

* parse.y (parser_tokadd_utf8): skip spaces in the current line,
  without advancing the line, to get rid of dangling pointer.
  [ruby-core:82029] [Bug #13742]
------------------------------------------------------------------------
r59343 | svn | 2017-07-16 20:35:27 +0900 (Sun, 16 Jul 2017) | 1 line

* 2017-07-16
------------------------------------------------------------------------
r59342 | nobu | 2017-07-16 20:35:27 +0900 (Sun, 16 Jul 2017) | 1 line

Use assert_syntax_error
------------------------------------------------------------------------
r59341 | nobu | 2017-07-15 17:29:03 +0900 (Sat, 15 Jul 2017) | 4 lines

parse.y: refine error messages

* parse.y (parser_read_escape, parser_tok_hex): refine error
  messages.  point from the backslash up to the invalid char.
------------------------------------------------------------------------
r59340 | yui-knk | 2017-07-15 16:24:12 +0900 (Sat, 15 Jul 2017) | 5 lines

test_lexer.rb: require ripper directly

* test/ripper/test_lexer.rb: This file does not use
  DummyParser, so requiring ripper directly instead of
  requiring dummyparser.
------------------------------------------------------------------------
r59339 | svn | 2017-07-15 13:35:19 +0900 (Sat, 15 Jul 2017) | 1 line

* 2017-07-15
------------------------------------------------------------------------
r59338 | kazu | 2017-07-15 13:35:18 +0900 (Sat, 15 Jul 2017) | 3 lines

Fix warning: shadowing outer local variable - a

[ci skip][Fix GH-1628]
------------------------------------------------------------------------
r59337 | nobu | 2017-07-14 22:50:00 +0900 (Fri, 14 Jul 2017) | 5 lines

zlib.c: fix unnormalized Fixnum

* ext/zlib/zlib.c (rb_gzfile_total_out): cast to long not to
  result in an unsigned long to normalized to Fixnum on LLP64
  platforms.  [ruby-core:81488]
------------------------------------------------------------------------
r59336 | nobu | 2017-07-14 19:53:35 +0900 (Fri, 14 Jul 2017) | 4 lines

io.c: textmode if newline decorator

* io.c (validate_enc_binmode): newline decorator implies text mode
  now.  [ruby-core:80270] [Bug #13350]
------------------------------------------------------------------------
r59335 | nobu | 2017-07-14 19:31:05 +0900 (Fri, 14 Jul 2017) | 7 lines

VPATH for ripper

* common.mk (ripper.c): pass the build directory path for id.h
  which may be generated there.

* ext/ripper/depend (ripper.y): search the top build directory and
  the top source directory.
------------------------------------------------------------------------
r59334 | rhe | 2017-07-14 18:41:05 +0900 (Fri, 14 Jul 2017) | 4 lines

hash.c: fix possible crash in Hash#transform_keys!

Fix up r59328. It is possible that the given block abuses
ObjectSpace.each_object to shrink the temporary array.
------------------------------------------------------------------------
r59333 | naruse | 2017-07-14 18:17:55 +0900 (Fri, 14 Jul 2017) | 3 lines

Zlib::GzipReader#pos underflows after calling #ungetbyte or #ungetc at start of file [Bug #13616]

patched by Andrew Haines <andrew@haines.org.nz> [ruby-core:81488]
------------------------------------------------------------------------
r59332 | knu | 2017-07-14 17:46:13 +0900 (Fri, 14 Jul 2017) | 1 line

Alias Set#to_s to #inspect [ruby-core:81753] [Feature #13676]
------------------------------------------------------------------------
r59331 | knu | 2017-07-14 17:46:10 +0900 (Fri, 14 Jul 2017) | 1 line

Make tests for Set#inspect more straightforward
------------------------------------------------------------------------
r59330 | hsbt | 2017-07-14 16:47:21 +0900 (Fri, 14 Jul 2017) | 1 line

Update gemspec for standalone gem that is ruby/date repository.
------------------------------------------------------------------------
r59329 | hsbt | 2017-07-14 16:13:17 +0900 (Fri, 14 Jul 2017) | 1 line

Fixup r59327. Forgot to update version number.
------------------------------------------------------------------------
r59328 | mrkn | 2017-07-14 15:44:00 +0900 (Fri, 14 Jul 2017) | 9 lines

hash.c: Add Hash#transform_keys and Hash#transform_keys!

* hash.c (transform_keys_i, rb_hash_transform_keys): Add Hash#transform_keys.
  [Feature #13583] [ruby-core:81290]

* hash.c (rb_hash_transform_keys_bang): Add Hash#transform_keys!.
  [Feature #13583] [ruby-core:81290]

* test/ruby/test_hash.rb: Add tests for above changes.
------------------------------------------------------------------------
r59327 | hsbt | 2017-07-14 15:15:58 +0900 (Fri, 14 Jul 2017) | 6 lines

Merge psych-3.0.0.beta3 from ruby/psych.

  * Rely on encoding tags to determine if string should be dumped as binary.
    https://github.com/ruby/psych/commit/8949a47b8cee31e03e21608406ba116adcf74054
  * Specify "frozen_string_literal: true".
  * Support to binary release for mingw32 platform.
------------------------------------------------------------------------
r59326 | hsbt | 2017-07-14 14:33:15 +0900 (Fri, 14 Jul 2017) | 1 line

Added psych entry to package table and fixed sync instructions.
------------------------------------------------------------------------
r59325 | nobu | 2017-07-14 13:43:16 +0900 (Fri, 14 Jul 2017) | 4 lines

process.c: null bytes

* process.c (rlimit_type_by_sym): prohibit null bytes in key
  names.  [ruby-core:82033] [Bug #13744]
------------------------------------------------------------------------
r59324 | kazu | 2017-07-14 08:55:41 +0900 (Fri, 14 Jul 2017) | 1 line

Use tr! instead of gsub!
------------------------------------------------------------------------
r59323 | svn | 2017-07-14 05:47:37 +0900 (Fri, 14 Jul 2017) | 1 line

* 2017-07-14
------------------------------------------------------------------------
r59322 | normal | 2017-07-14 05:47:36 +0900 (Fri, 14 Jul 2017) | 8 lines

process.c: handle dynamic :rlimit_* symbols in spawn execopts

* process.c (rb_execarg_addopt_rlimit): hoist out of rb_execarg_addopt
  (rlimit_type_by_sym): new wrapper for dynamic symbol
  (rb_execarg_addopt): check for dsym via rlimit_type_by_sym
* test/ruby/test_process.rb (test_execopts_rlimit): check dsym w/o pindown
  Add extra check for bogus rlimit args, too.
  [ruby-core:82033] [Bug #13744]
------------------------------------------------------------------------
r59321 | hsbt | 2017-07-13 18:46:16 +0900 (Thu, 13 Jul 2017) | 7 lines

Use Test::Unit::TestCase instead of MiniTest::Unit::TestCase. Because
tests of fiddle already used customized assertions of ruby core.

  * test/fiddle/helper.rb: Use Test::Unit::TestCase for base class of
    testcase.
  * test/fiddle/test_*.rb: Use assert_raise instead of assert_raises.
    Remove needless includes for Test::Unit::Assertions.
------------------------------------------------------------------------
r59320 | nobu | 2017-07-13 16:00:16 +0900 (Thu, 13 Jul 2017) | 4 lines

parse.y: flush debug output

* parse.y (parser_compile_error): flush debug output before
  compile error message, to keep the order.
------------------------------------------------------------------------
r59319 | normal | 2017-07-13 03:31:07 +0900 (Thu, 13 Jul 2017) | 5 lines

doc/extension.rdoc: update wikipedia link to HTTPS

Avoid the latency for HTTP -> HTTPS redirect

* doc/extension.rdoc: update wikipedia link to HTTPS
------------------------------------------------------------------------
r59318 | svn | 2017-07-13 00:02:10 +0900 (Thu, 13 Jul 2017) | 1 line

* 2017-07-13
------------------------------------------------------------------------
r59317 | kazu | 2017-07-13 00:02:09 +0900 (Thu, 13 Jul 2017) | 1 line

Fix indent [ci skip]
------------------------------------------------------------------------
r59315 | nobu | 2017-07-12 18:44:45 +0900 (Wed, 12 Jul 2017) | 1 line

disable r59314 on mswin
------------------------------------------------------------------------
r59314 | nobu | 2017-07-12 14:30:43 +0900 (Wed, 12 Jul 2017) | 5 lines

gc.c: restrict RGENGC_DEBUG

* gc.c (RGENGC_DEBUG_ENABLED): restrict runtime ruby_rgengc_debug
  level up to -RGENGC_DEBUG, to reduce runtime branches in inner
  loops.
------------------------------------------------------------------------
r59313 | svn | 2017-07-12 11:49:54 +0900 (Wed, 12 Jul 2017) | 1 line

* 2017-07-12
------------------------------------------------------------------------
r59312 | nobu | 2017-07-12 11:49:53 +0900 (Wed, 12 Jul 2017) | 4 lines

optparse.rb: get rid of eval

* lib/optparse.rb: try Float() and Integer() instead of eval,
  which does too much things.
------------------------------------------------------------------------
r59311 | svn | 2017-07-11 16:42:27 +0900 (Tue, 11 Jul 2017) | 1 line

* 2017-07-11
------------------------------------------------------------------------
r59310 | ko1 | 2017-07-11 16:42:27 +0900 (Tue, 11 Jul 2017) | 5 lines

tainted string should be tainted.

* hash.c (hash_aset_str): create frozen string for tainted objects.
  (should not use fsting table on this case).

------------------------------------------------------------------------
r59309 | nobu | 2017-07-10 20:42:07 +0900 (Mon, 10 Jul 2017) | 5 lines

compile.c: simplify defined_expr0

* compile.c (defined_expr0): exapnd defined_expr macro.

* compile.c (defined_expr0): reduce duplicate code.
------------------------------------------------------------------------
r59308 | nobu | 2017-07-10 16:37:18 +0900 (Mon, 10 Jul 2017) | 1 line

test_rubyoptions.rb: assert -00
------------------------------------------------------------------------
r59307 | takano32 | 2017-07-10 15:57:50 +0900 (Mon, 10 Jul 2017) | 7 lines

a64: fix crash on register stack mark/sweep pass

* thread_pthread.c: move 'register_stack_start' earlier.
  [ruby-core:79928] [Bug #13284] [Fix GH-1625]

Author:    Sergei Trofimovich <slyfox@gentoo.org>

------------------------------------------------------------------------
r59306 | nobu | 2017-07-10 09:41:21 +0900 (Mon, 10 Jul 2017) | 1 line

hash.c: prefer value cast to pointer cast
------------------------------------------------------------------------
r59305 | svn | 2017-07-10 08:04:44 +0900 (Mon, 10 Jul 2017) | 1 line

* 2017-07-10
------------------------------------------------------------------------
r59304 | normal | 2017-07-10 08:04:43 +0900 (Mon, 10 Jul 2017) | 19 lines

Hash#[]= deduplicates string keys if (and only if) fstring exists

In typical applications, hash entries are read after being
written to.  Blindly writing to hashes which are never read
makes little sense. So, for any hash which is read from, an
fstring entry for the key should already exist for the key.

We no longer blindly create fstrings if the code is blindly
setting random hash keys, preventing the performance regression
in the reverted r43870.

Regarding <https://bugs.ruby-lang.org/issues/9188>, this has a
minimum impact on the bm_so_k_nucleotide where hash keys are set
and not reused, performance is within 1-2% of existing cases.

* hash.c: #include gc.h for rb_objspace_garbage_object_p
  (hash_aset_str): do read-only check of fstring table and
  reuse fstring if it exists and is still alive (not garbage)
  [ruby-core:81942] [Feature #13725]
------------------------------------------------------------------------
r59292 | nobu | 2017-07-09 13:49:15 +0900 (Sun, 09 Jul 2017) | 5 lines

downloader.rb: get rid of symlinks in dist files

* tool/downloader.rb: download to the target file directly if
  CACHE_SAVE=no, to get rid of symlinks in dist files.
  [ruby-core:81887] [Bug #13709]
------------------------------------------------------------------------
r59291 | nobu | 2017-07-09 13:20:48 +0900 (Sun, 09 Jul 2017) | 4 lines

make-snapshot: generate ChangeLog iff not exist

* tool/make-snapshot (package): ChangeLog had existed in pre-2.4
  revisions, but not doc/ChangeLog-YYYY.  fix for 2..3.
------------------------------------------------------------------------
r59290 | svn | 2017-07-09 13:17:50 +0900 (Sun, 09 Jul 2017) | 1 line

* 2017-07-09
------------------------------------------------------------------------
r59289 | nobu | 2017-07-09 13:17:49 +0900 (Sun, 09 Jul 2017) | 5 lines

make-snapshot: touch-unicode-files for 2.4

* tool/make-snapshot (package): fallback touch-unicode-files for
  2.4, which has been introduced to reduce downloads on CI.
  [ruby-core:81972] [Bug #13734]
------------------------------------------------------------------------
r59288 | nobu | 2017-07-08 21:31:55 +0900 (Sat, 08 Jul 2017) | 1 line

* template/exts.mk.tmpl: extract SUBMAKEOPTS from sub exts.mk files too.  [Bug #13730]
------------------------------------------------------------------------
r59287 | nobu | 2017-07-08 11:22:20 +0900 (Sat, 08 Jul 2017) | 6 lines

assertions.rb: syntax_check for other impl

* test/lib/test/unit/assertions.rb (syntax_check): use eval
  instead of RubyVM::InstructionSequence.compile so that other
  implementations can share the tests.
  [ruby-core:81935] [Bug #13723]
------------------------------------------------------------------------
r59285 | nobu | 2017-07-08 11:05:55 +0900 (Sat, 08 Jul 2017) | 1 line

.travis.yml: update dist to trusty
------------------------------------------------------------------------
r59284 | normal | 2017-07-08 02:59:09 +0900 (Sat, 08 Jul 2017) | 1 line

NEWS: note [Feature #13517] is Linux-only (no side-effects on _*nonblock)
------------------------------------------------------------------------
r59283 | normal | 2017-07-08 02:41:08 +0900 (Sat, 08 Jul 2017) | 1 line

NEWS: entry for WEBRick SNI support [Feature #13729]
------------------------------------------------------------------------
r59282 | svn | 2017-07-08 02:09:40 +0900 (Sat, 08 Jul 2017) | 1 line

* properties.
------------------------------------------------------------------------
r59281 | normal | 2017-07-08 02:09:39 +0900 (Sat, 08 Jul 2017) | 7 lines

webrick: add Server Name Indication (SNI)

* lib/webrick/https.rb: servername_cb implementation.
* lib/webrick/ssl.rb: abstract servername_cb.
* test/webrick/test_https.rb: test.
  [ruby-dev:50165] [Feature #13729]
  Author: Tietew <tietew@gmail.com>
------------------------------------------------------------------------
r59280 | svn | 2017-07-08 01:53:04 +0900 (Sat, 08 Jul 2017) | 1 line

* 2017-07-08
------------------------------------------------------------------------
r59279 | normal | 2017-07-08 01:53:03 +0900 (Sat, 08 Jul 2017) | 3 lines

webrick: become maintainer

<CAK6HhsrshX7s3qai4usbXknTQnA4GoRThJcQ_Ea=WgTG2Gu0QA@mail.gmail.com>
------------------------------------------------------------------------
r59278 | nobu | 2017-07-07 21:25:49 +0900 (Fri, 07 Jul 2017) | 5 lines

Run single downloader

* common.mk (update-unicode-property-files, update-unicode-files):
  download in single process for each targets, not for each files
  in parallel, to get rid of conflicts.
------------------------------------------------------------------------
r59276 | svn | 2017-07-07 11:14:58 +0900 (Fri, 07 Jul 2017) | 1 line

* 2017-07-07
------------------------------------------------------------------------
r59275 | usa | 2017-07-07 11:14:57 +0900 (Fri, 07 Jul 2017) | 3 lines

* tool/redmine-backporter.rb (show): just report and ignore if a feature ticket
  is specified instead of aborting.

------------------------------------------------------------------------
r59273 | nobu | 2017-07-06 20:49:03 +0900 (Thu, 06 Jul 2017) | 8 lines

Fix DecimalInteger converting to octal bug

Previously if the input started with a '0' then it will be converted
as octal even though it has been specified as a decimal. This commit
forces the number to be interpreted as a decimal.

[ruby-core:81927] [Bug #13722] [Fix GH-1665]
Author:    william <william.mccumstie@outlook.com>
------------------------------------------------------------------------
r59272 | rhe | 2017-07-06 16:21:17 +0900 (Thu, 06 Jul 2017) | 4 lines

string.c: preserve coderange in String#setbyte

Fix a wrong jump so replacing a byte in an ASCII-only string with an
ASCII character won't clear the coderange.
------------------------------------------------------------------------
r59271 | rhe | 2017-07-06 16:21:16 +0900 (Thu, 06 Jul 2017) | 3 lines

string.c: remove dead code in str_fill_term()

The length of a string never exceeds the capacity.
------------------------------------------------------------------------
r59270 | svn | 2017-07-06 13:12:52 +0900 (Thu, 06 Jul 2017) | 1 line

* 2017-07-06
------------------------------------------------------------------------
r59269 | nobu | 2017-07-06 13:12:51 +0900 (Thu, 06 Jul 2017) | 5 lines

lexer.rb: ignore dedented space

* ext/ripper/lib/ripper/lexer.rb (on_heredoc_dedent): replace an
  empty string content because of dedentation with :on_ignored_sp.
  an empty token makes the sorted order unstable.
------------------------------------------------------------------------
r59268 | rhe | 2017-07-05 18:05:53 +0900 (Wed, 05 Jul 2017) | 4 lines

un.rb: use OpenSSL::PKey.read instead of OpenSSL::PKey::RSA.new

Also, error out if --ssl-private-key option is not given, since
specifying only the certificate makes no sense.  [Feature #13714]
------------------------------------------------------------------------
r59266 | nobu | 2017-07-05 15:32:54 +0900 (Wed, 05 Jul 2017) | 1 line

debug.c: add FMODE constants
------------------------------------------------------------------------
r59265 | nobu | 2017-07-05 15:27:43 +0900 (Wed, 05 Jul 2017) | 5 lines

un.rb: support https

* lib/un.rb: add https support.  based on the patch by Flavio
  Castelli <flavio@castelli.name> in [ruby-core:81901].
  [Feature #13714]
------------------------------------------------------------------------
r59264 | normal | 2017-07-05 02:27:40 +0900 (Wed, 05 Jul 2017) | 5 lines

tool/mk_call_iseq_optimized.rb: fix generated comment

"tool/mkcall_iseq.rb" never existed in our repo.

* tool/mk_call_iseq_optimized.rb: fix generated comment
------------------------------------------------------------------------
r59263 | svn | 2017-07-05 01:02:20 +0900 (Wed, 05 Jul 2017) | 1 line

* properties.
------------------------------------------------------------------------
r59262 | mame | 2017-07-05 01:02:19 +0900 (Wed, 05 Jul 2017) | 5 lines

Use lcov visualizer for gcov statistics

This experimental feature is only for Ruby-core team, not for casual users.

Usage: `./configure --enable-gcov && make && make exam && make lcov`
------------------------------------------------------------------------
r59261 | svn | 2017-07-05 01:02:18 +0900 (Wed, 05 Jul 2017) | 1 line

* 2017-07-05
------------------------------------------------------------------------
r59260 | mame | 2017-07-05 01:02:18 +0900 (Wed, 05 Jul 2017) | 7 lines

tool/run-gcov.rb: ignore rubyspec_temp directory

rubyspec compiles the extension libraries for capi specs in a temporary
directory, and after that, deletes the directory.  gcov resurrects the
directory to save coverage statistics (.gcda files).  However, the
source and profiling artifacts (.gcno files) have been deleted.
So, we need to ignore the .gcda files.
------------------------------------------------------------------------
r59259 | nobu | 2017-07-04 14:42:04 +0900 (Tue, 04 Jul 2017) | 5 lines

vm_args.c: improve keyword argument errors

* vm_args.c (argument_arity_error): improve required keyword
  argument errors when non-keyword arguments given.
  [ruby-core:79439] [Bug #13196]
------------------------------------------------------------------------
r59258 | nobu | 2017-07-04 13:23:06 +0900 (Tue, 04 Jul 2017) | 6 lines

time.c: preserve marshalled timezone

* time.c (time_add): preserve timezone name restored by Marshal.
  [ruby-core:81892] [Bug #13710]

* time.c (time_mload): reset localtime if having timezone.
------------------------------------------------------------------------
r59257 | svn | 2017-07-04 08:42:13 +0900 (Tue, 04 Jul 2017) | 1 line

* 2017-07-04
------------------------------------------------------------------------
r59256 | nobu | 2017-07-04 08:42:12 +0900 (Tue, 04 Jul 2017) | 4 lines

win32.c: restrict cursor move

* win32/win32.c (constat_apply): restrict cursor move in visible
  screen only.  [ruby-core:81883] [Bug #13707]
------------------------------------------------------------------------
r59255 | nobu | 2017-07-03 19:56:21 +0900 (Mon, 03 Jul 2017) | 4 lines

win32.c: clear relative to screen

* win32/win32.c (constat_apply): clear visible screen only, not
  the entire buffer.  [ruby-core:81883] [Bug #13707]
------------------------------------------------------------------------
r59254 | nobu | 2017-07-03 19:22:15 +0900 (Mon, 03 Jul 2017) | 4 lines

win32.c: cursor relative to screen

* win32/win32.c (constat_apply): move relative to visible screen,
  not the entire buffer.  [ruby-core:81883] [Bug #13707]
------------------------------------------------------------------------
r59253 | naruse | 2017-07-03 17:08:29 +0900 (Mon, 03 Jul 2017) | 1 line

Suppress warning: method redefined; discarding old ==
------------------------------------------------------------------------
r59252 | svn | 2017-07-03 11:13:59 +0900 (Mon, 03 Jul 2017) | 1 line

* 2017-07-03
------------------------------------------------------------------------
r59251 | hsbt | 2017-07-03 11:13:59 +0900 (Mon, 03 Jul 2017) | 4 lines

Added sync to all of default gems command.

  * Fix command of FileUtils sync operation. test/fileutils is a directory.
  * When not given gem name option, do sync all of gems.
------------------------------------------------------------------------
r59250 | ktsj | 2017-07-02 19:38:38 +0900 (Sun, 02 Jul 2017) | 6 lines

Symbol#== should be able to be redefined

* vm.c (vm_init_redefined_flag): set redefinition flag for Symbol#==.
  The bug was introduced in r58895.

* test/ruby/test_symbol.rb: test for above.
------------------------------------------------------------------------
r59249 | svn | 2017-07-02 06:17:26 +0900 (Sun, 02 Jul 2017) | 1 line

* 2017-07-02
------------------------------------------------------------------------
r59248 | eregon | 2017-07-02 06:17:25 +0900 (Sun, 02 Jul 2017) | 1 line

Used a fixed seed in Random#rand spec
------------------------------------------------------------------------
r59246 | nobu | 2017-07-01 11:01:05 +0900 (Sat, 01 Jul 2017) | 4 lines

parse.y: f_margs parser events

* parse.y (f_margs): implemented parser events for massign
  formal arguments.  [ruby-core:81848] [Bug #13701]
------------------------------------------------------------------------
r59245 | nobu | 2017-07-01 10:51:17 +0900 (Sat, 01 Jul 2017) | 4 lines

parse.y: mlhs_add_post

* parse.y (mlhs_add_post): new parser event corresponding to
  POSTARG.
------------------------------------------------------------------------
r59244 | svn | 2017-07-01 10:29:23 +0900 (Sat, 01 Jul 2017) | 1 line

* 2017-07-01
------------------------------------------------------------------------
r59243 | nobu | 2017-07-01 10:29:22 +0900 (Sat, 01 Jul 2017) | 7 lines

test_parser_events.rb: simplify

* test/ripper/dummyparser.rb (DummyParser): simplified mlhs node
  representation.

* test/ripper/test_parser_events.rb (test_mlhs_add_star):
  simplified assertions.
------------------------------------------------------------------------
r59213 | nobu | 2017-06-30 13:19:12 +0900 (Fri, 30 Jun 2017) | 4 lines

main.c: RUBY_DEBUG_ENV in devel

* main.c (RUBY_DEBUG_ENV): default to enabled in the development
  version.
------------------------------------------------------------------------
r59212 | nobu | 2017-06-30 11:09:42 +0900 (Fri, 30 Jun 2017) | 7 lines

compile.c: dump iseq

* compile.c (append_compile_error): raise a fatal error when
  compile_debug is enabled.

* compile.c (COMPILE_ERROR): dump the disassembled instruction
  instruction sequence always.
------------------------------------------------------------------------
r59211 | nobu | 2017-06-30 10:56:53 +0900 (Fri, 30 Jun 2017) | 6 lines

vm_insnhelper.c: dump iseq

* vm_insnhelper.c (vm_stack_consistency_error): raise a fatal
  error with the disassembled instruction sequence, in the
  development version, instead of very rarely useful rb_bug in
  such case.
------------------------------------------------------------------------
r59210 | normal | 2017-06-30 07:40:36 +0900 (Fri, 30 Jun 2017) | 5 lines

array.c: more predefined IDs

* array.c (id_cmp): change to macro for OPTIMIZED_CMP
  (rb_ary_repeated_permutation_size): s/id_power/idPow/
  (Init_Array): remove id_cmp and id_power
------------------------------------------------------------------------
r59209 | svn | 2017-06-30 07:34:19 +0900 (Fri, 30 Jun 2017) | 1 line

* 2017-06-30
------------------------------------------------------------------------
r59208 | normal | 2017-06-30 07:34:19 +0900 (Fri, 30 Jun 2017) | 8 lines

remove unused rb_obj_basic_to_s_p function

This hasn't been used since r36709 (2012-08-15)
("Kernel#inspect: improve consistency and do not call #to_s.")
and was never part of public API in include/ruby/

* class.c (rb_obj_basic_to_s_p): remove function
* internal.h (rb_obj_basic_to_s_p): remove declaration
------------------------------------------------------------------------
r59207 | svn | 2017-06-29 23:35:39 +0900 (Thu, 29 Jun 2017) | 1 line

* properties.
------------------------------------------------------------------------
r59206 | svn | 2017-06-29 23:35:39 +0900 (Thu, 29 Jun 2017) | 1 line

* append newline at EOF.
------------------------------------------------------------------------
r59205 | eregon | 2017-06-29 23:35:37 +0900 (Thu, 29 Jun 2017) | 1 line

Update to ruby/spec@abf1700
------------------------------------------------------------------------
r59204 | svn | 2017-06-29 23:35:11 +0900 (Thu, 29 Jun 2017) | 1 line

* properties.
------------------------------------------------------------------------
r59203 | eregon | 2017-06-29 23:35:09 +0900 (Thu, 29 Jun 2017) | 1 line

Update to ruby/mspec@021a119
------------------------------------------------------------------------
r59202 | nobu | 2017-06-29 13:01:30 +0900 (Thu, 29 Jun 2017) | 6 lines

compile.c: disallow next in once

* compile.c (iseq_compile_each0): turned dregx context in "once"
  into "guarded" type from "block" type, to disallow `next`,
  `break`, `redo` as well as outside "once".
  [ruby-core:81805] [Bug #13690]
------------------------------------------------------------------------
r59201 | svn | 2017-06-29 00:25:31 +0900 (Thu, 29 Jun 2017) | 1 line

* 2017-06-29
------------------------------------------------------------------------
r59200 | ko1 | 2017-06-29 00:25:30 +0900 (Thu, 29 Jun 2017) | 8 lines

introduce rb_fiber_t::first_proc.

* cont.c (rb_fiber_t): add rb_fiber_t::first_proc and do not use
  rb_thread_t::first_proc which should be thread local.
  [Bug #13689]

* test/ruby/test_thread.rb: test for [Bug #13689].

------------------------------------------------------------------------
r59199 | ko1 | 2017-06-28 23:27:49 +0900 (Wed, 28 Jun 2017) | 7 lines

move fields to ec.

* vm_core.h (rb_thread.h): move errinfo and trace_arg to
  rb_execution_context_t.

* cont.c (fiber_switch, rb_cont_call): do not restore "trace_arg" here.

------------------------------------------------------------------------
r59198 | svn | 2017-06-28 19:18:04 +0900 (Wed, 28 Jun 2017) | 1 line

* properties.
------------------------------------------------------------------------
r59197 | hsbt | 2017-06-28 19:18:03 +0900 (Wed, 28 Jun 2017) | 1 line

Added sync tool for default gems from github master.
------------------------------------------------------------------------
r59196 | nobu | 2017-06-28 15:13:00 +0900 (Wed, 28 Jun 2017) | 4 lines

parse.y: fix token

* parse.y (parser_parse_string): return proper token tREGEXP_END
  at unterminated regexp.  [Bug #13363]
------------------------------------------------------------------------
r59195 | ko1 | 2017-06-28 15:09:06 +0900 (Wed, 28 Jun 2017) | 5 lines

move fields to ec.

* vm_core.h (rb_thread_t): move root_lep, root_svar and ensure_list
  to rb_execution_context_t.

------------------------------------------------------------------------
r59194 | nobu | 2017-06-28 14:38:27 +0900 (Wed, 28 Jun 2017) | 4 lines

parse.y: add ellipsis

* parse.y (parser_yyerror): add ellipsis properly when error line
  is truncated.
------------------------------------------------------------------------
r59193 | ko1 | 2017-06-28 13:57:02 +0900 (Wed, 28 Jun 2017) | 1 line

fix to check thread type
------------------------------------------------------------------------
r59192 | ko1 | 2017-06-28 13:49:30 +0900 (Wed, 28 Jun 2017) | 7 lines

introduce rb_thread_ptr() to replace GetThreadPtr().

* vm_core.h (rb_thread_ptr): added to replace GetThreadPtr() macro.

* thread.c (in some functions: use "target_th" instead of "th" to make clear
  that it is not a current thread.

------------------------------------------------------------------------
r59191 | nobu | 2017-06-28 13:08:51 +0900 (Wed, 28 Jun 2017) | 4 lines

parse.y: flush numeric token

* parse.y (parser_number_literal_suffix, parse_numeric): flush
  numeric token so following unexpected token part is marked.
------------------------------------------------------------------------
r59190 | ko1 | 2017-06-28 11:50:56 +0900 (Wed, 28 Jun 2017) | 4 lines

move storages to ec.

* vm_core.h (rb_thread_t): move storages to rb_execution_context_t.

------------------------------------------------------------------------
r59189 | duerst | 2017-06-28 11:28:00 +0900 (Wed, 28 Jun 2017) | 1 line

add two tests
------------------------------------------------------------------------
r59188 | nobu | 2017-06-28 11:02:38 +0900 (Wed, 28 Jun 2017) | 4 lines

parse.y: fix parser_yyerror

* parse.y (parser_yyerror): fix buffer overflow at truncation of
  error line.  [ruby-core:81790] [Bug #13687]
------------------------------------------------------------------------
r59187 | nobu | 2017-06-28 10:49:44 +0900 (Wed, 28 Jun 2017) | 1 line

parse.y: prefer enum yytokentype instead to int
------------------------------------------------------------------------
r59186 | svn | 2017-06-28 02:10:57 +0900 (Wed, 28 Jun 2017) | 1 line

* 2017-06-28
------------------------------------------------------------------------
r59185 | nobu | 2017-06-28 02:10:56 +0900 (Wed, 28 Jun 2017) | 4 lines

downloader.rb: get rid of symlinks

* tool/downloader.rb: do not save downloaded files to cache.
  [ruby-core:81780] [Bug #13684]
------------------------------------------------------------------------
r59184 | nobu | 2017-06-27 23:09:08 +0900 (Tue, 27 Jun 2017) | 5 lines

fix return in toplevel ensure

* compile.c (iseq_compile_each0): adjust stack after return in
  toplevel ensure, when the value is used.
  [ruby-core:81777] [Bug #13682]
------------------------------------------------------------------------
r59183 | nobu | 2017-06-27 15:57:34 +0900 (Tue, 27 Jun 2017) | 8 lines

fix return in toplevel rescue/ensure

* compile.c (iseq_compile_each0): throw TAG_RETURN at return in
  toplevel rescue/ensure to adjust VM stack properly.
  [ruby-core:81777] [Bug #13682]

* vm_insnhelper.c (vm_throw_start): allow return in toplevel
  rescue/ensure.
------------------------------------------------------------------------
r59182 | svn | 2017-06-27 12:45:56 +0900 (Tue, 27 Jun 2017) | 1 line

* 2017-06-27
------------------------------------------------------------------------
r59181 | nobu | 2017-06-27 12:45:55 +0900 (Tue, 27 Jun 2017) | 6 lines

vm_insnhelper.c: break in once

* vm_insnhelper.c (vm_throw_start): size of catch table has been
  included in iseq_catch_table struct, which could be NULL, since
  2.2.  e.g., proc-closure in `once'.
  [ruby-core:81775] [Bug #13680]
------------------------------------------------------------------------
r59180 | naruse | 2017-06-26 19:37:13 +0900 (Mon, 26 Jun 2017) | 1 line

webrick is _unmaintained_
------------------------------------------------------------------------
r59179 | nobu | 2017-06-26 19:31:34 +0900 (Mon, 26 Jun 2017) | 4 lines

parse.y: line number of bin op

* parse.y (call_bin_op_gen): adjust line number to the receiver,
  instead of the rhs.
------------------------------------------------------------------------
r59178 | nobu | 2017-06-26 18:40:39 +0900 (Mon, 26 Jun 2017) | 16 lines

parse.y: mark error token

* parse.y (parser_yyerror): mark the whole last token which caused
  the error, not only the end.

before:
  ```
  if end
        ^
  ```

after:
  ```
  if end
     ^~~
  ```
------------------------------------------------------------------------
r59177 | ko1 | 2017-06-26 16:56:44 +0900 (Mon, 26 Jun 2017) | 5 lines

move several fields from rb_thread_t to rb_execution_context_t.

* vm_core.h (rb_thread_t): move several fields which are copied at cont.c
  to rb_execution_context_t.

------------------------------------------------------------------------
r59176 | ko1 | 2017-06-26 16:46:11 +0900 (Mon, 26 Jun 2017) | 4 lines

copy ec on Fiber.

* cont.c (cont_restore_thread): on Fiber we only need to copy ec struct.

------------------------------------------------------------------------
r59175 | ko1 | 2017-06-26 14:36:10 +0900 (Mon, 26 Jun 2017) | 4 lines

add "FIBER_" prefix.

* cont.c (enum fiber_status): add "FIBER_" prefix for all names.

------------------------------------------------------------------------
r59174 | ko1 | 2017-06-26 14:30:07 +0900 (Mon, 26 Jun 2017) | 7 lines

Do not store/restore Thread#status on fiber switching.

* cont.c (cont_restore_thread): On Fiber switching, thread status shold be
  THREAD_RUNNABLE so that we don't need to store/restore this field.

* cont.c (cont_save_thread): ditto.

------------------------------------------------------------------------
r59173 | svn | 2017-06-26 09:59:25 +0900 (Mon, 26 Jun 2017) | 1 line

* 2017-06-26
------------------------------------------------------------------------
r59172 | nobu | 2017-06-26 09:59:24 +0900 (Mon, 26 Jun 2017) | 4 lines

compile.c: fix debug print

* compile.c (iseq_compile_each0): debugs/ruby_debug_printf do not
  support PRIsVALUE.
------------------------------------------------------------------------
r59171 | nobu | 2017-06-25 17:55:23 +0900 (Sun, 25 Jun 2017) | 4 lines

compile.c: fix_sp_depth

* compile.c (fix_sp_depth): separate fix-up of sp depth from code
  generation.
------------------------------------------------------------------------
r59170 | svn | 2017-06-25 14:10:49 +0900 (Sun, 25 Jun 2017) | 1 line

* 2017-06-25
------------------------------------------------------------------------
r59169 | nobu | 2017-06-25 14:10:48 +0900 (Sun, 25 Jun 2017) | 5 lines

compile.c: toplevel return in argument

* compile.c (iseq_compile_each0): adjust the stack before return
  in an evstr/argument (reported by Balazs <balazs@kutilovi.cz>)
  to fix stack consistency error.  [ruby-core:81761] [Bug #13678]
------------------------------------------------------------------------
r59168 | nobu | 2017-06-24 21:01:02 +0900 (Sat, 24 Jun 2017) | 1 line

Added version guards [Bug #12684]
------------------------------------------------------------------------
r59167 | nobu | 2017-06-24 12:35:29 +0900 (Sat, 24 Jun 2017) | 5 lines

Delegate to `eql?` [Fix GH-1564]

* lib/delegate.rb (eql?): Delegate to `eql?` of the inner object.
  based on the patch by giginet <giginet.net@gmail.com>.
  [ruby-core:76950] [Bug #12684]
------------------------------------------------------------------------
r59166 | nobu | 2017-06-24 10:44:49 +0900 (Sat, 24 Jun 2017) | 4 lines

mspec.rb: keep jobserver fds

* spec/mspec/lib/mspec/commands/mspec.rb (MSpecMain#run): do not
  close jobserver FDs for mspec-run.
------------------------------------------------------------------------
r59165 | normal | 2017-06-24 05:59:00 +0900 (Sat, 24 Jun 2017) | 7 lines

thread_sync.c: fix documentation for Queue#close

When Queue#closed? is true, using push/enq/<< will raise an
exception, and not return nil.

* thread_sync.c: fix documentation for Queue#close
  Thanks to John Anderson.  [ruby-core:81749] [Misc #13673]
------------------------------------------------------------------------
r59164 | svn | 2017-06-24 00:08:51 +0900 (Sat, 24 Jun 2017) | 1 line

* 2017-06-24
------------------------------------------------------------------------
r59163 | nobu | 2017-06-24 00:08:50 +0900 (Sat, 24 Jun 2017) | 4 lines

test_command_processor.rb: add suffix

* test/shell/test_command_processor.rb (test_option_type): Windows
  needs a suffix to execute.
------------------------------------------------------------------------
r59162 | nobu | 2017-06-23 20:56:48 +0900 (Fri, 23 Jun 2017) | 4 lines

parse.y: should not warn op method call

* parse.y (void_expr_gen): should warn operator expression style
  calls only, but not method style calls.  [Fix GH-1660]
------------------------------------------------------------------------
r59161 | nobu | 2017-06-23 20:20:29 +0900 (Fri, 23 Jun 2017) | 5 lines

parse.y: check multibyte char

* parse.y (parser_precise_mbclen): check invalid multibyte char at
  skipping strings following `?x` literal string, not to stuck in
  a infinite loop.  [ruby-core:81746] [Bug #13672]
------------------------------------------------------------------------
r59160 | nobu | 2017-06-23 20:15:26 +0900 (Fri, 23 Jun 2017) | 5 lines

vm_core.h: sandwich jmpbuf

* vm_core.h (rb_vm_tag): move jmpbuf which should be stored at the
  last in TH_PUSH_TAG, between tag and state so ensure to be
  accessible.  reapplied r40806.
------------------------------------------------------------------------
r59159 | ko1 | 2017-06-23 18:43:52 +0900 (Fri, 23 Jun 2017) | 5 lines

move "state" to rb_vm_tag.

* vm_core.h (rb_thread_t::tag_state): move to "rb_vm_tag::state".
  Lifetime of "state" should be same as current tag.

------------------------------------------------------------------------
r59158 | ko1 | 2017-06-23 17:48:41 +0900 (Fri, 23 Jun 2017) | 5 lines

rename th->state to th->tag_state.

* vm_core.h (rb_thread_t): rename rb_thread_t::state to tag_state
  to make it clear.

------------------------------------------------------------------------
r59157 | ko1 | 2017-06-23 17:24:54 +0900 (Fri, 23 Jun 2017) | 2 lines

rb_catch_protect() accepts enum ruby_tag_type *.

------------------------------------------------------------------------
r59156 | nobu | 2017-06-23 16:53:07 +0900 (Fri, 23 Jun 2017) | 4 lines

thread.c: suppress warning

* thread.c (exec_recursive): rb_catch_protect() uses `int*` as
  well as rb_protect.
------------------------------------------------------------------------
r59155 | ko1 | 2017-06-23 16:25:52 +0900 (Fri, 23 Jun 2017) | 12 lines

use "enum ruby_tag_type" and TAG_NONE.

Return value of EXEC_TAG() is saved by "int state".
Instead of "int", use "enum ruby_tag_type". First EXEC_TAG()
value should be 0, so that define TAG_NONE (= 0) and use it.

Some code used "status" instead of "state". To make them clear,
rename them to state.

We can change variable name from "state" to "tag_state", but this
ticket doesn't contain it.

------------------------------------------------------------------------
r59154 | ko1 | 2017-06-23 14:55:12 +0900 (Fri, 23 Jun 2017) | 1 line

use NULL instead of 0.
------------------------------------------------------------------------
r59153 | ko1 | 2017-06-23 14:52:28 +0900 (Fri, 23 Jun 2017) | 2 lines

skip on other threads (again).

------------------------------------------------------------------------
r59152 | ko1 | 2017-06-23 14:50:35 +0900 (Fri, 23 Jun 2017) | 2 lines

revert r59151 which introduce failures.

------------------------------------------------------------------------
r59151 | ko1 | 2017-06-23 14:45:50 +0900 (Fri, 23 Jun 2017) | 3 lines

skip on other threads.


------------------------------------------------------------------------
r59150 | glass | 2017-06-23 13:19:53 +0900 (Fri, 23 Jun 2017) | 3 lines

Revert "Allow IO#reopen to take a block"

This reverts r59142.
------------------------------------------------------------------------
r59149 | nobu | 2017-06-23 10:43:39 +0900 (Fri, 23 Jun 2017) | 4 lines

vm_insnhelper.c: vm_stack_consistency_error

* vm_insnhelper.c (vm_stack_consistency_error): extracted from
  insns.def for further info in the future.
------------------------------------------------------------------------
r59148 | svn | 2017-06-23 09:29:45 +0900 (Fri, 23 Jun 2017) | 1 line

* 2017-06-23
------------------------------------------------------------------------
r59147 | nobu | 2017-06-23 09:29:45 +0900 (Fri, 23 Jun 2017) | 9 lines

refinements.rdoc: [DOC] improved [Fix GH-1659]

* doc/syntax/refinements.rdocrefinements.rdoc: grammatical
  correction and code highlighting improved

* doc/syntax/refinements.rdocrefinements.rdoc: Fixnum replaced
  with Integer and Integer with Numeric

Author:    Shiva Bhusal <shivabhusal@users.noreply.github.com>
------------------------------------------------------------------------
r59146 | nobu | 2017-06-22 21:53:05 +0900 (Thu, 22 Jun 2017) | 5 lines

fix mortal_dynamic_symbol count

* test/objspace/test_objspace.rb (test_count_symbols): exclude a
  dynamic symbol which has been turned into immortal by
  define_method.
------------------------------------------------------------------------
r59145 | glass | 2017-06-22 19:56:49 +0900 (Thu, 22 Jun 2017) | 9 lines

Fix exception type in option type checker

* lib/shell/system-command.rb (SystemCommand#initialize):
  `def_e2message` wraps error message, but does not define new exception

* test/shell/test_command_processor.rb: add a test

This patch is authored by Kenichi Kamiya <kachick1@gmail.com>
close #1657
------------------------------------------------------------------------
r59144 | ko1 | 2017-06-22 17:37:53 +0900 (Thu, 22 Jun 2017) | 7 lines

use --dump option for parse rule.

* common.mk: use --dump=--dump=parsetree_with_comment,insns
  instead of tool/parse.rb. maybe nobody use this option so that
  I believe it is enough. previous "parse" rule doesn't run script
  but patched parse rule runs specified script (on miniruby).

------------------------------------------------------------------------
r59143 | ko1 | 2017-06-22 17:33:33 +0900 (Thu, 22 Jun 2017) | 7 lines

try to fix symbol duplication.

* test/objspace/test_objspace.rb (test_count_symbols): make more complex dynamic
  symbols to avoid conflict with other existing static symbols.
  Sometimes this test fails with "mortal_dynamic_symbol=>127".


------------------------------------------------------------------------
r59142 | glass | 2017-06-22 15:50:32 +0900 (Thu, 22 Jun 2017) | 8 lines

Allow IO#reopen to take a block

* io.c (rb_io_reopen): take a block and ensure the IO closed
  [Feature #2631]

* test/ruby/test_io.rb: add a test

* NEWS: add an entry for this change
------------------------------------------------------------------------
r59141 | svn | 2017-06-22 15:42:27 +0900 (Thu, 22 Jun 2017) | 1 line

* remove trailing spaces.
------------------------------------------------------------------------
r59140 | ko1 | 2017-06-22 15:42:26 +0900 (Thu, 22 Jun 2017) | 5 lines

introduce heap_allocatable_pages_set().

* gc.c (heap_allocatable_pages_set): added. This function set
  heap_allocatable_pages and sorted_list atomically.

------------------------------------------------------------------------
r59139 | ko1 | 2017-06-22 14:51:43 +0900 (Thu, 22 Jun 2017) | 3 lines

catch up frozen_string_literal: true.


------------------------------------------------------------------------
r59138 | ko1 | 2017-06-22 14:03:18 +0900 (Thu, 22 Jun 2017) | 5 lines

introduce GC_ASSERT().

* gc.c (GC_ASSERT()): added. GC_ASSERT() is similar to VM_ASSERT in
  vm_core.h but turn on by RGENGC_CHECK_MODE.

------------------------------------------------------------------------
r59137 | svn | 2017-06-22 09:59:55 +0900 (Thu, 22 Jun 2017) | 1 line

* 2017-06-22
------------------------------------------------------------------------
r59136 | nobu | 2017-06-22 09:59:54 +0900 (Thu, 22 Jun 2017) | 4 lines

gc.c: expand sorted pages

* gc.c (heap_page_allocate): expand sorted pages before inserting
  allocated new page.  [Bug #12670]
------------------------------------------------------------------------
r59135 | nobu | 2017-06-21 21:51:26 +0900 (Wed, 21 Jun 2017) | 4 lines

gc.c: FL_CHECK2

* gc.c (FL_TEST2, FL_SET2, FL_UNSET2): make error messages
  consitent.
------------------------------------------------------------------------
r59134 | eregon | 2017-06-21 19:06:44 +0900 (Wed, 21 Jun 2017) | 1 line

* NEWS: Fix typo.
------------------------------------------------------------------------
r59133 | sonots | 2017-06-21 16:43:27 +0900 (Wed, 21 Jun 2017) | 6 lines

test/ruby/test_string.rb: add tests to chomp substr

* test/ruby/test_string.rb (TestString#test_chomp): add tests
  to chomp substr

* test/ruby/test_string.rb (TestString#test_chomp!): ditto
------------------------------------------------------------------------
r59132 | sonots | 2017-06-21 16:43:26 +0900 (Wed, 21 Jun 2017) | 10 lines

string.c: add String#delete_prefix and String#delete_prefix!
to remove leading substr [Feature #12694] [fix GH-1632]

* string.c (rb_str_delete_prefix_bang): add a new method
  to remove prefix destuctively.

* string.c (rb_str_delete_prefix): add a new method
  to remove prefix non-destuctively.

* test/ruby/test_string.rb: add tests.
------------------------------------------------------------------------
r59131 | nobu | 2017-06-21 13:34:25 +0900 (Wed, 21 Jun 2017) | 8 lines

RUBY_DEVEL flag

* configure.in: define RUBY_DEVEL only in the trunk.

* gc.c: enable runtime rgengc debug if RUBY_DEVEL

* ruby.c (debug_option): enable RUBY_DEBUG in --debug option only
  if RUBY_DEVEL.
------------------------------------------------------------------------
r59130 | nobu | 2017-06-21 12:27:21 +0900 (Wed, 21 Jun 2017) | 1 line

configure.in: use AS_IF
------------------------------------------------------------------------
r59129 | nobu | 2017-06-21 11:44:23 +0900 (Wed, 21 Jun 2017) | 4 lines

ruby.c: debug options in command line

* ruby.c (debug_option): parse options in --debug command line
  option same as RUBY_DEBUG env.  available only in the trunk.
------------------------------------------------------------------------
r59128 | nobu | 2017-06-21 11:25:27 +0900 (Wed, 21 Jun 2017) | 6 lines

Fix Enumerable#uniq with non single yield arguments

* enum.c (uniq_func, uniq_iter): need packed value as the unique
  key.  [ruby-core:81734] [Bug #13669] [Fix GH-1658]

Author:    Kenichi Kamiya <kachick1@gmail.com>
------------------------------------------------------------------------
r59127 | nobu | 2017-06-21 11:03:38 +0900 (Wed, 21 Jun 2017) | 1 line

KNOWNBUGS.rb: hung up on linux
------------------------------------------------------------------------
r59126 | nobu | 2017-06-21 10:34:34 +0900 (Wed, 21 Jun 2017) | 1 line

KNOWNBUGS.rb: deferred free
------------------------------------------------------------------------
r59125 | nobu | 2017-06-21 10:34:33 +0900 (Wed, 21 Jun 2017) | 1 line

bootstraptest/runner.rb: keyword argument
------------------------------------------------------------------------
r59124 | svn | 2017-06-21 00:23:51 +0900 (Wed, 21 Jun 2017) | 1 line

* 2017-06-21
------------------------------------------------------------------------
r59123 | eregon | 2017-06-21 00:23:50 +0900 (Wed, 21 Jun 2017) | 4 lines

Use a file under tmp for File.real{,dir}path specs on Windows

* The source file path could have pre-existing symlinks.
* See https://github.com/ruby/spec/issues/445.
------------------------------------------------------------------------
r59122 | hsbt | 2017-06-20 20:43:05 +0900 (Tue, 20 Jun 2017) | 1 line

Fixed missing handling for frozen object at r59121.
------------------------------------------------------------------------
r59121 | hsbt | 2017-06-20 20:10:37 +0900 (Tue, 20 Jun 2017) | 1 line

Specify frozen_string_literal: true.
------------------------------------------------------------------------
r59120 | nobu | 2017-06-20 17:23:25 +0900 (Tue, 20 Jun 2017) | 4 lines

gc.c: add newline to report [ci skip]

* gc.c (gc_sweep_finish): gc_report format should end with a
  newline, as gc_report_body does not append it.
------------------------------------------------------------------------
r59119 | svn | 2017-06-20 14:34:33 +0900 (Tue, 20 Jun 2017) | 1 line

* 2017-06-20
------------------------------------------------------------------------
r59118 | ko1 | 2017-06-20 14:34:33 +0900 (Tue, 20 Jun 2017) | 2 lines

skip unresolved issue.

------------------------------------------------------------------------
r59117 | nobu | 2017-06-19 23:36:18 +0900 (Mon, 19 Jun 2017) | 1 line

debug.c: rgengc debug option
------------------------------------------------------------------------
r59116 | nobu | 2017-06-19 23:36:17 +0900 (Mon, 19 Jun 2017) | 3 lines

test for [Bug #12670]

heap corruption by deferred free.
------------------------------------------------------------------------
r59115 | hsbt | 2017-06-19 22:03:06 +0900 (Mon, 19 Jun 2017) | 9 lines

Make string literal to frozen object on gemspec of defulte gems.

  Added following gemspecs.

    * extensions: date, dbm, etc, fiddle, gdbm, sdbm, stringio, strscan, zlib
    * pure ruby libraries: cmath, csv, fileutils, scanf, webrick

  psych and rdoc is out of scope of this commit. I will merge after
  upstream was change to `frozen_string_literal: true`.
------------------------------------------------------------------------
r59114 | svn | 2017-06-19 22:00:13 +0900 (Mon, 19 Jun 2017) | 1 line

* 2017-06-19
------------------------------------------------------------------------
r59113 | eregon | 2017-06-19 22:00:12 +0900 (Mon, 19 Jun 2017) | 3 lines

Adapt Time#zone spec to deal with differences of TZ validation on Windows

* [Bug #13591] [ruby-core:81347]
------------------------------------------------------------------------
r59112 | nobu | 2017-06-18 13:38:01 +0900 (Sun, 18 Jun 2017) | 5 lines

string.c: check just before modification

* string.c (rb_str_chomp_bang): check if modifiable after checking
  an argument and just before modification, as it can get frozen
  during the argument conversion to String.
------------------------------------------------------------------------
r59111 | nobu | 2017-06-18 13:29:05 +0900 (Sun, 18 Jun 2017) | 4 lines

test_string.rb: chomp! frozen string

* test/ruby/test_string.rb (TestString#test_chomp): should raise
  if frozen.
------------------------------------------------------------------------
r59110 | nobu | 2017-06-18 13:29:04 +0900 (Sun, 18 Jun 2017) | 5 lines

test/unit.rb: close jobserver

* test/lib/test/unit.rb (Test::Unit::Parallel#flush_job_tokens):
  close jobserver auth fds aflter flush, not to  release tokens
  more than acquired.
------------------------------------------------------------------------
r59109 | nobu | 2017-06-18 10:15:36 +0900 (Sun, 18 Jun 2017) | 5 lines

capi/spec_helper.rb: suppress logo

* spec/rubyspec/optional/capi/spec_helper.rb (compile_extension):
  suppress logo of nmake.exe to stderr.  we want to show compiler
  warnings only.
------------------------------------------------------------------------
r59108 | svn | 2017-06-18 10:15:36 +0900 (Sun, 18 Jun 2017) | 1 line

* 2017-06-18
------------------------------------------------------------------------
r59107 | nobu | 2017-06-18 10:15:35 +0900 (Sun, 18 Jun 2017) | 4 lines

appveyor.yml: num of jobs

* appveyor.yml (test_script): stop running too many workers to get
  rid of sporadic NoMemoryError.
------------------------------------------------------------------------
r59106 | nobu | 2017-06-17 09:18:33 +0900 (Sat, 17 Jun 2017) | 7 lines

capi/spec_helper.rb: pass jobserver fds

* spec/mspec/lib/mspec/commands/mspec.rb (MSpecMain#multi_exec):
  do not close GNU make jobserver auth fds.

* spec/rubyspec/optional/capi/spec_helper.rb (compile_extension):
  ditto.
------------------------------------------------------------------------
r59105 | nobu | 2017-06-17 09:10:54 +0900 (Sat, 17 Jun 2017) | 5 lines

capi/spec_helper.rb: use MAKE env

* spec/rubyspec/optional/capi/spec_helper.rb (compile_extension):
  prefer MAKE environment variable to hardcoded name if set by
  parent make.
------------------------------------------------------------------------
r59104 | svn | 2017-06-17 08:59:34 +0900 (Sat, 17 Jun 2017) | 1 line

* 2017-06-17
------------------------------------------------------------------------
r59103 | nobu | 2017-06-17 08:59:33 +0900 (Sat, 17 Jun 2017) | 4 lines

default.mspec: limit cores

* spec/default.mspec (MSpecScript::JobServer#cores): limit max
  number of processors, not to acquire tokens more than necessary.
------------------------------------------------------------------------
r59102 | nobu | 2017-06-16 23:44:01 +0900 (Fri, 16 Jun 2017) | 6 lines

pathname.rb: UNC root pathname needs a separator

* ext/pathname/lib/pathname.rb (Pathname#plus): UNC root pathname
  needs a separator.  File.basename returns "/" on UNC root, as
  well as sole drive letter, even if it does not end with a
  separator.  [ruby-core:80900] [Bug #13515]
------------------------------------------------------------------------
r59101 | hsbt | 2017-06-16 16:02:22 +0900 (Fri, 16 Jun 2017) | 9 lines

Merge psych-3.0.0.beta2 from https://github.com/ruby/psych

  It contains following changes from 3.0.0.beta1

    * Preserve time zone offset when deserializing times
      https://github.com/ruby/psych/pull/316

    * Enable YAML serialization of Ruby delegators
      https://github.com/ruby/psych/pull/158
------------------------------------------------------------------------
r59100 | ko1 | 2017-06-16 13:04:53 +0900 (Fri, 16 Jun 2017) | 4 lines

require 'bigdecimal'

* test/json/json_parser_test.rb: this test needs bigdecimal.

------------------------------------------------------------------------
r59099 | hsbt | 2017-06-16 12:04:46 +0900 (Fri, 16 Jun 2017) | 3 lines

Merge json-2.1.0 from https://github.com/flori/json

  https://github.com/flori/json/blob/master/CHANGES.md#2017-04-18-210
------------------------------------------------------------------------
r59098 | svn | 2017-06-16 10:53:16 +0900 (Fri, 16 Jun 2017) | 1 line

* 2017-06-16
------------------------------------------------------------------------
r59097 | nobu | 2017-06-16 10:53:15 +0900 (Fri, 16 Jun 2017) | 1 line

removed ruby_error_print
------------------------------------------------------------------------
r59096 | usa | 2017-06-15 23:04:29 +0900 (Thu, 15 Jun 2017) | 7 lines

Clear `DESTDIR` when running make

* spec/rubyspec/optional/capi/spec_helper.rb (compile_extension): `DESTDIR` is
  the drive letter of the ruby installed path as default on mswin, but not
  builddir of the ruby.  this causes spec errors if the drive letter is
  different in the installed path and builddir.

------------------------------------------------------------------------
r59095 | eregon | 2017-06-15 22:34:32 +0900 (Thu, 15 Jun 2017) | 1 line

Update to ruby/spec@c730f07
------------------------------------------------------------------------
r59094 | svn | 2017-06-15 21:48:54 +0900 (Thu, 15 Jun 2017) | 1 line

* properties.
------------------------------------------------------------------------
r59093 | eregon | 2017-06-15 21:48:52 +0900 (Thu, 15 Jun 2017) | 1 line

Update to ruby/spec@cd1b911
------------------------------------------------------------------------
r59092 | eregon | 2017-06-15 21:48:26 +0900 (Thu, 15 Jun 2017) | 1 line

Update to ruby/mspec@d900a49
------------------------------------------------------------------------
r59091 | nobu | 2017-06-15 20:51:39 +0900 (Thu, 15 Jun 2017) | 1 line

Revert r59084, see r57060
------------------------------------------------------------------------
r59090 | a_matsuda | 2017-06-15 19:43:17 +0900 (Thu, 15 Jun 2017) | 10 lines

Don't pollute toplevel by an IRB internal method

There actually are some libraries that requires 'irb' such as byebug, and when
'irb' is required, it requires irb/src_encoding.rb, then it defines the toplevel
default_src_encoding method that is visible from anywhere in the end users' apps.

Here's a quick oneliner that shows what's happening.

  % ruby -rpry-byebug -e 'p private_methods(false)'
  [:include, :using, :define_method, :public, :private, :DelegateClass, :default_src_encoding]
------------------------------------------------------------------------
r59089 | ko1 | 2017-06-15 16:16:17 +0900 (Thu, 15 Jun 2017) | 4 lines

Prohibit SystemStackError while GC.

* vm_insnhelper.c (rb_threadptr_stack_overflow): fatal on GC [Bug #13662]

------------------------------------------------------------------------
r59088 | nobu | 2017-06-15 12:12:32 +0900 (Thu, 15 Jun 2017) | 8 lines

common.mk: tweaked packages order

* common.mk (dist): tweaked packages order by $(DISTPKGS).
  .tar.gz comes first for the hash values in downloads page, then
  popular .zip.

* tool/make-snapshot: "all" in -packages means all of the rest
  package types now.
------------------------------------------------------------------------
r59087 | nobu | 2017-06-15 11:39:06 +0900 (Thu, 15 Jun 2017) | 1 line

make-snapshot: colorize [ci skip]
------------------------------------------------------------------------
r59086 | nobu | 2017-06-15 11:33:57 +0900 (Thu, 15 Jun 2017) | 1 line

make-snapshot: suppress output from 7z [ci skip]
------------------------------------------------------------------------
r59085 | svn | 2017-06-15 11:33:56 +0900 (Thu, 15 Jun 2017) | 1 line

* 2017-06-15
------------------------------------------------------------------------
r59084 | nobu | 2017-06-15 11:33:56 +0900 (Thu, 15 Jun 2017) | 1 line

make-snapshot: prefer default commands over 7z [ci skip]
------------------------------------------------------------------------
r59083 | nobu | 2017-06-14 23:02:33 +0900 (Wed, 14 Jun 2017) | 4 lines

proc.c: infect inspect result

* proc.c (method_inspect): the result should be infected by the
  object.
------------------------------------------------------------------------
r59082 | nobu | 2017-06-14 22:08:50 +0900 (Wed, 14 Jun 2017) | 1 line

test/ruby/test_method.rb: refined  [ruby-core:81666] [Bug #13656]
------------------------------------------------------------------------
r59081 | rhe | 2017-06-14 18:49:09 +0900 (Wed, 14 Jun 2017) | 36 lines

openssl: import v2.0.4

Import Ruby/OpenSSL 2.0.4. Only bug (and typo) fixes. The full commit
history since v2.0.3 (imported at r57482) can be found at:

  https://github.com/ruby/openssl/compare/v2.0.3...v2.0.4

This contains the fix for [Bug #11033].

----------------------------------------------------------------
Jun Aruga (1):
      Update .travis.yml and Dockerfile

Kazuki Yamaguchi (9):
      test/test_pkey_ec: do not use dummy 0 order
      test/test_ssl: fix typo in test_sysread_and_syswrite
      ssl: check return value of SSL_set_fd()
      Fix typos
      test/test_x509store: skip OpenSSL::TestX509Store#test_set_errors
      tool/sync-with-trunk: 'LASY' -> 'LAST'
      x509store: clear error queue after calling X509_LOOKUP_load_file()
      extconf.rb: simplify searching libraries logic
      Ruby/OpenSSL 2.0.4

SHIBATA Hiroshi (1):
      Fix typos

Vladimir Rybas (1):
      Fix documentation for OpenSSL::Cipher#final

nobu (2):
      openssl: fix broken openssl check
      openssl: fix broken openssl check

usa (1):
      Search SSL libraries by testing various filename patterns
------------------------------------------------------------------------
r59080 | nobu | 2017-06-14 15:03:55 +0900 (Wed, 14 Jun 2017) | 5 lines

proc.c: skip prepended modules

* proc.c (method_super_method): skip prepended modules and
  continue from the super class of the original class.
  [ruby-core:81666] [Bug #13656]
------------------------------------------------------------------------
r59079 | nobu | 2017-06-14 14:10:30 +0900 (Wed, 14 Jun 2017) | 4 lines

compile.c: dump and error before allocation

* compile.c (iseq_set_sequence): separate instruction dump and
  error, before allocation of sequence.
------------------------------------------------------------------------
r59078 | ko1 | 2017-06-14 13:27:14 +0900 (Wed, 14 Jun 2017) | 5 lines

simply call xfree().

* compile.c (BADINSN_ERROR): mixing (void) and (int) will fail solaris
  compiler. [ruby-core:81668], [Bug #13658]

------------------------------------------------------------------------
r59077 | svn | 2017-06-14 11:26:19 +0900 (Wed, 14 Jun 2017) | 1 line

* 2017-06-14
------------------------------------------------------------------------
r59076 | ko1 | 2017-06-14 11:26:18 +0900 (Wed, 14 Jun 2017) | 6 lines

remove OPT_CALL_CFUNC_WITHOUT_FRAME.

* vm_core.h (OPT_CALL_CFUNC_WITHOUT_FRAME): removed because nobody use it.
  This optimization tries to call C-methods without pushing VM frames,
  however no big improvements compare with this complexity.

------------------------------------------------------------------------
r59075 | nobu | 2017-06-13 12:20:12 +0900 (Tue, 13 Jun 2017) | 2 lines

* compile.c (dump_disasm_list_with_cursor): replace with
  dump_disasm_list_with_cursor_dest.
------------------------------------------------------------------------
r59074 | ko1 | 2017-06-13 11:52:33 +0900 (Tue, 13 Jun 2017) | 5 lines

fix to free unallocated memory.

* compile.c (iseq_set_sequence): initialize with NULL for line_info_table
  and generated_iseq and check NULL at BADINSN_ERROR.

------------------------------------------------------------------------
r59073 | nobu | 2017-06-13 10:31:32 +0900 (Tue, 13 Jun 2017) | 4 lines

compile.c: refine error message

* compile.c (insn_set_sc_state): dump the whole instructions and
  mark the destination when label state mismatch.
------------------------------------------------------------------------
r59072 | svn | 2017-06-13 10:04:57 +0900 (Tue, 13 Jun 2017) | 1 line

* 2017-06-13
------------------------------------------------------------------------
r59071 | nobu | 2017-06-13 10:04:56 +0900 (Tue, 13 Jun 2017) | 1 line

compile.c: refine error messages
------------------------------------------------------------------------
r59070 | k0kubun | 2017-06-12 20:09:10 +0900 (Mon, 12 Jun 2017) | 5 lines

array.c: [DOC] Make it clear that #<< modifies receiver

This patch is sent from @selmertsx (morioka shuhei).

[fix GH-1646]
------------------------------------------------------------------------
r59069 | ko1 | 2017-06-12 16:58:23 +0900 (Mon, 12 Jun 2017) | 1 line

add a comment for rb_thread_mark()
------------------------------------------------------------------------
r59068 | ko1 | 2017-06-12 16:49:33 +0900 (Mon, 12 Jun 2017) | 8 lines

remove rb_blocking_region_buffer::oldubf.

* thread.c (rb_blocking_region_buffer): remove oldubf because ubf should be
  NULL just before ubf setting.

* thread.c (set_unblock_function, reset_unblock_function): rename to
  unblock_function_set() and unblock_function_clear() respectively.

------------------------------------------------------------------------
r59067 | nobu | 2017-06-12 15:31:02 +0900 (Mon, 12 Jun 2017) | 4 lines

unused functions

* thread_win32.c: native_cond_signal, native_cond_wait,
  native_cond_initialize, native_cond_destroy are not used now.
------------------------------------------------------------------------
r59066 | ko1 | 2017-06-12 13:52:25 +0900 (Mon, 12 Jun 2017) | 15 lines

remove ruby_kill() introduced for  [Bug #7951].

* thread.c (rbuy_kill): removed. This function is used
  with SIGSEGV, SIGBUS, SIGKILL, SIGILL, SIGFPE and SIGSTOP
  and these signals are affect immediately. So that `kill(2)'
  is enough for them.

* signal.c (rb_f_kill): ditto.

* vm_core.h (rb_thread_t::interrupt_cond): removed because
  only `ruby_kill()' uses this field.

* test/ruby/test_signal.rb: Without this patch sending SIGSTOP to own
  process wait another interrupt even if another process sends SIGCONT.

------------------------------------------------------------------------
r59065 | nobu | 2017-06-12 13:35:53 +0900 (Mon, 12 Jun 2017) | 3 lines

iseq.c: preserve encoding

* iseq.c (iseqw_inspect): preserve path encoding in the result.
------------------------------------------------------------------------
r59064 | nobu | 2017-06-12 13:35:52 +0900 (Mon, 12 Jun 2017) | 1 line

gc.c: duplicate rb_iseq_path by RSTRING_PTR
------------------------------------------------------------------------
r59063 | ko1 | 2017-06-12 11:20:09 +0900 (Mon, 12 Jun 2017) | 7 lines


* proc.c (get_local_variable_ptr): return found env ptr. Returned env
  will be used by write barrier at `bind_local_variable_set()'.
  [Bug #13605]

* test/ruby/test_proc.rb: add a test for this issue.

------------------------------------------------------------------------
r59062 | svn | 2017-06-12 09:18:31 +0900 (Mon, 12 Jun 2017) | 1 line

* 2017-06-12
------------------------------------------------------------------------
r59061 | nobu | 2017-06-12 09:18:30 +0900 (Mon, 12 Jun 2017) | 4 lines

win32.c: rb_dir_getwd_ospath

* win32/win32.c (rb_dir_getwd_ospath): Windows implementation
  moved from dir.c.  get rid of freeing malloced memory by xfree.
------------------------------------------------------------------------
r59060 | nobu | 2017-06-11 20:21:01 +0900 (Sun, 11 Jun 2017) | 4 lines

expand ruby_sourcefile

* compile.c: expand ruby_sourcefile not to evaluate twice in
  RSTRING_PTR.
------------------------------------------------------------------------
r59059 | svn | 2017-06-11 14:36:57 +0900 (Sun, 11 Jun 2017) | 1 line

* 2017-06-11
------------------------------------------------------------------------
r59058 | nobu | 2017-06-11 14:36:56 +0900 (Sun, 11 Jun 2017) | 1 line

configure.in: link the DWARF debug information
------------------------------------------------------------------------
r59057 | svn | 2017-06-10 19:26:33 +0900 (Sat, 10 Jun 2017) | 1 line

* 2017-06-10
------------------------------------------------------------------------
r59056 | nobu | 2017-06-10 19:26:32 +0900 (Sat, 10 Jun 2017) | 7 lines

enumerator.c: fix nested maps

* enumerator.c (lazy_map_proc, lazy_grep_iter_proc): marks values
  returned by blocks are not packed in the case of nested maps, so
  that the result will be same as non-lazy version.  based on the
  patch by akihikodaki (Akihiko Odaki) at [ruby-core:81638],
  without GCC extension.  [Bug#13648]
------------------------------------------------------------------------
r59055 | nobu | 2017-06-09 23:42:15 +0900 (Fri, 09 Jun 2017) | 6 lines

thread_pthread.c: workaround for valgrind on Mac

* thread.c: revert r59053.

* thread_pthread.c (rb_thread_create_timer_thread): needs more
  stack space for valgrind.
------------------------------------------------------------------------
r59054 | nobu | 2017-06-09 23:42:14 +0900 (Fri, 09 Jun 2017) | 1 line

signal.c: do not disable handlers to dump core
------------------------------------------------------------------------
r59053 | nobu | 2017-06-09 22:58:09 +0900 (Fri, 09 Jun 2017) | 9 lines

thread.c: workaround for valgrind on Mac OS X

Without this hack, pthread_join() in rb_thread_stop_timer_thread()
segfaults.

ProductName:	Mac OS X
ProductVersion:	10.11.6
BuildVersion:	15G1510
valgrind-3.12.0
------------------------------------------------------------------------
r59052 | nobu | 2017-06-09 22:02:13 +0900 (Fri, 09 Jun 2017) | 4 lines

signal.c: no sigsegv handler with valgrind

* signal.c: disable handling signals to dump core, if installing
  unreserved signals failed, not valgrind to hang on Mac OS.
------------------------------------------------------------------------
r59051 | nobu | 2017-06-09 17:30:24 +0900 (Fri, 09 Jun 2017) | 1 line

signal.c: warn at unresserved signals
------------------------------------------------------------------------
r59050 | hsbt | 2017-06-09 12:20:03 +0900 (Fri, 09 Jun 2017) | 5 lines

Update bundled gems to latest versions.

  * did_you_mean 1.1.2
  * minitest 5.10.2
  * xmlrpc 0.3.0
------------------------------------------------------------------------
r59049 | a_matsuda | 2017-06-09 10:31:36 +0900 (Fri, 09 Jun 2017) | 7 lines

Fix typo.

Patch by: Sarah Duve
Signed-off-by: Akira Matsuda <ronnie@dio.jp>

[Fix GH-1643]
[ci skip]
------------------------------------------------------------------------
r59048 | svn | 2017-06-09 05:58:04 +0900 (Fri, 09 Jun 2017) | 1 line

* 2017-06-09
------------------------------------------------------------------------
r59047 | normal | 2017-06-09 05:58:03 +0900 (Fri, 09 Jun 2017) | 13 lines

tool/runruby.rb: test with smallest possible machine stack

Lets ensure none of our C functions use too much stack space and
fix all excessive stack usage before releasing the next version.
Reducing C stack usage should reduce conservative GC scanning
time and improve performance.

If there are platform-dependent test failures; excessive stack
usage should be fixed; rather than increasing minimum values or
removing these envs from testing.

* tool/runruby.rb: use smallest possible machine stack size
  [ruby-core:81597] [Feature #13637]
------------------------------------------------------------------------
r59046 | nobu | 2017-06-08 16:41:38 +0900 (Thu, 08 Jun 2017) | 6 lines

signal.c: relax installation failure

* signal.c (install_sighandler): ignore failure at unreserved
  signals.  e.g., SIGUSR2 fails under valgrind.

* signal.c (install_sighandler_fail): refine [BUG] message.
------------------------------------------------------------------------
r59045 | ko1 | 2017-06-08 14:22:49 +0900 (Thu, 08 Jun 2017) | 5 lines

vm_block_handler_verify() should not return any value.

* vm_core.h (vm_block_handler_verify): this function only checks
  the given block handler with VM_ASSERT(). No need to return any value.

------------------------------------------------------------------------
r59044 | svn | 2017-06-08 13:13:52 +0900 (Thu, 08 Jun 2017) | 1 line

* remove trailing spaces.
------------------------------------------------------------------------
r59043 | ko1 | 2017-06-08 13:13:51 +0900 (Thu, 08 Jun 2017) | 18 lines

check break target correctly.

* compile.c (iseq_compile_each0): save target child_iseq in the catch-table
  for break. This iseq is not for continuation, but for search key at
  vm_throw_start().

* vm_insnhelper.c (vm_throw_start): check saved iseq first.

* iseq.h: add comment for it.

* test/ruby/test_iterator.rb (test_ljump): add a test for the issue:
    def call b; b.call; end
    call(Proc.new{break}){} #=> (1) should raise LocalJumpError
    call(Proc.new{break})   #=> (2) shoudd raies LocalJumpError, too.
  but (1) doesn't raise LocalJumpError.

  This issue is reported by Matz.

------------------------------------------------------------------------
r59042 | ko1 | 2017-06-08 13:06:07 +0900 (Thu, 08 Jun 2017) | 5 lines

use NULL instead of 0.

* compile.c: use NULL instead of 0 for ADD_CATCH_ENTRY()
  to specify don't pass iseq.

------------------------------------------------------------------------
r59041 | nobu | 2017-06-08 11:07:42 +0900 (Thu, 08 Jun 2017) | 4 lines

ruby.c: script name in UTF-8

* ruby.c (process_options): keep script name in UTF-8 if UTF8_PATH
  to get rid of loss by conversion.
------------------------------------------------------------------------
r59040 | nobu | 2017-06-08 10:58:44 +0900 (Thu, 08 Jun 2017) | 6 lines

file.c: realpath in OS path encoding

* dir.c (rb_dir_getwd_ospath): return cwd path in the OS path
  encoding.

* file.c (rb_realpath_internal): work in the OS path encoding
------------------------------------------------------------------------
r59039 | nobu | 2017-06-08 10:58:42 +0900 (Thu, 08 Jun 2017) | 1 line

appveyor.yml: show encodings [ci skip]
------------------------------------------------------------------------
r59038 | nobu | 2017-06-08 10:19:44 +0900 (Thu, 08 Jun 2017) | 1 line

appveyor.yml: enable exam on AppVeyor
------------------------------------------------------------------------
r59037 | svn | 2017-06-08 07:25:24 +0900 (Thu, 08 Jun 2017) | 1 line

* 2017-06-08
------------------------------------------------------------------------
r59036 | odaira | 2017-06-08 07:25:23 +0900 (Thu, 08 Jun 2017) | 2 lines

* tool/make-snapshot: prefer to use a make command
  set in the MAKE or make env variable.
------------------------------------------------------------------------
r59035 | nobu | 2017-06-07 23:36:18 +0900 (Wed, 07 Jun 2017) | 4 lines

load.c: get rid of side effects

* load.c (rb_f_load, rb_require_internal): DTrace hooks should not
  have side effects, i.e., conversion to String.
------------------------------------------------------------------------
r59034 | svn | 2017-06-07 22:01:28 +0900 (Wed, 07 Jun 2017) | 1 line

* properties.
------------------------------------------------------------------------
r59033 | kou | 2017-06-07 22:01:28 +0900 (Wed, 07 Jun 2017) | 6 lines

rexml: add close tag check on end of document to StreamParser

[ruby-core:81593] [Bug #13636]

Reported by Anton Sivakov. Thanks!!!

------------------------------------------------------------------------
r59032 | normal | 2017-06-07 09:32:07 +0900 (Wed, 07 Jun 2017) | 7 lines

common.mk: update dependencies after r58978

Using "tool/update-deps --fix"

* common.mk (file.$(OBJEXT)): depend on id.h
  (rational.$(OBJEXT)): ditto
  (string.$(OBJEXT)): sort alphabetically
------------------------------------------------------------------------
r59031 | svn | 2017-06-07 09:32:03 +0900 (Wed, 07 Jun 2017) | 1 line

* properties.
------------------------------------------------------------------------
r59030 | normal | 2017-06-07 09:32:02 +0900 (Wed, 07 Jun 2017) | 10 lines

thread.c: avoid busy looping on rb_thread_fd_close

We no longer use it this function, but extensions do, and
we need to ensure it continues to work for them.

* thread.c (rb_thread_fd_close): schedule other threads in loop
* ext/-test-/thread_fd_close/thread_fd_close.c: new file
* ext/-test-/thread_fd_close/depend: ditto
* ext/-test-/thread_fd_close/extconf.rb: ditto
* test/-ext-/thread_fd_close/test_thread_fd_close.rb: new test
------------------------------------------------------------------------
r59029 | svn | 2017-06-07 07:55:36 +0900 (Wed, 07 Jun 2017) | 1 line

* 2017-06-07
------------------------------------------------------------------------
r59028 | normal | 2017-06-07 07:55:35 +0900 (Wed, 07 Jun 2017) | 17 lines

IO#close: do not enqueue redundant interrupts (take #2)

Enqueuing multiple errors for one event causes spurious errors
down the line, as reported by Nikolay Vashchenko in
https://bugs.ruby-lang.org/issues/13632

This should fix bad interactions with test_race_gets_and_close
in test/ruby/test_io.rb since we ensure rb_notify_fd_close
continues returning the busy flag after enqueuing the interrupt.

Backporting changes to 2.4 and earlier releases will be more
challenging...

* thread.c (rb_notify_fd_close): do not enqueue multiple interrupts
  [ruby-core:81581] [Bug #13632]
* test/ruby/test_io.rb (test_single_exception_on_close):
  new test based on script from Nikolay
------------------------------------------------------------------------
r59027 | nobu | 2017-06-06 21:30:17 +0900 (Tue, 06 Jun 2017) | 1 line

debug.c: fix breaking condtions
------------------------------------------------------------------------
r59026 | duerst | 2017-06-06 19:34:10 +0900 (Tue, 06 Jun 2017) | 10 lines

add test_ill_formed_utf_8_replace to test recommended number of \uFFFD

Add test method test_ill_formed_utf_8_replace to test/ruby/test_transcode.rb
to check for the recommended number of \uFFFD replacement characters.
This is the first part, using ill-formed prefixes, with suffixes up to
the length of the original UTF-8 structure (including overlongs and
the full 31-bit space.)

For more details, see Unicode 9.0.0, Section 3.9, Best Practices for Using U+FFFD.

------------------------------------------------------------------------
r59025 | ko1 | 2017-06-06 16:11:28 +0900 (Tue, 06 Jun 2017) | 1 line

re-revert r59020
------------------------------------------------------------------------
r59024 | ko1 | 2017-06-06 16:10:19 +0900 (Tue, 06 Jun 2017) | 1 line

revert r59023 because it contans unrelated developping code
------------------------------------------------------------------------
r59023 | ko1 | 2017-06-06 15:58:54 +0900 (Tue, 06 Jun 2017) | 1 line

revert r59020 because it may fail some tests sometimes on some environment (http://ci.rvm.jp/). This revert is to check the reason of failures.
------------------------------------------------------------------------
r59022 | nobu | 2017-06-06 12:45:02 +0900 (Tue, 06 Jun 2017) | 1 line

debug.c: parse locale and filesystem codepages
------------------------------------------------------------------------
r59021 | svn | 2017-06-06 09:13:48 +0900 (Tue, 06 Jun 2017) | 1 line

* 2017-06-06
------------------------------------------------------------------------
r59020 | normal | 2017-06-06 09:13:47 +0900 (Tue, 06 Jun 2017) | 10 lines

IO#close: do not enqueue redundant interrupts

Enqueuing multiple errors for one event causes spurious errors
down the line, as reported by Nikolay Vashchenko in
https://bugs.ruby-lang.org/issues/13632

* thread.c (rb_notify_fd_close): do not enqueue multiple interrupts
  [ruby-core:81581] [Bug #13632]
* test/ruby/test_io.rb (test_single_exception_on_close):
  new test based on script from Nikolay
------------------------------------------------------------------------
r59019 | nobu | 2017-06-05 16:26:15 +0900 (Mon, 05 Jun 2017) | 4 lines

win32.c: no locale

* win32/win32.c (skipspace, w32_cmdvector): get rid of iswspace(),
  which is locale dependent.
------------------------------------------------------------------------
r59018 | ko1 | 2017-06-05 16:03:27 +0900 (Mon, 05 Jun 2017) | 1 line

revert r59017 it fails ruby/test_lambda.rb
------------------------------------------------------------------------
r59017 | ko1 | 2017-06-05 15:57:20 +0900 (Mon, 05 Jun 2017) | 5 lines

do not inform ``is_lambda".

* vm_eval.c (yield_under): do not inform Proc is lambda or not.
  After that invoke_block_from_c_bh() checks it.

------------------------------------------------------------------------
r59016 | ko1 | 2017-06-05 15:15:28 +0900 (Mon, 05 Jun 2017) | 18 lines

rename functions and clean parameters.

* internal.h (rb_yield_lambda): rename to rb_yield_force_blockarg()
  because this function prohibt lambda arg setup (strict setup).

* vm.c (invoke_iseq_block_from_c): remove splattable argument because
  it is not used.

* vm.c (invoke_block_from_c_splattable): rename to invoke_block_from_c_bh()
  because `splattable` doesn't make sense on current this function.

  Also accept `force_blockarg' parameter instead of `splattable` parameter.
  It is more clear.

* vm.c (invoke_block_from_c_unsplattable): rename to
  invoke_block_from_c_proc() and accept `proc` instead of `block'.
  This function is used only by proc block invocation.

------------------------------------------------------------------------
r59015 | svn | 2017-06-05 14:43:59 +0900 (Mon, 05 Jun 2017) | 1 line

* 2017-06-05
------------------------------------------------------------------------
r59014 | ko1 | 2017-06-05 14:43:58 +0900 (Mon, 05 Jun 2017) | 5 lines

remove arg_setup_lambda.

* vm_args.c (enum arg_setup_type): remove arg_setup_lambda because it is
  same as arg_setup_method.

------------------------------------------------------------------------
r59013 | nobu | 2017-06-04 16:29:52 +0900 (Sun, 04 Jun 2017) | 1 line

load.c: encode to OS path outside PUSH_TAG
------------------------------------------------------------------------
r59012 | nobu | 2017-06-04 15:24:04 +0900 (Sun, 04 Jun 2017) | 6 lines

test_require.rb: fix expected path

* test/ruby/test_require.rb (test_require_with_unc): remove extra
  slash.  the result of File.expand_path has a slash just follows
  the drive letter.
  https://github.com/ruby/ruby/commit/4ef849bd9014746821402e21053a53ea61b3690d#commitcomment-22391133
------------------------------------------------------------------------
r59011 | stomar | 2017-06-04 05:17:00 +0900 (Sun, 04 Jun 2017) | 5 lines

array.c: docs for Array#{sort,sort!}

* array.c: [DOC] make example in the docs for Array#{sort,sort!}
  match the call-seq and description by using the same block vars.
  Based on a patch by Roque Pinel (repinel).  [Fix GH-1628]
------------------------------------------------------------------------
r59010 | svn | 2017-06-04 02:11:44 +0900 (Sun, 04 Jun 2017) | 1 line

* 2017-06-04
------------------------------------------------------------------------
r59009 | nobu | 2017-06-04 02:11:43 +0900 (Sun, 04 Jun 2017) | 5 lines

test_require.rb: ignore EPERM at UNC

* test/ruby/test_require.rb (test_require_with_unc): ignore EPERM.
  GetFileAttributes and CreateFile with backup semantics fail at a
  symlink in a shared folder to another shared folder.
------------------------------------------------------------------------
r59008 | nobu | 2017-06-03 23:40:05 +0900 (Sat, 03 Jun 2017) | 4 lines

file.c: preserve encoding

* file.c (path_check_0): preserve encoding of path name in warning
  message.
------------------------------------------------------------------------
r59007 | nobu | 2017-06-03 21:47:11 +0900 (Sat, 03 Jun 2017) | 4 lines

ruby.c: dladdr_path is not used on cygwin

* ruby.c (dladdr_path): dladdr is provided on recent cygwin, but
  GetModuleFileNameW is used instead of it.
------------------------------------------------------------------------
r59006 | ko1 | 2017-06-03 19:07:44 +0900 (Sat, 03 Jun 2017) | 7 lines


* vm_core.h: remove VM_FRAME_MAGIC_LAMBDA and introduce
  VM_FRAME_FLAG_LAMBDA. So that lambda block frame is
  VM_FRAME_MAGIC_BLOCK | VM_FRAME_FLAG_LAMBDA.

* vm_core.h: remvoe VM_FRAME_MAGIC_PROC because nobody uses it.

------------------------------------------------------------------------
r59005 | nobu | 2017-06-03 18:35:43 +0900 (Sat, 03 Jun 2017) | 1 line

test/ruby/test_require.rb: remove duplicate assertion
------------------------------------------------------------------------
r59004 | nobu | 2017-06-03 18:18:44 +0900 (Sat, 03 Jun 2017) | 5 lines

test_require.rb: untouch default internal encoding

* test/ruby/test_require.rb (assert_require_insecure_path): get
  rid of setting Encoding.default_internal, which affects load
  path conversion.
------------------------------------------------------------------------
r59003 | normal | 2017-06-03 10:04:30 +0900 (Sat, 03 Jun 2017) | 11 lines

test: attempt to reduce failures in assert_cpu_usage_low

Try to make this test less fragile by taking into account
the worst case kernel timing resolution.
[ruby-core:81540]

* test/lib/test/unit/assertions.rb (assert_cpu_usage_low):
  clamp measurement to minimum measurable time and warn
  about tests being too short to measure
* test/ruby/test_io.rb (test_copy_stream_no_busy_wait):
  remove pct kwarg and rely on assert_cpu_usage_low defaults
------------------------------------------------------------------------
r59002 | stomar | 2017-06-03 06:29:27 +0900 (Sat, 03 Jun 2017) | 5 lines

string.c: docs for String#split

* string.c: [DOC] clarify docs for String#split when called
  with limit and capture groups.
  Reported by Cichol Tsai.  [ruby-core:81505] [Bug #13621]
------------------------------------------------------------------------
r59001 | svn | 2017-06-03 00:38:29 +0900 (Sat, 03 Jun 2017) | 1 line

* 2017-06-03
------------------------------------------------------------------------
r59000 | nobu | 2017-06-03 00:38:28 +0900 (Sat, 03 Jun 2017) | 1 line

common.mk: show locale
------------------------------------------------------------------------
r58999 | nobu | 2017-06-02 23:52:49 +0900 (Fri, 02 Jun 2017) | 4 lines

test_require.rb: assert_require_insecure_path

* test/ruby/test_require.rb (assert_require_insecure_path): more
  tests for loading insecure path.
------------------------------------------------------------------------
r58998 | nobu | 2017-06-02 13:32:47 +0900 (Fri, 02 Jun 2017) | 4 lines

test_require.rb: fallback encoding

* test/ruby/test_require.rb (assert_require_nonascii_path):
  fallback when LANG=C.
------------------------------------------------------------------------
r58997 | nobu | 2017-06-02 13:10:36 +0900 (Fri, 02 Jun 2017) | 4 lines

test_require.rb: filesystem encoding

* test/ruby/test_require.rb (assert_require_nonascii_path): the
  path in error message is converted to filesystem encoding.
------------------------------------------------------------------------
r58996 | nobu | 2017-06-02 12:54:19 +0900 (Fri, 02 Jun 2017) | 4 lines

file.c: preserve encoding

* file.c (rb_find_file_safe): preserve encoding of path in
  SecurityError messages.
------------------------------------------------------------------------
r58995 | eregon | 2017-06-02 02:26:12 +0900 (Fri, 02 Jun 2017) | 1 line

Fix DRb.start_service to use any available port
------------------------------------------------------------------------
r58994 | eregon | 2017-06-02 02:26:00 +0900 (Fri, 02 Jun 2017) | 4 lines

Remove bad spec which cannot behave nicely in a multi-process environment

* A system port might be taken by another process at any time.
* There are no useful expectations in this spec.
------------------------------------------------------------------------
r58993 | eregon | 2017-06-02 02:25:48 +0900 (Fri, 02 Jun 2017) | 1 line

Remove empty files in drb specs
------------------------------------------------------------------------
r58992 | eregon | 2017-06-02 02:08:59 +0900 (Fri, 02 Jun 2017) | 3 lines

Create the file in the File::TMPFILE spec in its own directory

* Avoids failing the spec if rubyspec_temp is not empty.
------------------------------------------------------------------------
r58991 | eregon | 2017-06-02 02:08:47 +0900 (Fri, 02 Jun 2017) | 4 lines

Open files in binary modes for copying in MSpec's #cp

* See https://bugs.ruby-lang.org/issues/13570.
* Found by MSP-Greg (Greg L).
------------------------------------------------------------------------
r58990 | ko1 | 2017-06-02 00:18:51 +0900 (Fri, 02 Jun 2017) | 5 lines

make Dir object WB protected.

* dir.c (dir_data_type): set RUBY_TYPED_WB_PROTECTED.
  Insert WBs for dir_data::path.

------------------------------------------------------------------------
r58989 | svn | 2017-06-02 00:12:15 +0900 (Fri, 02 Jun 2017) | 1 line

* 2017-06-02
------------------------------------------------------------------------
r58988 | ko1 | 2017-06-02 00:12:14 +0900 (Fri, 02 Jun 2017) | 5 lines

make Binding object WB protected.

* proc.c (ruby_binding_data_type): set RUBY_TYPED_WB_PROTECTED.
  Insert write barriers (WBs) to all of writes.

------------------------------------------------------------------------
r58987 | nobu | 2017-06-01 22:05:54 +0900 (Thu, 01 Jun 2017) | 4 lines

load.c: convert by rb_get_path_check

* load.c (rb_require_internal): convert to path name with the
  given safe level, without setting global safe level.
------------------------------------------------------------------------
r58986 | nobu | 2017-06-01 21:58:02 +0900 (Thu, 01 Jun 2017) | 1 line

file.c: rb_check_funcall_default for fallback value
------------------------------------------------------------------------
r58985 | nobu | 2017-06-01 17:02:41 +0900 (Thu, 01 Jun 2017) | 7 lines

vm_eval.c: fix rb_check_funcall_default

* vm_eval.c (check_funcall_missing): revert r58984.  should call
  method_missing if respond_to_missing is not redefined.

* vm_eval.c (rb_check_funcall_default): return the default value
  if respond_to_missing and method_missing are not defined.
------------------------------------------------------------------------
r58984 | nobu | 2017-06-01 16:46:22 +0900 (Thu, 01 Jun 2017) | 4 lines

vm_eval.c: fix for rb_check_funcall_default

* vm_eval.c (check_funcall_missing): basic_obj_respond_to_missing
  returns Qundef if respond_to_missing is not redefined.
------------------------------------------------------------------------
r58983 | ko1 | 2017-06-01 13:48:05 +0900 (Thu, 01 Jun 2017) | 1 line

fix failure on r58981
------------------------------------------------------------------------
r58982 | nobu | 2017-06-01 13:43:03 +0900 (Thu, 01 Jun 2017) | 4 lines

debug.c: more enums

* debug.c (ruby_dummy_gdb_enums): add enums for RObject, RModule,
  RString, RArray.
------------------------------------------------------------------------
r58981 | duerst | 2017-06-01 13:38:03 +0900 (Thu, 01 Jun 2017) | 5 lines

improve English for a warning message

On DOSish systems, there is a warning message for \r\n line endings on shebang line.
Improve this message from "shebang line ends with \r may cause a problem"
to "shebang line ending with \r may cause problems".
------------------------------------------------------------------------
r58980 | svn | 2017-06-01 09:05:35 +0900 (Thu, 01 Jun 2017) | 1 line

* 2017-06-01
------------------------------------------------------------------------
r58979 | ko1 | 2017-06-01 09:05:33 +0900 (Thu, 01 Jun 2017) | 27 lines

rename absolute_path to realpath internally and introduce pathobj.

* vm_core.h: rename absolute_path to realpath because it is expected name.
  external APIs (#absolute_path methods) are remained.

* vm_core.h: remove rb_iseq_location_struct::path and
  rb_iseq_location_struct::absolute_path and introduce pathobj.
  if given path equals to given absolute_path (and most of case
  it is true), pathobj is simply given path String. If it is not same,
  pathobj is Array and pathobj[0] is path and pathobj[1] is realpath.

  This size optimization reduce 8 bytes and
  sizeof(struct rb_iseq_constant_body) is 200 bytes -> 192 bytes
  on 64bit CPU.

  To support this change, the following functions are introduced:
    * pathobj_path() (defined in vm_core.h)
    * pathobj_realpath() (ditto)
    * rb_iseq_path() (decl. in vm_core.h)
    * rb_iseq_realpath() (ditto)
    * rb_iseq_pathobj_new() (ditto)
    * rb_iseq_pathobj_set() (ditto)

* vm_core.h (rb_binding_t): use pathobj instead of path. If binding
  is given at eval methods, realpath (absolute_path) was caller's
  realpath. However, they should use binding's realpath.

------------------------------------------------------------------------
r58978 | watson1978 | 2017-05-31 21:30:57 +0900 (Wed, 31 May 2017) | 50 lines

Improve performance of implicit type conversion

To convert the object implicitly, it has had two parts in convert_type() which are
  1. lookink up the method's id
  2. calling the method

Seems that strncmp() and strcmp() in convert_type() are slightly heavy to look up
the method's id for type conversion.

This patch will add and use internal APIs (rb_convert_type_with_id, rb_check_convert_type_with_id)
to call the method without looking up the method's id when convert the object.

Array#flatten -> 19 % up
Array#+       ->  3 % up

[ruby-dev:50024] [Bug #13341] [Fix GH-1537]

### Before
       Array#flatten    104.119k (? 1.1%) i/s -    525.690k in   5.049517s
             Array#+      1.993M (? 1.8%) i/s -     10.010M in   5.024258s

### After
       Array#flatten    124.005k (? 1.0%) i/s -    624.240k in   5.034477s
             Array#+      2.058M (? 4.8%) i/s -     10.302M in   5.019328s

### Test Code
require 'benchmark/ips'

class Foo
  def to_ary
    [1,2,3]
  end
end

Benchmark.ips do |x|

  ary = []
  100.times { |i| ary << i }
  array = [ary]

  x.report "Array#flatten" do |i|
    i.times { array.flatten }
  end

  x.report "Array#+" do |i|
    obj = Foo.new
    i.times { array + obj }
  end

end
------------------------------------------------------------------------
r58977 | ko1 | 2017-05-31 15:46:57 +0900 (Wed, 31 May 2017) | 9 lines

add debug counters for local variable (lavr) access.

* debug_counter.h: add the following counters:
  * lvar_get: counter for lvar get.
  * lvar_get_dynamic: counter for lvar get from upper frames.
  * lvar_set: coutner for lvar set.
  * lvar_set_dynamic: coutner for lvar set from upper frames.
  * lvar_set_slowpath: counter for lavr set using slowpath.

------------------------------------------------------------------------
r58976 | nobu | 2017-05-31 15:40:49 +0900 (Wed, 31 May 2017) | 4 lines

Makefile.sub: set ENABLE_SHARED [ci skip]

* win32/Makefile.sub (LIBRUBY_LDSHARED): mswin build always
  enables shared.
------------------------------------------------------------------------
r58975 | nobu | 2017-05-31 15:03:13 +0900 (Wed, 31 May 2017) | 3 lines

common.mk: lldb [ci skip]

* common.mk (lldb, lldb-ruby): add targets to debug with lldb.
------------------------------------------------------------------------
r58974 | nobu | 2017-05-31 11:42:10 +0900 (Wed, 31 May 2017) | 4 lines

lldb_cruby.py: eval outside frames

* misc/lldb_cruby.py (lldb_rp): evaluate without frames when no
  process is running, and show error messages.
------------------------------------------------------------------------
r58973 | svn | 2017-05-31 03:17:56 +0900 (Wed, 31 May 2017) | 1 line

* 2017-05-31
------------------------------------------------------------------------
r58972 | stomar | 2017-05-31 03:17:55 +0900 (Wed, 31 May 2017) | 8 lines

object.c: improve docs

* object.c: [DOC] add an example for Object#yield_self that
  better illustrates its purpose; other small improvements.
  Reported by Vitaly Tatarintsev (ck3g).  Patch by Marcus Stollsteimer.
  [Fix GH-1637]

* object.c: [DOC] improve docs for Object#{itself,tap}.
------------------------------------------------------------------------
r58971 | nobu | 2017-05-30 22:12:22 +0900 (Tue, 30 May 2017) | 7 lines

enum.c: check if reentered

* enum.c (cmpint_reenter_check): extract from nmin_cmp and
  nmin_block_cmp.

* enum.c (nmin_cmp): check if reentered before rb_cmpint.
  [Feature #13437]
------------------------------------------------------------------------
r58970 | nobu | 2017-05-30 21:47:58 +0900 (Tue, 30 May 2017) | 1 line

enum.c: rb_check_funcall_default for fallback value
------------------------------------------------------------------------
r58969 | nobu | 2017-05-30 20:59:26 +0900 (Tue, 30 May 2017) | 1 line

test_rubyoptions.rb: ruby-runner sets $0 to install name now
------------------------------------------------------------------------
r58968 | watson1978 | 2017-05-30 18:00:56 +0900 (Tue, 30 May 2017) | 68 lines

Improve performance of Enumerable#{sort_by,min_by,max_by,minmax_by}

This is totally same approach with r58964.

enum.c (sort_by_cmp): use OPTIMIZED_CMP() to compare the objects instead of
    `<=>' method dispatching for Fixnum/Float/String object.

enum.c (nmin_cmp): ditto.
enum.c (min_by_i): ditto.
enum.c (max_by_i): ditto.
enum.c (minmax_by_i_update): ditto.
enum.c (minmax_by_i): ditto.

    Enumerable#sort_by   -> 51 % up
    Enumerable#min_by(n) -> 34 % up
    Enumerable#min_by    -> 37 % up
    Enumerable#max_by(n) -> 61 % up
    Enumerable#max_by    -> 40 % up
    Enumerable#minmax_by -> 67 % up

    [ruby-core:80689] [Bug #13437] [Fix GH-1584]

### Before
  Enumerable#sort_by      5.692k (? 2.2%) i/s -     28.611k in   5.028861s
Enumerable#min_by(n)      8.496k (? 0.5%) i/s -     43.146k in   5.078394s
   Enumerable#min_by      8.678k (? 0.5%) i/s -     43.911k in   5.060128s
Enumerable#max_by(n)      3.306k (? 3.0%) i/s -     16.562k in   5.014727s
   Enumerable#max_by      8.322k (? 2.8%) i/s -     42.400k in   5.099400s
Enumerable#minmax_by      6.769k (? 2.6%) i/s -     34.100k in   5.041354s

### After
  Enumerable#sort_by      8.591k (? 3.0%) i/s -     43.316k in   5.046836s
Enumerable#min_by(n)     11.489k (? 1.2%) i/s -     57.732k in   5.025504s
   Enumerable#min_by     11.835k (? 2.7%) i/s -     60.150k in   5.086450s
Enumerable#max_by(n)      5.322k (? 1.1%) i/s -     26.650k in   5.008289s
   Enumerable#max_by     11.705k (? 0.6%) i/s -     59.262k in   5.062997s
Enumerable#minmax_by     11.323k (? 1.3%) i/s -     57.018k in   5.036565s

### Test code
require 'benchmark/ips'

Benchmark.ips do |x|
  enum = (1..1000).to_a.to_enum

  x.report "Enumerable#sort_by" do
    enum.sort_by { |a| a }
  end

  x.report "Enumerable#min_by(n)" do
    enum.min_by(2) { |a| a }
  end

  x.report "Enumerable#min_by" do
    enum.min_by { |a| a }
  end

  x.report "Enumerable#max_by(n)" do
    enum.max_by(2) { |a| a }
  end

  x.report "Enumerable#max_by" do
    enum.max_by { |a| a }
  end

  x.report "Enumerable#minmax_by" do
    enum.minmax_by { |a| a }
  end
end
------------------------------------------------------------------------
r58967 | ko1 | 2017-05-30 16:05:58 +0900 (Tue, 30 May 2017) | 4 lines

add parameter names.

* vm_core.h: add parameter names for rb_iseq_new*.

------------------------------------------------------------------------
r58966 | naruse | 2017-05-30 15:50:35 +0900 (Tue, 30 May 2017) | 3 lines

Solaris 10 x86 raseis SEGV

http://rubyci.s3.amazonaws.com/unstable10x/ruby-trunk/log/20170527T221806Z.diff.html.gz
------------------------------------------------------------------------
r58965 | duerst | 2017-05-30 14:43:41 +0900 (Tue, 30 May 2017) | 5 lines

Change max byte length of UTF-8 to 4 bytes

In enc/utf_8.c, change maximum byte length of UTF-8 to 4 bytes (from 6)
to conform to definition of UTF-8. This closes issue #13590.
(This is a retry of r58954, after issue #13590 has been addressed.)
------------------------------------------------------------------------
r58964 | watson1978 | 2017-05-30 11:57:33 +0900 (Tue, 30 May 2017) | 32 lines

Improve performance of Range#{min,max}

range.c (range_min): use OPTIMIZED_CMP() to compare the objects instead of
    `<=>' method dispatching for Fixnum/Float/String object inside Range object.

range.c (range_max): ditto.

    Range#min -> 34 % up
    Range#max -> 44 % up

    [ruby-core:80713] [Bug #13443] [Fix GH-1585]

### Before
           Range#min      8.428M (? 1.3%) i/s -     42.141M in   5.000952s
           Range#max      8.157M (? 1.3%) i/s -     40.852M in   5.009297s

### After
           Range#min     11.269M (? 1.2%) i/s -     56.388M in   5.004611s
           Range#max     11.764M (? 1.3%) i/s -     58.856M in   5.003820s

### Test code
require 'benchmark/ips'

Benchmark.ips do |x|
  x.report "Range#min" do |i|
    i.times { (1..100).min }
  end

  x.report "Range#max" do |i|
    i.times { (1..100).max }
  end
end
------------------------------------------------------------------------
r58963 | svn | 2017-05-30 02:56:47 +0900 (Tue, 30 May 2017) | 1 line

* properties.
------------------------------------------------------------------------
r58962 | eregon | 2017-05-30 02:56:46 +0900 (Tue, 30 May 2017) | 1 line

Clean up a bit the Process.setpriority specs
------------------------------------------------------------------------
r58961 | eregon | 2017-05-30 02:56:34 +0900 (Tue, 30 May 2017) | 1 line

Enable Process.setpriority for a single process on more platforms.
------------------------------------------------------------------------
r58960 | svn | 2017-05-30 00:34:46 +0900 (Tue, 30 May 2017) | 1 line

* 2017-05-30
------------------------------------------------------------------------
r58959 | nobu | 2017-05-30 00:34:45 +0900 (Tue, 30 May 2017) | 1 line

Run in separate process/pgrp [Bug #13609]
------------------------------------------------------------------------
r58958 | eregon | 2017-05-29 20:19:42 +0900 (Mon, 29 May 2017) | 1 line

Simplify, avoid extra exceptions and add test for concurrent mspec mkdir_p
------------------------------------------------------------------------
r58957 | k0kubun | 2017-05-29 19:53:54 +0900 (Mon, 29 May 2017) | 8 lines

rubyspec: Fix method redefinition warning

ruby/spec/rubyspec/library/erb/run_spec.rb:63: warning: method redefined; discarding old main
ruby/spec/rubyspec/library/erb/result_spec.rb:53: warning: previous definition of main was here
ruby/spec/rubyspec/library/erb/run_spec.rb:76: warning: method redefined; discarding old main1
ruby/spec/rubyspec/library/erb/result_spec.rb:67: warning: previous definition of main1 was here
ruby/spec/rubyspec/library/erb/run_spec.rb:81: warning: method redefined; discarding old main2
ruby/spec/rubyspec/library/erb/result_spec.rb:72: warning: previous definition of main2 was here
------------------------------------------------------------------------
r58956 | k0kubun | 2017-05-29 19:22:47 +0900 (Mon, 29 May 2017) | 3 lines

test/erb/test_erb.rb: Fix unused variable warning

ruby/test/erb/test_erb.rb:575: warning: assigned but unused variable - foo
------------------------------------------------------------------------
r58955 | duerst | 2017-05-29 17:59:41 +0900 (Mon, 29 May 2017) | 5 lines

revert r58954 temporarily

Revert change to maximum of 4 bytes for UTF-8 characters at r58954 temporarily.
This failed spec at https://travis-ci.org/ruby/ruby/builds/237086017, but it
is totally unclear why.
------------------------------------------------------------------------
r58954 | duerst | 2017-05-29 17:41:23 +0900 (Mon, 29 May 2017) | 4 lines

Change max byte length of UTF-8 to 4 bytes

In enc/utf_8.c, change maximum byte length of UTF-8 to 4 bytes (from 6)
to conform to definition of UTF-8. This closes issue #13590.
------------------------------------------------------------------------
r58953 | nobu | 2017-05-29 16:03:11 +0900 (Mon, 29 May 2017) | 4 lines

fix up r58952

* spec/mspec/lib/mspec/helpers/fs.rb (Object#mkdir_p): rescue
  File.stat when the target does not exist.
------------------------------------------------------------------------
r58952 | nobu | 2017-05-29 15:53:05 +0900 (Mon, 29 May 2017) | 4 lines

fix race condition

* spec/mspec/lib/mspec/helpers/fs.rb (Object#mkdir_p): fix race
  condition when multi_exec.
------------------------------------------------------------------------
r58951 | nobu | 2017-05-29 15:39:42 +0900 (Mon, 29 May 2017) | 1 line

tool/runruby.rb: exec ruby-runner
------------------------------------------------------------------------
r58950 | nobu | 2017-05-29 15:39:41 +0900 (Mon, 29 May 2017) | 1 line

ruby-runner.c: replace argv[0]
------------------------------------------------------------------------
r58949 | nobu | 2017-05-29 14:19:51 +0900 (Mon, 29 May 2017) | 5 lines

default.mspec: remove useless flags

* spec/default.mspec: removed -I options for useless or non-
  existent paths from flags.  there is no library scripts and .ext
  directory in the source directory.
------------------------------------------------------------------------
r58948 | naruse | 2017-05-29 01:41:31 +0900 (Mon, 29 May 2017) | 4 lines

suppress warning: ambiguous first argument; put parentheses or a space even after `-' operator

Introduced at r58905
http://rubyci.s3.amazonaws.com/ubuntu/ruby-trunk/log/20170526T153003Z.diff.html.gz
------------------------------------------------------------------------
r58947 | naruse | 2017-05-29 01:40:12 +0900 (Mon, 29 May 2017) | 3 lines

Revert "Update to ruby/spec@2a047c8"

This reverts commit 2531a1013b56a030f99ea4c2ee36e66dbf38a855.
------------------------------------------------------------------------
r58946 | svn | 2017-05-29 01:29:05 +0900 (Mon, 29 May 2017) | 1 line

* properties.
------------------------------------------------------------------------
r58945 | svn | 2017-05-29 01:29:05 +0900 (Mon, 29 May 2017) | 1 line

* 2017-05-29
------------------------------------------------------------------------
r58944 | naruse | 2017-05-29 01:29:04 +0900 (Mon, 29 May 2017) | 8 lines

Revert r58939 and r58942

This reverts following commits because it breaks mswinci
* Update to ruby/spec@2a047c8
* Update to ruby/spec@ca32ae2

see also the result:
http://rubyci.org/logs/mswinci.japaneast.cloudapp.azure.com/vc12-x64/ruby-trunk/log/20170528T140014Z.fail.html.gz
------------------------------------------------------------------------
r58943 | nobu | 2017-05-28 23:17:25 +0900 (Sun, 28 May 2017) | 4 lines

lldb_cruby.py: constants from the target

* misc/lldb_cruby.py (lldb_init): get constants from
  ruby_dummy_gdb_enums in the target.
------------------------------------------------------------------------
r58942 | eregon | 2017-05-28 21:02:08 +0900 (Sun, 28 May 2017) | 1 line

Update to ruby/spec@ca32ae2
------------------------------------------------------------------------
r58941 | svn | 2017-05-28 20:30:57 +0900 (Sun, 28 May 2017) | 1 line

* properties.
------------------------------------------------------------------------
r58940 | eregon | 2017-05-28 20:30:55 +0900 (Sun, 28 May 2017) | 1 line

Add tool to pull latest mspec/spec when commits have been synchronized
------------------------------------------------------------------------
r58939 | eregon | 2017-05-28 20:30:42 +0900 (Sun, 28 May 2017) | 1 line

Update to ruby/spec@2a047c8
------------------------------------------------------------------------
r58938 | nobu | 2017-05-28 18:49:30 +0900 (Sun, 28 May 2017) | 4 lines

ruby.c: file in load_file argument

* ruby.c (load_file): move opened file to an argument, to reduce
  open/close calls in the near future.
------------------------------------------------------------------------
r58937 | nobu | 2017-05-28 18:49:29 +0900 (Sun, 28 May 2017) | 5 lines

ruby.c: shrink ruby_cmdline_options_t

* ruby.c (ruby_cmdline_options_t): reordered members and turned
  simple flags into bit fields to reduce the size (136->104 on
  LP64).
------------------------------------------------------------------------
r58936 | normal | 2017-05-28 14:39:29 +0900 (Sun, 28 May 2017) | 14 lines

test/ruby/test_io.rb: adjust CPU usage check to 10%

I miscalculated for r58934, since we sleep 100ms, and
the worst possible case is 100 Hz in the kernel meaning
we only have 10ms resolution.  So, we need to increase
our CPU percentage to >= 10% for this.

This should be more than enough for our CI machines which
have 300 Hz kernels [ruby-core:81429]:

 http://ci.rvm.jp/results/trunk-test@sasada-8core/1495942555

* test/ruby/test_io.rb (test_copy_stream_no_busy_wait):
  override default percentage
------------------------------------------------------------------------
r58935 | k0kubun | 2017-05-28 10:48:11 +0900 (Sun, 28 May 2017) | 44 lines

process.c: Use getrusage(2) in Process.times

if getrusage(2) is available, to improve precision of Process.times and
its user like lib/benchmark.rb.

On macOS, since getrusage(2) has better precision than times(3),
they are much improved like:

* Before

Process.times
=> #<struct Process::Tms utime=0.56, stime=0.35, cutime=0.04, cstime=0.03>

puts Benchmark.measure { "a" * 1_000_000_000 }
  0.340000   0.310000   0.650000 (  0.674025)

* After

Process.times
=> #<struct Process::Tms utime=0.561899, stime=0.35076, cutime=0.046483, cstime=0.038929>

puts Benchmark.measure { "a" * 1_000_000_000 }
  0.343223   0.310037   0.653260 (  0.674025)

On Linux, since struct rusage from getrusage(2) is used instead of struct tms
from times(2), they are slightly improved like:

* Before

Process.times
=> #<struct Process::Tms utime=0.43, stime=0.11, cutime=0.0, cstime=0.0>

puts Benchmark.measure { "a" * 1_000_000_000 }
  0.120000   0.040000   0.170000 (  0.171621)

* After

Process.times
=> #<struct Process::Tms utime=0.432, stime=0.116, cutime=0.0, cstime=0.0>

puts Benchmark.measure { "a" * 1_000_000_000 }
  0.124000   0.048000   0.172000 (  0.171621)

[ruby-dev:49471] [Feature #11952]
------------------------------------------------------------------------
r58934 | normal | 2017-05-28 10:43:38 +0900 (Sun, 28 May 2017) | 11 lines

tests: increase CPU percentage threshold for assert_cpu_usage_low

When sleeping for the tick rate of 100ms (defined in
thread_pthread.c) as we do in test/ruby/test_io.rb
(test_copy_stream_no_busy_wait), it may not be possible to
measure with <= 10ms resolution on 100HZ systems (CONFIG_HZ in
the Linux kernel).  So increase the threshold to 15ms (10ms +
5ms slack for slow systems).

* test/lib/test/unit/assertions.rb (assert_cpu_usage_low):
  increase pct default value [ruby-core:81427]
------------------------------------------------------------------------
r58933 | svn | 2017-05-28 06:55:03 +0900 (Sun, 28 May 2017) | 1 line

* properties.
------------------------------------------------------------------------
r58932 | svn | 2017-05-28 06:55:03 +0900 (Sun, 28 May 2017) | 1 line

* remove trailing spaces.
------------------------------------------------------------------------
r58931 | eregon | 2017-05-28 06:55:02 +0900 (Sun, 28 May 2017) | 1 line

Update to ruby/spec@2795010
------------------------------------------------------------------------
r58930 | eregon | 2017-05-28 06:54:38 +0900 (Sun, 28 May 2017) | 1 line

Update to ruby/mspec@6c95759
------------------------------------------------------------------------
r58929 | svn | 2017-05-28 02:04:32 +0900 (Sun, 28 May 2017) | 1 line

* properties.
------------------------------------------------------------------------
r58928 | svn | 2017-05-28 02:04:32 +0900 (Sun, 28 May 2017) | 1 line

* 2017-05-28
------------------------------------------------------------------------
r58927 | naruse | 2017-05-28 02:04:31 +0900 (Sun, 28 May 2017) | 1 line

Initial commit of LLDB port of debug utility
------------------------------------------------------------------------
r58926 | k0kubun | 2017-05-27 22:54:09 +0900 (Sat, 27 May 2017) | 3 lines

bootstraptest/test_insns.rb: Fix typo

on test message. "torexp" insn does not exist.
------------------------------------------------------------------------
r58925 | normal | 2017-05-27 17:26:47 +0900 (Sat, 27 May 2017) | 13 lines

rb_wait_for_single_fd: do not OOM or segfault with invalid FD on select()

Instead, match the poll() implementation used on Linux for now;
as the Linux poll(2) manpage describes using negative FD to
easily ignore an FD in a larger FD set while (sleeping the given
timeout).  I'm not entirely sure if matching poll() behavior
is a good idea for a single FD, but it's better than segfaulting
or NoMemoryError.

* thread.c (init_set_fd): ignore negative FD
* test/-ext-/wait_for_single_fd/test_wait_for_single_fd.rb
  (test_wait_for_invalid_fd): check values which may trigger
  segfaults or OOM
------------------------------------------------------------------------
r58924 | normal | 2017-05-27 16:23:02 +0900 (Sat, 27 May 2017) | 8 lines

test for IO.copy_stream CPU usage (r58534)

I'm likely to make similar mistakes in the future when working
on Fiber auto-scheduling.  Start adding assertions for existing
code, first.

* test/ruby/test_io.rb (test_copy_stream_no_busy_wait): added
* test/lib/test/unit/assertions.rb (assert_cpu_usage_low): added
------------------------------------------------------------------------
r58923 | normal | 2017-05-27 16:18:52 +0900 (Sat, 27 May 2017) | 4 lines

Revert "common: "test-all" depends on "exts" target"

This reverts r58919.
Apparently skipping exts is intentional since r58759
------------------------------------------------------------------------
r58922 | watson1978 | 2017-05-27 14:41:02 +0900 (Sat, 27 May 2017) | 67 lines

Improve performance of some Time & Rational methods

rational.c (i_gcd): replace GCD algorithm from Euclidean algorithm to Stein
    algorithm (https://en.wikipedia.org/wiki/Binary_GCD_algorithm).

    Some Time methods will call internal quov() function and it calls
    Rational#quo -> f_muldiv() -> i_gcd() in rational.c
    And some Rational methods also call i_gcd().

    The implementation of Euclidean algorithm spent a long time at modulo
    operation (ie "x = y % x;").
    The Stein algorithm will replace with shift operation which is faster
    than modulo.

    Time#subsec -> 36 % up
    Time#to_r   -> 26 % up
    Rational#+  -> 14 % up
    Rational#-  -> 15 % up
    Rational#*  -> 13 % up

    [ruby-core:80843] [Bug #13503] [Fix GH-1596]

### Before
         Time#subsec      2.142M (? 9.8%) i/s -     10.659M in   5.022659s
           Time#to_r      2.003M (? 9.1%) i/s -      9.959M in   5.012445s
          Rational#+      3.843M (? 0.9%) i/s -     19.274M in   5.016254s
          Rational#-      3.820M (? 1.3%) i/s -     19.149M in   5.014137s
          Rational#*      5.198M (? 1.4%) i/s -     26.016M in   5.005664s
* After
         Time#subsec      2.902M (? 2.9%) i/s -     14.505M in   5.001815s
           Time#to_r      2.503M (? 4.8%) i/s -     12.512M in   5.011454s
          Rational#+      4.390M (? 1.2%) i/s -     22.001M in   5.012413s
          Rational#-      4.391M (? 1.2%) i/s -     22.013M in   5.014584s
          Rational#*      5.872M (? 2.2%) i/s -     29.369M in   5.003666s

* Test code
require 'benchmark/ips'

Benchmark.ips do |x|
  x.report "Time#subsec" do |t|
    time = Time.now
    t.times { time.subsec }
  end

  x.report "Time#to_r" do |t|
    time = Time.now
    t.times { time.to_r }
  end

  x.report "Rational#+" do |t|
    rat1 = 1/2r
    rat2 = 1/3r
    t.times { rat1 + rat2 }
  end

  x.report "Rational#-" do |t|
    rat1 = 1/3r
    rat2 = 1/2r
    t.times { rat1 - rat2 }
  end

  x.report "Rational#*" do |t|
    rat1 = 1/3r
    rat2 = 1/2r
    t.times { rat1 * rat2 }
  end
end
------------------------------------------------------------------------
r58921 | watson1978 | 2017-05-27 14:41:00 +0900 (Sat, 27 May 2017) | 51 lines

Improve performance of some Time methods

internal.h : add rb_numeric_quo() as internal API.
rational.c : rename numeric_quo() to rb_numeric_quo() as internal API.
time.c (quov): optimize by invoking rb_numeric_quo() to retrieve a value of
    Numeric#quo instead of method dispatching via rb_funcall().

    Time#subsec ->  7 % up
    Time#-      -> 26 % up
    Time#to_f   -> 30 % up
    Time#to_r   ->  7 % up

    [ruby-core:80915] [Bug #13519] [Fix GH-1601]

### Before
         Time#subsec      2.024M (? 8.7%) i/s -     10.062M in   5.009762s
              Time#-      5.049M (? 4.7%) i/s -     25.186M in   5.002379s
           Time#to_f      5.625M (? 4.2%) i/s -     28.066M in   5.000749s
           Time#to_r      1.880M (? 9.7%) i/s -      9.361M in   5.027527s

### After
         Time#subsec      2.155M (? 9.7%) i/s -     10.724M in   5.022579s
              Time#-      6.362M (? 2.0%) i/s -     31.824M in   5.004625s
           Time#to_f      7.287M (? 4.8%) i/s -     36.402M in   5.010983s
           Time#to_r      2.020M (? 9.4%) i/s -     10.059M in   5.021852s

### Test code
require 'benchmark/ips'

Benchmark.ips do |x|
  x.report "Time#subsec" do |t|
    time = Time.now
    t.times { time.subsec }
  end

  x.report "Time#-" do |t|
    time1 = Time.now
    time2 = Time.now
    t.times { time1 - time2 }
  end

  x.report "Time#to_f" do |t|
    time = Time.now
    t.times { time.to_f }
  end

  x.report "Time#to_r" do |t|
    time = Time.now
    t.times { time.to_r }
  end
end
------------------------------------------------------------------------
r58920 | nobu | 2017-05-27 14:18:52 +0900 (Sat, 27 May 2017) | 1 line

.travis.yml: exts is not needed for tests here
------------------------------------------------------------------------
r58919 | normal | 2017-05-27 13:35:41 +0900 (Sat, 27 May 2017) | 8 lines

common: "test-all" depends on "exts" target

This allows me to test changes to ext/ more easily by only typing:

  make test-all TESTS=/path/to/ext/test_foo.rb

I spent a few minutes wondering what was wrong before I realized
changes to exts were not taking effect.
------------------------------------------------------------------------
r58918 | nobu | 2017-05-27 12:43:02 +0900 (Sat, 27 May 2017) | 6 lines

mspec/commands/mspec.rb: formatter for multi_exec

* spec/mspec/lib/mspec/commands/mspec.rb (MSpecMain#multi_exec):
  as multi_exec children must run with yaml formatter, append the
  option for it after other options to override another formatter
  option with a warning if it is given.
------------------------------------------------------------------------
r58917 | nobu | 2017-05-27 12:14:04 +0900 (Sat, 27 May 2017) | 1 line

.travis.yml: get number of processors at runtime
------------------------------------------------------------------------
r58916 | k0kubun | 2017-05-27 12:06:55 +0900 (Sat, 27 May 2017) | 12 lines

erb.rb: Use str_uplus instead of rb_str_dup

to skip unnecessary string allocation on frozen_string_literal: false.
str_uplus can bypass calling rb_str_dup when OBJ_FROZEN is true.

* Before

erb_render      1.064

* Afete

erb_render      0.909
------------------------------------------------------------------------
r58915 | k0kubun | 2017-05-27 11:47:11 +0900 (Sat, 27 May 2017) | 6 lines

benchmark: Rename to bm_erb_render.rb

from bm_app_erb_render.rb.

I'm told from ko1 that bm_app_* is namespace for Ruby applications,
not for ERB and we should use bm_erb_* for ERB benchmark instead.
------------------------------------------------------------------------
r58914 | ko1 | 2017-05-27 11:01:41 +0900 (Sat, 27 May 2017) | 1 line

apply timeout scale
------------------------------------------------------------------------
r58913 | nobu | 2017-05-27 10:26:31 +0900 (Sat, 27 May 2017) | 4 lines

numeric.c: fix for small number

* numeric.c (flo_floor, flo_ceil): should not return zero for small
  number.  [ruby-core:81394] [Bug #13599]
------------------------------------------------------------------------
r58912 | nobu | 2017-05-27 10:04:23 +0900 (Sat, 27 May 2017) | 4 lines

dir.c: fix FD leaks

* dir.c (do_opendir): close FD when fdopendir failed, e.g.,
  ENOTDIR.  [Feature#13056]
------------------------------------------------------------------------
r58911 | nobu | 2017-05-27 02:11:15 +0900 (Sat, 27 May 2017) | 3 lines

numeric.c: remove duplicate code

* numeric.c (flo_to_i): use dbl2ival and reduce duplicate code.
------------------------------------------------------------------------
r58910 | svn | 2017-05-27 02:10:03 +0900 (Sat, 27 May 2017) | 1 line

* 2017-05-27
------------------------------------------------------------------------
r58909 | watson1978 | 2017-05-27 02:10:01 +0900 (Sat, 27 May 2017) | 24 lines

Improve Array#concat performance if only one argument is given

* array.c (rb_ary_concat_multi): concatenate the array without generating
    temporary Array object if only one argument is given.
    This is very similar with r58886.

    Array#concat will be faster around 19%.
    [Fix GH-1634]

### Before
        Array#concat      2.187M (? 3.5%) i/s -     10.926M in   5.002829s

### After
        Array#concat      2.598M (? 1.8%) i/s -     13.008M in   5.008201s

### Test code
require 'benchmark/ips'

Benchmark.ips do |x|
  x.report "Array#concat" do |i|
    other = [4]
    i.times { [1, 2, 3].concat(other) }
  end
end
------------------------------------------------------------------------
r58908 | k0kubun | 2017-05-26 23:17:55 +0900 (Fri, 26 May 2017) | 11 lines

erb.rb: Tiny improvement of compiling cost

by reducing string allocation.

* Before

app_erb 0.687

* After

app_erb 0.679
------------------------------------------------------------------------
r58907 | k0kubun | 2017-05-26 22:58:36 +0900 (Fri, 26 May 2017) | 3 lines

erb.rb: [DOC] Follow compiled code's change

introduced in r58905.
------------------------------------------------------------------------
r58906 | svn | 2017-05-26 22:49:36 +0900 (Fri, 26 May 2017) | 1 line

* properties.
------------------------------------------------------------------------
r58905 | k0kubun | 2017-05-26 22:49:35 +0900 (Fri, 26 May 2017) | 34 lines

erb.rb: Generate static string with opt_str_uminus

to skip object allocation for static string.

We can't always enable frozen_string_literal pragma because we can't
freeze string literals embedded by user for backward compatibility.
So we need to use fstring for each static string.

Since adding ".freeze" to string literals in #content_dump is slow
on compiling, I used unary "-" operator instead.

benchmark/bm_app_erb_render.rb: Added rendering-only benchmark to
test rendering performance on production environment.

This benchmark is created to reproduce the behavior on Sinatra (Tilt).
Thus it doesn't use ERB#result to skip parsing compiled code.
It doesn't use ERB#def_method too to regard `title` and `content` as
local variables. If we use #def_method, `title` and `content` needs
to be method call. I wanted to avoid it.

This patch's benchmark results is:

* Before

app_erb_render  1.250
app_erb 0.704

* After

app_erb_render  1.066
app_erb 0.686

This patch optimizes rendering performance (app_erb_render) without
spoiling (total of rendering +) compiling performance (app_erb).
------------------------------------------------------------------------
r58904 | k0kubun | 2017-05-26 21:12:13 +0900 (Fri, 26 May 2017) | 80 lines

erb.rb: Use script encoding instead of force_encoding

The original intention of introducing `_erbout.force_encoding`
in r21170 was:

- "returns a string in the same character encoding as the input string."
- "When the input string has a magic comment, however, it returns a string
  in the encoding specified by the magic comment."

And they are tested by test/erb/test_erb_m17n.rb well and this patch
passes the test.
Since magic comment is always added in ERB compiled code, using ''.dup
instead of String.new will set correct encoding without calling
force_encoding method.

The benchmark results are:

* Before

$ ./ruby benchmark/run.rb --matzruby=./ruby -m bm_app_erb
MatzRuby:
ruby 2.5.0dev (2017-05-26 skip-force-enc.. 58903) [x86_64-linux]
last_commit=Skip force_encoding in compiled code of erb
Ruby:

app_erb:
matz 0.715

* After

$ ./ruby benchmark/run.rb --matzruby=./ruby -m bm_app_erb
MatzRuby:
ruby 2.5.0dev (2017-05-26 skip-force-enc.. 58903) [x86_64-linux]
last_commit=Skip force_encoding in compiled code of erb
Ruby:

app_erb:
matz 0.672

And perf(1) results are:

* Before

$ sudo perf stat ./ruby benchmark/bm_app_erb.rb

 Performance counter stats for './ruby benchmark/bm_app_erb.rb':

        709.571746      task-clock (msec)         #    1.000 CPUs utilized
                 5      context-switches          #    0.007 K/sec
                 1      cpu-migrations            #    0.001 K/sec
             1,337      page-faults               #    0.002 M/sec
     3,088,936,521      cycles                    #    4.353 GHz
   <not supported>      stalled-cycles-frontend
   <not supported>      stalled-cycles-backend
     4,849,564,282      instructions              #    1.57  insns per cycle
     1,027,042,087      branches                  # 1447.411 M/sec
        19,983,456      branch-misses             #    1.95% of all branches

       0.709747823 seconds time elapsed

* After

$ sudo perf stat ./ruby benchmark/bm_app_erb.rb

 Performance counter stats for './ruby benchmark/bm_app_erb.rb':

        693.494673      task-clock (msec)         #    1.000 CPUs utilized
                 7      context-switches          #    0.010 K/sec
                 1      cpu-migrations            #    0.001 K/sec
             1,316      page-faults               #    0.002 M/sec
     3,025,639,349      cycles                    #    4.363 GHz
   <not supported>      stalled-cycles-frontend
   <not supported>      stalled-cycles-backend
     4,694,848,271      instructions              #    1.55  insns per cycle
       994,496,704      branches                  # 1434.037 M/sec
        19,693,239      branch-misses             #    1.98% of all branches

       0.693724345 seconds time elapsed

[fix GH-1147]
------------------------------------------------------------------------
r58903 | nobu | 2017-05-26 18:49:20 +0900 (Fri, 26 May 2017) | 4 lines

remove extra call to OleInitialize

[Fix GH-1629]
Signed-off-by: Matt Wrock <matt@mattwrock.com>
------------------------------------------------------------------------
r58902 | normal | 2017-05-26 16:28:23 +0900 (Fri, 26 May 2017) | 9 lines

attempt to fix rb_alloc_tmp_buffer2 for ALLOCV_N

This is a confusing function to my arithmetic-challenged mind,
but nobu seems alright with this.  Anyways this lets me use
large values of elsize without segfaulting, and "make exam"
passes.

* include/ruby/ruby.h (rb_alloc_tmp_buffer2): attempt to fix
  [ruby-core:81388] [ruby-core:81391] [Bug #13595]
------------------------------------------------------------------------
r58901 | nobu | 2017-05-26 16:04:43 +0900 (Fri, 26 May 2017) | 4 lines

dir.c: yield without base part

* dir.c (glob_helper): yield globbed part only without the base
  directory path part if the base is given.  [Feature#13056]
------------------------------------------------------------------------
r58900 | nobu | 2017-05-26 16:02:51 +0900 (Fri, 26 May 2017) | 5 lines

runruby.rb: no PRELOAD on multiarch [ci skip]

* tool/runruby.rb: do not set environment to preload on multiarch
  platforms, otherwise other external commands (e.g., /bin/sh)
  fail to run.
------------------------------------------------------------------------
r58899 | sonots | 2017-05-26 15:42:11 +0900 (Fri, 26 May 2017) | 2 lines

* lib/uri/common.rb: [DOC] add rdoc to describe
  URI.unescape is obsolete [ci-skip] [fix GH-1630]
------------------------------------------------------------------------
r58898 | nobu | 2017-05-26 15:39:49 +0900 (Fri, 26 May 2017) | 4 lines

sprintf.c: remove redundant condition

* sprintf.c (rb_str_format): when `t + 1 == end` (or `t < end`),
  `*t == '%'` is always true.  [ruby-core:80153] [Bug #13315]
------------------------------------------------------------------------
r58897 | nobu | 2017-05-26 15:39:06 +0900 (Fri, 26 May 2017) | 1 line

string.c: adjust style [ci skip]
------------------------------------------------------------------------
r58896 | nobu | 2017-05-26 15:28:38 +0900 (Fri, 26 May 2017) | 7 lines

Symbol support for opt_eql_func too

* vm_insnhelper.c (comparable_by_identity): extract the condition
  where comparable by identity.  currently both are same types,
  Fixnum, Flonum, or Symbol.

* vm_insnhelper.c (opt_eql_func): support Symbol too.
------------------------------------------------------------------------
r58895 | ko1 | 2017-05-26 14:26:57 +0900 (Fri, 26 May 2017) | 5 lines

Symbol support for opt_eq_func.

* vm_insnhelper.c (opt_eq_func): optimize for symbol comparison.
  [Bug #13330] [fix GH-1540]

------------------------------------------------------------------------
r58894 | rhe | 2017-05-26 10:50:20 +0900 (Fri, 26 May 2017) | 4 lines

compile.c: fix possible use of uninitialized value

LABEL::unremovable added by r58810 is not initialized by
new_label_body(), making the optimization unstable.
------------------------------------------------------------------------
r58893 | ko1 | 2017-05-26 08:43:33 +0900 (Fri, 26 May 2017) | 7 lines

use timeout scale.

* test/lib/envutil.rb: introduce EnvUtil.apply_timeout_scale to use
  this scale from outside.

* test/ruby/test_thread.rb (test_fork_in_thread): respect timeout scale.

------------------------------------------------------------------------
r58892 | k0kubun | 2017-05-26 00:43:49 +0900 (Fri, 26 May 2017) | 3 lines

NEWS: Add entry for ERB#result_with_hash

See r58891.
------------------------------------------------------------------------
r58891 | k0kubun | 2017-05-26 00:38:25 +0900 (Fri, 26 May 2017) | 3 lines

erb.rb: Add ERB#result_with_hash

[ruby-core:55985] [Feature #8631] [fix GH-1623]
------------------------------------------------------------------------
r58890 | eregon | 2017-05-26 00:33:28 +0900 (Fri, 26 May 2017) | 5 lines

Raise ArgumentError if sprintf format string ends with %

* Add tests and specs. See ruby/spec#401.
  Patch by Yuta Iwama and Shintaro Morikawa.
  [ruby-core:80153] [Bug #13315] [Fix GH-1560]
------------------------------------------------------------------------
r58889 | svn | 2017-05-26 00:14:39 +0900 (Fri, 26 May 2017) | 1 line

* 2017-05-26
------------------------------------------------------------------------
r58888 | stomar | 2017-05-26 00:14:38 +0900 (Fri, 26 May 2017) | 4 lines

hash.c: docs for Hash#transform_values

* hash.c: [DOC] fix return value in call-seq of Hash#transform_values;
  other small fixes.
------------------------------------------------------------------------
r58887 | k0kubun | 2017-05-25 20:41:45 +0900 (Thu, 25 May 2017) | 3 lines

insns.def: [DOC] Fix description of tostring

rb_obj_as_string() calls not #to_str (idTo_str) but #to_s (idTo_s).
------------------------------------------------------------------------
r58886 | k0kubun | 2017-05-25 20:14:40 +0900 (Thu, 25 May 2017) | 31 lines

string.c: Optimize String#concat when argc is 1

Optimize performance regression introduced in r56021.

* Benchmark (i7-4790K @ 4.00GH, x86_64 GNU/Linux)

Benchmark.ips do |x|
  x.report("String#concat (1)") { "a".concat("b") }
  if RUBY_VERSION >= "2.4.0"
    x.report("String#concat (2)") { "a".concat("b", "c") }
  end
end

* Ruby 2.3

Calculating -------------------------------------
   String#concat (1)      6.003M (? 5.2%) i/s -     30.122M in   5.031646s

* Ruby 2.4 (Before this patch)

Calculating -------------------------------------
   String#concat (1)      4.458M (? 8.9%) i/s -     22.298M in   5.058084s
   String#concat (2)      3.660M (? 5.6%) i/s -     18.314M in   5.020527s

* Ruby 2.4 (After this patch)

Calculating -------------------------------------
   String#concat (1)      6.448M (? 5.2%) i/s -     32.215M in   5.010833s
   String#concat (2)      3.633M (? 9.0%) i/s -     18.056M in   5.022603s

[fix GH-1631]
------------------------------------------------------------------------
r58885 | stomar | 2017-05-25 17:34:13 +0900 (Thu, 25 May 2017) | 4 lines

dir.c: document base keyword argument of Dir.glob

* dir.c: [DOC] document the new `base` keyword argument of Dir.glob
  [Feature #13056]; also improve docs for Dir.glob and Dir[].
------------------------------------------------------------------------
r58884 | stomar | 2017-05-25 16:50:20 +0900 (Thu, 25 May 2017) | 3 lines

dir.c: docs for Dir.each_child and Dir.children

* dir.c: [DOC] fix examples for Dir.each_child and Dir.children.
------------------------------------------------------------------------
r58883 | nobu | 2017-05-25 16:36:47 +0900 (Thu, 25 May 2017) | 1 line

vm_insnhelper.c: remove redefinitions and undefine after used
------------------------------------------------------------------------
r58882 | nobu | 2017-05-25 14:29:35 +0900 (Thu, 25 May 2017) | 4 lines

vm_insnhelper.c: rb_eql_opt should call eql?

* vm_insnhelper.c (rb_eql_opt): should call #eql? on Float and
  String, not #==.
------------------------------------------------------------------------
r58881 | watson1978 | 2017-05-25 13:25:39 +0900 (Thu, 25 May 2017) | 37 lines

Improve performance of rb_eql()

This improvement is similar with https://github.com/ruby/ruby/pull/1552

internal.h: add declaration of rb_eql_opt() API.

vm_insnhelper.c (rb_eql_opt): add rb_eql_opt() API which provides optimized
    path for #eql? method such as rb_equal_opt().

object.c (rb_eql): optimize using rb_eql_opt() such as rb_equal().
    Array#eql? and some methods have used rb_eql() and Array#eql? will be faster
    around 20%.

    [ruby-core:80761] [Bug #13447] [Fix GH-#1589]

### Before
       user     system      total        real
   1.570000   0.000000   1.570000 (  1.569754)

### After
       user     system      total        real
   1.300000   0.000000   1.300000 (  1.303624)

### Test code
require 'benchmark'

Benchmark.bmbm do |x|
  ary1 = Array.new(1000) { rand(1000) }
  ary2 = Array.new(1000) { rand(1000) }

  x.report do
    5000000.times do
      ary1.eql?(ary2)
    end
  end

end
------------------------------------------------------------------------
r58880 | watson1978 | 2017-05-25 13:25:37 +0900 (Thu, 25 May 2017) | 62 lines

Improve performance of rb_equal()

* object.c (rb_equal): add optimized path to compare the objects using
    rb_equal_opt(). Previously, if not same objects were given, rb_equal() would
    call `==' method via rb_funcall() which took a long time.

    rb_equal_opt() has provided faster comparing for Fixnum/Float/String objects.
    Now, Time#eql? uses rb_equal() to compare with argument object and it will
    be faster around 40% on 64-bit environment.

* array.c (rb_ary_index): remove redundant rb_equal_opt() calling.
    Now, rb_equal() was optimized using rb_equal_opt().
    If rb_equal_opt() returns Qundef, it will invoke rb_equal() -> rb_equal_opt(),
    and it will cause the performance regression.

    So, this patch will remove first redundant rb_equal_opt() calling.

* array.c (rb_ary_rindex): ditto.
* array.c (rb_ary_includes): ditto.

    [ruby-core:80360] [Bug #13365] [Fix GH-#1552]

### Before
Time#eql? with other      7.309M (? 1.4%) i/s -     36.647M in   5.014964s
    Array#index(val)      1.433M (? 1.2%) i/s -      7.207M in   5.030942s
   Array#rindex(val)      1.418M (? 1.6%) i/s -      7.103M in   5.009164s
 Array#include?(val)      1.451M (? 0.9%) i/s -      7.295M in   5.026392s

### After
Time#eql? with other     10.321M (? 1.9%) i/s -     51.684M in   5.009203s
    Array#index(val)      1.474M (? 0.9%) i/s -      7.433M in   5.044384s
   Array#rindex(val)      1.449M (? 1.7%) i/s -      7.292M in   5.034436s
 Array#include?(val)      1.466M (? 1.7%) i/s -      7.373M in   5.030047s

### Test code
require 'benchmark/ips'

Benchmark.ips do |x|
  t1 = Time.now
  t2 = Time.now

  x.report "Time#eql? with other" do |i|
    i.times { t1.eql?(t2) }
  end

  # Benchmarks to check whether it didn't introduce the regression
  obj = Object.new
  x.report "Array#index(val)" do |i|
    ary = [1, 2, true, false, obj]
    i.times { ary.index(obj) }
  end

  x.report "Array#rindex(val)" do |i|
    ary = [1, 2, true, false, obj].reverse
    i.times { ary.rindex(obj) }
  end

  x.report "Array#include?(val)" do |i|
    ary = [1, 2, true, false, obj]
    i.times { ary.include?(obj) }
  end
end
------------------------------------------------------------------------
r58879 | nobu | 2017-05-25 11:50:21 +0900 (Thu, 25 May 2017) | 5 lines

dir.c: Dir.each_child and Dir.children

* dir.c (dir_s_each_child, dir_s_children): Dir.each_child and
  Dir.children which are similar to Dir.foreach and Dir.entries
  respectively, except to exclude "."  and "..".  [Feature #11302]
------------------------------------------------------------------------
r58878 | nobu | 2017-05-25 11:50:20 +0900 (Thu, 25 May 2017) | 4 lines

test_dir.rb: test Dir.entries

* test/ruby/test_dir.rb (test_entries): test class singleton
  method Dir.entries too.
------------------------------------------------------------------------
r58877 | nobu | 2017-05-25 10:46:36 +0900 (Thu, 25 May 2017) | 3 lines

dir.c: dir_each_entries

* dir.c (dir_each_entries): expand entries without method calls.
------------------------------------------------------------------------
r58876 | normal | 2017-05-25 06:26:14 +0900 (Thu, 25 May 2017) | 3 lines

string.c: fix String#crypt leak introduced in r58866

* string.c (rb_str_crypt): define LARGE_CRYPT_DATA when allocating
------------------------------------------------------------------------
r58875 | svn | 2017-05-25 03:59:25 +0900 (Thu, 25 May 2017) | 1 line

* 2017-05-25
------------------------------------------------------------------------
r58874 | normal | 2017-05-25 03:59:24 +0900 (Thu, 25 May 2017) | 14 lines

thread_pthread: retry timer thread creation w/o attr on EINVAL

Setting a small stack size can fail due to having 3rd-party
libraries (e.g. libkqueue) loaded, if those libraries use
thread-local-storage (__thread) heavily.  This causes
pthread_create to fail with small stacks; even if our
timer_thread function does not hit any of the TLS-using code
paths.

Today, some RubyGems are capable of using libkqueue (or __thread
storage directly), and future versions of Ruby may use kqueue
internally.

cf. https://www.akkadia.org/drepper/tls.pdf
------------------------------------------------------------------------
r58873 | nobu | 2017-05-24 23:26:09 +0900 (Wed, 24 May 2017) | 4 lines

dir.c: prefer NAMLEN to d_name

* dir.c (glob_helper): prefer NAMLEN, do not assume d_name is NUL
  terminated everywhere.
------------------------------------------------------------------------
r58872 | nobu | 2017-05-24 22:30:54 +0900 (Wed, 24 May 2017) | 4 lines

test_http.rb: fix r58855

* test/net/http/test_http.rb (test_s_start): git rid of error when
  failed to start a connection.
------------------------------------------------------------------------
r58871 | nobu | 2017-05-24 17:00:42 +0900 (Wed, 24 May 2017) | 4 lines

enum.c: respect method visibility

* enum.c (ary_inject_op): should respect method visibility, do not
  optimize uncallable method.  [ruby-core:81349] [Bug #13592]
------------------------------------------------------------------------
r58870 | nobu | 2017-05-24 16:57:19 +0900 (Wed, 24 May 2017) | 4 lines

test_enum.rb: test_inject_array_op_redefined

* test/ruby/test_enum.rb (test_inject_array_op_redefined): test
  other operators too.  [Bug#12178]
------------------------------------------------------------------------
r58869 | nobu | 2017-05-24 16:57:18 +0900 (Wed, 24 May 2017) | 4 lines

assertions.rb: AllFailures#foreach

* test/lib/test/unit/assertions.rb (AllFailures#foreach):
  shortcircuit for `each` and `AllFailures#for`.
------------------------------------------------------------------------
r58868 | nobu | 2017-05-24 16:11:41 +0900 (Wed, 24 May 2017) | 4 lines

duplicate method

* test/ruby/test_enum.rb (assert_float_equal): remove overridden
  definition.
------------------------------------------------------------------------
r58867 | watson1978 | 2017-05-24 15:57:08 +0900 (Wed, 24 May 2017) | 65 lines

Improve performance in where push the element into non shared Array object

* array.c (ary_ensure_room_for_push): use rb_ary_modify_check() instead of
    rb_ary_modify() to check whether the object can be modified for non shared
    Array object. rb_ary_modify() has the codes for shared Array object too.
    In here, it has condition branch for shared / non shared Array object and
    it can use rb_ary_modify_check() which is smaller function than
    rb_ary_modify() for non shared object.

    rb_ary_modify_check() will be expand as inline function.
    If it will compile with GCC, Array#<< will be faster around 8%.

    [ruby-core:81082] [Bug #13553] [Fix GH-1609]

## Clang 802.0.42
### Before
            Array#<<      9.353M (? 1.7%) i/s -     46.787M in   5.004123s
          Array#push      7.702M (? 1.1%) i/s -     38.577M in   5.009338s
     Array#values_at      6.133M (? 1.9%) i/s -     30.699M in   5.007772s

### After
            Array#<<      9.458M (? 2.0%) i/s -     47.357M in   5.009069s
          Array#push      7.921M (? 1.8%) i/s -     39.665M in   5.009151s
     Array#values_at      6.377M (? 2.3%) i/s -     31.881M in   5.001888s

### Result
Array#<<        -> 1.2% faster
Array#push      -> 2.8% faster
Array#values_at -> 3.9% faster

## GCC 7.1.0
### Before
            Array#<<     10.497M (? 1.1%) i/s -     52.665M in   5.017601s
          Array#push      8.527M (? 1.6%) i/s -     42.777M in   5.018003s
     Array#values_at      7.621M (? 1.7%) i/s -     38.152M in   5.007910s

### After
            Array#<<     11.403M (? 1.3%) i/s -     57.028M in   5.001849s
          Array#push      8.924M (? 1.3%) i/s -     44.609M in   4.999940s
     Array#values_at      8.291M (? 1.4%) i/s -     41.487M in   5.004727s

### Result
Array#<<        -> 8.3% faster
Array#push      -> 4.3% faster
Array#values_at -> 8.7% faster

## Test code
require 'benchmark/ips'

Benchmark.ips do |x|

  x.report "Array#<<" do |i|
    i.times { [1,2] << 3 }
  end

  x.report "Array#push" do |i|
    i.times { [1,2].push(3) }
  end

  x.report "Array#values_at" do |i|
    ary = [1, 2, 3, 4, 5]
    i.times { ary.values_at(0, 2, 4) }
  end

end
------------------------------------------------------------------------
r58866 | nobu | 2017-05-24 15:55:09 +0900 (Wed, 24 May 2017) | 4 lines

string.c: for small crypt_data

* string.c (rb_str_crypt): struct crypt_data defined in
  missing/crypt.h is small enough.
------------------------------------------------------------------------
r58865 | ko1 | 2017-05-24 15:46:44 +0900 (Wed, 24 May 2017) | 14 lines

Add debug counters.

* debug_counter.h: add the following counters to measure object types.
  obj_free: freed count
  obj_str_ptr: freed count of Strings they have extra buff.
  obj_str_embed: freed count of Strings they don't have extra buff.
  obj_str_shared: freed count of Strings they have shared extra buff.
  obj_str_nofree: freed count of Strings they are marked as nofree.
  obj_str_fstr: freed count of Strings they are marked as fstr.
  obj_ary_ptr: freed count of Arrays they have extra buff.
  obj_ary_embed: freed count of Arrays they don't have extra buff.
  obj_obj_ptr: freed count of Objects (T_OBJECT) they have extra buff.
  obj_obj_embed: freed count of Objects they don't have extra buff.

------------------------------------------------------------------------
r58864 | normal | 2017-05-24 12:01:44 +0900 (Wed, 24 May 2017) | 4 lines

string.c (rb_str_crypt): fix excessive stack use with crypt_r

"struct crypt_data" is 131232 bytes on x86-64 GNU/Linux,
making it unsafe to use tiny Fiber stack sizes.
------------------------------------------------------------------------
r58863 | normal | 2017-05-24 09:34:12 +0900 (Wed, 24 May 2017) | 14 lines

rubyspec/core/io/popen_spec: avoid lingering "ruby -e sleep" process

The ruby_cmd helper blindly escapes code blocks passed to it,
causing "sleep" to be quoted in the command-line.  This quoting
results in IO.popen using a subshell (/bin/sh) to run the given
string command instead of invoking the Ruby executable directly.

Thus, IO.popen would only see the PID of the subshell via
IO#pid, and merely sending SIGKILL to the subshell would not
result in the child ("ruby -e sleep") being killed.

This problem with lingering ruby processes was easier to
reproduce on slow or heavily-loaded systems using low-scheduling
priority (e.g. "chrt -i 0 make test-rubyspec")
------------------------------------------------------------------------
r58862 | svn | 2017-05-24 01:51:48 +0900 (Wed, 24 May 2017) | 1 line

* 2017-05-24
------------------------------------------------------------------------
r58861 | naruse | 2017-05-24 01:51:48 +0900 (Wed, 24 May 2017) | 5 lines

skip on Solaris 11

On Solaris 11, MSG_OOB is in readfds?
http://rubyci.org/logs/rubyci.s3.amazonaws.com/unstable11x/ruby-trunk/log/20170523T152403Z.fail.html.gz
http://rubyci.org/logs/rubyci.s3.amazonaws.com/unstable11s/ruby-trunk/log/20170523T152503Z.fail.html.gz
------------------------------------------------------------------------
r58860 | nobu | 2017-05-23 23:34:12 +0900 (Tue, 23 May 2017) | 4 lines

Dir as base option

* dir.c (glob_helper): support Dir instance as `base` option.
  [Feature#13056]
------------------------------------------------------------------------
r58859 | nobu | 2017-05-23 22:54:10 +0900 (Tue, 23 May 2017) | 4 lines

test_dir.rb: sort

* test/ruby/test_dir.rb (test_glob_base): sort the globbed result
  to compare.
------------------------------------------------------------------------
r58858 | nobu | 2017-05-23 22:47:36 +0900 (Tue, 23 May 2017) | 4 lines

Dir.glob base option

* dir.c (dir_s_aref, dir_s_glob): add new optional keyword
  argument, `base`.  [Feature#13056]
------------------------------------------------------------------------
r58857 | nobu | 2017-05-23 22:18:45 +0900 (Tue, 23 May 2017) | 3 lines

readonly srcdir

.travis.yml: make srcdir unwritable during build and tests.
------------------------------------------------------------------------
r58856 | nobu | 2017-05-23 21:42:40 +0900 (Tue, 23 May 2017) | 3 lines

out-of-place on travis

* .travis.yml (before_script, script): out-of-place build.
------------------------------------------------------------------------
r58855 | nobu | 2017-05-23 21:38:01 +0900 (Tue, 23 May 2017) | 4 lines

fix FD leaks

* test/net/http/test_http.rb (test_s_start): finish connections to
  get rid of FD leaks.
------------------------------------------------------------------------
r58854 | nobu | 2017-05-23 21:11:57 +0900 (Tue, 23 May 2017) | 3 lines

LABEL_FORMAT

* compile.c (LABEL_FORMAT): extract format string for labels.
------------------------------------------------------------------------
r58853 | nobu | 2017-05-23 20:35:54 +0900 (Tue, 23 May 2017) | 3 lines

unused member

* vsnprintf.c (__sFILE): _lbfsize is not used.
------------------------------------------------------------------------
r58852 | kou | 2017-05-23 15:02:20 +0900 (Tue, 23 May 2017) | 2 lines

Use test-unit 3.2.4

------------------------------------------------------------------------
r58851 | nobu | 2017-05-23 10:04:09 +0900 (Tue, 23 May 2017) | 3 lines

readonly srcdir

appveyor.yml: make srcdir unwritable during build and tests.
------------------------------------------------------------------------
r58850 | nobu | 2017-05-23 10:04:07 +0900 (Tue, 23 May 2017) | 1 line

appveyor.yml: remove unused UNICODE_DATA_DIR
------------------------------------------------------------------------
r58849 | svn | 2017-05-23 08:41:51 +0900 (Tue, 23 May 2017) | 1 line

* 2017-05-23
------------------------------------------------------------------------
r58848 | normal | 2017-05-23 08:41:50 +0900 (Tue, 23 May 2017) | 7 lines

variable.c (autoload_sleep_done): avoid needless list_node init

We do not need list_del_init in ensure callbacks, only list_del,
since it can only ever be called after list_del_init in
autoload_reset.  So avoid the needless re-initialization.

* variable.c (autoload_sleep_done): s/list_del_init/list_del/
------------------------------------------------------------------------
r58847 | nobu | 2017-05-22 23:25:56 +0900 (Mon, 22 May 2017) | 1 line

source directory may not be writable
------------------------------------------------------------------------
r58846 | normal | 2017-05-22 16:36:00 +0900 (Mon, 22 May 2017) | 9 lines

lib/net/protocol.rb: account read_bytes before caller sees it

Users may modify the chunk yielded to them in Net::HTTPResponse#read_body.
This will allow users to reduce memory usage by calling
String#clear on the buffer once they're done using it.

* lib/net/protocol.rb (read): increment read_bytes earlier
  (read_all): ditto
* test/net/http/test_httpresponse.rb (test_read_body_block_mod): new test
------------------------------------------------------------------------
r58845 | rhe | 2017-05-22 16:13:06 +0900 (Mon, 22 May 2017) | 4 lines

hash.c: [DOC] fix docs for Hash#transform_values!

Hash#transform_values! returns the receiver rather than a new Hash
object.
------------------------------------------------------------------------
r58844 | shugo | 2017-05-22 15:13:11 +0900 (Mon, 22 May 2017) | 4 lines

net/imap: separate @continuation_request_exception from @exception

Otherwise literal data will be sent even if NO response is returned
because @exception is set to nil in receive_responses.
------------------------------------------------------------------------
r58843 | nobu | 2017-05-22 13:10:51 +0900 (Mon, 22 May 2017) | 6 lines

downloader.rb: true symlink on cygwin

* tool/downloader.rb (Downloader.link_cache): on Cygwin, make true
  symlink only, which is provided by the OS.  as mingw/mswin ruby
  can't follow cygwin's pseudo symlink, it will fail on the same
  source tree.
------------------------------------------------------------------------
r58842 | k0kubun | 2017-05-22 12:56:16 +0900 (Mon, 22 May 2017) | 23 lines

erb.rb: Skip creating regexp

if stags and etags are not changed from default.

:putobject insn (of regexp) will be used instead of :toregexp insn.
This means that the regexp won't be compiled for every
`SimpleScanner#scan` call.

It may not be a good idea to apply this kind of optimization for all cases.
But I applied this because it is default scanner and used frequently and has
relatively large impact for benchmark like this:

* Before
app_erb 1.023

* After
app_erb 0.781

This commit fixes only the bottleneck of performance regression introduced
in r53412. For maintainability, I won't fix other small regressions like
additional overhead of method calls.

[ruby-core:73820] [Bug #12074]
------------------------------------------------------------------------
r58841 | nobu | 2017-05-22 12:18:17 +0900 (Mon, 22 May 2017) | 4 lines

fix r58833

* tool/downloader.rb (Downloader.download): just link to the cache
  when downloaded to the cache but not the target file.
------------------------------------------------------------------------
r58840 | normal | 2017-05-22 08:52:08 +0900 (Mon, 22 May 2017) | 34 lines

lib/net/protocol: clear short-lived read buffer

Using a parallel Net::HTTP downloader, this reduced memory usage
from around 120MB to 50MB on my 32-bit x86 system.

* lib/net/protocol.rb (rbuf_fill): clear temporary buffer

Test script I used:

  require 'net/http'
  require 'uri'
  require 'digest/sha1'
  url = 'http://80x24.org/git-i-forgot-to-pack/objects/pack/pack-97b25a76c03b489d4cbbd85b12d0e1ad28717e55.idx'
  uri = URI(url)
  use_ssl = "https" == uri.scheme
  thrs = 30.times.map do
    Thread.start do
      cur = Thread.current.object_id
      Net::HTTP.start(uri.host, uri.port, use_ssl: use_ssl) do |http|
        req = Net::HTTP::Get.new(uri)
        http.request(req) do |res|
          dig = Digest::SHA1.new
          res.read_body do |buf|
            dig.update(buf)
            #buf.clear # most Ruby programmers don't do this :<
          end
          warn "#{Time.now} #{cur} #{dig.hexdigest}\n"
        end
      end
      :done
    end
  end

  p thrs.map(&:value)
------------------------------------------------------------------------
r58839 | stomar | 2017-05-22 04:31:37 +0900 (Mon, 22 May 2017) | 3 lines

String#casecmp no longer raises TypeError

* See https://bugs.ruby-lang.org/issues/13312
------------------------------------------------------------------------
r58838 | stomar | 2017-05-22 04:29:58 +0900 (Mon, 22 May 2017) | 1 line

NEWS: String#{casecmp,casecmp?} [Bug #13312]
------------------------------------------------------------------------
r58837 | stomar | 2017-05-22 04:28:48 +0900 (Mon, 22 May 2017) | 9 lines

string.c: fix String#{casecmp,casecmp?} for non-string arguments

* string.c: make String#{casecmp,casecmp?} return nil for
  non-string arguments instead of raising a TypeError.

* test/ruby/test_string.rb: add tests.

Reported by Marcus Stollsteimer.  Based on a patch by Shingo Morita.
[ruby-core:80145] [Bug #13312]
------------------------------------------------------------------------
r58836 | stomar | 2017-05-22 04:27:08 +0900 (Mon, 22 May 2017) | 4 lines

test_string.rb,test_symbol.rb: add some tests

* test/ruby/test_string.rb: add more test cases for String#casecmp.
* test/ruby/test_symbol.rb: ditto for Symbol#{casecmp,casecmp?}.
------------------------------------------------------------------------
r58835 | stomar | 2017-05-22 04:25:19 +0900 (Mon, 22 May 2017) | 1 line

Use should_receive expectation instead of singleton method
------------------------------------------------------------------------
r58834 | svn | 2017-05-22 01:45:36 +0900 (Mon, 22 May 2017) | 1 line

* 2017-05-22
------------------------------------------------------------------------
r58833 | nobu | 2017-05-22 01:45:35 +0900 (Mon, 22 May 2017) | 3 lines

downloader cache

* tool/downloader.rb (Downloader.download): manage download cache.
------------------------------------------------------------------------
r58832 | nobu | 2017-05-21 23:29:00 +0900 (Sun, 21 May 2017) | 1 line

remove verify option
------------------------------------------------------------------------
r58831 | nobu | 2017-05-21 17:30:50 +0900 (Sun, 21 May 2017) | 4 lines

downloader.rb: utilize dir argument

* tool/downloader.rb (Downloader::RubyGems.download): utilize
  `dir` argument of Downloader.download.
------------------------------------------------------------------------
r58830 | kazu | 2017-05-21 16:13:11 +0900 (Sun, 21 May 2017) | 8 lines

Add missing word in transform_values methods description

Explicitly says that the methods return a new hash rather than just
stating it return a new something we don't know.

[ci skip]
[Fix GH-1619]
Author:    Nicolas Cavigneaux <nico@bounga.org>
------------------------------------------------------------------------
r58829 | watson1978 | 2017-05-21 12:36:31 +0900 (Sun, 21 May 2017) | 42 lines

Improve Time#+ & Time#- performance

* time.c (wadd): use internal addv() function to calculate internal value in
    Time object. On 64-bit machine, Time object might have Fixnum object
    internally by default and addv() can calculate Fixnum objects directly.

* time.c (wsub): use internal subv() function due the same reason in above.

    Time#+ & Time#- will be faster around 15%.

    [ruby-dev:50036] [Bug #13357] [Fix GH-1547]

### Before
             user     system      total        real
Time#+   0.820000   0.000000   0.820000 (  0.818081)
Time#-   0.810000   0.000000   0.810000 (  0.813835)

### After
             user     system      total        real
Time#+   0.710000   0.000000   0.710000 (  0.710241)
Time#-   0.710000   0.010000   0.720000 (  0.714151)

### Test code
require 'benchmark'

Benchmark.bmbm do |x|

  x.report "Time#+" do
    t = Time.now
    2000000.times do
      t + 1
    end
  end

  x.report "Time#-" do
    t = Time.now
    2000000.times do
      t - 1
    end
  end

end
------------------------------------------------------------------------
r58828 | watson1978 | 2017-05-21 12:36:30 +0900 (Sun, 21 May 2017) | 48 lines

Improve Time#<=> performance

* time.c (wcmp): use internal cmp() function for comparing internal Fixnum value
    in Time objects. On 64-bit machine, Time object might have Fixnum object
    internally by default and cmp() can compare the Fixnum objects directly.

    Time#<=> will be faster around 60% on 64-bit machine.

* time.c (cmp): add optimized path for comparing internal Bignum value by using
    rb_big_cmp() API. On 32-bit machine, Time object might have Bignum object
    internally by default.

    Time#<=> will be faster around 50% on 32-bit machine.

    [ruby-dev:50034] [Bug #13354] [Fix GH-1546]

### Before
             user     system      total        real
Fixnum   1.410000   0.000000   1.410000 (  1.407848)
Bignum   1.550000   0.000000   1.550000 (  1.549145)

### After
             user     system      total        real
Fixnum   0.880000   0.000000   0.880000 (  0.886662)
Bignum   1.050000   0.000000   1.050000 (  1.047994)

### Test code
require 'benchmark'

Benchmark.bmbm do |x|

  x.report "Fixnum" do
    t1 = Time.now
    t2 = Time.now
    10000000.times do
      t1 <=> t2
    end
  end

  x.report "Bignum" do
    t1 = Time.at(2 ** 64)
    t2 = Time.at(2 ** 64 + 1)
    10000000.times do
      t1 <=> t2
    end
  end

end
------------------------------------------------------------------------
r58827 | kazu | 2017-05-21 10:01:10 +0900 (Sun, 21 May 2017) | 4 lines

Remove redundant square brackets

Use character class directly instead of
character class in character class.
------------------------------------------------------------------------
r58826 | k0kubun | 2017-05-21 02:36:09 +0900 (Sun, 21 May 2017) | 3 lines

erb.rb: Allow trimming CR in all trim_modes

to unify a behavior with r58823 and r58825.
------------------------------------------------------------------------
r58825 | k0kubun | 2017-05-21 02:17:22 +0900 (Sun, 21 May 2017) | 5 lines

erb.rb: Allow explicit trimming carriage return

when trim_mode is "-", for Windows environments.

[ruby-core:39625] [Bug #5339]
------------------------------------------------------------------------
r58824 | k0kubun | 2017-05-21 02:03:01 +0900 (Sun, 21 May 2017) | 4 lines

doc/maintainers.rdoc: Add me to ERB maintainers

The current maintainer suggested this in ruby-dev:50113.
Please ping me if an issue happens in ERB.
------------------------------------------------------------------------
r58823 | k0kubun | 2017-05-21 01:50:33 +0900 (Sun, 21 May 2017) | 5 lines

erb.rb: Allow trimming carriage return

when trim_mode is "<>", for Windows environments.

[Bug #11464]
------------------------------------------------------------------------
r58822 | k0kubun | 2017-05-21 01:20:07 +0900 (Sun, 21 May 2017) | 3 lines

erb.rb: Prevent potential unexpected rescue

of LoadError in some method calls, not from `require "strscan"`.
------------------------------------------------------------------------
r58821 | svn | 2017-05-21 00:58:17 +0900 (Sun, 21 May 2017) | 1 line

* 2017-05-21
------------------------------------------------------------------------
r58820 | naruse | 2017-05-21 00:58:16 +0900 (Sun, 21 May 2017) | 1 line

Clean proxy
------------------------------------------------------------------------
r58819 | k0kubun | 2017-05-20 23:55:33 +0900 (Sat, 20 May 2017) | 9 lines

erb.rb: Drop unused scanner implementation

Original `SimpleScanner` was used only in tests.
Since `SimpleScanner` and `SimpleScanner2` work in the same way, I want
to drop the one which can't be used in a normal situation.

The only difference was `SimpleScanner` can be loaded without strscan
dependency but I think there's no situation that strscan is unavailable
because it's a standard library.
------------------------------------------------------------------------
r58818 | svn | 2017-05-20 22:00:42 +0900 (Sat, 20 May 2017) | 1 line

* properties.
------------------------------------------------------------------------
r58817 | mame | 2017-05-20 22:00:41 +0900 (Sat, 20 May 2017) | 5 lines

Add coverage measurement mode by using gcov

This experimental feature is only for Ruby-core team, not for casual users.

Usage: `./configure --enable-gcov && make && make exam && make gcov`
------------------------------------------------------------------------
r58816 | mame | 2017-05-20 21:23:27 +0900 (Sat, 20 May 2017) | 5 lines

ripper.c should have `#line "ripper.c"`, not `#line "parse.c"`

The order of sed commands in Makefile of ripper was wrong: it tries to
replace `y.tab.c` with `ripper.c`, but before that, ytab.sed replaced
`y.tab.c` with `parse.c`, which led to a wrong result.
------------------------------------------------------------------------
r58815 | nobu | 2017-05-20 20:40:57 +0900 (Sat, 20 May 2017) | 4 lines

compile.c: optimize branches

* compile.c (compile_branch_condition, iseq_compile_each0):
  eliminate unreachable branches in NODE_IF.
------------------------------------------------------------------------
r58814 | nobu | 2017-05-20 19:27:27 +0900 (Sat, 20 May 2017) | 5 lines

compile.c: binary logop check

* compile.c (compile_branch_condition): turn recursion at binary
  logical operator into loop by goto, and check the result of RHS
  of NODE_OR.
------------------------------------------------------------------------
r58813 | stomar | 2017-05-20 19:21:44 +0900 (Sat, 20 May 2017) | 5 lines

prime.rb: remove alias after timeout test

* test/test_prime.rb: remove alias after timeout test.

* lib/prime.rb: fix typo.
------------------------------------------------------------------------
r58812 | normal | 2017-05-20 18:47:14 +0900 (Sat, 20 May 2017) | 31 lines

speed up IO#close with many threads

Today, it increases IO#close performance with many threads:

  Execution time (sec)
  name            trunk   after
  vm_thread_close 4.276   3.018

  Speedup ratio: compare with the result of `trunk' (greater is better)
  name            after
  vm_thread_close 1.417

This speedup comes because rb_notify_fd_close only scans threads
inside rb_thread_io_blocking_region, not all threads in the VM.

In the future, this type data structure may allow us to notify
waiters of multiple FDs on a single thread (when using
Fibers).

* thread.c (struct waiting_fd): declare
  (rb_thread_io_blocking_region): use on-stack list waiter
  (rb_notify_fd_close): walk vm->waiting_fds instead
  (call_without_gvl): remove old field setting
  (th_init): ditto
* vm_core.h (typedef struct rb_vm_struct): add waiting_fds list
* (typedef struct rb_thread_struct): remove waiting_fd field
  (rb_vm_living_threads_init): initialize waiting_fds list

I am now kicking myself for not thinking about this 3 years ago
when I introduced ccan/list in [Feature #9632] to optimize this
same function :<
------------------------------------------------------------------------
r58811 | watson1978 | 2017-05-20 18:23:46 +0900 (Sat, 20 May 2017) | 32 lines

Improve Hash#merge performance

* hash.c (rb_hash_merge): use rb_hash_dup() instead of rb_obj_dup() to duplicate
    Hash object. rb_hash_dup() is faster duplicating function for Hash object
    which got rid of Hash#initialize_dup method calling.

    Hash#merge will be faster around 60%.
    [ruby-dev:50026] [Bug #13343] [Fix GH-1533]

### Before
                 user     system      total        real
Hash#merge   0.160000   0.020000   0.180000 (  0.182357)

### After
                 user     system      total        real
Hash#merge   0.110000   0.010000   0.120000 (  0.114404)

### Test code
require 'benchmark'

Benchmark.bmbm do |x|
  hash1 = {}
  100.times { |i| hash1[i.to_s] = i }
  hash2 = {}
  100.times { |i| hash2[(i*2).to_s] = i*2 }

  x.report "Hash#merge" do
    10000.times do
      hash1.merge(hash2)
    end
  end
end
------------------------------------------------------------------------
r58810 | nobu | 2017-05-20 11:11:24 +0900 (Sat, 20 May 2017) | 4 lines

compile.c: fix catch-table labels optimization

* compile.c (remove_unreachable_chunk): do not eliminate chunks
  followed by labels in catch-table entries.
------------------------------------------------------------------------
r58809 | marcandre | 2017-05-20 09:36:55 +0900 (Sat, 20 May 2017) | 6 lines

lib/prime: Fix primality of some large integers [#13492].

* lib/prime.rb: Use accurate sqrt to insure all factors are tested.
  Patch by Marcus Stollsteimer.

* test/test_prime.rb: Adapt test for timeout
------------------------------------------------------------------------
r58808 | hsbt | 2017-05-20 08:39:58 +0900 (Sat, 20 May 2017) | 3 lines

Merge gemspec from ruby/fileutils.

  * Replaced homepage option to source code location as github.
------------------------------------------------------------------------
r58807 | normal | 2017-05-20 06:34:04 +0900 (Sat, 20 May 2017) | 1 line

fix off-by-one in r58806
------------------------------------------------------------------------
r58806 | normal | 2017-05-20 06:33:15 +0900 (Sat, 20 May 2017) | 4 lines

test/ruby/test_io.rb: new test for IO.select exception set

Ensure this rarely-used feature of IO.select continues
to work properly.
------------------------------------------------------------------------
r58805 | normal | 2017-05-20 03:53:11 +0900 (Sat, 20 May 2017) | 34 lines

thread_sync.c: rewrite the rest using using ccan/list

The performance improvement increases as the number of waiters
increases, due to avoiding the O(n) behavior of rb_ary_delete on
the waiting thread.  Uncontended queues and condition variables
performance is not altered significantly.

Function entry cost is slightly increased for ConditionVariable,
since the data pointer is separately allocated and not embedded
into the RVALUE slot.

[ruby-core:81235] [Feature #13552]

name                  |trunk  |built
----------------------|------:|------:
vm_thread_condvar1    |  0.858|  0.858
vm_thread_condvar2    |  1.003|  0.804
vm_thread_queue       |  0.131|  0.129
vm_thread_sized_queue |  0.265|  0.251
vm_thread_sized_queue2|  0.892|  0.859
vm_thread_sized_queue3|  0.879|  0.845
vm_thread_sized_queue4|  0.599|  0.486

Speedup ratio: compare with the result of `trunk' (greater is better)

name                  |built
----------------------|------:
vm_thread_condvar1    |  0.999
vm_thread_condvar2    |  1.246
vm_thread_queue       |  1.020
vm_thread_sized_queue |  1.057
vm_thread_sized_queue2|  1.039
vm_thread_sized_queue3|  1.041
vm_thread_sized_queue4|  1.233
------------------------------------------------------------------------
r58804 | normal | 2017-05-20 03:34:38 +0900 (Sat, 20 May 2017) | 4 lines

thread_sync.c: rename mutex_waiter struct to sync_waiter

We will reuse this struct for ConditionVariable, Queue, and SizedQueue,
so it is no longer Mutex-specific.
------------------------------------------------------------------------
r58803 | naruse | 2017-05-20 01:19:46 +0900 (Sat, 20 May 2017) | 1 line

Define classes for r58800
------------------------------------------------------------------------
r58802 | svn | 2017-05-20 01:06:26 +0900 (Sat, 20 May 2017) | 1 line

* properties.
------------------------------------------------------------------------
r58801 | naruse | 2017-05-20 01:06:25 +0900 (Sat, 20 May 2017) | 5 lines

Net::HTTP::STATUS_CODES is added as HTTP Status Code Repository [Misc #12935]

Note that 418 I'm a teapot doesn't exist because RFC 2324 and
RFC 7168 are not registered in IANA repository.
https://www.iana.org/assignments/http-status-codes/http-status-codes.xhtml
------------------------------------------------------------------------
r58800 | naruse | 2017-05-20 01:06:18 +0900 (Sat, 20 May 2017) | 1 line

Add more HTTP status classes
------------------------------------------------------------------------
r58799 | svn | 2017-05-20 00:13:42 +0900 (Sat, 20 May 2017) | 1 line

* 2017-05-20
------------------------------------------------------------------------
r58798 | naruse | 2017-05-20 00:13:42 +0900 (Sat, 20 May 2017) | 3 lines

Net::HTTP#start now pass :ENV to p_addr by default [Bug #13351]

To avoid this, pass nil explicitly.
------------------------------------------------------------------------
r58797 | nobu | 2017-05-19 23:58:38 +0900 (Fri, 19 May 2017) | 4 lines

compile.c: dump_disasm_list_with_cursor

* compile.c (dump_disasm_list_with_cursor): improve disassemble
  list.  show whole elemetns and mark the current element.
------------------------------------------------------------------------
r58796 | naruse | 2017-05-19 23:14:52 +0900 (Fri, 19 May 2017) | 3 lines

Merge latest dtoa.c [Bug #13545]

Apply some part of http://www.netlib.org/fp/dtoa.c with my eyes...
------------------------------------------------------------------------
r58795 | usa | 2017-05-19 21:44:46 +0900 (Fri, 19 May 2017) | 5 lines

Of course, opened file is not able to unlink on Windows

* test/test_tempfile.rb (test_create_with_block): close the tempfile before
  unlink.  fixed a failure on Windows introduced at r58791.

------------------------------------------------------------------------
r58794 | nobu | 2017-05-19 18:36:34 +0900 (Fri, 19 May 2017) | 1 line

tempfile.rb: do not call File.identical? on closed stream
------------------------------------------------------------------------
r58793 | svn | 2017-05-19 18:25:53 +0900 (Fri, 19 May 2017) | 1 line

* remove trailing spaces.
------------------------------------------------------------------------
r58792 | shugo | 2017-05-19 18:25:52 +0900 (Fri, 19 May 2017) | 3 lines

net/imap: Net::IMAP#append should not block when NO response is received

[ruby-dev:50129] [Bug#13579]
------------------------------------------------------------------------
r58791 | nobu | 2017-05-19 18:20:14 +0900 (Fri, 19 May 2017) | 4 lines

tempfile.rb: remove in Tempfile.create

* lib/tempfile.rb (Tempfile.create): should not fail even if the
  temporary file has been removed in the block, just ignore.
------------------------------------------------------------------------
r58790 | duerst | 2017-05-19 17:19:02 +0900 (Fri, 19 May 2017) | 1 line

add specs for Unicode-wide case conversions introduced in Ruby 2.4
------------------------------------------------------------------------
r58789 | duerst | 2017-05-19 17:05:56 +0900 (Fri, 19 May 2017) | 1 line

improve examples, fix one improbably should_not value
------------------------------------------------------------------------
r58788 | ko1 | 2017-05-19 16:54:04 +0900 (Fri, 19 May 2017) | 5 lines

specify unsigned (fix r58784).

* method.h (rb_method_definition_t#type): specify unsigned explicitly.
 Some compilers (includes VC) returns negative value.

------------------------------------------------------------------------
r58787 | nobu | 2017-05-19 16:34:05 +0900 (Fri, 19 May 2017) | 1 line

fix syntax error
------------------------------------------------------------------------
r58786 | nobu | 2017-05-19 16:12:45 +0900 (Fri, 19 May 2017) | 4 lines

eval_error.c: enrich backtrace

* eval_error.c (print_backtrace): add frame number when printing
  in reverse order.  [Feature #8661]
------------------------------------------------------------------------
r58785 | naruse | 2017-05-19 15:14:43 +0900 (Fri, 19 May 2017) | 1 line

Add NEWS about [Feature #8661]
------------------------------------------------------------------------
r58784 | normal | 2017-05-19 15:00:53 +0900 (Fri, 19 May 2017) | 14 lines

method.h: pack rb_method_definition_t struct

We only have 12 method types, so 4 bits is enough for
rb_method_type_t.

Size reductions:

- x86-64     48 => 40 bytes
- x86        28 => 24 bytes

* method.h (enum method_optimized_type): split out for CPP
  (struct rb_method_definition struct): pack on unaligned systems
  (rb_method_definition_t): split typedef to help ctags
  [ruby-core:81236] [Feature #13494]
------------------------------------------------------------------------
r58783 | k0kubun | 2017-05-19 00:13:30 +0900 (Fri, 19 May 2017) | 4 lines

Fix strange indentation

which I introduced at r58773.
Hard tabs and spaces are mixed...
------------------------------------------------------------------------
r58782 | svn | 2017-05-19 00:06:48 +0900 (Fri, 19 May 2017) | 1 line

* 2017-05-19
------------------------------------------------------------------------
r58781 | nobu | 2017-05-19 00:06:47 +0900 (Fri, 19 May 2017) | 5 lines

common.mk: path in parse.c

* common.mk (parse.c): replace source file name in #line pragmas
  with the path in the source directory, so that binary utilities,
  e.g. gcov, can find it.
------------------------------------------------------------------------
r58780 | nobu | 2017-05-18 20:29:42 +0900 (Thu, 18 May 2017) | 5 lines

potential memory leak

* dir.c (rb_dir_getwd): get rid of potential memory leak.

* util.c (ruby_getcwd): ditto.
------------------------------------------------------------------------
r58779 | hsbt | 2017-05-18 14:29:04 +0900 (Thu, 18 May 2017) | 1 line

Fix a wrong repository name of simplecov.
------------------------------------------------------------------------
r58778 | svn | 2017-05-18 11:42:17 +0900 (Thu, 18 May 2017) | 1 line

* 2017-05-18
------------------------------------------------------------------------
r58777 | hsbt | 2017-05-18 11:42:16 +0900 (Thu, 18 May 2017) | 47 lines

Improve CSV parsing performance.

  Patch by @joshpencheon (Josh Pencheon)
  [fix GH-1607]

  #### benchmark-ips results
  ```
  trunk:
  Warming up --------------------------------------
                         4.000  i/100ms
  Calculating -------------------------------------
                         39.661  (?10.1%) i/s -      2.352k in 60.034781s
  with-patch:
  Warming up --------------------------------------
                         5.000  i/100ms
  Calculating -------------------------------------
                         60.521  (? 9.9%) i/s -      3.595k in 60.047157s
  ```

  #### memory_profiler resuts

  ```
  trunk:
  allocated memory by class
  -----------------------------------
    35588490  String
     7454320  Array
      294000  MatchData
       37340  Regexp
       11840  Hash
        2400  CSV
        1600  Proc
        1280  Method
         800  StringIO
  with-patch:
  allocated memory by class
  -----------------------------------
    18788490  String
     3454320  Array
      294000  MatchData
       37340  Regexp
       11840  Hash
        2400  CSV
        1600  Proc
        1280  Method
         800  StringIO
  ```
------------------------------------------------------------------------
r58776 | ko1 | 2017-05-17 23:43:22 +0900 (Wed, 17 May 2017) | 6 lines

modify r58771.

* spec/rubyspec/command_line/dash_upper_s_spec.rb: enable tests on vboxsf
  (VirtualBox shared directory) and change tests to match /success$/ to
  ignore warnings. This technique is suggested by @unak.

------------------------------------------------------------------------
r58775 | k0kubun | 2017-05-17 23:11:01 +0900 (Wed, 17 May 2017) | 5 lines

spec/rubyspec: Add `ruby_version_is` guard

for future backport to ruby/spec repository.

See r58772 r58773 r58774.
------------------------------------------------------------------------
r58774 | k0kubun | 2017-05-17 22:21:09 +0900 (Wed, 17 May 2017) | 1 line

spec/rubyspec: Fix rubyspec for tilde unescape
------------------------------------------------------------------------
r58773 | k0kubun | 2017-05-17 21:34:59 +0900 (Wed, 17 May 2017) | 5 lines

cgi/util.rb: Don't escape tilde in #escape

to make it compatible with ERB::Util.url_encode.

ext/cgi/escape/escape.c: ditto.
------------------------------------------------------------------------
r58772 | k0kubun | 2017-05-17 20:58:09 +0900 (Wed, 17 May 2017) | 7 lines

erb.rb: Don't encode tilde in #url_encode

Based on patch by madeofcode (Mark Dodwell).
[ruby-core:46168] [Bug #6696] [Fix GH-54]

`~` is a unreserved character.
https://tools.ietf.org/html/rfc3986#section-2.3
------------------------------------------------------------------------
r58771 | ko1 | 2017-05-17 18:31:34 +0900 (Wed, 17 May 2017) | 4 lines

skip some tests on vboxsf.

* spec/rubyspec/command_line/dash_upper_s_spec.rb:

------------------------------------------------------------------------
r58770 | hsbt | 2017-05-17 16:56:27 +0900 (Wed, 17 May 2017) | 18 lines

Optimize CSV#shift.

  [Bug #12373][ruby-core:75462]
  Patch by Yuki Kurihara.

  Benchmark:
  ```
  Warming up --------------------------------------
           csv_shift     1.000  i/100ms
       new_csv_shift     1.000  i/100ms
Calculating -------------------------------------
           csv_shift      1.192  (? 0.0%) i/s -      6.000  in 5.034250s
       new_csv_shift      1.527  (? 0.0%) i/s -      8.000  in 5.243446s

Comparison:
       new_csv_shift:        1.5 i/s
           csv_shift:        1.2 i/s - 1.28x  slower
  ```
------------------------------------------------------------------------
r58769 | naruse | 2017-05-17 16:13:47 +0900 (Wed, 17 May 2017) | 1 line

Treat NULL reference case [Bug #13566]
------------------------------------------------------------------------
r58768 | naruse | 2017-05-17 14:38:37 +0900 (Wed, 17 May 2017) | 3 lines

Merge Onigmo 6.1.2

https://github.com/k-takata/Onigmo/commit/1364ae3488cac0acbf2d61ef3ce2b62fe0c0f528
------------------------------------------------------------------------
r58767 | nobu | 2017-05-17 13:47:05 +0900 (Wed, 17 May 2017) | 4 lines

ruby.c: encode script name

* ruby.c (process_options): encode script name to locale encoding
  instead of associate, if UTF-8 path.
------------------------------------------------------------------------
r58766 | nobu | 2017-05-17 13:44:12 +0900 (Wed, 17 May 2017) | 4 lines

.gdbinit: fix nd_tree

* .gdbinit (nd_tree): use rb_str_tmp_new to get rid of
  `__extension__'.
------------------------------------------------------------------------
r58765 | nobu | 2017-05-17 09:28:01 +0900 (Wed, 17 May 2017) | 6 lines

test_dir_m17n.rb: read in filesystem encoding

* test/ruby/test_dir_m17n.rb (test_entries_compose): read in
  filesystem encoding instead of default external encoding on
  Windows too.  these two encodings may differ on some
  environments.
------------------------------------------------------------------------
r58764 | normal | 2017-05-17 08:59:01 +0900 (Wed, 17 May 2017) | 4 lines

Revert "test/test_extilibs.rb: do not check the existence of fiddle"

This reverts r58761 since fiddle is considered critical.
[ruby-core:81201] [ruby-core:81203]
------------------------------------------------------------------------
r58763 | usa | 2017-05-17 08:15:56 +0900 (Wed, 17 May 2017) | 5 lines

ENV["HOME"] is prior as home on Windows

* spec/rubyspec/core/dir/home_spec.rb: ENV["HOME"] is prior as home on Windows.
  reported by ko1.

------------------------------------------------------------------------
r58762 | nobu | 2017-05-17 08:09:34 +0900 (Wed, 17 May 2017) | 4 lines

gmake.mk: test dependency

* defs/gmake.mk (TEST_DEPENDS): check and more tests targets need
  all to be built.
------------------------------------------------------------------------
r58761 | normal | 2017-05-17 07:05:39 +0900 (Wed, 17 May 2017) | 6 lines

test/test_extilibs.rb: do not check the existence of fiddle

libffi is not installed on all systems, and is not needed
for most of the tests.

Tested on a fresh FreeBSD 11.0 VM
------------------------------------------------------------------------
r58760 | usa | 2017-05-17 01:16:47 +0900 (Wed, 17 May 2017) | 9 lines

Should require at spec file, not fixture file

Fixed ERRORs at non-Windows platforms.

* spec/rubyspec/library/win32ole/fixtures/classes.rb (require): removed.

* spec/rubyspec/library/win32ole/win32ole/ole_get_methods_spec.rb (require):
  forgotten to require 'win32ole'.

------------------------------------------------------------------------
r58759 | nobu | 2017-05-17 00:47:44 +0900 (Wed, 17 May 2017) | 1 line

run tests without exts
------------------------------------------------------------------------
r58758 | usa | 2017-05-17 00:45:25 +0900 (Wed, 17 May 2017) | 5 lines

Should require WIN32OLE

* spec/rubyspec/library/win32ole/fixtures/classes.rb: should require WIN32OLE
  here because this file causes NameError in parallel spec.

------------------------------------------------------------------------
r58757 | svn | 2017-05-17 00:17:40 +0900 (Wed, 17 May 2017) | 1 line

* 2017-05-17
------------------------------------------------------------------------
r58756 | nobu | 2017-05-17 00:17:39 +0900 (Wed, 17 May 2017) | 4 lines

test/unit.rb: fix returning job tokens

* test/lib/test/unit.rb (_run_parallel): flush job tokens after
  quitting workers when normally finished too.
------------------------------------------------------------------------
r58755 | nobu | 2017-05-16 23:53:04 +0900 (Tue, 16 May 2017) | 5 lines

test_process.rb: compare in UTF-8

* test/ruby/test_process.rb (test_execopts_open_chdir_m17n_path):
  compare directory name in UTF-8.  encoding of `Dir.pwd` is
  affected by filesystem encoding.
------------------------------------------------------------------------
r58754 | nobu | 2017-05-16 22:57:18 +0900 (Tue, 16 May 2017) | 1 line

Use raise_error block
------------------------------------------------------------------------
r58753 | nobu | 2017-05-16 22:51:17 +0900 (Tue, 16 May 2017) | 1 line

Mac OS raises EADDRNOTAVAIL but not ECONNREFUSED
------------------------------------------------------------------------
r58752 | nobu | 2017-05-16 22:51:15 +0900 (Tue, 16 May 2017) | 1 line

Multiple exception classes at raise_error
------------------------------------------------------------------------
r58751 | usa | 2017-05-16 22:50:51 +0900 (Tue, 16 May 2017) | 2 lines

* common.mk (help): get rid of make error with nmake.

------------------------------------------------------------------------
r58750 | ko1 | 2017-05-16 22:22:42 +0900 (Tue, 16 May 2017) | 1 line

restore yes-test-rubyspec
------------------------------------------------------------------------
r58749 | nobu | 2017-05-16 22:15:12 +0900 (Tue, 16 May 2017) | 1 line

follow test-spec
------------------------------------------------------------------------
r58748 | eregon | 2017-05-16 21:29:44 +0900 (Tue, 16 May 2017) | 1 line

Avoid using a class variable in socket specs
------------------------------------------------------------------------
r58747 | eregon | 2017-05-16 21:29:30 +0900 (Tue, 16 May 2017) | 3 lines

Use a reserved port to test for a non-existing TCP server

* Avoids a race between finding an available port and another process starting a server on it.
------------------------------------------------------------------------
r58746 | usa | 2017-05-16 21:15:48 +0900 (Tue, 16 May 2017) | 5 lines

Rename rubyspec to spec

* common.mk (*-rubyspec): rename to *-spec because rubyspec is historical name.
  of course, *-rubyspec are still available for compatibility.

------------------------------------------------------------------------
r58745 | nobu | 2017-05-16 19:25:56 +0900 (Tue, 16 May 2017) | 6 lines

rb_w32_ugetcwd: UTF-8 version getcwd

* dir.c (rb_dir_getwd): convert from UTF-8.

* win32/win32.c (w32_getcwd): codepage aware getcwd using
  GetCurrentDirectoryW.
------------------------------------------------------------------------
r58744 | hsbt | 2017-05-16 18:32:32 +0900 (Tue, 16 May 2017) | 3 lines

Strip punctuation from CSV headers in symbol converter.

  Patch by @cllns. [Fix GH-957]
------------------------------------------------------------------------
r58743 | hsbt | 2017-05-16 18:17:09 +0900 (Tue, 16 May 2017) | 3 lines

Added accessor of original line when parsing.

  [Feature #11865][ruby-core:72452][fix GH-1170]
------------------------------------------------------------------------
r58742 | usa | 2017-05-16 17:03:53 +0900 (Tue, 16 May 2017) | 5 lines

Search SSL libraries by testing various filename patterns

* ext/openssl/extconf.rb (find_openssl_library): should search by more flexible
  method, especially for LibreSSL on Windows.

------------------------------------------------------------------------
r58741 | nobu | 2017-05-16 14:47:53 +0900 (Tue, 16 May 2017) | 4 lines

fix tempfile leaks on Windows

* lib/rubygems/ext/ext_conf_builder.rb (build): needs to close
  before unlink on Windows.
------------------------------------------------------------------------
r58740 | naruse | 2017-05-16 14:02:23 +0900 (Tue, 16 May 2017) | 1 line

fix words
------------------------------------------------------------------------
r58739 | ko1 | 2017-05-16 13:23:10 +0900 (Tue, 16 May 2017) | 2 lines

skip openssl related tests.

------------------------------------------------------------------------
r58738 | svn | 2017-05-16 09:15:55 +0900 (Tue, 16 May 2017) | 1 line

* 2017-05-16
------------------------------------------------------------------------
r58737 | nobu | 2017-05-16 09:15:54 +0900 (Tue, 16 May 2017) | 4 lines

enable ruby_w32_codepage on cygwin

* debug.c, localeinit.c: enable ruby_w32_codepage on cygwin too.
  [ruby-core:81163] [Bug #13567]
------------------------------------------------------------------------
r58736 | ko1 | 2017-05-15 23:40:07 +0900 (Mon, 15 May 2017) | 16 lines

refresh Gem at the end of `teardown`.

* lib/rubygems/test_case.rb (teardown): call `Gem::refresh()` at the
  end of `teardown`.
  On parallel test sometimes fails test process. The reason
  is:
  (1) previous tests remains `Gem::Specification@@stubs` value
      which points to temporary directories and the directories
      are removed by `teardown` method of previous test.
  (2) `require 'rubygems/gem_runner'` in `test_gem_gem_runner.rb`
      tries to require test utility file. However, with strange `@@stubs`
      RubyGems tries to load specification from removed directory.
      `StubSpecification#to_spec` returns `nil` and error will occur.
  The solution this patch employs is to refresh all of parameters
  includes `Gem::Specification@@stubs` by `Gem::refresh()`.

------------------------------------------------------------------------
r58735 | k0kubun | 2017-05-15 22:38:02 +0900 (Mon, 15 May 2017) | 5 lines

erb.rb: Use String#<< instead of #concat

to optimize String concatenation on rendering.

[fix GH-1612]
------------------------------------------------------------------------
r58734 | sorah | 2017-05-15 21:18:55 +0900 (Mon, 15 May 2017) | 7 lines

[DOC] File#path result can be inaccurate

* file.c(rb_file_path): [DOC] Note that the pathname returned by this
  method can be inaccurate, for instance file gets moved, renamed,
  deleted or is created with File::TMPFILE option.

  Relates to [Feature #13568]
------------------------------------------------------------------------
r58733 | nobu | 2017-05-15 20:32:35 +0900 (Mon, 15 May 2017) | 4 lines

optional/capi: use LIBRUBYARG_SHARED

* spec/rubyspec/optional/capi/spec_helper.rb (compile_extension):
  use LIBRUBYARG_SHARED for LDSHARED.
------------------------------------------------------------------------
r58732 | nobu | 2017-05-15 20:25:56 +0900 (Mon, 15 May 2017) | 1 line

thread_spec.c: use rb_w32_pipe
------------------------------------------------------------------------
r58731 | nobu | 2017-05-15 20:19:12 +0900 (Mon, 15 May 2017) | 1 line

io_spec.c: suppress unused-variable warning
------------------------------------------------------------------------
r58730 | nobu | 2017-05-15 20:16:27 +0900 (Mon, 15 May 2017) | 4 lines

configure.in: negative time_t for mingw

* configure.in: mingw also uses MSVCRT accepts negative time_t.
  c.f. r58681.
------------------------------------------------------------------------
r58729 | nobu | 2017-05-15 20:16:26 +0900 (Mon, 15 May 2017) | 1 line

configure.in: remove dynamic option in LDSHARED
------------------------------------------------------------------------
r58728 | nobu | 2017-05-15 20:16:25 +0900 (Mon, 15 May 2017) | 5 lines

optional/capi: fix link on mingw

* spec/rubyspec/optional/capi/spec_helper.rb (compile_extension):
  LIBRUBYARG is always necessary unless dynamic lookup is allowed.
  strip $(DEFFILE) from DLDFLAGS on mingw.
------------------------------------------------------------------------
r58727 | nobu | 2017-05-15 19:32:30 +0900 (Mon, 15 May 2017) | 1 line

default.mspec: ignore unavailable FDs
------------------------------------------------------------------------
r58726 | usa | 2017-05-15 16:35:26 +0900 (Mon, 15 May 2017) | 8 lines

Should call `ln_s` only when symlink is available

* test/fileutils/test_fileutils.rb (test_ln_s): skip if symlink is not
  available.

* test/fileutils/test_fileutils.rb (test_ln_s): remove created symlink
  certainly.

------------------------------------------------------------------------
r58725 | normal | 2017-05-15 16:33:10 +0900 (Mon, 15 May 2017) | 4 lines

test/socket/test_basicsocket.rb (socks): bind explicitly to localhost

Binding to a potentially public IP in a test can cause problems
if hit by a random port scanner or something...
------------------------------------------------------------------------
r58724 | nobu | 2017-05-15 16:04:48 +0900 (Mon, 15 May 2017) | 1 line

define RUBY_DEBUG_ENV only for main.c
------------------------------------------------------------------------
r58723 | ko1 | 2017-05-15 16:02:33 +0900 (Mon, 15 May 2017) | 3 lines

add information for debugging.


------------------------------------------------------------------------
r58722 | svn | 2017-05-15 15:17:30 +0900 (Mon, 15 May 2017) | 1 line

* 2017-05-15
------------------------------------------------------------------------
r58721 | nobu | 2017-05-15 15:17:29 +0900 (Mon, 15 May 2017) | 1 line

refer flag variables regardless RUBY_DEBUG_ENV
------------------------------------------------------------------------
r58720 | nobu | 2017-05-14 23:27:07 +0900 (Sun, 14 May 2017) | 1 line

fix typo
------------------------------------------------------------------------
r58719 | svn | 2017-05-14 23:09:58 +0900 (Sun, 14 May 2017) | 1 line

* properties.
------------------------------------------------------------------------
r58718 | eregon | 2017-05-14 23:09:56 +0900 (Sun, 14 May 2017) | 1 line

Update to ruby/spec@032022ca
------------------------------------------------------------------------
r58717 | svn | 2017-05-14 23:09:30 +0900 (Sun, 14 May 2017) | 1 line

* properties.
------------------------------------------------------------------------
r58716 | eregon | 2017-05-14 23:09:29 +0900 (Sun, 14 May 2017) | 1 line

Update to ruby/mspec@4b980493
------------------------------------------------------------------------
r58715 | nobu | 2017-05-14 22:01:46 +0900 (Sun, 14 May 2017) | 4 lines

suppress a warning [ci skip]

* thread_sync.c (rb_mutex_num_waiting): suppress warning C4700 by
  VC, uninitialized local variable.
------------------------------------------------------------------------
r58714 | nobu | 2017-05-14 20:45:00 +0900 (Sun, 14 May 2017) | 7 lines

object.c: use a sized enumerator with #yield_self

* object.c (rb_obj_size): The #yield_self Enumerator instance
  always has a #count of `1`.  This provides a lazy #size of `1`
  to match the count instead of `nil`.  [Fix GH-1615]

Author:    Shannon Skipper <shannonskipper@gmail.com>
------------------------------------------------------------------------
r58713 | naruse | 2017-05-14 20:36:01 +0900 (Sun, 14 May 2017) | 3 lines

Don't read non .rb file as a spec

To avoid reading `core` file on reading core/ specs.
------------------------------------------------------------------------
r58712 | nobu | 2017-05-14 12:53:59 +0900 (Sun, 14 May 2017) | 4 lines

suppress warning

* spec/rubyspec/optional/capi/ext/fixnum_spec.c: suppress
  unused-but-set-variable warning.
------------------------------------------------------------------------
r58711 | nobu | 2017-05-14 12:33:01 +0900 (Sun, 14 May 2017) | 4 lines

exts.mk.tmpl: fix multiple rubies

* template/exts.mk.tmpl: get rid of making multiple rubies
  simultaneously.  it can cause making libruby in parallel.
------------------------------------------------------------------------
r58710 | nobu | 2017-05-14 10:03:15 +0900 (Sun, 14 May 2017) | 4 lines

tgamma on mingw

* configure.in: get rid of unreliable tgamma() implemented of
  mingw, which returns NaN unexpectedly.
------------------------------------------------------------------------
r58709 | nobu | 2017-05-14 09:21:00 +0900 (Sun, 14 May 2017) | 4 lines

string.c: cut down intermediate string

* string.c (rb_external_str_new_with_enc): cut down intermediate
  string for conversion source, by appending with conversion.
------------------------------------------------------------------------
r58708 | nobu | 2017-05-14 01:04:05 +0900 (Sun, 14 May 2017) | 1 line

revert r58703 & r58705
------------------------------------------------------------------------
r58707 | svn | 2017-05-14 00:23:39 +0900 (Sun, 14 May 2017) | 1 line

* 2017-05-14
------------------------------------------------------------------------
r58706 | usa | 2017-05-14 00:23:38 +0900 (Sun, 14 May 2017) | 4 lines

The exception raised when exec/spawn unexecutable file on Windows is various

It seems that depend on OS version or filesystem

------------------------------------------------------------------------
r58705 | nobu | 2017-05-13 23:20:19 +0900 (Sat, 13 May 2017) | 6 lines

string.c: fix up r58703

* string.c (rb_external_str_new_with_enc): fix the case of
  conversion failure.  when conversion failed for some reason,
  just ignores the default internal encoding and returns in the
  given encoding.
------------------------------------------------------------------------
r58704 | nobu | 2017-05-13 22:54:52 +0900 (Sat, 13 May 2017) | 5 lines

remove wrong expectation

* spec/rubyspec/core/kernel/itself_spec.rb: `object_id` may return
  different objects for each calls, and the expectation of object
  identity is done by `equal` matcher which uses `equal?` method.
------------------------------------------------------------------------
r58703 | nobu | 2017-05-13 22:34:39 +0900 (Sat, 13 May 2017) | 4 lines

string.c: cut down intermediate string

* string.c (rb_external_str_new_with_enc): cut down intermediate
  string for conversion source, by appending with conversion.
------------------------------------------------------------------------
r58702 | nobu | 2017-05-13 21:31:01 +0900 (Sat, 13 May 2017) | 4 lines

string.c: fix one-off bug

* string.c (rb_str_cat_conv_enc_opts): fix one-off bug.  `ofs`
  equals `olen` when appending at the end.
------------------------------------------------------------------------
r58701 | nobu | 2017-05-13 18:55:23 +0900 (Sat, 13 May 2017) | 4 lines

make test-rubyspec-precheck

* common.mk (yes-test-rubyspec): make test-rubyspec-precheck for
  fake.rb to setup build configuration.
------------------------------------------------------------------------
r58700 | shugo | 2017-05-13 11:05:40 +0900 (Sat, 13 May 2017) | 1 line

test/net/imap: fix race condition in test_exception_during_idle
------------------------------------------------------------------------
r58699 | nobu | 2017-05-13 10:16:36 +0900 (Sat, 13 May 2017) | 1 line

thread_win32.c: disable currently unused functions
------------------------------------------------------------------------
r58698 | nobu | 2017-05-13 10:05:30 +0900 (Sat, 13 May 2017) | 4 lines

math.c: check argument to lgamma_r

* math.c (math_lgamma): check the argument before calling math
  function `lgamma_r` for edge cases.
------------------------------------------------------------------------
r58697 | nobu | 2017-05-13 09:50:20 +0900 (Sat, 13 May 2017) | 4 lines

math.c: check argument to tgamma

* math.c (math_gamma): check the argument before calling math
  function `tgamma` for edge cases.
------------------------------------------------------------------------
r58696 | normal | 2017-05-13 06:52:04 +0900 (Sat, 13 May 2017) | 26 lines

autoload: always wait on loading thread

We cannot assume autoload_provided/rb_feature_provided returning
TRUE means it is safe to proceed without waiting.  Another
thread may call rb_provide_feature before setting the constant
(via autoload_const_set).  So we must wait until autoload is
completed by another thread.

Note: this patch was tested with an explicit rb_thread_schedule
in rb_provide_feature to make the race condition more apparent
as suggested by <s.wanabe@gmail.com>:
> --- a/load.c
> +++ b/load.c
> @@ -563,6 +563,7 @@ rb_provide_feature(VALUE feature)
>      rb_str_freeze(feature);
>
>      rb_ary_push(features, rb_fstring(feature));
> +rb_thread_schedule();
>      features_index_add(feature, INT2FIX(RARRAY_LEN(features)-1));
>      reset_loaded_features_snapshot();
>  }

* variable.c (check_autoload_required): do not assume a provided
  feature means autoload is complete, always wait if autoload is
  being performed by another thread.
  [ruby-core:81105] [Bug #11384] Thanks to <s.wanabe@gmail.com>
------------------------------------------------------------------------
r58695 | usa | 2017-05-13 05:10:16 +0900 (Sat, 13 May 2017) | 4 lines

`notepad.exe` does not always exist in `C:\Windows`

Use `%WINDIR%\system32\drivers\etc\services` instead of `notepad.exe`.

------------------------------------------------------------------------
r58694 | nobu | 2017-05-13 02:23:46 +0900 (Sat, 13 May 2017) | 4 lines

array.c: fix position in message

* array.c (rb_ary_insert): fix the position in error message, when
  it is less than -1.
------------------------------------------------------------------------
r58693 | nobu | 2017-05-13 02:02:48 +0900 (Sat, 13 May 2017) | 4 lines

array.c: check position to insert

* array.c (rb_ary_insert): check position to insert even if no
  elements to be inserted.  [ruby-core:81125] [Bug #13558]
------------------------------------------------------------------------
r58692 | naruse | 2017-05-13 02:02:25 +0900 (Sat, 13 May 2017) | 1 line

show GEM_HOME
------------------------------------------------------------------------
r58691 | nobu | 2017-05-13 01:12:46 +0900 (Sat, 13 May 2017) | 7 lines

fix tgamma for inifity

* configure.in: do not use buggy tgamma() of mingw.

* missing/tgamma.c (tgamma): merge fix for inifity from
  ruby_tgamma.  since msvcr120.dll and later have tgamma, this
  implementation will not be used.
------------------------------------------------------------------------
r58690 | svn | 2017-05-13 01:01:18 +0900 (Sat, 13 May 2017) | 1 line

* 2017-05-13
------------------------------------------------------------------------
r58689 | nobu | 2017-05-13 01:01:17 +0900 (Sat, 13 May 2017) | 1 line

tgamma.c: unify versions with/without lgamma_r
------------------------------------------------------------------------
r58688 | nobu | 2017-05-13 00:29:55 +0900 (Sat, 13 May 2017) | 4 lines

string.c: remove bare Unicode.

* string.c (rb_str_unicode_normalize): remove bare Unicode.  do
  not assume that all compilers can handle UTF-8.
------------------------------------------------------------------------
r58687 | usa | 2017-05-12 20:49:05 +0900 (Fri, 12 May 2017) | 5 lines

Encoding.default_internal should affect ENV on Windows like other platforms

* hash.c (env_str_transcode): call rb_external_str_with_enc() if
  default_internal is available.

------------------------------------------------------------------------
r58686 | usa | 2017-05-12 19:37:41 +0900 (Fri, 12 May 2017) | 2 lines

Windows does not know Unix style timezone

------------------------------------------------------------------------
r58685 | usa | 2017-05-12 19:31:52 +0900 (Fri, 12 May 2017) | 5 lines

Math.gamma(Float::INFINITY) should return +INF

* math.c (tgamma): it seems that the implementaion of mswin has similar problem
  with mingw.

------------------------------------------------------------------------
r58684 | usa | 2017-05-12 19:23:53 +0900 (Fri, 12 May 2017) | 2 lines

On LLP64 platform (mswin64), the return value of String#hash is fixnum.

------------------------------------------------------------------------
r58683 | usa | 2017-05-12 19:10:15 +0900 (Fri, 12 May 2017) | 4 lines

Skip specs which make non-socket fd nonblocking on Windows

because Windows does not support nonblocking mode except sockets.

------------------------------------------------------------------------
r58682 | usa | 2017-05-12 19:05:48 +0900 (Fri, 12 May 2017) | 2 lines

Support bulding the extension on Windows

------------------------------------------------------------------------
r58681 | usa | 2017-05-12 18:46:45 +0900 (Fri, 12 May 2017) | 2 lines

It seems that MSVCRT accepts negative time_t

------------------------------------------------------------------------
r58680 | shugo | 2017-05-12 18:39:23 +0900 (Fri, 12 May 2017) | 4 lines

net/imap: Revert read_tiemout in r58549.

get_response is called in a receiver thread, so there may be no pending
commands when get_response is called.
------------------------------------------------------------------------
r58679 | usa | 2017-05-12 18:36:57 +0900 (Fri, 12 May 2017) | 2 lines

unistd.h is only available when HAVE_UNISTD_H is 1

------------------------------------------------------------------------
r58678 | usa | 2017-05-12 18:17:10 +0900 (Fri, 12 May 2017) | 2 lines

Skip the spec which uses `fork` on Windows

------------------------------------------------------------------------
r58677 | usa | 2017-05-12 17:45:20 +0900 (Fri, 12 May 2017) | 6 lines

The title of "Desktop" may be localized

* spec/rubyspec/library/win32ole/win32ole/_invoke_spec.rb: the title of
  "Desktop" may be localized.  then, use "System32" because it seems not to be
  localized.

------------------------------------------------------------------------
r58676 | usa | 2017-05-12 17:11:35 +0900 (Fri, 12 May 2017) | 5 lines

Skip on Windows because it always fails

On Windows, when invoking ruby via runruby.rb, the pid of invoker and of invokee
are diffrent.  Therefore, this spec always fails.

------------------------------------------------------------------------
r58675 | nobu | 2017-05-12 17:10:36 +0900 (Fri, 12 May 2017) | 6 lines

remove code old versions

* spec/rubyspec/optional/capi/spec_helper.rb (compile_extension):
  remove code old versions.  `RbConfig::CONFIG["rubyhdrdir"]` is
  since 1.9, and `RbConfig::CONFIG["rubyarchhdrdir"]` is since
  2.0.0.
------------------------------------------------------------------------
r58674 | nobu | 2017-05-12 16:48:08 +0900 (Fri, 12 May 2017) | 5 lines

gc.c: checks of sizes

* gc.c (ruby_xmalloc, ruby_xmalloc2, ruby_xcalloc): move checks of
  sizes from objspace_xmalloc, objspace_xmalloc2, objspace_xcalloc,
  respectively.
------------------------------------------------------------------------
r58673 | nobu | 2017-05-12 16:48:05 +0900 (Fri, 12 May 2017) | 4 lines

gc.c: objspace_malloc_fixup

* gc.c (objspace_malloc_fixup): include allocated size
  managements.
------------------------------------------------------------------------
r58672 | usa | 2017-05-12 15:48:53 +0900 (Fri, 12 May 2017) | 2 lines

spec has been merged, then should run it in love

------------------------------------------------------------------------
r58671 | usa | 2017-05-12 15:39:43 +0900 (Fri, 12 May 2017) | 5 lines

Support building exts of spec on mswin

* spec/rubyspec/optional/capi/spec_helper.rb: building command of extensions on
  mswin differs from Unixen's one.

------------------------------------------------------------------------
r58670 | nobu | 2017-05-12 15:19:00 +0900 (Fri, 12 May 2017) | 4 lines

vm.c: free by ruby_xfree

* vm.c (ruby_vm_run_at_exit_hooks): should free by `ruby_xfree`
  memories allocated by `ALLOC`.
------------------------------------------------------------------------
r58669 | stomar | 2017-05-12 03:59:45 +0900 (Fri, 12 May 2017) | 3 lines

string.c: docs for String#match

* string.c: [DOC] add example for String#match with pos argument.
------------------------------------------------------------------------
r58668 | stomar | 2017-05-12 03:58:27 +0900 (Fri, 12 May 2017) | 4 lines

string.c: docs for Symbol

* string.c: [DOC] adopt call-seq's for Symbol#{match,match?} from
  String methods; other small improvements for Symbol docs.
------------------------------------------------------------------------
r58667 | svn | 2017-05-12 03:56:33 +0900 (Fri, 12 May 2017) | 1 line

* 2017-05-12
------------------------------------------------------------------------
r58666 | stomar | 2017-05-12 03:56:32 +0900 (Fri, 12 May 2017) | 4 lines

string.c: docs for Symbol#{match,match?}

* string.c: [DOC] mention pos argument for Symbol#{match,match?}.
  Patch by Yuki Kurihara (ksss).  [Fix GH-1606]
------------------------------------------------------------------------
r58665 | nobu | 2017-05-11 23:28:38 +0900 (Thu, 11 May 2017) | 4 lines

gc.c: skip unnecessary check

* gc.c (wmap_aset): skip unnecessary size check.
  `2*sizeof(VALUE)` is static and should never overflow.
------------------------------------------------------------------------
r58664 | nobu | 2017-05-11 23:28:37 +0900 (Thu, 11 May 2017) | 4 lines

gc.c: use the argument objspace

* gc.c (objspace_xrealloc): use the argument objspace, instead of
  the default object space.
------------------------------------------------------------------------
r58663 | shugo | 2017-05-11 16:56:52 +0900 (Thu, 11 May 2017) | 1 line

net/imap: Net::IMAP#disconnect need not do anything if already disconnected
------------------------------------------------------------------------
r58662 | nobu | 2017-05-11 11:38:09 +0900 (Thu, 11 May 2017) | 4 lines

process.c: fix error check

* process.c (obj2uid, obj2gid): check the error number returned by
  `getpwnam_r()` and `getgrnam_r()`, instead of `errno`.
------------------------------------------------------------------------
r58661 | nobu | 2017-05-11 08:52:14 +0900 (Thu, 11 May 2017) | 4 lines

fix up r57167

* test/lib/minitest/unit.rb (MiniTest::Unit#_run_anything): stop
  if any errors or failures.
------------------------------------------------------------------------
r58660 | naruse | 2017-05-11 08:38:28 +0900 (Thu, 11 May 2017) | 1 line

pass as exception
------------------------------------------------------------------------
r58659 | nobu | 2017-05-11 08:34:33 +0900 (Thu, 11 May 2017) | 1 line

.
------------------------------------------------------------------------
r58658 | nobu | 2017-05-11 08:18:07 +0900 (Thu, 11 May 2017) | 5 lines

process.c: temporary string for buffer

* process.c (obj2uid, obj2gid): use temporary string as the buffer
  instead of `rb_alloc_tmp_buffer`, which is `NODE_ALLOCA` since
  r51492.  [ruby-core:81084] [Bug #13554]
------------------------------------------------------------------------
r58657 | naruse | 2017-05-11 04:19:38 +0900 (Thu, 11 May 2017) | 1 line

Show garbages if requiring gem_runner is failed
------------------------------------------------------------------------
r58656 | svn | 2017-05-11 04:03:07 +0900 (Thu, 11 May 2017) | 1 line

* 2017-05-11
------------------------------------------------------------------------
r58655 | stomar | 2017-05-11 04:03:07 +0900 (Thu, 11 May 2017) | 4 lines

lib/uri/generic.rb: fix typos

* lib/uri/generic.rb: [DOC] fix typos in URI::Generic#== docs.
  Patch by Alyssa Ross (alyssais).  [Fix GH-1604]
------------------------------------------------------------------------
r58654 | eregon | 2017-05-10 23:35:38 +0900 (Wed, 10 May 2017) | 1 line

Use environment values to find ruby and flags instead of an argument
------------------------------------------------------------------------
r58653 | eregon | 2017-05-10 23:35:24 +0900 (Wed, 10 May 2017) | 1 line

Use ruby_cmd instead of the RUBY_EXE constant in specs
------------------------------------------------------------------------
r58652 | nobu | 2017-05-10 23:25:03 +0900 (Wed, 10 May 2017) | 1 line

gc.c: check of size in ruby_sized_xrealloc
------------------------------------------------------------------------
r58651 | eregon | 2017-05-10 23:18:23 +0900 (Wed, 10 May 2017) | 1 line

Use the Mutex to know whether we entered the signal handler in Process#kill specs
------------------------------------------------------------------------
r58650 | eregon | 2017-05-10 23:18:10 +0900 (Wed, 10 May 2017) | 1 line

Process.getpgrp and Process.setsid must be available for Process#kill group specs
------------------------------------------------------------------------
r58649 | eregon | 2017-05-10 23:17:58 +0900 (Wed, 10 May 2017) | 1 line

Use #system directly with multiple arguments in Process#kill specs
------------------------------------------------------------------------
r58648 | naruse | 2017-05-10 16:23:06 +0900 (Wed, 10 May 2017) | 1 line

confirm current process equals to gemhome's pid
------------------------------------------------------------------------
r58647 | nobu | 2017-05-10 15:38:30 +0900 (Wed, 10 May 2017) | 4 lines

test_exception.rb: test_machine_stackoverflow_by_trace

* test/ruby/test_exception.rb (test_machine_stackoverflow_by_trace):
  move from test_trace.rb and rename, to be excluded by the default.
------------------------------------------------------------------------
r58646 | nobu | 2017-05-10 09:39:26 +0900 (Wed, 10 May 2017) | 1 line

adjust styles [ci skip]
------------------------------------------------------------------------
r58645 | nobu | 2017-05-10 09:20:02 +0900 (Wed, 10 May 2017) | 1 line

math.c (ruby_lgamma_r): reduce duplicate code
------------------------------------------------------------------------
r58644 | normal | 2017-05-10 04:52:10 +0900 (Wed, 10 May 2017) | 11 lines

test/thread: relax internal implementation check in error message

Queue, SizedQueue, and ConditionVariable internal implementation
should not be tied to using arrays.  Implementation details can
change and I am working on a change to remove the dependency on
arrays (as others may attempt, too) by using ccan/list for the
waiter list.

* test/thread/test_cv.rb (test_dump): remove check for Array
* test/thread/test_queue.rb (test_dump): ditto
  [ruby-core:81001] [Misc #13541]
------------------------------------------------------------------------
r58643 | stomar | 2017-05-10 03:56:22 +0900 (Wed, 10 May 2017) | 7 lines

date_core.c: fix docs for %Z format

* ext/date/date_core.c: [DOC] fix documentation for %Z format
  of {Date,DateTime}.strftime.

  Reported by Damon Timm.  Based on a patch by nano.
  [ruby-core:79602] [Bug #13231] [Fix GH-1565]
------------------------------------------------------------------------
r58642 | naruse | 2017-05-10 02:41:10 +0900 (Wed, 10 May 2017) | 1 line

dump stub specifications if nil
------------------------------------------------------------------------
r58641 | nobu | 2017-05-10 02:20:00 +0900 (Wed, 10 May 2017) | 7 lines

parse.y: brace after literal arg

* parse.y (symbol, dsym, parser_set_number_literal, parser_yylex):
  set state to END too not only ENDARG and after a literal, so
  that a left brace after it should be a primary block bound to
  the literal, which causes syntax error.
  [ruby-core:81037] [Bug #13547]
------------------------------------------------------------------------
r58640 | nobu | 2017-05-10 02:12:43 +0900 (Wed, 10 May 2017) | 6 lines

parse.y: do after cmdarg in paren

* parse.y (parser_yylex): set state to ENDARG after a string
  literal, so that `do` after a literal should be `do_block` and
  bound to the outer method, as well as a numeric/symbol literal.
  [ruby-core:72482] [Bug #11873]
------------------------------------------------------------------------
r58639 | svn | 2017-05-10 02:02:08 +0900 (Wed, 10 May 2017) | 1 line

* 2017-05-10
------------------------------------------------------------------------
r58638 | nobu | 2017-05-10 02:02:07 +0900 (Wed, 10 May 2017) | 4 lines

test_syntax.rb: test_brace_after_local_variable

* test/ruby/test_syntax.rb (test_brace_after_local_variable):
  another test using braces.  [Bug #11873]
------------------------------------------------------------------------
r58621 | nobu | 2017-05-09 23:11:46 +0900 (Tue, 09 May 2017) | 4 lines

string.c: fix r58618

* string.c (unicode_normalize_common): aggregation type cannot be
  initialized with dynamic values, in C89.
------------------------------------------------------------------------
r58618 | duerst | 2017-05-09 20:13:45 +0900 (Tue, 09 May 2017) | 6 lines

replace hand-written argument check by call to rb_scan_args in unicode_normalize_common

In string.c, replace hand-written argument count check by call to rb_scan_args.
This allows to use rb_funcallv once, rather than using rb_funcall twice.
Thanks to Hanmac (Hans Mackowiak) for the idea, see
https://bugs.ruby-lang.org/issues/11078#note-7.
------------------------------------------------------------------------
r58617 | duerst | 2017-05-09 19:45:46 +0900 (Tue, 09 May 2017) | 6 lines

add explanations about status of module UnicodeNormalize

In lib/unicode_normalize/normalize.rb, add explanations and clarifications
about the status of the files and the module. [ci skip]
This is in response to discussions at https://github.com/ruby/spec/pull/433
and https://bugs.ruby-lang.org/issues/5481#note-58.
------------------------------------------------------------------------
r58616 | naruse | 2017-05-09 16:47:28 +0900 (Tue, 09 May 2017) | 1 line

Add one more guard to avoid mixing nil into latest_specs
------------------------------------------------------------------------
r58615 | normal | 2017-05-09 15:17:01 +0900 (Tue, 09 May 2017) | 3 lines

fixup r58614 for raspi3 and maybe other systems with odd compile

[ruby-core:81048]
------------------------------------------------------------------------
r58614 | normal | 2017-05-09 14:06:41 +0900 (Tue, 09 May 2017) | 7 lines

rb_execution_context_t: move stack, stack_size and cfp from rb_thread_t

The goal is to reduce rb_context_t and rb_fiber_t size
by removing the need to store the entire rb_thread_t in
there.

[ruby-core:81045] Work-in-progress: soon, we will move more fields here.
------------------------------------------------------------------------
r58613 | nobu | 2017-05-09 11:55:51 +0900 (Tue, 09 May 2017) | 5 lines

Ignore fail on non empty ext and gems [ci skip]

* Makefile.in ({ext,gems}/{distclean,realclean}): ignore fail on
  removal of non empty directories.  these directories should not
  be empty when in-place build.
------------------------------------------------------------------------
r58612 | svn | 2017-05-09 01:00:02 +0900 (Tue, 09 May 2017) | 1 line

* 2017-05-09
------------------------------------------------------------------------
r58611 | kazu | 2017-05-09 01:00:00 +0900 (Tue, 09 May 2017) | 1 line

Add mspec and rubyspec to LEGAL [ci skip]
------------------------------------------------------------------------
r58610 | hsbt | 2017-05-08 22:14:24 +0900 (Mon, 08 May 2017) | 3 lines

Translate missing rdoc comment for opt_send_without_block.

  fix [GH-1608], Patch by @k0kubun
------------------------------------------------------------------------
r58609 | nobu | 2017-05-08 14:31:02 +0900 (Mon, 08 May 2017) | 4 lines

separate constdefs.c and constdefs.h

* ext/socket/depend: separate constdefs.c and constdefs.h so that
  only one process will run when parallel building.
------------------------------------------------------------------------
r58608 | normal | 2017-05-08 10:59:17 +0900 (Mon, 08 May 2017) | 10 lines

reduce rb_mutex_t size from 80 bytes to 72 bytes on 64-bit

We can use existing RVALUE flags to avoid adding a 4-byte
integer to store a boolean flag.  This integer cost us 8 bytes
due to default (lack of) struct packing on x86-64

* thread_sync.c (MUTEX_ALLOW_TRAP): define as FL_USER1
  (struct rb_mutex_struct): remove allow_trap
  (rb_mutex_lock): adjust for flag check
  (rb_mutex_allow_trap): adjust for flag set/unset
------------------------------------------------------------------------
r58607 | svn | 2017-05-08 10:59:13 +0900 (Mon, 08 May 2017) | 1 line

* properties.
------------------------------------------------------------------------
r58606 | normal | 2017-05-08 10:59:12 +0900 (Mon, 08 May 2017) | 5 lines

benchmark/bm_vm2_fiber_switch.rb: check for fiber performance

There are currently no benchmarks for Fiber performance, I
should've committed this years ago when [Feature #10341] was
implemented.
------------------------------------------------------------------------
r58605 | svn | 2017-05-08 09:18:54 +0900 (Mon, 08 May 2017) | 1 line

* 2017-05-08
------------------------------------------------------------------------
r58604 | normal | 2017-05-08 09:18:53 +0900 (Mon, 08 May 2017) | 57 lines

reduce rb_mutex_t size from 160 to 80 bytes on 64-bit

Instead of relying on a native condition variable and mutex for
every Ruby Mutex object, use a doubly linked-list to implement a
waiter queue in the Mutex.  The immediate benefit of this is
reducing the size of every Mutex object, as some projects have
many objects requiring synchronization.

In the future, this technique using a linked-list and on-stack
list node (struct mutex_waiter) should allow us to easily
transition to M:N threading model, as we can avoid the native
thread dependency to implement Mutex.

We already do something similar for autoload in variable.c,
and this was inspired by the Linux kernel wait queue (as
ccan/list is inspired by the Linux kernel linked-list).

Finaly, there are big performance improvements for Mutex
benchmarks, especially in contended cases:

measure target: real

name            |trunk  |built
----------------|------:|------:
loop_whileloop2 |  0.149|  0.148
vm2_mutex*      |  0.893|  0.651
vm_thread_mutex1|  0.809|  0.624
vm_thread_mutex2|  2.608|  0.628
vm_thread_mutex3| 28.227|  0.881

Speedup ratio: compare with the result of `trunk' (greater is better)

name            |built
----------------|------:
loop_whileloop2 |  1.002
vm2_mutex*      |  1.372
vm_thread_mutex1|  1.297
vm_thread_mutex2|  4.149
vm_thread_mutex3| 32.044

Tested on AMD FX-8320 8-core at 3.5GHz

* thread_sync.c (struct mutex_waiter): new on-stack struct
  (struct rb_mutex_struct): remove native lock/cond, use ccan/list
  (rb_mutex_num_waiting): new function for debug_deadlock_check
  (mutex_free): remove native_*_destroy
  (mutex_alloc): initialize waitq, remove native_*_initialize
  (rb_mutex_trylock): remove native_mutex_{lock,unlock}
  (lock_func): remove
  (lock_interrupt): remove
  (rb_mutex_lock): rewrite waiting path to use native_sleep + ccan/list
  (rb_mutex_unlock_th): rewrite to wake up from native_sleep
  using rb_threadptr_interrupt
  (rb_mutex_abandon_all): empty waitq
* thread.c (debug_deadlock_check): update for new struct
  (rb_check_deadlock): ditto
  [ruby-core:80913] [Feature #13517]
------------------------------------------------------------------------
r58603 | nobu | 2017-05-07 23:21:10 +0900 (Sun, 07 May 2017) | 4 lines

relative path as VPATH

* common.mk (ripper.c): use relative path as VPATH instead of
  absolute path of the current working directory.
------------------------------------------------------------------------
r58602 | nobu | 2017-05-07 23:03:52 +0900 (Sun, 07 May 2017) | 1 line

parse.y: export rb_parser_fatal for ripper
------------------------------------------------------------------------
r58601 | nobu | 2017-05-07 22:40:56 +0900 (Sun, 07 May 2017) | 3 lines

stale targets

* common.mk (update-mspec, update-rubyspec): empty stale targets.
------------------------------------------------------------------------
r58600 | nobu | 2017-05-07 22:06:34 +0900 (Sun, 07 May 2017) | 4 lines

extract prereq.status

* tool/make-snapshot (package): extract static config values for
  prereq and override dynamic values at runtime.
------------------------------------------------------------------------
r58599 | eregon | 2017-05-07 21:26:25 +0900 (Sun, 07 May 2017) | 1 line

Update specs to follow newlines added by r58596
------------------------------------------------------------------------
r58598 | eregon | 2017-05-07 21:17:21 +0900 (Sun, 07 May 2017) | 1 line

Rename spec/README to spec/README.md
------------------------------------------------------------------------
r58597 | svn | 2017-05-07 21:05:45 +0900 (Sun, 07 May 2017) | 1 line

* properties.
------------------------------------------------------------------------
r58596 | svn | 2017-05-07 21:05:36 +0900 (Sun, 07 May 2017) | 1 line

* remove trailing spaces, append newline at EOF.
------------------------------------------------------------------------
r58595 | eregon | 2017-05-07 21:04:49 +0900 (Sun, 07 May 2017) | 8 lines

Add in-tree mspec and ruby/spec

* For easier modifications of ruby/spec by MRI developers.
* .gitignore: track changes under spec.
* spec/mspec, spec/rubyspec: add in-tree mspec and ruby/spec.
  These files can therefore be updated like any other file in MRI.
  Instructions are provided in spec/README.
  [Feature #13156] [ruby-core:79246]
------------------------------------------------------------------------
r58594 | eregon | 2017-05-07 21:01:26 +0900 (Sun, 07 May 2017) | 3 lines

make update-rubyspec is no longer needed

* Kept a no-op for compatibility.
------------------------------------------------------------------------
r58593 | eregon | 2017-05-07 21:01:12 +0900 (Sun, 07 May 2017) | 1 line

Update README about ruby/spec
------------------------------------------------------------------------
r58592 | eregon | 2017-05-07 21:00:58 +0900 (Sun, 07 May 2017) | 2 lines

* spec/default.mspec: only require rbconfig if is it not already.
  Useful when running spec/mspec/bin/mspec directly.
------------------------------------------------------------------------
r58591 | normal | 2017-05-07 17:06:02 +0900 (Sun, 07 May 2017) | 17 lines

vm_core.h (rb_thread_t): use 32-bit running_time_us

The current range based current values of:

	TIME_QUANTUM_USEC=100000
	RUBY_THREAD_PRIORITY_MAX=3
	RUBY_THREAD_PRIORITY_MIN=-3

Gives a range of 12500..800000, plenty enough for a 32-bit
integer.  Clamping this also reduces potential implementation
bugs between 32-bit and 64-bit platforms.

I may consider a further reduction to uint16_t in the future
for M:N threading, but some users may want slightly larger
time quantums.

* vm_core.h (rb_thread_t): use 32-bit running_time_us
------------------------------------------------------------------------
r58590 | normal | 2017-05-07 16:38:30 +0900 (Sun, 07 May 2017) | 7 lines

io.c (do_fcntl): update max FD for F_DUPFD_CLOEXEC, too

Somebody may pass 1030 (the value of F_DUPFD_CLOEXEC) to IO#fcntl
because they copied code from somewhere else.  Ensure we know
about FDs created that way.

* io.c (do_fcntl): update max FD for F_DUPFD_CLOEXEC, too
------------------------------------------------------------------------
r58589 | stomar | 2017-05-07 16:18:10 +0900 (Sun, 07 May 2017) | 1 line

NEWS: Integer#{round,floor,ceil,truncate} [Bug #13420]
------------------------------------------------------------------------
r58588 | svn | 2017-05-07 13:26:38 +0900 (Sun, 07 May 2017) | 1 line

* properties.
------------------------------------------------------------------------
r58587 | normal | 2017-05-07 13:26:37 +0900 (Sun, 07 May 2017) | 10 lines

variable.c: cleanup waitq upon thread death

* variable.c (autoload_reset): use idempotent list_del_init
  (autoload_sleep): moved code from rb_autoload_load
  (autoload_sleep_done): cleanup for use with rb_ensure
  (rb_autoload_load): ensure list delete happens in case the
  thread dies during sleep
* test/ruby/bug-13526.rb: new script for separate execution
* test/ruby/test_autoload.rb (test_bug_13526): new test
  [ruby-core:81016] [Bug #13526]
------------------------------------------------------------------------
r58586 | stomar | 2017-05-07 04:58:12 +0900 (Sun, 07 May 2017) | 12 lines

make Integer#{round,floor,ceil,truncate} always return integer

* numeric.c (int_round): return integer (self) instead of float
  for Integer#round with positive ndigits argument, because
  conversion to float introduces errors for large integers.
* numeric.c (int_floor): ditto for Integer#floor.
* numeric.c (int_ceil): ditto for Integer#ceil.
* numeric.c (int_truncate): ditto for Integer#truncate.

* test/ruby/test_integer.rb: adjust test cases and add some more.

[ruby-core:80645] [Bug #13420]
------------------------------------------------------------------------
r58585 | svn | 2017-05-07 00:14:59 +0900 (Sun, 07 May 2017) | 1 line

* 2017-05-07
------------------------------------------------------------------------
r58584 | nobu | 2017-05-07 00:14:58 +0900 (Sun, 07 May 2017) | 6 lines

ripper/lexer.rb: nested indented heredoc

* ext/ripper/lib/ripper/lexer.rb (on_heredoc_dedent): insert
  stripped leading spaces as `on_ignored_sp` elements, so that the
  original source can be reconsructed.
  [ruby-core:80977] [Bug #13536]
------------------------------------------------------------------------
r58583 | nobu | 2017-05-06 23:12:30 +0900 (Sat, 06 May 2017) | 4 lines

fix up r58573

* common.mk: make the directory for extension shared library with
  the timestamp directory.
------------------------------------------------------------------------
r58582 | stomar | 2017-05-06 16:28:40 +0900 (Sat, 06 May 2017) | 3 lines

math.c: improve docs for Math.sqrt

* math.c: [DOC] mention Integer.sqrt in docs for Math.sqrt.
------------------------------------------------------------------------
r58581 | stomar | 2017-05-06 16:18:49 +0900 (Sat, 06 May 2017) | 4 lines

numeric.c: remove mention of Bignum from docs

* numeric.c: [DOC] remove mention of Bignum from Integer#{+,-,*,/},
  the return type does not depend on magnitude anymore.
------------------------------------------------------------------------
r58580 | stomar | 2017-05-06 16:17:41 +0900 (Sat, 06 May 2017) | 9 lines

numeric.c: revise docs

* numeric.c: [DOC] revise docs for Numeric, Integer, Float:
  * nodoc Numeric#singleton_method_added
  * mention that result for Integer#** might also be Complex
  * add / simplify / fix some examples
  * mention aliases
  * fix rdoc formatting, typos, grammar
  * clarifications and other improvements
------------------------------------------------------------------------
r58579 | duerst | 2017-05-06 13:42:58 +0900 (Sat, 06 May 2017) | 2 lines

delete enc/prelude.rb, because no longer needed

------------------------------------------------------------------------
r58578 | duerst | 2017-05-06 12:12:26 +0900 (Sat, 06 May 2017) | 3 lines

delete lib/unicode_normalize.rb, because no longer needed

(all content has been moved to string.c)
------------------------------------------------------------------------
r58577 | duerst | 2017-05-06 11:54:02 +0900 (Sat, 06 May 2017) | 5 lines

remove enc/prelude.rb from list of prelude files in common.mk

(This is a retry of r58559, it should work now that rubyspec does
no longer check for unicode_normalized to be required. See also
https://github.com/ruby/spec/commit/41176ead68b14011658c8abd0ebd67df2ae632fb.)
------------------------------------------------------------------------
r58576 | nobu | 2017-05-06 10:33:04 +0900 (Sat, 06 May 2017) | 5 lines

share `@@accept_charset`

* lib/cgi/{core,util}.rb: include CGI::Util not only extending, to
  share `@@accept_charset` class variable, so that it is always
  accessible.  [ruby-core:80986] [Bug #13539]
------------------------------------------------------------------------
r58575 | nobu | 2017-05-06 10:01:52 +0900 (Sat, 06 May 2017) | 6 lines

string.c: fix types

* string.c (id_normalize, id_normalized_p): fix types, IDs should
  be ID.

* string.c (unicode_normalize_common): ditto.
------------------------------------------------------------------------
r58574 | svn | 2017-05-06 09:54:23 +0900 (Sat, 06 May 2017) | 1 line

* 2017-05-06
------------------------------------------------------------------------
r58573 | nobu | 2017-05-06 09:54:22 +0900 (Sat, 06 May 2017) | 4 lines

timestamp for extensions

* common.mk: use the same timestamp file for architecture specific
  directory as the file used in Makefiles under ext.
------------------------------------------------------------------------
r58572 | svn | 2017-05-05 01:47:18 +0900 (Fri, 05 May 2017) | 1 line

* 2017-05-05
------------------------------------------------------------------------
r58571 | normal | 2017-05-05 01:47:17 +0900 (Fri, 05 May 2017) | 10 lines

benchmark/bm_vm_thread_pass_flood.rb: add comment

I was about to write off this benchmark while working on GVL
improvements on multi-core systems.

However I noticed it exposes a weakness in my work-in-progress
code when I tested on an old single CPU system.  Further testing
reveals setting CPU affinity ("schedtool -a 0x1" on Linux) on a
modern multi-core system is enough to reproduce the problem
exposed by this benchmark.
------------------------------------------------------------------------
r58570 | mame | 2017-05-04 22:42:47 +0900 (Thu, 04 May 2017) | 5 lines

time.c: avoid taking a pointer to a member of packed struct

clang 4.0.0 emitted a warning: "taking address of packed member
'subsecx' of class or structure 'vtm' may result in an unaligned
pointer value [-Waddress-of-packed-member]".
------------------------------------------------------------------------
r58569 | stomar | 2017-05-04 22:19:43 +0900 (Thu, 04 May 2017) | 1 line

string.c: [DOC] improve docs for String.new
------------------------------------------------------------------------
r58568 | ktsj | 2017-05-04 19:17:12 +0900 (Thu, 04 May 2017) | 3 lines

internal.h (rb_gc_resurrect): remove stale declaration

rb_gc_resurrect is no longer defined since r47444.
------------------------------------------------------------------------
r58567 | ktsj | 2017-05-04 17:59:01 +0900 (Thu, 04 May 2017) | 1 line

string.c: [DOC] Properly refer to keyword argument by its name
------------------------------------------------------------------------
r58566 | ktsj | 2017-05-04 17:58:59 +0900 (Thu, 04 May 2017) | 9 lines

dir.c: [DOC] Properly refer to keyword argument by its name [Fix GH-1543]

enc is the name of the variable used in the example, not the name of the
keyword argument (encoding).

The documentation used to wrongly suggest that the keyword argument name was
"enc" which could cause people try try to call `Dir.open("thing", enc: "utf-8")`

Author: Olivier Lacan <hi@olivierlacan.com>
------------------------------------------------------------------------
r58565 | normal | 2017-05-04 17:55:54 +0900 (Thu, 04 May 2017) | 15 lines

benchmark/bm_vm1_gc_wb_*.rb: fix GC.start args for invalid keyword

"lazy_sweep" does not appear to have ever been a valid kwarg
for GC.start, however the opposite of "lazy_sweep" appears
to be "immediate_sweep".  So use immediate_sweep, and flip
the boolean value of each arg.

I guess this only started failing with r56981 in Dec 2016
("class.c: missing unknown_keyword_error",
 commit e3f0cca2f26ba44c810ac980cdff7dda129ae533)

* benchmark/bm_vm1_gc_wb_ary.rb: "lazy_sweep: false" => "immediate_sweep: true"
* benchmark/bm_vm1_gc_wb_ary_promoted.rb: ditto
* benchmark/bm_vm1_gc_wb_obj.rb: ditto
* benchmark/bm_vm1_gc_wb_obj_promoted.rb: ditto
------------------------------------------------------------------------
r58564 | ktsj | 2017-05-04 17:13:17 +0900 (Thu, 04 May 2017) | 1 line

gems/bundled_gems: Update to power_assert 1.0.2
------------------------------------------------------------------------
r58563 | normal | 2017-05-04 16:18:33 +0900 (Thu, 04 May 2017) | 5 lines

.gitignore: ignore benchmark/bm_require.data

Followup-to r58562 in SVN

* .gitignore: ignore benchmark/bm_require.data
------------------------------------------------------------------------
r58562 | normal | 2017-05-04 16:08:39 +0900 (Thu, 04 May 2017) | 2 lines

benchmark: ignore bm_require.data/

------------------------------------------------------------------------
r58561 | nobu | 2017-05-04 15:54:11 +0900 (Thu, 04 May 2017) | 5 lines

parse.y: make shared string modifiable

* parse.y (dedent_string): ensure that the string is modifiable,
  not to set the length of shared string.
  [ruby-core:80987] [Bug #13540]
------------------------------------------------------------------------
r58560 | duerst | 2017-05-04 14:07:20 +0900 (Thu, 04 May 2017) | 1 line

revert 58559, because it fails on travis (rubyspec problem)
------------------------------------------------------------------------
r58559 | duerst | 2017-05-04 13:53:33 +0900 (Thu, 04 May 2017) | 1 line

remove enc/prelude.rb from list of prelude files in common.mk
------------------------------------------------------------------------
r58558 | duerst | 2017-05-04 11:16:27 +0900 (Thu, 04 May 2017) | 6 lines

refactor common parts of unicode normalization functions into unicode_normalize_common

In string.c, refactor the common parts (requiring of unicode_normalize/normalize.rb,
check of number of arguments) of the unicode normalization functions
(rb_str_unicode_normalize, rb_str_unicode_normalize_bang, rb_str_unicode_normalized_p)
into the new function unicode_normalize_common.
------------------------------------------------------------------------
r58557 | svn | 2017-05-04 11:13:12 +0900 (Thu, 04 May 2017) | 1 line

* properties.
------------------------------------------------------------------------
r58556 | normal | 2017-05-04 11:13:11 +0900 (Thu, 04 May 2017) | 8 lines

benchmark: new single-threaded read/write benchmark with pipe

This is currently for testing GVL performance in the uncontended
case: IO#write and IO#read unconditionally release GVL for
blocking I/O with pipe.

It will also be interesting to see how this changes if we switch
to M:N threading model.
------------------------------------------------------------------------
r58555 | duerst | 2017-05-04 11:00:19 +0900 (Thu, 04 May 2017) | 9 lines

move definition of String#unicode_normalized? to C to make sure it is documented

* lib/unicode_normalize.rb: Remove definition of String#unicode_normalized?
  (including documentation). Leave a comment explaining that the file is now empty.
* string.c: Define String#unicode_normalized? in rb_str_unicode_normalized_p in C,
  (including documentation)
* lib/unicode_normalize/normalize.rb: Remove (re)definition of
  String#unicode_normalized? to avoid warnings (when $VERBOSE==true) and
  problems when String is frozen
------------------------------------------------------------------------
r58554 | svn | 2017-05-04 10:36:53 +0900 (Thu, 04 May 2017) | 1 line

* 2017-05-04
------------------------------------------------------------------------
r58553 | duerst | 2017-05-04 10:36:52 +0900 (Thu, 04 May 2017) | 9 lines

move definition of String#unicode_normalize! to C to make sure it is documented

* lib/unicode_normalize.rb: Remove definition of String#unicode_normalize!
  (including documentation)
* string.c: Define String#unicode_normalize! in rb_str_unicode_normalize_bang in C,
  (including documentation)
* lib/unicode_normalize/normalize.rb: Remove (re)definition of
  String#unicode_normalize! to avoid warnings (when $VERBOSE==true) and
  problems when String is frozen
------------------------------------------------------------------------
r58552 | kou | 2017-05-03 21:25:17 +0900 (Wed, 03 May 2017) | 8 lines

rss: Accept empty text element as valid element

Parser has been accepted it but XML serializer wasn't accepted.

Reported by stefano frabetti. Thanks!!!

[ruby-core:80965] [Bug #13531]

------------------------------------------------------------------------
r58551 | svn | 2017-05-03 21:18:37 +0900 (Wed, 03 May 2017) | 1 line

* remove trailing spaces.
------------------------------------------------------------------------
r58550 | duerst | 2017-05-03 21:18:37 +0900 (Wed, 03 May 2017) | 9 lines

move definition of String#unicode_normalize to C to make sure it is documented

* lib/unicode_normalize.rb: Remove definition of String#unicode_normalize
  (including documentation)
* string.c: Define String#unicode_normalize in rb_str_unicode_normalize in C,
  (including documentation)
* lib/unicode_normalize/normalize.rb: Remove (re)definition of
  String#unicode_normalize to avoid warnings (when $VERBOSE==true) and
  problems when String is frozen
------------------------------------------------------------------------
r58549 | shugo | 2017-05-03 20:32:22 +0900 (Wed, 03 May 2017) | 3 lines

net/imap: handle timeouts

Patch by Pavel Rosick?.  [Feature #13379] [ruby-core:80440]
------------------------------------------------------------------------
r58548 | kazu | 2017-05-03 11:02:50 +0900 (Wed, 03 May 2017) | 3 lines

Use `dd` instead of `head -c`

[Bug #13538] [ruby-dev:50106]
------------------------------------------------------------------------
r58547 | kazu | 2017-05-03 10:44:52 +0900 (Wed, 03 May 2017) | 1 line

Fix NoMethodError [ci skip]
------------------------------------------------------------------------
r58546 | svn | 2017-05-03 02:48:10 +0900 (Wed, 03 May 2017) | 1 line

* 2017-05-03
------------------------------------------------------------------------
r58545 | nobu | 2017-05-03 02:48:10 +0900 (Wed, 03 May 2017) | 5 lines

ripper/lexer.rb: nested indented heredoc

* ext/ripper/lib/ripper/lexer.rb (on_heredoc_dedent): fix for
  nested indedented here documents, where `Elem`s are nested too.
  [ruby-core:80977] [Bug #13536]
------------------------------------------------------------------------
r58544 | nobu | 2017-05-02 22:16:04 +0900 (Tue, 02 May 2017) | 4 lines

.travis.yml: tweek after-update

* .travis.yml (before_script): get rid of making miniruby at
  after-update.
------------------------------------------------------------------------
r58543 | nobu | 2017-05-02 21:45:07 +0900 (Tue, 02 May 2017) | 1 line

mkconfig.rb: remove cross_compiling
------------------------------------------------------------------------
r58542 | nobu | 2017-05-02 21:45:04 +0900 (Tue, 02 May 2017) | 4 lines

common.mk: BOOTSTRAPRUBY for enc.mk

* common.mk ($(ENC_MK)): use $(BOOTSTRAPRUBY) as well as $(RBCONFIG),
  instead of $(MINIRUBY).
------------------------------------------------------------------------
r58541 | kazu | 2017-05-02 20:26:28 +0900 (Tue, 02 May 2017) | 1 line

Use `\A` and `\z` instead of `^` and `$` [ci skip]
------------------------------------------------------------------------
r58540 | nobu | 2017-05-02 16:35:20 +0900 (Tue, 02 May 2017) | 4 lines

internal.h: rb_raise_static

* internal.h (rb_raise_static): raise with a static message string
  literal.
------------------------------------------------------------------------
r58539 | duerst | 2017-05-02 14:46:31 +0900 (Tue, 02 May 2017) | 6 lines

remove unnecessary conditions in lib/unicode_normalize.rb

Because the methods in lib/unicode_normalize.rb are overwritten
by those in lib/unicode_normalize/normalize.rb as soon as one
of them is called, the check for whether UnicodeNormalized is
defined or not is no longer necessary.
------------------------------------------------------------------------
r58538 | duerst | 2017-05-02 14:34:25 +0900 (Tue, 02 May 2017) | 5 lines

rework definition of String#unicode_normalize! and #unicode_normalized?

simplify String#unicode_normalize! and #unicode_normalized?
in lib/unicode_normalize.rb by redefining them
in lib/unicode_normalize/normalize.rb
------------------------------------------------------------------------
r58537 | duerst | 2017-05-02 14:15:04 +0900 (Tue, 02 May 2017) | 4 lines

rework definition of String#unicode_normalize

simplify String#unicode_normalize in lib/unicode_normalize.rb
by redefining it in lib/unicode_normalize/normalize.rb
------------------------------------------------------------------------
r58536 | svn | 2017-05-02 11:40:47 +0900 (Tue, 02 May 2017) | 1 line

* properties.
------------------------------------------------------------------------
r58535 | normal | 2017-05-02 11:40:46 +0900 (Tue, 02 May 2017) | 11 lines

more benchmarks for SizedQueue and ConditionVariable

I'm working on patches to improve everything in thread_sync.c,
add these to track progress.

* benchmark/bm_vm_thread_sized_queue.rb: add description
* benchmark/bm_vm_thread_condvar1.rb: new benchmark
* benchmark/bm_vm_thread_condvar2.rb: ditto
* benchmark/bm_vm_thread_sized_queue2.rb: ditto
* benchmark/bm_vm_thread_sized_queue3.rb: ditto
* benchmark/bm_vm_thread_sized_queue4.rb: ditto
------------------------------------------------------------------------
r58534 | kosaki | 2017-05-02 11:19:32 +0900 (Tue, 02 May 2017) | 4 lines

nogvl_wait_for_single_fd must wait as its name

poll(fds, n, 0) mean no timeout and immediately return. If you want to
wait something, you need to use -1 instead.
------------------------------------------------------------------------
r58533 | svn | 2017-05-02 00:17:33 +0900 (Tue, 02 May 2017) | 1 line

* 2017-05-02
------------------------------------------------------------------------
r58532 | nobu | 2017-05-02 00:17:32 +0900 (Tue, 02 May 2017) | 4 lines

thread.c: suppress warnings [ci skip]

* thread.c (fill_thread_id_string): cast to void pointer to
  suppress warnings when pthread_t is not pointer type.
------------------------------------------------------------------------
r58531 | svn | 2017-05-01 20:40:47 +0900 (Mon, 01 May 2017) | 1 line

* remove trailing spaces.
------------------------------------------------------------------------
r58530 | hsbt | 2017-05-01 20:40:46 +0900 (Mon, 01 May 2017) | 11 lines

Merge rubygems-2.6.12 from rubygems/rubygems.

  * Details of changes:
    https://github.com/rubygems/rubygems/blob/009080040279282d7b8ddd09acab41719cb4ba00/History.txt#L3

  * I kept ko1's commmit related thread issue. It's not merged 2.6 branch on rubygems.
    https://github.com/ruby/ruby/commit/1721dfa0ea963a85d4ac1e3415eb18ef427d4d36

  * I removed test_realworld_default_gem from rubygems-2.6.12. It fails on
    Ruby trunk. Because it's differences of test suite and environment.
    https://github.com/rubygems/rubygems/pull/1899
------------------------------------------------------------------------
r58529 | hsbt | 2017-05-01 19:20:35 +0900 (Mon, 01 May 2017) | 4 lines

Merge gemspec from ruby/webrick.

  * Bump version to 1.4.0.beta1. Because https://rubygems.org/gems/webrick
    is already reserved old version of webrick.
------------------------------------------------------------------------
r58528 | nobu | 2017-05-01 16:50:53 +0900 (Mon, 01 May 2017) | 5 lines

object.c: Kernel#yield_self

* object.c (rb_obj_yield_self): new method which yields the
  receiver and returns the result.
  [ruby-core:46320] [Feature #6721]
------------------------------------------------------------------------
r58527 | kazu | 2017-05-01 11:42:34 +0900 (Mon, 01 May 2017) | 4 lines

Fix typo in documentation [ci skip]

[Fix GH-1599]
Author:    Liam Sean Brady <liamseanbrady@gmail.com>
------------------------------------------------------------------------
r58526 | nobu | 2017-05-01 11:01:38 +0900 (Mon, 01 May 2017) | 5 lines

zlib.c: no buf_filled in zstream

* ext/zlib/zlib.c (zstream): manage capacity and size of `buf`
  instead of size and separated member `buf_filled`.  reported by
  Christian Jalio (jalio) at https://hackerone.com/reports/211958
------------------------------------------------------------------------
r58525 | nobu | 2017-05-01 09:35:02 +0900 (Mon, 01 May 2017) | 4 lines

zlib.c: zstream_buffer_ungetbyte

* ext/zlib/zlib.c (zstream_buffer_ungetbyte): simplify by using
  zstream_buffer_ungets().
------------------------------------------------------------------------
r58524 | nobu | 2017-05-01 09:35:00 +0900 (Mon, 01 May 2017) | 5 lines

zlib.c: zstream_expand_buffer_non_stream

* ext/zlib/zlib.c (zstream_expand_buffer_non_stream): rename from
  zstream_expand_buffer_without_gvl() and replace duplicate code
  in zstream_expand_buffer().
------------------------------------------------------------------------
r58523 | nobu | 2017-05-01 09:32:56 +0900 (Mon, 01 May 2017) | 7 lines

rational.c: canonicalization case

* rational.c (float_numerator, float_denominator): fix for
  canonicalization case where `Float#to_r` could return an Integer
  not a Rational.  although mathn.rb has been removed in the
  trunk, fix for the backport purpose.
  [ruby-core:80942] [Bug #13528]
------------------------------------------------------------------------
r58521 | svn | 2017-05-01 06:18:31 +0900 (Mon, 01 May 2017) | 1 line

* 2017-05-01
------------------------------------------------------------------------
r58520 | usa | 2017-05-01 06:18:31 +0900 (Mon, 01 May 2017) | 4 lines

setup.mak have to handle `GIT` and `HAVE_GIT`

* win32/setup.mak: seems to be forgotten to commit at r58295.

------------------------------------------------------------------------
r58514 | usa | 2017-04-30 22:34:18 +0900 (Sun, 30 Apr 2017) | 4 lines

Typo

* tool/generate-backport-changelog.rb: fixed a typo.

------------------------------------------------------------------------
r58512 | nobu | 2017-04-30 19:53:42 +0900 (Sun, 30 Apr 2017) | 4 lines

git-refresh: fix for Solaris

* tool/git-refresh: expand for each words.
  [ruby-dev:50102] [Bug #13522]
------------------------------------------------------------------------
r58511 | normal | 2017-04-30 18:06:39 +0900 (Sun, 30 Apr 2017) | 3 lines

thread_sync.c: document SizedQueue#clear correctly [ci skip]

* thread_sync.c (rb_szqueue_clear): fix class name in RDoc
------------------------------------------------------------------------
r58510 | svn | 2017-04-30 16:24:37 +0900 (Sun, 30 Apr 2017) | 1 line

* properties.
------------------------------------------------------------------------
r58509 | normal | 2017-04-30 16:24:36 +0900 (Sun, 30 Apr 2017) | 4 lines

new benchmark for SizedQueue

The performance of SizedQueue is a bit more complex than
regular Queue, so it deserves a separate benchmark.
------------------------------------------------------------------------
r58508 | svn | 2017-04-30 12:52:07 +0900 (Sun, 30 Apr 2017) | 1 line

* 2017-04-30
------------------------------------------------------------------------
r58507 | nobu | 2017-04-30 12:52:06 +0900 (Sun, 30 Apr 2017) | 5 lines

git-refresh: fix for Solaris

* tool/git-refresh: unset variable `branch` if it is null, to get
  rid of substitutions which are not supported old Solaris.
  [ruby-dev:50102] [Bug #13522]
------------------------------------------------------------------------
r58506 | normal | 2017-04-29 19:50:59 +0900 (Sat, 29 Apr 2017) | 8 lines

load.c: remove a redundant rb_str_freeze call

rb_file_expand_path_fast already performs the buffer shrinking
rb_str_freeze does (via expand_path macro in file.c); the
result of rb_fstring is always frozen, and that rb_fstring
call is the last use of `expanded_path` in its scope.

load.c (rb_construct_expanded_load_path): remove rb_str_freeze
------------------------------------------------------------------------
r58505 | nobu | 2017-04-29 19:27:46 +0900 (Sat, 29 Apr 2017) | 4 lines

proc.c: recursion loop

* proc.c (rb_block_min_max_arity, rb_method_entry_min_max_arity):
  turn loop by recursion into goto.
------------------------------------------------------------------------
r58504 | svn | 2017-04-29 11:58:54 +0900 (Sat, 29 Apr 2017) | 1 line

* 2017-04-29
------------------------------------------------------------------------
r58503 | nobu | 2017-04-29 11:58:53 +0900 (Sat, 29 Apr 2017) | 6 lines

node.h: sign-extend

* node.h (nd_line): should sign-extend.  shifting `VALUE` extends
  with zero bits if `sizeof(VALUE)` equals to `sizeof(int)`.  the
  zero bits are truncated if `sizeof(VALUE)` is bigger enough.
  [ruby-core:80920] [Bug #13523]
------------------------------------------------------------------------
r58502 | hsbt | 2017-04-28 21:14:56 +0900 (Fri, 28 Apr 2017) | 5 lines

Bump version to gdbm-2.0.0.beta1

  * Merge from ruby/gdbm.
  * gdbm gem is already registered in rubygems.org. I skip shipped
    version of 0.x and 1.x. Therefore We need to use 2.x.
------------------------------------------------------------------------
r58501 | nobu | 2017-04-28 20:42:58 +0900 (Fri, 28 Apr 2017) | 1 line

sprintf.c: remove unused variable
------------------------------------------------------------------------
r58500 | nobu | 2017-04-28 18:50:43 +0900 (Fri, 28 Apr 2017) | 1 line

parse.y: set_line_body is not used in ripper
------------------------------------------------------------------------
r58499 | nobu | 2017-04-28 17:06:33 +0900 (Fri, 28 Apr 2017) | 4 lines

parse.y: fix line in rescue

* parse.y (set_line_body, primary): fix line number of bodystmt as
  the beginning of the block.  [ruby-core:79388] [Bug #13181]
------------------------------------------------------------------------
r58498 | nobu | 2017-04-28 14:08:44 +0900 (Fri, 28 Apr 2017) | 4 lines

sprintf.c: ruby_ultoa

* sprintf.c (ruby_ultoa): prefixed to get rid of conflict with
  a MSVC library function.
------------------------------------------------------------------------
r58497 | nobu | 2017-04-28 11:10:51 +0900 (Fri, 28 Apr 2017) | 7 lines

sprintf.c: format by utility functions

* sprintf.c (rb_str_format, fmt_setup): format by utility
  functions in vsnprintf.c instead of `snprintf`.

* sprintf.c (rb_str_format): format and append by `rb_str_catf`
  instead of formatting by `snprintf` and then copy.
------------------------------------------------------------------------
r58496 | svn | 2017-04-28 11:05:55 +0900 (Fri, 28 Apr 2017) | 1 line

* 2017-04-28
------------------------------------------------------------------------
r58495 | nobu | 2017-04-28 11:05:54 +0900 (Fri, 28 Apr 2017) | 4 lines

sprintf.c: fix one-off bug

* sprintf.c (rb_str_format): `CHECK` just before `FILL_`, but
  after another `PUSH`.  fix one-off bug.
------------------------------------------------------------------------
r58494 | nobu | 2017-04-27 21:30:55 +0900 (Thu, 27 Apr 2017) | 6 lines

fix ripper prereq

* common.mk (ext/ripper/ripper.c): fix VPATH when out-of-place
  build, and id.h was created in the build directory too.  it has
  to include the build directory, i.e., the current directory
  before `cd`.
------------------------------------------------------------------------
r58493 | eregon | 2017-04-27 21:07:43 +0900 (Thu, 27 Apr 2017) | 6 lines

Send the backtrace of the circular require warning as a single String to Warning.warn

* load.c: send as a single string.
* error.c: expose the string formatted by rb_warning as rb_warning_string().
* test/ruby/test_exception.rb: update tests.
  [ruby-core:80850] [Bug #13505]
------------------------------------------------------------------------
r58492 | shyouhei | 2017-04-27 13:21:04 +0900 (Thu, 27 Apr 2017) | 37 lines

refactor newhash (revision 58463 another try) [fix GH-1600]

	* st.c (rb_hash_bulk_insert): new API to bulk insert entries
	  into a hash. Given arguments are first inserted into the
	  table at once, then reindexed. This is faster than inserting
	  things using rb_hash_aset() one by one.

	  This arrangement (rb_ prefixed function placed in st.c) is
	  unavoidable because it both touches table internal and write
	  barrier at once.

	* internal.h: delcare the new function.

	* hash.c (rb_hash_s_create): use the new function.

	* vm.c (core_hash_merge): ditto.

	* insns.def (newhash): ditto.

	* test/ruby/test_hash.rb: more coverage on hash creation.

	* test/ruby/test_literal.rb: ditto.

-----------------------------------------------------------
benchmark results:
minimum results in each 7 measurements.
Execution time (sec)
name    before  after
loop_whileloop2  0.136  0.137
vm2_bighash*     1.249  0.623

Speedup ratio: compare with the result of `before' (greater is better)
name    after
loop_whileloop2 0.996
vm2_bighash*    2.004


------------------------------------------------------------------------
r58491 | normal | 2017-04-27 12:16:39 +0900 (Thu, 27 Apr 2017) | 7 lines

load.c: make fstrings from C strings sooner

The underlying string objects will become fstrings anyways,
so create the fstring directly from the C string to reduce
intermediate garbage.

* load.c (rb_provide, rb_provide): create fstring
------------------------------------------------------------------------
r58490 | nobu | 2017-04-27 05:13:07 +0900 (Thu, 27 Apr 2017) | 5 lines

error.c: send as a single string

* error.c (rb_warn_m): send the arguments as a single string
  concatenated with a newline, so it can be filtered easily.
  [ruby-core:80875] [Feature #12944]
------------------------------------------------------------------------
r58489 | svn | 2017-04-27 05:09:35 +0900 (Thu, 27 Apr 2017) | 1 line

* 2017-04-27
------------------------------------------------------------------------
r58488 | stomar | 2017-04-27 05:09:34 +0900 (Thu, 27 Apr 2017) | 5 lines

error.c: improve docs

* error.c: [DOC] fix rdoc formatting (make sure `Warning.warn' is
  displayed verbatim; rdoc would render it as a link named `#warn'),
  use capitalized "Ruby", fix a typo.
------------------------------------------------------------------------
r58487 | nobu | 2017-04-26 17:11:32 +0900 (Wed, 26 Apr 2017) | 5 lines

error.c: splat warn arguments

* error.c (rb_warn_m): print array arguments with splatting.
  it is often used with `caller`.
  [ruby-core:80849] [Feature #12944]
------------------------------------------------------------------------
r58486 | nobu | 2017-04-26 09:30:05 +0900 (Wed, 26 Apr 2017) | 1 line

range.c: remove no longer used variable
------------------------------------------------------------------------
r58485 | normal | 2017-04-26 05:20:08 +0900 (Wed, 26 Apr 2017) | 1 line

thread_sync.c (rb_mutex_lock): spelling fix [ci skip]
------------------------------------------------------------------------
r58484 | eregon | 2017-04-26 04:34:07 +0900 (Wed, 26 Apr 2017) | 3 lines

Use require to load rbconfig in default.mspec

* Otherwise it would be loaded twice.
------------------------------------------------------------------------
r58483 | naruse | 2017-04-26 04:13:26 +0900 (Wed, 26 Apr 2017) | 1 line

suppress_warning
------------------------------------------------------------------------
r58482 | ko1 | 2017-04-26 02:50:34 +0900 (Wed, 26 Apr 2017) | 7 lines

add timeout.

* test/ruby/test_trace.rb (test_trace_stackoverflow): sometimes this test
  was stopped forever and killed by test process forcibly. However, this
  test only checks if this code cause some critical failure such as SEGV.
  So that we can add timeout for this code.

------------------------------------------------------------------------
r58481 | svn | 2017-04-26 02:24:07 +0900 (Wed, 26 Apr 2017) | 1 line

* 2017-04-26
------------------------------------------------------------------------
r58480 | ko1 | 2017-04-26 02:24:06 +0900 (Wed, 26 Apr 2017) | 1 line

revert r58478 and r58479 because they do not support not in-place build
------------------------------------------------------------------------
r58479 | eregon | 2017-04-25 21:45:36 +0900 (Tue, 25 Apr 2017) | 3 lines

Use require_relative to load rbconfig in default.mspec

* Otherwise it would load it twice.
------------------------------------------------------------------------
r58478 | eregon | 2017-04-25 21:45:25 +0900 (Tue, 25 Apr 2017) | 3 lines

No need to pass the config file to mspec as mspec finds it itself

* It would also #load (because .mspec cannot be #require'd) it twice.
------------------------------------------------------------------------
r58477 | eregon | 2017-04-25 21:45:14 +0900 (Tue, 25 Apr 2017) | 1 line

Remove useless else which produced a warning
------------------------------------------------------------------------
r58476 | eregon | 2017-04-25 20:42:43 +0900 (Tue, 25 Apr 2017) | 6 lines

no longer rescue exceptions of #<=> when initializing a Range

* range.c (range_init): no longer hide the user exception
  with a ArgumentError, just let the user exception go through.
* test/ruby/test_range.rb (test_new): add tests.
  [Feature #7688]
------------------------------------------------------------------------
r58475 | eregon | 2017-04-25 20:42:31 +0900 (Tue, 25 Apr 2017) | 5 lines

no longer rescue exceptions of #coerce in Integer#step

* numeric.c (num_step_negative_p): no more error hiding.
* test/ruby/test_float.rb, test/ruby/test_numeric.rb:
  follow the change. [Feature #7688]
------------------------------------------------------------------------
r58474 | eregon | 2017-04-25 20:42:20 +0900 (Tue, 25 Apr 2017) | 5 lines

no longer rescue exceptions in numeric comparison operations

* numeric.c (do_coerce): no more error hiding.
* test/ruby/test_numeric.rb: follow the change.
  [Feature #7688]
------------------------------------------------------------------------
r58473 | hsbt | 2017-04-25 18:23:04 +0900 (Tue, 25 Apr 2017) | 6 lines

Import gemspec
Import gemspec and test file from ruby/webrick.

  * webrick.gemspec: Update files and dependency for standalone gem.
  * test/webrick/utils.rb: Added explicitly loading of EnvUtil for
    test suite without ruby core test suite.
------------------------------------------------------------------------
r58472 | eregon | 2017-04-25 18:10:46 +0900 (Tue, 25 Apr 2017) | 4 lines

Document the Warning module and warn method

* error.c (Warning): add documentation. [Feature #13504]
  Author: Jeremy Evans <code@jeremyevans.net>
------------------------------------------------------------------------
r58471 | nobu | 2017-04-25 17:17:24 +0900 (Tue, 25 Apr 2017) | 4 lines

load.c: backtrace of circular require

* load.c (load_lock): print backtrace of circular require via
  `Warning.warn` [ruby-core:80850] [Bug #13505]
------------------------------------------------------------------------
r58470 | hsbt | 2017-04-25 16:55:56 +0900 (Tue, 25 Apr 2017) | 5 lines

Import gemspec and test file changes from ruby/gdbm.

  * gdbm.gemspec: Update basic configuraiton for standalone gdbm gem.
  * test/gdbm/test_gdbm.rb: In standalone environment, It needs to
    explicit loading of EnvUtil module for test suite.
------------------------------------------------------------------------
r58469 | svn | 2017-04-25 15:51:35 +0900 (Tue, 25 Apr 2017) | 1 line

* 2017-04-25
------------------------------------------------------------------------
r58468 | shyouhei | 2017-04-25 15:51:34 +0900 (Tue, 25 Apr 2017) | 4 lines

fix macro expansion bug

This previous "key" macro argument accidentally replaced `(ptr)->key` part. 

------------------------------------------------------------------------
r58467 | nobu | 2017-04-24 20:52:14 +0900 (Mon, 24 Apr 2017) | 1 line

tool/git-refresh: fix branch operations
------------------------------------------------------------------------
r58466 | nobu | 2017-04-24 15:17:55 +0900 (Mon, 24 Apr 2017) | 5 lines

parse.y: args tail at error

* parse.y (new_args_tail_gen): abandon parsing arguments after
  error.  reported by ilsani Martino Sani (ilsani) at
  https://hackerone.com/reports/221201
------------------------------------------------------------------------
r58465 | nobu | 2017-04-24 15:17:54 +0900 (Mon, 24 Apr 2017) | 6 lines

parse.y: rb_parser_fatal

* parse.y (rb_parser_fatal): abort compilation on internal parser
  error.  rb_bug() is generic use but not useful for debugging the
  parser.  this function dumps internal states, and continues with
  enabling yydebug output to stderr for the parser stack dump.
------------------------------------------------------------------------
r58464 | nobu | 2017-04-24 13:20:02 +0900 (Mon, 24 Apr 2017) | 1 line

Get rid of unnecessary GCC extension
------------------------------------------------------------------------
r58463 | shyouhei | 2017-04-24 10:40:51 +0900 (Mon, 24 Apr 2017) | 5 lines

revert newhash refactoring

We need to fix GC bug before merging this.  Revert revisions
58452, 58435, 58434, 58428, 58427 in this order.

------------------------------------------------------------------------
r58462 | svn | 2017-04-24 01:19:23 +0900 (Mon, 24 Apr 2017) | 1 line

* 2017-04-24
------------------------------------------------------------------------
r58461 | naruse | 2017-04-24 01:19:23 +0900 (Mon, 24 Apr 2017) | 5 lines

Allow Net::HTTP to fetch user/pass from http_proxy

Note that this feature is enabled only on environment variables are
multi-user safe. In this time the list includes Linux, FreeBSD, or
Darwin. [Bug #12921]
------------------------------------------------------------------------
r58460 | naruse | 2017-04-24 01:19:22 +0900 (Mon, 24 Apr 2017) | 1 line

suppress warning: shadowing outer local variable
------------------------------------------------------------------------
r58459 | nobu | 2017-04-23 23:51:08 +0900 (Sun, 23 Apr 2017) | 1 line

Add diagnostic reports section header [ci skip]
------------------------------------------------------------------------
r58458 | nobu | 2017-04-23 23:47:31 +0900 (Sun, 23 Apr 2017) | 1 line

assert_syntax_error returns the exception [ci skip]
------------------------------------------------------------------------
r58457 | nobu | 2017-04-23 10:31:37 +0900 (Sun, 23 Apr 2017) | 1 line

Document parse.y instead of ext/ripper/ripper.c
------------------------------------------------------------------------
r58456 | nobu | 2017-04-23 10:31:36 +0900 (Sun, 23 Apr 2017) | 1 line

ext/dl has been removed already [ci skip]
------------------------------------------------------------------------
r58455 | nobu | 2017-04-23 10:23:30 +0900 (Sun, 23 Apr 2017) | 4 lines

use $(srcdir).

* win32/Makefile.sub (enc/jis/props.h): build it in not builddir,
  but in srcdir.
------------------------------------------------------------------------
r58454 | nobu | 2017-04-23 10:04:40 +0900 (Sun, 23 Apr 2017) | 4 lines

Refactor "%f" % Inf/NaN

* sprintf.c (rb_str_format): as for non-finite float, calculate
  the exact needed size with the space flag.
------------------------------------------------------------------------
r58453 | nobu | 2017-04-23 10:04:39 +0900 (Sun, 23 Apr 2017) | 5 lines

Fix space flag when Inf/NaN and width==3

* sprintf.c (rb_str_format): while `"% 2f"` and `"% 4f"` result in
  `" Inf"` and `" Inf"` respectively, `"% 3f"` results in
  `"Inf"` (no space).
------------------------------------------------------------------------
r58452 | ko1 | 2017-04-23 09:20:27 +0900 (Sun, 23 Apr 2017) | 5 lines

mark Hash keys correctly.

* hash.c (rb_hash_new_from_object): same as r58434.
  Newly created frozen objects are not referred from any roots/objects.

------------------------------------------------------------------------
r58451 | nobu | 2017-04-23 01:26:15 +0900 (Sun, 23 Apr 2017) | 1 line

Ignore enc/jis/props.h
------------------------------------------------------------------------
r58450 | svn | 2017-04-23 01:19:13 +0900 (Sun, 23 Apr 2017) | 1 line

* 2017-04-23
------------------------------------------------------------------------
r58449 | stomar | 2017-04-23 01:19:12 +0900 (Sun, 23 Apr 2017) | 1 line

test/test_prime.rb: update method name in comment
------------------------------------------------------------------------
r58448 | nobu | 2017-04-22 17:32:33 +0900 (Sat, 22 Apr 2017) | 6 lines

parse.y: fix compile_error format

* parse.y (ripper_compile_error, parser_compile_error): declare as
  PRINTF_ARGS attribute.

* parse.y (id_is_var_gen): fix format specifier for string value.
------------------------------------------------------------------------
r58447 | nobu | 2017-04-22 17:19:34 +0900 (Sat, 22 Apr 2017) | 5 lines

test_file_exhaustive.rb: check case-sensitive fs

* test/ruby/test_file_exhaustive.rb (test_expand_path): dump
  expanded file name, not only appended char, for case-sensitive
  filesystem.  [ruby-dev:50093] [Bug #13489]
------------------------------------------------------------------------
r58446 | nobu | 2017-04-22 17:19:33 +0900 (Sat, 22 Apr 2017) | 1 line

adjust indent
------------------------------------------------------------------------
r58443 | kazu | 2017-04-22 11:04:35 +0900 (Sat, 22 Apr 2017) | 1 line

Remove nonexistent files and rename some files
------------------------------------------------------------------------
r58442 | normal | 2017-04-22 10:08:15 +0900 (Sat, 22 Apr 2017) | 16 lines

define PACKED_STRUCT_UNALIGNED correctly

Defining PACKED_STRUCT_UNALIGNED to a noop in ruby/config.h (via
`configure') prevents the definition in include/ruby/defines.h
from working

This should have been fixed in r46914, so there's a size
regression for some objects since Ruby 2.2+.  I do not believe
we can backport to existing releases, either, since it can
affect ABI.

Add a test for Time objects on common x86-based platforms to
check for future regressions.

* configure.in: remove PACKED_STRUCT_UNALIGNED definition
* test/ruby/test_time.rb (test_memsize): new test for x86
------------------------------------------------------------------------
r58441 | nobu | 2017-04-22 09:27:14 +0900 (Sat, 22 Apr 2017) | 1 line

Add sha512
------------------------------------------------------------------------
r58440 | nobu | 2017-04-22 09:18:08 +0900 (Sat, 22 Apr 2017) | 1 line

Update sources and include files after update
------------------------------------------------------------------------
r58439 | ko1 | 2017-04-22 09:10:28 +0900 (Sat, 22 Apr 2017) | 4 lines

use $(srcdir).

* Makefile.in (enc/jis/props.h): build it in not builddir, but in srcdir.

------------------------------------------------------------------------
r58438 | nobu | 2017-04-22 08:16:43 +0900 (Sat, 22 Apr 2017) | 7 lines

clean autogenerated files

* enc/depend (clean, clean-srcs): fix path of name2ctype.h, and
  remove casefold.h too.

* enc/jis/props.h: autogenerated file.
  [ruby-core:80823] [Bug #13493]
------------------------------------------------------------------------
r58437 | normal | 2017-04-22 05:38:58 +0900 (Sat, 22 Apr 2017) | 8 lines

test/socket/test_basicsocket: handle :wait_readable on read_nonblock

On some systems with slower local sockets, :wait_readable may
happen and we should wait on it to drain the socket.
This is a possible fix for https://bugs.ruby-lang.org/issues/13491

* test/socket/test_basicsocket.rb (test_read_write_nonblock):
  handle :wait_readable on read_nonblock
------------------------------------------------------------------------
r58436 | svn | 2017-04-22 00:00:31 +0900 (Sat, 22 Apr 2017) | 1 line

* 2017-04-22
------------------------------------------------------------------------
r58435 | ko1 | 2017-04-22 00:00:30 +0900 (Sat, 22 Apr 2017) | 4 lines

insert WB correctly.

* hash.c (hash_insert_raw): should insert WB.

------------------------------------------------------------------------
r58434 | ko1 | 2017-04-21 20:02:10 +0900 (Fri, 21 Apr 2017) | 8 lines

mark created frozen strings.

* hash.c (rb_hash_new_from_values_with_klass): before this fix,
  only a st table are filled with passed values. However, newly
  created frozen strings are not marked correctly only reference
  from st table. This patch marks such created frozen strings
  by Hash object which refers to the st table.

------------------------------------------------------------------------
r58433 | kazu | 2017-04-21 20:00:10 +0900 (Fri, 21 Apr 2017) | 2 lines

Remove empty directories

------------------------------------------------------------------------
r58432 | hsbt | 2017-04-21 15:16:11 +0900 (Fri, 21 Apr 2017) | 3 lines

Removed mathn.rb from stdlib. It's deprecated from Ruby 2.2.

  [Feature #10169][[ruby-core:64553]]
------------------------------------------------------------------------
r58431 | nobu | 2017-04-21 15:12:27 +0900 (Fri, 21 Apr 2017) | 8 lines

test_framework.rb: for case-sensitive filesystem

* test/mkmf/test_framework.rb (test_single_framework): fix header
  file name for case-sensitive filesystem.  it may not be same as
  the framework name, but should be the actual file name.
  [ruby-dev:50093] [Bug #13489]

* test/mkmf/test_framework.rb (test_multi_frameworks): ditto.
------------------------------------------------------------------------
r58430 | rhe | 2017-04-21 15:03:12 +0900 (Fri, 21 Apr 2017) | 4 lines

Remove missing/strtol.c

It is never used. We don't need it anyway as it's part of C89 which is
our current minimum requirement.
------------------------------------------------------------------------
r58429 | shyouhei | 2017-04-21 14:35:34 +0900 (Fri, 21 Apr 2017) | 2 lines

NEWS entry for [Feature #13302]

------------------------------------------------------------------------
r58428 | shyouhei | 2017-04-21 13:42:09 +0900 (Fri, 21 Apr 2017) | 2 lines

typo fix (sorry!)

------------------------------------------------------------------------
r58427 | shyouhei | 2017-04-21 13:21:14 +0900 (Fri, 21 Apr 2017) | 40 lines

refactor hash literal

Same as rb_ary_tmp_new_from_values(), it reduces vm_exec_core binary
size from 26,176 bytes to 26,080 bytes.  But this time, also with a
bit of optimizations:

  - Because we are allocating a new hash and no back references are
    introduced at all, we can safely skip write barriers.

  - Also, the iteration never recurs.  We can avoid complicated
    function callbacks by using st_insert instead of st_update.

----

	* hash.c (rb_hash_new_from_values): refactor
          extract the bulk insert into a function.

	* hash.c (rb_hash_new_from_object): also refactor.

	* hash.c (rb_hash_s_create): use the new functions.

	* insns.def (newhash): ditto.

	* vm.c (core_hash_from_ary): ditto.

	* iternal.h: export the new function.

-----------------------------------------------------------
benchmark results:
minimum results in each 7 measurements.
Execution time (sec)
name    before  after
loop_whileloop2  0.135  0.134
vm2_bighash*     1.236  0.687

Speedup ratio: compare with the result of `before' (greater is better)
name    after
loop_whileloop2 1.008
vm2_bighash*    1.798

------------------------------------------------------------------------
r58426 | nobu | 2017-04-21 12:01:12 +0900 (Fri, 21 Apr 2017) | 7 lines

ext/extmk.rb: colorize notes [Feature #13302]

* common.mk (build-ext): pass variables to colorize.

* ext/extmk.rb: colorize notes with tool/colorize.rb.

* tool/colorize.rb: extract from tool/generic_erb.rb.
------------------------------------------------------------------------
r58425 | nobu | 2017-04-21 11:43:25 +0900 (Fri, 21 Apr 2017) | 7 lines

exts.mk: refine notes [Feature #13302]

* ext/extmk.rb: split notes into header and footer, which are
  common, from bodies which are unique for each extensions.

* template/exts.mk.tmpl: now each notes are not one line, should
  not unique.
------------------------------------------------------------------------
r58424 | nobu | 2017-04-21 09:53:26 +0900 (Fri, 21 Apr 2017) | 4 lines

vm_dump.c: non-scalar thread_id

* vm_dump.c (rb_vmdebug_stack_dump_all_threads): fix for
  non-scalar thread_id platforms.  c.f. [Bug #9884]
------------------------------------------------------------------------
r58423 | nobu | 2017-04-21 09:11:56 +0900 (Fri, 21 Apr 2017) | 24 lines

Suppress a warning in ruby/win32.h [Fix GH-1591]

Fix a warning in ruby/win32.h which can cause failures with mkmf

The return value is implicit type casted from 'long double' to 'double', currently.
This causes a gcc warning like this:

```
In file included from C:\Ruby24-x64\include\ruby-2.4.0/ruby/defines.h:243:0,
                 from C:\Ruby24-x64\include\ruby-2.4.0/ruby/ruby.h:36,
                 from C:\Ruby24-x64\include\ruby-2.4.0/ruby.h:33,
                 from conftest.c:1:
C:\Ruby24-x64\include\ruby-2.4.0/ruby/win32.h: In function 'rb_w32_pow':
C:\Ruby24-x64\include\ruby-2.4.0/ruby/win32.h:786:12: warning: conversion to 'double' from 'long double' may alter its value [-Wfloat-conversion]
     return powl(x, y);
            ^~~~~~~~~~
```

This is fixed by the attached explicit type cast.

Moreover when CFLAGS is set to '-Wconversion', it prevents the compiler from
building. This is the case at the nokogiri gem.

The original issue arose at RubyInstaller2: https://github.com/oneclick/rubyinstaller2/commit/576a0eb70aa9348b366c3ecfe83c67811b7bcb9b
------------------------------------------------------------------------
r58422 | ko1 | 2017-04-21 07:52:57 +0900 (Fri, 21 Apr 2017) | 5 lines

use correct synchronization.

* test/ruby/test_thread.rb (make_handle_interrupt_test_thread1): use Queue
  to use correct synchronization.

------------------------------------------------------------------------
r58421 | ko1 | 2017-04-21 00:58:35 +0900 (Fri, 21 Apr 2017) | 4 lines

* vm_dump.c (rb_vmdebug_stack_dump_all_threads): cast to `void*`.
  Pointed out at
  <https://github.com/ruby/ruby/commit/fbc1deca89595e60af21e58b7e164f376e4bd2fc#commitcomment-21839826>

------------------------------------------------------------------------
r58420 | svn | 2017-04-21 00:02:56 +0900 (Fri, 21 Apr 2017) | 1 line

* 2017-04-21
------------------------------------------------------------------------
r58419 | ko1 | 2017-04-21 00:02:55 +0900 (Fri, 21 Apr 2017) | 8 lines

release monitor correctly.

* lib/rubygems/core_ext/kernel_require.rb: sometimes
  `Kernel.send(:gem, spec.name)` can raise some errors
  (Gem::MissingSpecError I observed) and this method
  doesn't release RUBYGEMS_ACTIVATION_MONITOR correctly.
  This patch fix this problem.

------------------------------------------------------------------------
r58418 | nobu | 2017-04-20 20:07:02 +0900 (Thu, 20 Apr 2017) | 5 lines

ruby-lex.rb: fix continued line conditions

* lib/irb/ruby-lex.rb (RubyLex#lex): fix conditions for continued
  line; empty lines, a semicolon, first line in `begin` block,
  just after `else` are not continued.
------------------------------------------------------------------------
r58417 | nobu | 2017-04-20 20:07:00 +0900 (Thu, 20 Apr 2017) | 1 line

ruby-lex.rb: merge regexps
------------------------------------------------------------------------
r58416 | shyouhei | 2017-04-20 19:32:08 +0900 (Thu, 20 Apr 2017) | 14 lines

refactor torexp to use routine in array.c

Found a part where copy&paste can be eliminated.  Reduces vm_exec_core
from 26,228 bytes to 26,176 bytes in size on my machine. I believe it
does not affect any runtime performance.

----

	* array.c (rb_ary_tmp_new_from_values): extend existing
          rb_ary_new_from_values function so that it can take
          additional value for klass.
	* array.c (rb_ary_new_from_values): use the new function.
	* insns.def (toregexp): ditto.

------------------------------------------------------------------------
r58415 | hsbt | 2017-04-20 18:11:36 +0900 (Thu, 20 Apr 2017) | 3 lines

Removed math mode from irb.

  mathn is deprecated from Ruby 2.2.
------------------------------------------------------------------------
r58414 | nobu | 2017-04-20 17:31:20 +0900 (Thu, 20 Apr 2017) | 4 lines

common.mk: separate note

* common.mk (build-ext): separate note from building extensions,
  not to be intermingled.  [ruby-core:80759] [Feature #13302]
------------------------------------------------------------------------
r58413 | hsbt | 2017-04-20 17:21:24 +0900 (Thu, 20 Apr 2017) | 4 lines

Removed deprecated extensions of mathn.

  * ext/mathn/{complex,rational}: Removed from ruby core.
    [fix GH-1542][Feature #13334][ruby-core:80247]
------------------------------------------------------------------------
r58412 | nobu | 2017-04-20 17:13:16 +0900 (Thu, 20 Apr 2017) | 6 lines

extmk.rb: fail for mandatory libraries

* ext/extmk.rb: fail if a mandatory extension library failed to
  configure.  [ruby-core:80759] [Feature #13302]

* template/exts.mk.tmpl: move `exit` at the end.
------------------------------------------------------------------------
r58411 | stomar | 2017-04-20 16:46:22 +0900 (Thu, 20 Apr 2017) | 6 lines

improve man pages

* man/ruby.1, man/erb.1, man/goruby.1, man/irb.1:
  fix document title formatting and volume name,
  improve "REPORTING BUGS" section: fix mdoc formatting error
  (wrong macro for bullet list items), small rewordings.
------------------------------------------------------------------------
r58410 | stomar | 2017-04-20 16:44:54 +0900 (Thu, 20 Apr 2017) | 9 lines

ri.1: rewrite ri man page

* man/ri.1: update the (very outdated) ri man page:
  * update document date
  * fix document title formatting and volume name
  * update descriptions and options to current ri --help text
  * fix some mdoc formatting errors (missing escaping of `\',
    wrong macro for bullet list items)
  * various rewordings and other improvements
------------------------------------------------------------------------
r58409 | stomar | 2017-04-20 16:44:01 +0900 (Thu, 20 Apr 2017) | 6 lines

ri.1: fix errors in ri man page

* man/ri.1: fix some errors in ri man page (add missing options,
  remove options that do not exist, fix formatter list).

  Reported by Josh Cheek.  [ruby-core:68065] [Bug #10838]
------------------------------------------------------------------------
r58408 | ko1 | 2017-04-20 13:50:53 +0900 (Thu, 20 Apr 2017) | 5 lines

add a debug function.

* vm_dump.c (rb_vmdebug_stack_dump_all_threads): dump stack dump
  for all living threads.

------------------------------------------------------------------------
r58407 | usa | 2017-04-20 10:36:11 +0900 (Thu, 20 Apr 2017) | 4 lines

Move test_extlibs.rb because it's not the test of ruby itself

* test/test_extlibs.rb: moved from test/ruby.

------------------------------------------------------------------------
r58406 | svn | 2017-04-20 00:14:04 +0900 (Thu, 20 Apr 2017) | 1 line

* 2017-04-20
------------------------------------------------------------------------
r58405 | nobu | 2017-04-20 00:14:03 +0900 (Thu, 20 Apr 2017) | 4 lines

fix infinite recursion

* vm_insnhelper.c (vm_once_dispatch): no guarantee that tail call
  is always optimized away.
------------------------------------------------------------------------
r58404 | rhe | 2017-04-19 23:05:26 +0900 (Wed, 19 Apr 2017) | 4 lines

extmk.rb: improve message printed when configuring extensions fails

Point to the mkmf.log if configuring an extension fails so that people
can find and fix the culprit easily.  [ruby-core:80131] [Feature #13302]
------------------------------------------------------------------------
r58403 | hsbt | 2017-04-19 20:50:03 +0900 (Wed, 19 Apr 2017) | 2 lines

Rervert r58304. Because Rubygems have specialized finder for default gems.
We need to list library entries for default gems.
------------------------------------------------------------------------
r58402 | shyouhei | 2017-04-19 16:27:03 +0900 (Wed, 19 Apr 2017) | 19 lines

refactor extract binop dispatcher

Those opt_something instructions are worth refactoring. They tend to
have similar ways of executions.  By extracting the common part,
generated vm_exec_core function shrinks from 26,816 bytes to 26,256
bytes (according to nm(1)).

This changeset introduces negligible performance impact.  3 repeated
runs of optcarrot benchmark on my machine resulted in:

   before this: 28.813363684823557, 27.523907198440366, 27.292766121965400
   after  this: 28.174038497265080, 28.999513875020405, 29.621399800428065

in fps (greater==faster).

----

	* vm_insnhelper.c (vm_opt_binop_dispatch): new function.

------------------------------------------------------------------------
r58401 | svn | 2017-04-19 10:08:17 +0900 (Wed, 19 Apr 2017) | 1 line

* 2017-04-19
------------------------------------------------------------------------
r58400 | normal | 2017-04-19 10:08:16 +0900 (Wed, 19 Apr 2017) | 19 lines

socket: avoid fcntl for read/write_nonblock on Linux

On platforms where MSG_DONTWAIT works reliably on all sockets
(so far, I know of Linux), we can avoid fcntl syscalls and
implement IO#write_nonblock and IO#read_nonblock in terms of the
socket-specific send and recv family of syscalls.

This avoids side effects on the socket, and also encourages
generic code to be written in cases where IO wrappers like
OpenSSL::SSL::SSLSocket are used.

Perhaps in the future, side-effect-free non-blocking I/O can
be standard on all files and OSes: https://cr.yp.to/unix/nonblock.html

* ext/socket/lib/socket.rb (read_nonblock, write_nonblock):
  Linux-specific wrapper without side effects
  [ruby-core:80780] [Feature #13362]
* test/socket/test_basicsocket.rb (test_read_write_nonblock):
  new test
------------------------------------------------------------------------
r58399 | nobu | 2017-04-18 22:14:08 +0900 (Tue, 18 Apr 2017) | 1 line

fixup! vm_insnhelper.c: adjust indent [ci skip]
------------------------------------------------------------------------
r58398 | nobu | 2017-04-18 22:14:06 +0900 (Tue, 18 Apr 2017) | 5 lines

compile.c: wrong optimization

* compile.c (compile_branch_condition): expression which has side
  effects should not be eliminated.
  [ruby-core:80740] [Bug #13444]
------------------------------------------------------------------------
r58397 | nobu | 2017-04-18 22:14:05 +0900 (Tue, 18 Apr 2017) | 1 line

vm_insnhelper.c: adjust indent [ci skip]
------------------------------------------------------------------------
r58396 | shyouhei | 2017-04-18 22:05:38 +0900 (Tue, 18 Apr 2017) | 4 lines

typo fix (sorry!) [ci skip]

Surprisingly this was not a syntax error on my machine.

------------------------------------------------------------------------
r58395 | nobu | 2017-04-18 22:02:56 +0900 (Tue, 18 Apr 2017) | 1 line

test_optimization.rb: heredoc code style
------------------------------------------------------------------------
r58394 | ko1 | 2017-04-18 21:30:59 +0900 (Tue, 18 Apr 2017) | 4 lines

fix compile error.

* insns.def (trace): use cast `flag` to pass compilation with clang on MacOSX.

------------------------------------------------------------------------
r58393 | hsbt | 2017-04-18 20:55:44 +0900 (Tue, 18 Apr 2017) | 3 lines

Fix heading of README.

  [Fix GH-1586] Patch by @jbampton
------------------------------------------------------------------------
r58392 | shyouhei | 2017-04-18 20:06:58 +0900 (Tue, 18 Apr 2017) | 2 lines

tabify (sorry!) [ci skip]

------------------------------------------------------------------------
r58391 | svn | 2017-04-18 19:58:50 +0900 (Tue, 18 Apr 2017) | 1 line

* remove trailing spaces.
------------------------------------------------------------------------
r58390 | shyouhei | 2017-04-18 19:58:49 +0900 (Tue, 18 Apr 2017) | 33 lines

split insns.def into functions

Contemporary C compilers are good at function inlining.  They fold
multiple functions into one.  However they are not yet smart enough to
unfold a function into several ones.  So generally speaking, it is
wiser for a C programmer to manually split C functions whenever
possible.  That should make rooms for compilers to optimize at will.

Before this changeset insns.def was converted into single HUGE
function called vm_exec_core().  By moving each instruction's core
into individual functions, generated C source code is reduced from
3,428 lines to 2,847 lines.  Looking at the generated assembly
however, it seems my compiler (gcc 6.2) is extraordinary smart so that
it inlines almost all functions I introduced in this changeset back
into that vm_exec_core.  On my machine compiled machine binary of the
function does not shrink very much in size (28,432 bytes to 26,816
bytes, according to nm(1)).

I believe this change is zero-cost.  Several benchmarks I exercised
showed no significant difference beyond error mergin.  For instance
3 repeated runs of optcarrot benchmark on my machine resulted in:

   before this: 28.330329285707490, 27.513378371065920, 29.40420215754537
   after  this: 27.107195867280414, 25.549324021385907, 30.31581919050884

in fps (greater==faster).

----

	* internal.h (rb_obj_not_equal): used from vm_insnhelper.c
	* insns.def: move vast majority of lines into vm_insnhelper.c
	* vm_insnhelper.c: moved here.

------------------------------------------------------------------------
r58389 | nobu | 2017-04-18 17:34:40 +0900 (Tue, 18 Apr 2017) | 4 lines

eval.c: fix exit inside TAG

* eval.c (setup_exception): do not exit by goto inside
  PUSH_TAG/POP_TAG.  it causes an infinite loop.
------------------------------------------------------------------------
r58388 | nobu | 2017-04-18 14:56:34 +0900 (Tue, 18 Apr 2017) | 4 lines

configure.in: honor GIT env

* configure.in (--with-git): honor environment variable GIT if
  set.
------------------------------------------------------------------------
r58387 | nobu | 2017-04-18 11:58:45 +0900 (Tue, 18 Apr 2017) | 4 lines

vcs.rb: env for command

* tool/vcs.rb (VCS::SVN::COMMAND, VCS::GIT::COMMAND): customize
  command paths by environment variables.
------------------------------------------------------------------------
r58386 | nobu | 2017-04-18 11:58:44 +0900 (Tue, 18 Apr 2017) | 4 lines

enc/depend: remove Unicode versions

* enc/depend (enc/unicode.o): remove hardcoded Unicode versions.
  this object file must be compiled by toplevel make.
------------------------------------------------------------------------
r58385 | svn | 2017-04-18 08:47:13 +0900 (Tue, 18 Apr 2017) | 1 line

* 2017-04-18
------------------------------------------------------------------------
r58384 | ko1 | 2017-04-18 08:47:12 +0900 (Tue, 18 Apr 2017) | 5 lines

should not return.

* test/ruby/test_settracefunc.rb (test_throwing_return_with_finish_frame):
  should not use `return`, but should use `next`.

------------------------------------------------------------------------
r58383 | nobu | 2017-04-17 22:38:34 +0900 (Mon, 17 Apr 2017) | 5 lines

string.c: improve insertion performace

* string.c (rb_str_splice_0): improve performace of single byte
  optimizable cases, insertion 7bit string to 7bit string.
  [ruby-dev:49984] [Bug #13228]
------------------------------------------------------------------------
r58382 | nobu | 2017-04-17 22:23:42 +0900 (Mon, 17 Apr 2017) | 4 lines

thread_win32.c: fix index

* thread_win32.c (w32_wait_events): fix wait object index in the
  case of interrupt_event is not usable.
------------------------------------------------------------------------
r58381 | nobu | 2017-04-17 11:41:00 +0900 (Mon, 17 Apr 2017) | 4 lines

eval.c: copy before cause setup

* eval.c (setup_exception): copy frozen exception before setting
  up a cause not only a backtrace.
------------------------------------------------------------------------
r58380 | nobu | 2017-04-17 11:31:35 +0900 (Mon, 17 Apr 2017) | 9 lines

eval.c: copy special exceptions before raise

* eval.c (setup_exception): consider if the exception is frozen,
  but not one of special exception objects.

* gc.c (rb_memerror): copy minimum objects.

* thread.c (rb_threadptr_execute_interrupts): prepare special
  exception queued by another thread to be raised.
------------------------------------------------------------------------
r58379 | nobu | 2017-04-17 11:08:41 +0900 (Mon, 17 Apr 2017) | 4 lines

vm_insnhelper.c: rb_threadptr_stack_overflow

* vm_insnhelper.c (rb_threadptr_stack_overflow): move from
  thread.c and integrate with vm_stackoverflow.
------------------------------------------------------------------------
r58378 | nobu | 2017-04-17 10:35:54 +0900 (Mon, 17 Apr 2017) | 5 lines

parse.y: fix for empty `__VA_ARGS__`

* parse.y (WARN_CALL, WARNING_CALL): need `##` between a comman
  and `__VA_ARGS__` in the case it is empty, not to end arguments
  with a comma.
------------------------------------------------------------------------
r58377 | nobu | 2017-04-17 10:23:50 +0900 (Mon, 17 Apr 2017) | 9 lines

vm_backtrace.c: backtrace functions per threads

* vm_backtrace.c (rb_threadptr_backtrace_object): rename and
  extern.

* vm_backtrace.c (rb_threadptr_backtrace_str_ary): rename as
  threadptr since the parameter is rb_thread_t*.

* vm_backtrace.c (rb_threadptr_backtrace_location_ary): ditto.
------------------------------------------------------------------------
r58376 | nobu | 2017-04-17 09:25:48 +0900 (Mon, 17 Apr 2017) | 4 lines

eval.c: share rb_longjmp

* eval.c (rb_longjmp, rb_raise_jump): parameterize thread, and
  share rb_longjmp.
------------------------------------------------------------------------
r58375 | nobu | 2017-04-17 09:10:47 +0900 (Mon, 17 Apr 2017) | 7 lines

gc.c: rb_threadptr_stack_check

* gc.c (rb_threadptr_stack_check): check probability of stack
  overflow for the given thread, not the current thread.

* vm_eval.c (stack_check): check the given thread, not the current
  thread.
------------------------------------------------------------------------
r58374 | nobu | 2017-04-17 09:10:45 +0900 (Mon, 17 Apr 2017) | 6 lines

gc.c: PREVENT_STACK_OVERFLOW

* gc.c (PREVENT_STACK_OVERFLOW): define TRUE to try preventing
  stack overflow before actually happens.

* gc.c (stack_check): parameterize thread pointer.
------------------------------------------------------------------------
r58373 | svn | 2017-04-17 00:54:58 +0900 (Mon, 17 Apr 2017) | 1 line

* 2017-04-17
------------------------------------------------------------------------
r58372 | stomar | 2017-04-17 00:54:57 +0900 (Mon, 17 Apr 2017) | 3 lines

test_integer.rb: simplify test

* test/ruby/test_integer.rb: simplify test for Integer.sqrt.
------------------------------------------------------------------------
r58371 | nobu | 2017-04-16 23:54:59 +0900 (Sun, 16 Apr 2017) | 4 lines

rbinstall.rb: ignore skipped exts

* tool/rbinstall.rb (default-gems): skip gemspec if corresponding
  Makefile does not exist.
------------------------------------------------------------------------
r58370 | nobu | 2017-04-16 23:27:21 +0900 (Sun, 16 Apr 2017) | 5 lines

thread_win32.c: no GVL for interrupt_event

* thread_win32.c (w32_wait_events): do not acquire GVL, to fix
  deadlock at read/close race condition.  instead, just ignore
  interrupt_event if it is closed.
------------------------------------------------------------------------
r58369 | nobu | 2017-04-16 13:16:11 +0900 (Sun, 16 Apr 2017) | 1 line

test/ruby/test_io.rb: use Thread.stop? to wait
------------------------------------------------------------------------
r58368 | usa | 2017-04-16 11:00:24 +0900 (Sun, 16 Apr 2017) | 3 lines

* test/ruby/test_io.rb (test_race_closed_stream): separate because it stops
  entire test process on Windows.

------------------------------------------------------------------------
r58367 | svn | 2017-04-16 00:29:09 +0900 (Sun, 16 Apr 2017) | 1 line

* 2017-04-16
------------------------------------------------------------------------
r58366 | nobu | 2017-04-16 00:29:09 +0900 (Sun, 16 Apr 2017) | 5 lines

bignum.c: fix inexact estimation

* bignum.c (estimate_initial_sqrt): estimated square root is
  inexact if it is not equal to its ceil, needs Newton's method.
  [ruby-core:80696] [Bug #13440]
------------------------------------------------------------------------
r58365 | svn | 2017-04-15 16:13:06 +0900 (Sat, 15 Apr 2017) | 1 line

* properties.
------------------------------------------------------------------------
r58364 | normal | 2017-04-15 16:13:05 +0900 (Sat, 15 Apr 2017) | 11 lines

fix ext/-test-/struct/ dependencies

I started writing a template for auto-generation and
let "tool/update-deps --fix" fill in the rest.

Hopefully this fixes problems with some CI builds
after r58359.  Further changes to other ext/-test-/
files should probably add or update "depend" files, too.

* ext/-test-/struct/depend: new file
* enc/depend: auto-updated with unicode 9.0.0 headers (side-effect)
------------------------------------------------------------------------
r58363 | nobu | 2017-04-15 11:37:21 +0900 (Sat, 15 Apr 2017) | 4 lines

signal.c: last tag page condition

* signal.c (check_stack_overflow): drop the last tag when it is
  close to the fault page, not same as sp page.
------------------------------------------------------------------------
r58362 | nobu | 2017-04-15 11:09:27 +0900 (Sat, 15 Apr 2017) | 4 lines

ruby.h: check argc to rb_funcall

* include/ruby/ruby.h (rb_funcall): check if argc matches the
  number of variadic arguments, and replace with rb_funcallv.
------------------------------------------------------------------------
r58361 | nobu | 2017-04-15 11:07:01 +0900 (Sat, 15 Apr 2017) | 4 lines

signal.c: prefer pthread_sigmask

* signal.c (raise_stack_overflow): prefer pthread_sigmask to
  sigprocmask, for multithreading.
------------------------------------------------------------------------
r58360 | svn | 2017-04-15 09:46:01 +0900 (Sat, 15 Apr 2017) | 1 line

* properties.
------------------------------------------------------------------------
r58359 | normal | 2017-04-15 09:46:00 +0900 (Sat, 15 Apr 2017) | 9 lines

fix RSTRUCT_LEN macro in public C API

rb_struct_size returns an Integer VALUE, so it must be converted
to a `long` for compatibility with previous Ruby C API versions.

* ext/-test-/struct/len.c: new
* test/-ext-/struct/test_len.rb: new
* include/ruby/ruby.h (RSTRUCT_LEN): use NUM2LONG
  [ruby-core:80692] [Bug #13439]
------------------------------------------------------------------------
r58358 | ngoto | 2017-04-15 04:12:51 +0900 (Sat, 15 Apr 2017) | 7 lines

Workaround for optimization bug of Oracle Solaris Studio 12.4 and 12.5

* pack.c (pack_unpack, AVOID_CC_BUG): Very ugly workaround for
  optimization bug of Oracle Solaris Studio 12.4 and 12.5
  (Oracle Developer Studio 12.5) on Solaris with -xO4 optimization
  option. [Bug #11684] [ruby-core:80690]

------------------------------------------------------------------------
r58357 | ko1 | 2017-04-15 03:19:37 +0900 (Sat, 15 Apr 2017) | 4 lines

sync certainly.

* test/ruby/test_io.rb (test_race_closed_stream): awit for 'sleep' state.

------------------------------------------------------------------------
r58356 | ko1 | 2017-04-15 03:14:25 +0900 (Sat, 15 Apr 2017) | 6 lines

more explicit synchronization.

* test/ruby/test_io.rb (test_race_closed_stream): wait for blocking by r.gets.
  On some systems (for example, high load average systems) can't start Thread
  correctly and can't wait r.gets in invoked Thread.

------------------------------------------------------------------------
r58355 | svn | 2017-04-15 01:07:46 +0900 (Sat, 15 Apr 2017) | 1 line

* 2017-04-15
------------------------------------------------------------------------
r58354 | nobu | 2017-04-15 01:07:45 +0900 (Sat, 15 Apr 2017) | 1 line

signal.c: add sigprocmask guard
------------------------------------------------------------------------
r58353 | nobu | 2017-04-14 21:59:59 +0900 (Fri, 14 Apr 2017) | 4 lines

signal.c: unblock signal

* signal.c (raise_stack_overflow): unblock the received signal, to
  receive the same signal again.  [ruby-core:79285] [Bug #13164]
------------------------------------------------------------------------
r58352 | nobu | 2017-04-14 21:51:46 +0900 (Fri, 14 Apr 2017) | 4 lines

configure.in: sigsetjmp sivesigs flag

* configure.in (RUBY_SETJMP_TYPE): optional flag to save signal
  mask.
------------------------------------------------------------------------
r58351 | nobu | 2017-04-14 19:03:43 +0900 (Fri, 14 Apr 2017) | 1 line

IPSocket#inspect
------------------------------------------------------------------------
r58350 | nobu | 2017-04-14 17:33:08 +0900 (Fri, 14 Apr 2017) | 4 lines

ruby.h: check argc to rb_yield_values

* include/ruby/ruby.h (rb_yield_values): check if argc matches the
  number of variadic arguments, and replace with rb_yield_values2.
------------------------------------------------------------------------
r58349 | ko1 | 2017-04-14 16:46:11 +0900 (Fri, 14 Apr 2017) | 9 lines

disable rewind hooks.

* vm.c (hook_before_rewind): skip rewind hooks if err is SystemStackError
  because rewind hooks can cause stack overflow again and again.

* thread.c (ruby_thread_stack_overflow): do not disable all hooks.
  Additionally, clearing ruby_vm_event_flags is not suitable way
  to disable hooks.

------------------------------------------------------------------------
r58348 | svn | 2017-04-14 14:19:12 +0900 (Fri, 14 Apr 2017) | 1 line

* properties.
------------------------------------------------------------------------
r58347 | mrkn | 2017-04-14 14:19:12 +0900 (Fri, 14 Apr 2017) | 13 lines

Improve performance of type conversion using to_r

* object.c: Add to_r in conv_method_tbl.

* defs/id.def: add to_r.

* benchmark/bm_int_quo.rb: added.

* benchmark/bm_time_subsec.rb: added.

[Bug #13426]
[ruby-core:80665]
[Fix GH-1582]
------------------------------------------------------------------------
r58346 | ko1 | 2017-04-14 11:19:39 +0900 (Fri, 14 Apr 2017) | 5 lines

increase timeout seconds.

* test/ruby/test_trace.rb (test_trace_stackoverflow): on some platforms
  this test fails because of timeout.

------------------------------------------------------------------------
r58345 | nobu | 2017-04-14 09:45:49 +0900 (Fri, 14 Apr 2017) | 5 lines

rbinstall.rb: no file list for default gems

* tool/rbinstall.rb (default-gems): no file list is used now.
  all files should be installed as standard libraries.
  [ruby-core:80667] [Bug #13428]
------------------------------------------------------------------------
r58344 | nobu | 2017-04-14 09:45:48 +0900 (Fri, 14 Apr 2017) | 5 lines

git-refresh: fix abort by cd failure

* tool/git-refresh: try `cd -P` in a subshell, because Solaris10
  sh dies if it fails, not only the command.
  [ruby-dev:50074] [Bug #13433]
------------------------------------------------------------------------
r58343 | ko1 | 2017-04-14 01:32:20 +0900 (Fri, 14 Apr 2017) | 1 line

fix last commit
------------------------------------------------------------------------
r58342 | svn | 2017-04-14 01:19:46 +0900 (Fri, 14 Apr 2017) | 1 line

* 2017-04-14
------------------------------------------------------------------------
r58341 | ko1 | 2017-04-14 01:19:46 +0900 (Fri, 14 Apr 2017) | 2 lines

Terminate created threads.

------------------------------------------------------------------------
r58340 | svn | 2017-04-13 18:25:39 +0900 (Thu, 13 Apr 2017) | 1 line

* properties.
------------------------------------------------------------------------
r58339 | mrkn | 2017-04-13 18:25:38 +0900 (Thu, 13 Apr 2017) | 9 lines

array.c: improve performance of Array#sort with block

* array.c (sort_1): improve performance of Array#sort with block

* benchmark/bm_array_sort_block.rb: added for Array#sort with block

[Bug #13344]
[ruby-dev:50027]
[Fix GH-1544]
------------------------------------------------------------------------
r58338 | svn | 2017-04-13 17:09:07 +0900 (Thu, 13 Apr 2017) | 1 line

* properties.
------------------------------------------------------------------------
r58337 | mrkn | 2017-04-13 17:09:06 +0900 (Thu, 13 Apr 2017) | 4 lines

Add a benchmark script for Array#sort of float array

[Bug #13340]
[ruby-dev:50023]
------------------------------------------------------------------------
r58336 | nobu | 2017-04-13 17:08:04 +0900 (Thu, 13 Apr 2017) | 3 lines

git-refresh: for symlink srcdir

* tool/git-refresh: use `cd -P` for symlink srcdir.
------------------------------------------------------------------------
r58335 | nobu | 2017-04-13 16:52:05 +0900 (Thu, 13 Apr 2017) | 4 lines

git-refresh: fix expr

* tool/git-refresh (dir): surround by slashes to extract base
  name.  [ruby-dev:50070] [Bug #13424]
------------------------------------------------------------------------
r58334 | nobu | 2017-04-13 16:38:23 +0900 (Thu, 13 Apr 2017) | 6 lines

thread.c: disable VM events when stack overflow

* thread.c (ruby_thread_stack_overflow): disable VM events when
  stack overflow occurred; it causes another stack overflow again
  in making backtrace object, and crashes.
  [ruby-core:80662] [Bug #13425]
------------------------------------------------------------------------
r58333 | mrkn | 2017-04-13 16:22:35 +0900 (Thu, 13 Apr 2017) | 14 lines

array.c: Improve performance of Array#sort with float elements

* array.c (sort_2): improve performance of Array#sort with float elements.

* internal.h (cmp_opt_Float, cmp_opt_data): added for checking whether or not
  Float#<=> can be optimizable.

* numeric.c (rb_float_cmp): added for internal use.

* internal.h (rb_float_cmp): ditto.

[Bug #13340]
[ruby-dev:50023]
[Fix GH-1539]
------------------------------------------------------------------------
r58332 | rhe | 2017-04-13 15:43:17 +0900 (Thu, 13 Apr 2017) | 6 lines

array.c: report correct memsize for shared root arrays

For a shared array root, struct RArray::as.heap.aux.capa stores the
number of Arrays holding reference to that T_ARRAY instead of the actual
heap-allocated capacity. Use ARY_CAPA() macro which handles this
appropriately.
------------------------------------------------------------------------
r58331 | stomar | 2017-04-13 04:49:48 +0900 (Thu, 13 Apr 2017) | 5 lines

unicode_normalize.rb: improve docs

* lib/unicode_normalize.rb: [DOC] improve docs for
  String#{unicode_normalize,unicode_normalized?}: rdoc formatting,
  adopt style of other String methods (drop heading and "Examples").
------------------------------------------------------------------------
r58330 | svn | 2017-04-13 03:07:33 +0900 (Thu, 13 Apr 2017) | 1 line

* 2017-04-13
------------------------------------------------------------------------
r58329 | stomar | 2017-04-13 03:07:32 +0900 (Thu, 13 Apr 2017) | 6 lines

nodoc UnicodeNormalize module

* lib/unicode_normalize/normalize.rb: [DOC] nodoc the
  internal UnicodeNormalize module.
* lib/unicode_normalize/tables.rb: ditto.
* template/unicode_norm_gen.tmpl: ditto.
------------------------------------------------------------------------
r58328 | nobu | 2017-04-12 23:47:50 +0900 (Wed, 12 Apr 2017) | 4 lines

thread.c: during GC for thread

* thread.c (ruby_thread_stack_overflow): check if the given thread
  is during GC.
------------------------------------------------------------------------
r58327 | nobu | 2017-04-12 17:39:19 +0900 (Wed, 12 Apr 2017) | 5 lines

rbinstall.rb: purge `git ls-files`

* tool/rbinstall.rb (load_gemspec): purge `git ls-files` generated
  by bundle.  it is not available always everywhere everytime.
  [ruby-dev:50068] [Bug #13423]
------------------------------------------------------------------------
r58326 | hsbt | 2017-04-12 17:12:53 +0900 (Wed, 12 Apr 2017) | 4 lines

Import latest gemspec from ruby/fileutils.

  * Bump version to 0.7.1. Beucause fileutils-0.7 is alread reserverd
    on rubygems.org.
------------------------------------------------------------------------
r58325 | nobu | 2017-04-12 14:22:36 +0900 (Wed, 12 Apr 2017) | 4 lines

git-refresh: for old sh

* tool/git-refresh: get rid of matching prefix pattern removal for
  old sh.  [ruby-dev:50069] [Bug #13424]
------------------------------------------------------------------------
r58324 | hsbt | 2017-04-12 09:21:20 +0900 (Wed, 12 Apr 2017) | 1 line

Use `assert_raise` instead of `assert_raises`.
------------------------------------------------------------------------
r58323 | hsbt | 2017-04-12 09:21:18 +0900 (Wed, 12 Apr 2017) | 4 lines

Merge json-2.0.4.

  * https://github.com/flori/json/releases/tag/v2.0.4
  * https://github.com/flori/json/blob/09fabeb03e73ed88dc8ce8f19d76ac59e51dae20/CHANGES.md#2017-03-23-204
------------------------------------------------------------------------
r58322 | svn | 2017-04-12 07:41:21 +0900 (Wed, 12 Apr 2017) | 1 line

* 2017-04-12
------------------------------------------------------------------------
r58321 | hsbt | 2017-04-12 07:41:21 +0900 (Wed, 12 Apr 2017) | 4 lines

Merge upstream of ruby/etc.

  * Do not use `git ls-files` for file listing.
  * Fix extconf.rb path.
------------------------------------------------------------------------
r58320 | normal | 2017-04-11 23:56:17 +0900 (Tue, 11 Apr 2017) | 6 lines

Socket.udp_server_sockets: use symbol proc

Symbol proc is shorter human and machine code;
and also avoids needing to name variables.

* ext/socket/lib/socket.rb (Socket.udp_server_sockets): use symbol proc
------------------------------------------------------------------------
r58319 | nobu | 2017-04-11 21:28:51 +0900 (Tue, 11 Apr 2017) | 1 line

Parenthesized CHECK_CFP_CONSISTENCY [ci skip]
------------------------------------------------------------------------
r58318 | nobu | 2017-04-11 21:20:21 +0900 (Tue, 11 Apr 2017) | 5 lines

Install only files explicitly referenced by bundled gems.

[Bug #13417]
[Fix GH-1580]
Author:    V?t Ondruch <vondruch@redhat.com>
------------------------------------------------------------------------
r58317 | nobu | 2017-04-11 21:20:18 +0900 (Tue, 11 Apr 2017) | 4 lines

Spec#files are not used anymore.

[Fix GH-1579]
Author:    V?t Ondruch <vondruch@redhat.com>
------------------------------------------------------------------------
r58316 | hsbt | 2017-04-11 21:19:05 +0900 (Tue, 11 Apr 2017) | 3 lines

Fix a typo.

  Patch by @voxik. [fix GH-1581]
------------------------------------------------------------------------
r58315 | hsbt | 2017-04-11 18:46:53 +0900 (Tue, 11 Apr 2017) | 4 lines

Import gemspec from ruby/etc.

  * Update configuraiton for gem release.
  * Bump version to 0.2.1. Because 0.2.0 is already reserved on rubygems.org
------------------------------------------------------------------------
r58314 | hsbt | 2017-04-11 17:49:01 +0900 (Tue, 11 Apr 2017) | 4 lines

Import gemspec from ruby/dbm

  * Update gemspec version of beta release.
  * Bump version to 0.5.1. Because 0.5 is already reserved another implementation.
------------------------------------------------------------------------
r58313 | nobu | 2017-04-11 13:17:45 +0900 (Tue, 11 Apr 2017) | 4 lines

vm_insnhelper.c: CHECK_CFP_CONSISTENCY

* vm_insnhelper.c (CHECK_CFP_CONSISTENCY): make [BUG] messages
  consistent.
------------------------------------------------------------------------
r58312 | nobu | 2017-04-11 11:40:14 +0900 (Tue, 11 Apr 2017) | 4 lines

time.c: rename div as divv

* time.c (divv): add suffix to get rid of the name in C standard
  library, and others together.
------------------------------------------------------------------------
r58311 | nobu | 2017-04-11 11:40:13 +0900 (Tue, 11 Apr 2017) | 1 line

configure.in: need GIT to check if using git
------------------------------------------------------------------------
r58310 | nobu | 2017-04-11 10:24:13 +0900 (Tue, 11 Apr 2017) | 1 line

enc/unicode/data: no files under version control now
------------------------------------------------------------------------
r58309 | normal | 2017-04-11 03:16:58 +0900 (Tue, 11 Apr 2017) | 12 lines

time.c: use predefined IDs

This reduces rb_intern calls during startup and shortens code.

* time.c: include id.h for predefined IDs
  (id_mul, id_eq, id_ne, id_cmp): remove static variables
  (eq): replace id_eq with idEq
  (cmp, wcmp): replace id_cmp with idCmp
  (weq): replace id_eq with idEq
  (time_timespec): replace id_mul with '*'
  (Init_Time): remove rb_intern calls for removed variables
* common.mk (time.$(OBJEXT)): add depend on id.h
------------------------------------------------------------------------
r58308 | normal | 2017-04-11 03:08:16 +0900 (Tue, 11 Apr 2017) | 30 lines

time.c: Improve Time#to_i performance

Time#to_i will be faster around 80% (on 64-bit platforms).

* Before
       user     system      total        real
   2.840000   0.000000   2.840000 (  2.847238)

* After
       user     system      total        real
   1.600000   0.000000   1.600000 (  1.598911)

* Test code
require 'benchmark'

Benchmark.bmbm do |x|
  x.report do
    t = Time.now
    20000000.times do
      t.to_i
    end
  end
end

* time.c (_div): new function avoid rb_funcall
  (div): replace with new _div function
  [ruby-core:80636] [Bug #13418]
  Thanks to Watson <watson1978@gmail.com> for the patch.

From: Watson <watson1978@gmail.com>
------------------------------------------------------------------------
r58307 | stomar | 2017-04-11 02:28:18 +0900 (Tue, 11 Apr 2017) | 1 line

doc/extension.rdoc: rb_str_append grammar fix
------------------------------------------------------------------------
r58306 | nobu | 2017-04-11 00:34:37 +0900 (Tue, 11 Apr 2017) | 4 lines

extension.rdoc: rb_str_append [ci skip]

* doc/extension.rdoc: add rb_str_append and fix equivalent for
  rb_str_catf and rb_str_vcatf from rb_str_cat2.
------------------------------------------------------------------------
r58305 | svn | 2017-04-11 00:26:50 +0900 (Tue, 11 Apr 2017) | 1 line

* 2017-04-11
------------------------------------------------------------------------
r58304 | nobu | 2017-04-11 00:26:49 +0900 (Tue, 11 Apr 2017) | 9 lines

Make .gemspec slimmer.

This is the same code that RubyGems are using:

https://github.com/rubygems/rubygems/commit/a1a5ab55cb1501cbfeee29131a56cfa2e763174f

[ci skip]
[Fix GH-1578]
Author:    V?t Ondruch <vondruch@redhat.com>
------------------------------------------------------------------------
r58303 | nobu | 2017-04-11 00:26:48 +0900 (Tue, 11 Apr 2017) | 7 lines

extension.rdoc: fix rb_enc_str_new_literal

* doc/extension.rdoc: Add missing enc arg to rb_enc_str_new_literal.

[ci skip]
[Fix GH-1577]
Author:    Dylan Thacker-Smith <Dylan.Smith@shopify.com>
------------------------------------------------------------------------
r58302 | nobu | 2017-04-10 22:35:39 +0900 (Mon, 10 Apr 2017) | 1 line

svn:ignore: ignore ruby-runner
------------------------------------------------------------------------
r58301 | usa | 2017-04-10 22:30:28 +0900 (Mon, 10 Apr 2017) | 2 lines

svn:ignore: fix handling exts.mk.

------------------------------------------------------------------------
r58300 | usa | 2017-04-10 22:18:03 +0900 (Mon, 10 Apr 2017) | 2 lines

svn:ignore

------------------------------------------------------------------------
r58299 | nobu | 2017-04-10 11:13:52 +0900 (Mon, 10 Apr 2017) | 4 lines

Makefile.sub: fix HAVE_GIT

* win32/Makefile.sub (HAVE_GIT): fix missing `do`, excape `$`, and
  fix a typo.
------------------------------------------------------------------------
r58298 | nobu | 2017-04-10 10:46:24 +0900 (Mon, 10 Apr 2017) | 3 lines

configure.in: detect baseruby by default

* configure.in: default HAVE_BASERUBY to yes, for auto detection.
------------------------------------------------------------------------
r58297 | nobu | 2017-04-10 10:22:50 +0900 (Mon, 10 Apr 2017) | 4 lines

vcs.rb: remove git stuff

* tool/vcs.rb (VCS::GIT#after_export): remove git stuff not to
  distribute.  [ruby-core:80629] [Feature #13415]
------------------------------------------------------------------------
r58296 | nobu | 2017-04-10 10:22:49 +0900 (Mon, 10 Apr 2017) | 4 lines

Allow --without-baseruby option

* configure.in, win32/configure.bat: allow --without-baseruby
  option to use already generated files without baseruby.
------------------------------------------------------------------------
r58295 | nobu | 2017-04-10 10:22:48 +0900 (Mon, 10 Apr 2017) | 4 lines

Add --with-git option

* configure.in, win32/configure.bat: add --with-git option to
  tell git command to use, or not to use git.
------------------------------------------------------------------------
r58294 | svn | 2017-04-10 01:19:39 +0900 (Mon, 10 Apr 2017) | 1 line

* 2017-04-10
------------------------------------------------------------------------
r58293 | usa | 2017-04-10 01:19:37 +0900 (Mon, 10 Apr 2017) | 6 lines

Get rid of inifinity retry loop in Socket.udp_server_sockets

* ext/socket/lib/socket.rb (Socket.udp_server_sockets): remove duplicated
  addresses before passing it to ip_sockets_port0 because it causes
  Errno::EADDRINUSE and retry forever.

------------------------------------------------------------------------
r58291 | stomar | 2017-04-09 22:30:31 +0900 (Sun, 09 Apr 2017) | 4 lines

math.c: improve docs for Math.sqrt

* math.c: [DOC] mention possibly surprising behavior of Math.sqrt
  due to floating point arithmetic; also refer to BigDecimal#sqrt.
------------------------------------------------------------------------
r58290 | stomar | 2017-04-09 22:28:11 +0900 (Sun, 09 Apr 2017) | 4 lines

numeric.c: improve docs for Float

* numeric.c: [DOC] mention possibly surprising behavior of
  Float#{floor,ceil,to_i,truncate} due to floating point arithmetic.
------------------------------------------------------------------------
r58288 | kazu | 2017-04-09 20:53:53 +0900 (Sun, 09 Apr 2017) | 5 lines

io.c: ARGF.file returns $stdin instead of STDIN [ci skip]

For example:
`ruby -e '$stdin=open(IO::NULL);p [STDIN,$stdin,ARGF.file]'`
prints `[#<IO:<STDIN>>, #<File:/dev/null>, #<File:/dev/null>]`
------------------------------------------------------------------------
r58287 | nobu | 2017-04-09 20:44:01 +0900 (Sun, 09 Apr 2017) | 4 lines

configure.in: rpath with OPTDIR

* configure.in: add rpath flags which is needed for OPTDIR as well
  as -L options, when it is given.  [ruby-dev:50065] [Bug #13411]
------------------------------------------------------------------------
r58286 | nobu | 2017-04-09 14:09:44 +0900 (Sun, 09 Apr 2017) | 5 lines

thread.c: refine stream closed message

* thread.c (Init_Thread): [EXPERIMENTAL] refine the "stream
  closed" special exception message, by explicating that it is
  caused by threading.  [ruby-core:80583] [Bug #13405]
------------------------------------------------------------------------
r58285 | nobu | 2017-04-09 13:01:07 +0900 (Sun, 09 Apr 2017) | 4 lines

special exception messages are static

* vm_core.h (rb_vm_register_special_exception): make the contents
  of special exception messages static.
------------------------------------------------------------------------
r58284 | nobu | 2017-04-09 11:34:49 +0900 (Sun, 09 Apr 2017) | 5 lines

vm_core.h: ruby_error_stream_closed

* vm_core.h (ruby_special_exceptions): renamed
  ruby_error_closed_stream as ruby_error_stream_closed, like the
  message.
------------------------------------------------------------------------
r58283 | nobu | 2017-04-09 11:06:45 +0900 (Sun, 09 Apr 2017) | 4 lines

no mark of u3 in NODE_BLOCK_PASS

* node.c (rb_gc_mark_node): u3 in NODE_BLOCK_PASS is not used and
  does not need to be marked.
------------------------------------------------------------------------
r58282 | nobu | 2017-04-09 10:23:02 +0900 (Sun, 09 Apr 2017) | 5 lines

default.mspec: defer job tokens

* spec/default.mspec (MSpecScript::JobServer#cores): defer getting
  job tokens until required.  when running only one spec file,
  `-j` option has no effect.
------------------------------------------------------------------------
r58281 | svn | 2017-04-09 10:23:02 +0900 (Sun, 09 Apr 2017) | 1 line

* 2017-04-09
------------------------------------------------------------------------
r58280 | nobu | 2017-04-09 10:23:01 +0900 (Sun, 09 Apr 2017) | 4 lines

test/unit.rb: no jobserver in workers

* test/lib/test/unit.rb (Test::Unit::Parallel#process_args):
  worker processes do not access job server.
------------------------------------------------------------------------
r58279 | nobu | 2017-04-08 16:29:55 +0900 (Sat, 08 Apr 2017) | 4 lines

Show logs after PR merger

* .travis.yml (before_script): show logs of merged pull requests
  to rubyspec.
------------------------------------------------------------------------
r58278 | nobu | 2017-04-08 16:29:54 +0900 (Sat, 08 Apr 2017) | 5 lines

Split commands

* .travis.yml (before_script): split commands to prepare variables
  for pull request URLs to rubyspec, to stop when each commands
  failed.
------------------------------------------------------------------------
r58277 | nobu | 2017-04-08 12:25:50 +0900 (Sat, 08 Apr 2017) | 4 lines

basicsocket.c: proper system call name

* ext/socket/basicsocket.c (rsock_bsock_send): show proper system
  call name in the exception message.
------------------------------------------------------------------------
r58276 | suke | 2017-04-08 11:37:03 +0900 (Sat, 08 Apr 2017) | 2 lines

ext/win32ole/win32ole_variant.c (ole_val2variant_err): use FIXNUM_P, RB_TYPE_P

------------------------------------------------------------------------
r58275 | svn | 2017-04-08 01:08:50 +0900 (Sat, 08 Apr 2017) | 1 line

* 2017-04-08
------------------------------------------------------------------------
r58274 | nobu | 2017-04-08 01:08:49 +0900 (Sat, 08 Apr 2017) | 4 lines

.travis.yml: split long command [ci skip]

* .travis.yml (before_script): split long command to merge pull
  requests to rubyspec from github.
------------------------------------------------------------------------
r58273 | nobu | 2017-04-07 23:00:22 +0900 (Fri, 07 Apr 2017) | 5 lines

.travis.yml: multiple rubyspec PRs [ci skip]

* .travis.yml (before_script): merge multiple pull requests
  rubyspec to from github.  pull request numbers are given by
  RUBYSPEC_PULL_REQUEST, as a comma or space separated list.
------------------------------------------------------------------------
r58272 | nobu | 2017-04-07 22:26:12 +0900 (Fri, 07 Apr 2017) | 1 line

use dedicated assertions
------------------------------------------------------------------------
r58271 | nobu | 2017-04-07 22:26:12 +0900 (Fri, 07 Apr 2017) | 1 line

Use \A and \z to match whole string
------------------------------------------------------------------------
r58270 | usa | 2017-04-07 21:56:35 +0900 (Fri, 07 Apr 2017) | 4 lines

Classify extlibs tool

* tool/extlibs.rb (ExtLibs): classify the tool to make it able to reuse it.

------------------------------------------------------------------------
r58269 | ko1 | 2017-04-07 16:50:30 +0900 (Fri, 07 Apr 2017) | 2 lines

insert assertions for THROW_DATA_* macros.

------------------------------------------------------------------------
r58268 | ko1 | 2017-04-07 15:41:32 +0900 (Fri, 07 Apr 2017) | 5 lines

introduce imemo_type_p(v, imemo_type)

* internal.h: introduce imemo_type_p() which checks the given value is
  T_IMEMO and imemo_type() == given imemo_type.

------------------------------------------------------------------------
r58267 | nobu | 2017-04-07 13:00:56 +0900 (Fri, 07 Apr 2017) | 4 lines

fix condition of assert_not_respond_to

* test/lib/test/unit/assertions.rb (assert_not_respond_to): fix
  condition to assert.
------------------------------------------------------------------------
r58266 | nobu | 2017-04-07 12:56:16 +0900 (Fri, 07 Apr 2017) | 4 lines

assert_not_respond_to private method

* test/lib/test/unit/assertions.rb (assert_not_respond_to): allow
  private flag as well as assert_respond_to.
------------------------------------------------------------------------
r58265 | svn | 2017-04-07 12:56:16 +0900 (Fri, 07 Apr 2017) | 1 line

* 2017-04-07
------------------------------------------------------------------------
r58264 | nobu | 2017-04-07 12:56:15 +0900 (Fri, 07 Apr 2017) | 4 lines

assert_respond_to non-private method

* test/lib/test/unit/assertions.rb (assert_respond_to): do not
  call super class assert_respond_to when false priv is given.
------------------------------------------------------------------------
r58263 | nobu | 2017-04-06 13:42:41 +0900 (Thu, 06 Apr 2017) | 4 lines

internal.h: parenthesize macro argument

* internal.h (THROW_DATA_P): parenthesize the argument which is
  casted.
------------------------------------------------------------------------
r58262 | ko1 | 2017-04-06 11:56:23 +0900 (Thu, 06 Apr 2017) | 15 lines

fix TracePoint#return_value with non-local exits

* vm.c: get return_value from imemo_throw_data object (THROW_DATA_VAL()).
  imemo_throw_data (TAG_BREAK) contains returned value.
  However, imemo_throw_data (TAG_BREAK) can skip several frames so that
  we need to use it only once (at most internal frame). To record it,
  we introduced THROW_DATA_CONSUMED and check it.

* internal.h: define THROW_DATA_CONSUMED flag.

* test/ruby/test_settracefunc.rb: add tests for [Bug #13369]

* vm_insnhelper.h: add THROW_DATA_CONSUMED_P() and
  THROW_DATA_CONSUMED_SET().

------------------------------------------------------------------------
r58261 | nobu | 2017-04-06 11:33:40 +0900 (Thu, 06 Apr 2017) | 1 line

Freeze RbConfig::SIZEOF and RbConfig::LIMITS
------------------------------------------------------------------------
r58260 | nobu | 2017-04-06 11:10:40 +0900 (Thu, 06 Apr 2017) | 5 lines

Rename RbConfig::Limits as RbConfig::LIMITS

* template/limits.c.tmpl (Init_limits): rename RbConfig::Limits as
  RbConfig::LIMITS, constants other than class or module are all
  uppercase with underscores by convention.
------------------------------------------------------------------------
r58259 | hsbt | 2017-04-06 10:47:45 +0900 (Thu, 06 Apr 2017) | 1 line

Update library entry for stringio and fiddle.
------------------------------------------------------------------------
r58258 | svn | 2017-04-06 09:14:58 +0900 (Thu, 06 Apr 2017) | 1 line

* 2017-04-06
------------------------------------------------------------------------
r58257 | kazu | 2017-04-06 09:14:57 +0900 (Thu, 06 Apr 2017) | 3 lines

NEWS: mention Array#append and Array#prepend

[Feature #12746] [ci skip]
------------------------------------------------------------------------
r58256 | hsbt | 2017-04-05 22:16:32 +0900 (Wed, 05 Apr 2017) | 5 lines

Import psych-3.0.0.beta1 from ruby/psych.

  * Removed deprecated code.
  * Removed code related syck gem.
  * Fixed typos.
------------------------------------------------------------------------
r58255 | hsbt | 2017-04-05 20:04:25 +0900 (Wed, 05 Apr 2017) | 3 lines

Added initial gemspec for ruby/fiddle.

  [Feature #13403][ruby-core:80577]
------------------------------------------------------------------------
r58254 | shyouhei | 2017-04-05 17:52:31 +0900 (Wed, 05 Apr 2017) | 8 lines

fix --with-gmp (broken by r57490)

Looking at the generated shell script (also the autoconf manual), it
seems AC_SEARCH_LIBS() m4 macro does not define HAVE_LIBsomething C
preprocessor macros, unlike AC_CHECK_LIB() which does define them.
This previous change effectively killed building with GMP because
building that mode depends on existence of HAVE_LIBGMP. [Bug #13402]

------------------------------------------------------------------------
r58253 | nobu | 2017-04-05 17:34:18 +0900 (Wed, 05 Apr 2017) | 5 lines

compile.c: remove side effects by debug macros

* compile.c (debugp_param): do not evaluate arguments of debug
  macros, unless the debug mode is enabled.  these macros should
  not have side effects.
------------------------------------------------------------------------
r58252 | nobu | 2017-04-05 16:07:51 +0900 (Wed, 05 Apr 2017) | 3 lines

configure.in: HAVE_MALLOC_CONF

* configure.in: define HAVE_MALLOC_CONF when using jemalloc.
------------------------------------------------------------------------
r58251 | nobu | 2017-04-05 10:36:21 +0900 (Wed, 05 Apr 2017) | 4 lines

default.mspec: job server

* spec/default.mspec: override MSpecScript#cores by the tokens
  from the parent make job server.
------------------------------------------------------------------------
r58250 | nobu | 2017-04-05 09:12:43 +0900 (Wed, 05 Apr 2017) | 3 lines

parse.y: ID for logop

* parse.y (logop): use ID instead of token values.
------------------------------------------------------------------------
r58249 | svn | 2017-04-05 08:42:01 +0900 (Wed, 05 Apr 2017) | 1 line

* 2017-04-05
------------------------------------------------------------------------
r58248 | nobu | 2017-04-05 08:42:00 +0900 (Wed, 05 Apr 2017) | 4 lines

parse.y: use idGE for tGEQ

* parse.y (arg): use ID directly for '>=' operator, without
  TOKEN2ID macro.
------------------------------------------------------------------------
r58247 | nobu | 2017-04-04 23:19:04 +0900 (Tue, 04 Apr 2017) | 4 lines

parse.y: share with ripper

* parse.y (rb_parser_trace_lex_state, rb_parser_show_bitstack):
  share with ripper.
------------------------------------------------------------------------
r58246 | nobu | 2017-04-04 23:13:46 +0900 (Tue, 04 Apr 2017) | 4 lines

parse.y: flush debug buffer

* parse.y (rb_parser_trace_lex_state, rb_parser_show_bitstack):
  flush debug buffer before traces of lex_state and bitstack.
------------------------------------------------------------------------
r58245 | akr | 2017-04-04 21:54:42 +0900 (Tue, 04 Apr 2017) | 2 lines

Refactored using Method#owner.

------------------------------------------------------------------------
r58244 | stomar | 2017-04-04 04:23:13 +0900 (Tue, 04 Apr 2017) | 5 lines

improve docs for #truncate, #floor, and #ceil methods

* numeric.c: [DOC] improve and harmonize documentation
  for {Float,Integer,Numeric}#{truncate,floor,ceil}.
* rational.c: [DOC] ditto for Rational#{truncate,floor,ceil}.
------------------------------------------------------------------------
r58243 | svn | 2017-04-04 04:19:21 +0900 (Tue, 04 Apr 2017) | 1 line

* 2017-04-04
------------------------------------------------------------------------
r58242 | stomar | 2017-04-04 04:19:20 +0900 (Tue, 04 Apr 2017) | 5 lines

improve docs for #round methods

* numeric.c: [DOC] improve and harmonize documentation
  for {Float,Integer,Numeric}#round.
* rational.c: [DOC] ditto for Rational#round.
------------------------------------------------------------------------
r58241 | kazu | 2017-04-03 21:30:04 +0900 (Mon, 03 Apr 2017) | 1 line

Fix arguments order of IO#pwrite
------------------------------------------------------------------------
r58240 | nobu | 2017-04-03 09:10:50 +0900 (Mon, 03 Apr 2017) | 14 lines

Add IO#pread and IO#pwrite methods

These methods are useful for safe/concurrent file I/O in
multi-thread/process environments and also fairly standard
nowadays especially in systems supporting pthreads.

Based on patches by Avseyev <sergey.avseyev@gmail.com> at
[ruby-core:79290].  [Feature #4532]

* configure.in: check for pwrite(2).  pread() is already used
  internally for IO.copy_stream.

* io.c: implement wrappers for pread(2) and pwrite(2) and expose
  them in IO.
------------------------------------------------------------------------
r58239 | svn | 2017-04-03 05:16:02 +0900 (Mon, 03 Apr 2017) | 1 line

* 2017-04-03
------------------------------------------------------------------------
r58238 | normal | 2017-04-03 05:16:02 +0900 (Mon, 03 Apr 2017) | 9 lines

compile.c: avoid duplicate mark entry for string literal Range

iseq_add_mark_object is called in iseq_set_sequence later on,
so we only need to call iseq_add_mark_object_compile_time
in iseq_peephole_optimize.  Without this change, there would've
been a duplicate entry in the long-lived iseq mark_ary.

* compile.c (iseq_peephole_optimize): avoid duplicate mark object entry
  [ruby-core:80536] [Feature #13355]
------------------------------------------------------------------------
r58237 | nobu | 2017-04-02 12:05:10 +0900 (Sun, 02 Apr 2017) | 1 line

update configure by prereq [ci skip]
------------------------------------------------------------------------
r58236 | normal | 2017-04-02 10:14:14 +0900 (Sun, 02 Apr 2017) | 8 lines

thread.c: comments on M:N threading [ci skip]

I may experiment with M:N threading in coming months.  Often I
find myself yearning for the old 1.8 days when spawning threads
was really cheap for network operations.  But I also like to use
native blocking recv_io and accept calls for round-robin load
distribution and accessing files on systems with dozens of slow
rotational disks.
------------------------------------------------------------------------
r58235 | nobu | 2017-04-02 07:48:01 +0900 (Sun, 02 Apr 2017) | 4 lines

rational.c: improves Rational#round rdoc [ci skip]

* rational.c (nurat_round_n): [DOC] improves Integer#round
  documentation as well as Float#round.
------------------------------------------------------------------------
r58234 | normal | 2017-04-02 07:18:25 +0900 (Sun, 02 Apr 2017) | 5 lines

test/ruby/test_optimization.rb: quiet warnings

This quiets an old "assigned but unused variable" warning left
over after r56653 as well as two new "ambiguous first argment"
warnings introduced in r58233.
------------------------------------------------------------------------
r58233 | normal | 2017-04-02 06:38:25 +0900 (Sun, 02 Apr 2017) | 16 lines

compile.c: optimize literal String range in case/when dispatch

This is similar in spirit to opt_case_dispatch as the literal
Range here is guaranteed to be immutable when used for
checkmatch.

Normal range literals with non-frozen strings are actually
mutable, as Range#begin and Range#end exposes the strings to
modification.  So those Range objects cannot be frozen without
breaking compatibility, but Ranges in case/when dispatch can be
frozen at compile time.

* compile.c (iseq_peephole_optimize): persistent Range creation
  when String literals are used as beginning and end of range
  when used for case/when dispatch.
  [ruby-core:80290] [Feature #13355]
------------------------------------------------------------------------
r58232 | stomar | 2017-04-02 05:43:35 +0900 (Sun, 02 Apr 2017) | 1 line

doc/contributors.rdoc: [DOC] update
------------------------------------------------------------------------
r58231 | svn | 2017-04-02 05:20:00 +0900 (Sun, 02 Apr 2017) | 1 line

* 2017-04-02
------------------------------------------------------------------------
r58230 | stomar | 2017-04-02 05:19:59 +0900 (Sun, 02 Apr 2017) | 11 lines

rational.c: improve docs

* rational.c: [DOC] improve docs for Rational and related methods
  * improve class documentation for Rational
  * fix call-seq's
  * simplify examples for Rational#{floor,ceil,truncate,round}
  * fix wrong examples for #floor, subtraction, and exponentiation
  * improve docs for #<=>, Kernel#Rational, {String,Float}#to_r,
    Integer.{gcd,lcm,gcdlcm}
  * fix typos, grammar, and rdoc formatting
  * other improvements
------------------------------------------------------------------------
r58229 | eregon | 2017-04-01 19:30:48 +0900 (Sat, 01 Apr 2017) | 6 lines

ostruct.rb: improve fix for OpenStruct.allocate + #respond_to?

* lib/ostruct.rb (OpenStruct#respond_to_missing?): this makes
  OpenStruct#respond_to? works on any OpenStruct instance,
  just like Kernel#respond_to? does, without workarounds.
  [ruby-core:80292] [Bug #13358]
------------------------------------------------------------------------
r58228 | svn | 2017-04-01 16:38:13 +0900 (Sat, 01 Apr 2017) | 1 line

* 2017-04-01
------------------------------------------------------------------------
r58227 | nobu | 2017-04-01 16:38:12 +0900 (Sat, 01 Apr 2017) | 6 lines

array.c: Array#append and Array#prepend

* array.c (Init_Array): Add alias "append" to Array#push, and
  "prepend" to Array#unshift.  [Feature #12746] [Fix GH-1574]

Author:    pascbjumper2 <stowers.joshua@live.com>
------------------------------------------------------------------------
r58226 | nobu | 2017-03-31 16:34:47 +0900 (Fri, 31 Mar 2017) | 3 lines

exts.mk.tmpl: note footer [ci skip]

* template/exts.mk.tmpl: place note footer message at the end.
------------------------------------------------------------------------
r58225 | nobu | 2017-03-31 16:34:46 +0900 (Fri, 31 Mar 2017) | 3 lines

debug.c: check codepage value [ci skip]

* debug.c (set_debug_option): check garbage and overflow.
------------------------------------------------------------------------
r58224 | nobu | 2017-03-31 09:35:02 +0900 (Fri, 31 Mar 2017) | 7 lines

RUBY_DEBUG codepage option [ci skip]

* debug.c (set_debug_option): add "codepage" option to force
  locale charmap on Windows.

* localeinit.c (locale_charmap): use the codepage by debug env if
  given.
------------------------------------------------------------------------
r58223 | nobu | 2017-03-31 09:35:01 +0900 (Fri, 31 Mar 2017) | 4 lines

setup.mak: ENABLE_DEBUG_ENV [ci skip]

* win32/setup.mak (-basic-vars-): pass ENABLE_DEBUG_ENV to
  Makefile.
------------------------------------------------------------------------
r58222 | svn | 2017-03-31 00:20:52 +0900 (Fri, 31 Mar 2017) | 1 line

* 2017-03-31
------------------------------------------------------------------------
r58221 | nobu | 2017-03-31 00:20:52 +0900 (Fri, 31 Mar 2017) | 5 lines

localeinit.c: locale_charmap return value

* localeinit.c (locale_charmap): fix the return value to call conv
  function instead of encoding index on platforms where locale
  information is not available.
------------------------------------------------------------------------
r58220 | nobu | 2017-03-30 16:25:13 +0900 (Thu, 30 Mar 2017) | 1 line

.travis.yml: make tests silent [ci skip]
------------------------------------------------------------------------
r58219 | nobu | 2017-03-30 16:16:20 +0900 (Thu, 30 Mar 2017) | 1 line

.travis.yml: checkout ruby/spec PR
------------------------------------------------------------------------
r58218 | nobu | 2017-03-30 16:04:14 +0900 (Thu, 30 Mar 2017) | 4 lines

git-refresh: rewrite options

* tool/git-refresh: parse options without git-rev-parse, which is
  old on travis.
------------------------------------------------------------------------
r58217 | nobu | 2017-03-30 15:44:27 +0900 (Thu, 30 Mar 2017) | 5 lines

tool/git-refresh

* tool/git-refresh: tool to clone or update git working directory.

* Makefile.in: use git-refresh.
------------------------------------------------------------------------
r58216 | svn | 2017-03-30 04:12:02 +0900 (Thu, 30 Mar 2017) | 1 line

* 2017-03-30
------------------------------------------------------------------------
r58215 | stomar | 2017-03-30 04:12:01 +0900 (Thu, 30 Mar 2017) | 4 lines

methods.rdoc: small improvements

* doc/syntax/methods.rdoc: [DOC] small improvements: fix some typos,
  grammar, punctuation, consistently use capitalized "Ruby".
------------------------------------------------------------------------
r58212 | mame | 2017-03-29 20:49:39 +0900 (Wed, 29 Mar 2017) | 3 lines

Fix two typos

My typo checker :-) found the bugs.
------------------------------------------------------------------------
r58211 | sorah | 2017-03-29 20:33:59 +0900 (Wed, 29 Mar 2017) | 5 lines

string.c: Supress logical-op-parentheses warning

* string.c(rb_str_upcase_bang): Supress logical-op-parentheses warning
  Patch by Fukuo Kadota <fukuo-kadota@cookpad.com>,
  Closes [GH-1570] [Bug #13387].
------------------------------------------------------------------------
r58210 | nobu | 2017-03-29 18:47:42 +0900 (Wed, 29 Mar 2017) | 4 lines

vsnprintf.c: prefix with precision

* vsnprintf.c (BSD_vfprintf): sign and hex-prefix should not be
  counted in precision.  [ruby-dev:47714] [Bug #8916]
------------------------------------------------------------------------
r58209 | nobu | 2017-03-29 18:47:40 +0900 (Wed, 29 Mar 2017) | 4 lines

test_minitest_unit.rb: assert_triggered

* test/minitest/test_minitest_unit.rb (assert_triggered): rename
  to be hidden in backtraces.
------------------------------------------------------------------------
r58208 | sorah | 2017-03-29 18:31:13 +0900 (Wed, 29 Mar 2017) | 5 lines

Add documents on Process::CLOCK_* constants

* process.c: Add documents on Process::CLOCK_* constants.
  Patch by Sunao Komuro <sunao-komuro@cookpad.com>.
  Closes [GH-1567] [Bug #13386]
------------------------------------------------------------------------
r58207 | sorah | 2017-03-29 18:24:10 +0900 (Wed, 29 Mar 2017) | 8 lines

Fix `make clean` errors

Patch by Kohei Suzuki <eagletmt@gmail.com>.

* common.mk(clean-rubyspec): Supress error messages when rubyspec files
  don't exist. [GH-1563] [Bug #13384]

* Makefile.in: Fix error when files don't exist. [GH-1563] [Bug #13384]
------------------------------------------------------------------------
r58206 | nobu | 2017-03-29 14:54:14 +0900 (Wed, 29 Mar 2017) | 4 lines

parse.y: dot_or_colon

* parse.y (dot_or_colon): use the default action without type
  casts.
------------------------------------------------------------------------
r58205 | sorah | 2017-03-29 13:32:00 +0900 (Wed, 29 Mar 2017) | 9 lines

Remove unused Init_frozen_strings declaration

Init_frozen_strings definition is removed in r51511.
https://bugs.ruby-lang.org/issues/11423

Patch by Kohei Suzuki <eagletmt@gmail.com>

* internal.h: Remove declaration of unexist function
  [Fix GH-1558]
------------------------------------------------------------------------
r58204 | nobu | 2017-03-29 12:00:50 +0900 (Wed, 29 Mar 2017) | 1 line

test_symbol.rb: switch to assert_not_equal
------------------------------------------------------------------------
r58201 | svn | 2017-03-29 02:14:50 +0900 (Wed, 29 Mar 2017) | 1 line

* 2017-03-29
------------------------------------------------------------------------
r58200 | normal | 2017-03-29 02:14:49 +0900 (Wed, 29 Mar 2017) | 8 lines

test/ruby/test_symbol.rb: new test for nondeterminism

We need to ensure hashes for static symbols remain
non-deterministic to avoid DoS attacks.   This is currently the
case since 2.4+, but was not for the 2.3 series.

* test/ruby/test_symbol.rb (test_hash_nondeterministic): new test
  [ruby-core:80430] [Bug #13376]
------------------------------------------------------------------------
r58198 | kazu | 2017-03-28 22:47:45 +0900 (Tue, 28 Mar 2017) | 1 line

fix a typo [ci skip]
------------------------------------------------------------------------
r58197 | kazu | 2017-03-28 22:47:43 +0900 (Tue, 28 Mar 2017) | 1 line

Update assertion message [ci skip]
------------------------------------------------------------------------
r58195 | nobu | 2017-03-28 18:21:58 +0900 (Tue, 28 Mar 2017) | 4 lines

ostruct.rb: refine visibility failure message

* lib/ostruct.rb (method_missing): raise an exception with proper
  visibility message.
------------------------------------------------------------------------
r58192 | nobu | 2017-03-28 11:30:14 +0900 (Tue, 28 Mar 2017) | 4 lines

numeric.c: improves Integer#round rdoc [ci skip]

* numeric.c (int_round): [DOC] improves Integer#round documentation
  as well as Float#round.
------------------------------------------------------------------------
r58191 | svn | 2017-03-28 11:15:52 +0900 (Tue, 28 Mar 2017) | 1 line

* 2017-03-28
------------------------------------------------------------------------
r58190 | nobu | 2017-03-28 11:15:51 +0900 (Tue, 28 Mar 2017) | 6 lines

numeric.c: improves Float#round rdoc [ci skip]

* numeric.c (flo_round): [DOC] improves Float#round documentation
  to better highlight the half keyword.  [Fix GH-1541]

Author:    Evan Brodie <brodie.evan@gmail.com>
------------------------------------------------------------------------
r58156 | nobu | 2017-03-27 23:57:08 +0900 (Mon, 27 Mar 2017) | 10 lines

dir.c: err at glob failure

* dir.c (glob_helper): raise a SystemCallError exception when
  opendir() failed, except for ENOENT, ENOTDIR, and EACCES.  this
  behavior predates 1.0; the comments in glob.c claimed that
  glob() returned -1 on error but actualy the pointer to a global
  variable, then dir_glob() did check only -1 as the comments, and
  ignored actual errors.  [ruby-core:80226] [Bug #13276]

dir.c: ruby_glob_funcs_t
------------------------------------------------------------------------
r58150 | nobu | 2017-03-27 22:15:48 +0900 (Mon, 27 Mar 2017) | 6 lines

error.c: warning functions

* error.c: define warning functions in all combinations of
  * no errno, system errno, argument
  * without/with encoding
  * enabled/disabled by default
------------------------------------------------------------------------
r58146 | nobu | 2017-03-27 19:44:32 +0900 (Mon, 27 Mar 2017) | 7 lines

error.c: refactor warning messages

* error.c (with_warning_string): extract building warning message
  string from variadic arguments.

* error.c (syserr_warning): write warning message with the system
  error message.
------------------------------------------------------------------------
r58145 | svn | 2017-03-27 15:12:38 +0900 (Mon, 27 Mar 2017) | 1 line

* 2017-03-27
------------------------------------------------------------------------
r58144 | normal | 2017-03-27 15:12:37 +0900 (Mon, 27 Mar 2017) | 14 lines

fix redefinition optimization for -"literal string" (UMinus)

Unfortunately this enlarges insns.def by yet another
instruction.  However, it is much prettier than opt_str_freeze
in use, and maybe we can avoid having so many instructions in
the future.

[ruby-core:80368]

* insns.def (DEFINE_INSN): new instruction: opt_str_uminus (maybe temporary)
* compile.c (iseq_compile_each0): split instructions
* test/ruby/test_optimization.rb (test_string_uminus): new test
* vm.c (vm_init_redefined_flag): set redefinintion flag for uminus
* vm_core.h (enum ruby_basic_operators): add BOP_UMINUS
------------------------------------------------------------------------
r58142 | normal | 2017-03-26 19:21:45 +0900 (Sun, 26 Mar 2017) | 3 lines

NEWS: feature number for String#-@ compile-time optimization

[ruby-core:79971] [Feature #13295]
------------------------------------------------------------------------
r58138 | nobu | 2017-03-26 16:13:43 +0900 (Sun, 26 Mar 2017) | 5 lines

parse.y: unterminated content token

* parse.y (parser_parse_string): defer the end token to next
  reading, to yield tSTRING_CONTENT with the unterminated content.
  [Bug #13363]
------------------------------------------------------------------------
r58136 | nobu | 2017-03-26 10:21:57 +0900 (Sun, 26 Mar 2017) | 3 lines

gmake.mk: multi mspec

* defs/gmake.mk (MSPECOPT): enable multi exec if parallel make.
------------------------------------------------------------------------
r58135 | nobu | 2017-03-26 09:50:59 +0900 (Sun, 26 Mar 2017) | 3 lines

common.mk: test-rubyspec

* common.mk (yes-test-rubyspec): make jobserver ready.
------------------------------------------------------------------------
r58134 | svn | 2017-03-26 05:35:52 +0900 (Sun, 26 Mar 2017) | 1 line

* 2017-03-26
------------------------------------------------------------------------
r58133 | svn | 2017-03-26 05:35:52 +0900 (Sun, 26 Mar 2017) | 1 line

* properties.
------------------------------------------------------------------------
r58132 | usa | 2017-03-26 05:35:51 +0900 (Sun, 26 Mar 2017) | 4 lines

Add a tool for backporters.

* tool/generate-backport-changelog.rb: Generate ChangeLog entries from svn log.

------------------------------------------------------------------------
r58084 | nobu | 2017-03-25 16:46:12 +0900 (Sat, 25 Mar 2017) | 4 lines

configure.in: syscall is deprecated on macOS

* configure.in: syscall is no longer supported on macOS since
  10.12.  [ruby-core:80300] [Bug #13361]
------------------------------------------------------------------------
r58083 | nobu | 2017-03-25 12:23:43 +0900 (Sat, 25 Mar 2017) | 5 lines

class.c: prohibit refinement module

* class.c (ensure_includable): cannot include refinement
  module, or the type and the class do not match.
  [ruby-core:79632] [Bug #13236]
------------------------------------------------------------------------
r58082 | nobu | 2017-03-25 11:57:30 +0900 (Sat, 25 Mar 2017) | 4 lines

class.c: ensure_includable

* class.c (ensure_includable): extract checks to include and
  prepend.
------------------------------------------------------------------------
r58081 | svn | 2017-03-25 10:07:36 +0900 (Sat, 25 Mar 2017) | 1 line

* 2017-03-25
------------------------------------------------------------------------
r58080 | nobu | 2017-03-25 10:07:35 +0900 (Sat, 25 Mar 2017) | 5 lines

keep line number after unterminated string literal

* parse.y (parser_parse_string): keep line number even after an
  unterminated string literal.  it does not matter in the parser,
  ripper needs this value after this error.
------------------------------------------------------------------------
r58078 | naruse | 2017-03-24 23:05:50 +0900 (Fri, 24 Mar 2017) | 1 line

export_changelog must specify the branch's url
------------------------------------------------------------------------
r58077 | nobu | 2017-03-24 21:16:54 +0900 (Fri, 24 Mar 2017) | 5 lines

ostruct.rb: fix OpenStruct.allocate

* lib/ostruct.rb (OpenStruct.allocate): initialize an instance
  variable directly, without calling `intialize` method which may
  be overridden in a subclass.  [ruby-core:80292] [Bug #13358]
------------------------------------------------------------------------
r58076 | normal | 2017-03-24 16:29:33 +0900 (Fri, 24 Mar 2017) | 5 lines

logger: remove redundant opt_str_freeze use

Strings in "when" statements are allocation-free, so there's
never any reason to uglify the code to use opt_str_freeze over
the normal putobject instructions, here.
------------------------------------------------------------------------
r58075 | nobu | 2017-03-24 13:37:28 +0900 (Fri, 24 Mar 2017) | 4 lines

Do not update Unicode headers

* common.mk (name2ctype.h, casefold.h): use as checked out unless
  ALWAYS_UPDATE_UNICODE=yes.
------------------------------------------------------------------------
r58074 | nobu | 2017-03-24 12:42:28 +0900 (Fri, 24 Mar 2017) | 4 lines

Don't download from Unicode.org

* tool/make-snapshot: use checked out headers for Unicode, to get
  rid of downloading data files from Unicode.org.
------------------------------------------------------------------------
r58073 | nobu | 2017-03-24 11:44:21 +0900 (Fri, 24 Mar 2017) | 1 line

common.mk: touch-unicode-files
------------------------------------------------------------------------
r58072 | nobu | 2017-03-24 10:10:46 +0900 (Fri, 24 Mar 2017) | 1 line

Make Unicode data directory
------------------------------------------------------------------------
r58071 | nobu | 2017-03-24 08:55:29 +0900 (Fri, 24 Mar 2017) | 4 lines

Don't download from Unicode.org

* .travis.yml, appveyor.yml: use checked out headers for Unicode,
  to get rid of downloading data files from Unicode.org.
------------------------------------------------------------------------
r58070 | nobu | 2017-03-24 00:55:00 +0900 (Fri, 24 Mar 2017) | 4 lines

enc-unicode.rb: fix version matching

* tool/enc-unicode.rb (data_foreach): version comments do not
  include sub directory names.
------------------------------------------------------------------------
r58069 | nobu | 2017-03-24 00:49:10 +0900 (Fri, 24 Mar 2017) | 6 lines

fix GraphemeBreakProperty.txt

* tool/downloader.rb: download to the file given in ARGV.

* tool/enc-unicode.rb (parse_GraphemeBreakProperty): fix data file
  path as $(UNICODE_PROPERTY_FILES) in common.mk.
------------------------------------------------------------------------
r58068 | svn | 2017-03-24 00:47:27 +0900 (Fri, 24 Mar 2017) | 1 line

* 2017-03-24
------------------------------------------------------------------------
r58067 | nobu | 2017-03-24 00:47:26 +0900 (Fri, 24 Mar 2017) | 4 lines

common.mk: updating name2ctype.h

* common.mk (name2ctype.h): update if ALWAYS_UPDATE_UNICODE = yes,
  as well as casefold.h.
------------------------------------------------------------------------
r58066 | nobu | 2017-03-23 16:59:57 +0900 (Thu, 23 Mar 2017) | 4 lines

enc-unicode.rb: ifdef blocks

* tool/enc-unicode.rb (Unifdef#ifdef): enclose conditional blocks
  in blocks.
------------------------------------------------------------------------
r58065 | nobu | 2017-03-23 16:59:56 +0900 (Thu, 23 Mar 2017) | 1 line

enc-unicode.rb: uniname2ctype_offset
------------------------------------------------------------------------
r58064 | nobu | 2017-03-23 16:53:35 +0900 (Thu, 23 Mar 2017) | 4 lines

update name2ctype.h

* enc/unicode/9.0.0/name2ctype.h: update due to merger of Onigmo
  6.0.0.
------------------------------------------------------------------------
r58063 | svn | 2017-03-23 05:23:42 +0900 (Thu, 23 Mar 2017) | 1 line

* 2017-03-23
------------------------------------------------------------------------
r58062 | stomar | 2017-03-23 05:23:42 +0900 (Thu, 23 Mar 2017) | 3 lines

io.c: [DOC] expand docs for IO#puts

[ruby-core:80081] [Bug #13306]
------------------------------------------------------------------------
r58059 | nobu | 2017-03-22 23:06:57 +0900 (Wed, 22 Mar 2017) | 4 lines

stringio.gemspec: requires ruby 2.2

* ext/stringio/stringio.gemspec: bump up required ruby version to
  2.2, which exports rb_get_kwargs() first.
------------------------------------------------------------------------
r58057 | nobu | 2017-03-22 22:55:03 +0900 (Wed, 22 Mar 2017) | 4 lines

stringio.c: RB_INTEGER_TYPE_P

* ext/stringio/stringio.c (RB_INTEGER_TYPE_P): fallback definition
  for 2.3 or earlier.
------------------------------------------------------------------------
r58055 | kazu | 2017-03-22 21:27:53 +0900 (Wed, 22 Mar 2017) | 1 line

Use https URL instead of http URL
------------------------------------------------------------------------
r58054 | shyouhei | 2017-03-22 15:00:18 +0900 (Wed, 22 Mar 2017) | 11 lines

ruby tool/update-deps --fix

Onigumo 6 (r57045) introduced new onigumo.h header file, which is
required from quite much everywhere.  This commit adds necessary
dependencies.

Note: ruby/oniguruma.h now includes onigumo.h,
      ruby/io.h includes oniguruma.h,
      ruby/encoding.h also includes oniguruma.h,
      and internal.h includes encoding.h.

------------------------------------------------------------------------
r58050 | svn | 2017-03-22 10:58:17 +0900 (Wed, 22 Mar 2017) | 1 line

* 2017-03-22
------------------------------------------------------------------------
r58049 | nobu | 2017-03-22 10:58:17 +0900 (Wed, 22 Mar 2017) | 1 line

gemify stringio
------------------------------------------------------------------------
r58044 | nobu | 2017-03-21 17:03:49 +0900 (Tue, 21 Mar 2017) | 1 line

Download Unicode data by appveyor [ci skip]
------------------------------------------------------------------------
r58043 | nobu | 2017-03-21 16:19:23 +0900 (Tue, 21 Mar 2017) | 1 line

tool/downloader.rb: dryrun option [ci skip]
------------------------------------------------------------------------
r58042 | nobu | 2017-03-21 14:28:38 +0900 (Tue, 21 Mar 2017) | 6 lines

string.c: use the usable size

* string.c (rb_str_change_terminator_length): when called after
  the content has been copied, old terminator length no longer
  makes sense.  use the whole usable size instead of capacity
  without terminator.  [ruby-core:80257] [Bug #13339]
------------------------------------------------------------------------
r58041 | nobu | 2017-03-21 12:15:57 +0900 (Tue, 21 Mar 2017) | 4 lines

stringio.c: check range

* ext/stringio/stringio.c (strio_ungetc): raise RangeError instead
  of TypeError at too big value, as well as IO#ungetc.
------------------------------------------------------------------------
r58040 | nobu | 2017-03-21 12:15:56 +0900 (Tue, 21 Mar 2017) | 5 lines

stringio.c: check character code

* ext/stringio/stringio.c (strio_ungetc): check if the character
  code is valid in the encoding.  reported by Ahmad Sherif
  (ahmadsherif) at https://hackerone.com/reports/209593.
------------------------------------------------------------------------
r58039 | kazu | 2017-03-21 09:11:46 +0900 (Tue, 21 Mar 2017) | 4 lines

link to README.win32 instead of mentioning it in plain text

[Fix GH-1538][ci skip]
Author:    Rouan Wilsenach <Rouan.Wilsenach@tesglobal.com>
------------------------------------------------------------------------
r58038 | svn | 2017-03-21 05:30:26 +0900 (Tue, 21 Mar 2017) | 1 line

* 2017-03-21
------------------------------------------------------------------------
r58037 | stomar | 2017-03-21 05:30:25 +0900 (Tue, 21 Mar 2017) | 4 lines

docs for creating arrays

* array.c: [DOC] add example for Array.new with block and index.
  Reported by Don Cruickshank.  [ruby-core:68442] [Bug #10944]
------------------------------------------------------------------------
r58035 | hsbt | 2017-03-20 16:07:49 +0900 (Mon, 20 Mar 2017) | 3 lines

Added initial gemspec for mathn.

  [Feature #13335]
------------------------------------------------------------------------
r58034 | nobu | 2017-03-20 10:36:08 +0900 (Mon, 20 Mar 2017) | 3 lines

Avoid integer overflow in sprintf()

merged https://github.com/mruby/mruby/commit/ff03a9a61c62340cff62f8e0fdc1a1e8775b6f17
------------------------------------------------------------------------
r58033 | nobu | 2017-03-20 10:33:08 +0900 (Mon, 20 Mar 2017) | 4 lines

sprintf.c: string limits

* sprintf.c (ruby__sfvwrite): use long instead of size_t due to
  string limits.
------------------------------------------------------------------------
r58024 | svn | 2017-03-20 00:01:06 +0900 (Mon, 20 Mar 2017) | 1 line

* 2017-03-20
------------------------------------------------------------------------
r58023 | stomar | 2017-03-20 00:01:05 +0900 (Mon, 20 Mar 2017) | 7 lines

improve docs for URI::Generic

* lib/uri/generic.rb: [DOC] expand docs for URI::Generic#normalize
  to clarify what normalization means here.
  Reported by Robert Gleeson.  [ruby-core:58430] [Bug #9127]

* lib/uri/generic.rb: [DOC] fix indent for correct code block detection.
------------------------------------------------------------------------
r58021 | nobu | 2017-03-19 21:46:31 +0900 (Sun, 19 Mar 2017) | 4 lines

sprintf.c: use FILL

* sprintf.c (rb_str_format): use FILL and FILL_ macros instead of
  while loop.
------------------------------------------------------------------------
r58020 | stomar | 2017-03-19 18:51:29 +0900 (Sun, 19 Mar 2017) | 7 lines

date_core.c: fix error in DateTime docs

* ext/date/date_core.c: [DOC] fix format string for DateTime#rfc3339.
  Reported by Andreas Rayo Kniep.  [ruby-core:68418] [Bug #10936]

* ext/date/date_core.c: [DOC] ditto for DateTime#iso8601 and
  DateTime#xmlschema; other small improvements.
------------------------------------------------------------------------
r58019 | nobu | 2017-03-19 10:11:12 +0900 (Sun, 19 Mar 2017) | 9 lines

vm_args.c: arity check of lambda

* vm_eval.c (rb_yield_lambda): new function which yields an array
  to a proc and splat to a lambda.  mainly for Enumerable only.

* vm_args.c (setup_parameters_complex): remove special lambda
  splatting for [Bug #9605].  [ruby-core:77065] [Bug #12705]

* vm_insnhelper.c (vm_callee_setup_block_arg): ditto.
------------------------------------------------------------------------
r58018 | nobu | 2017-03-19 00:58:13 +0900 (Sun, 19 Mar 2017) | 1 line

test_lambda.rb: remove duplcate tests
------------------------------------------------------------------------
r58017 | svn | 2017-03-19 00:30:15 +0900 (Sun, 19 Mar 2017) | 1 line

* 2017-03-19
------------------------------------------------------------------------
r58016 | nobu | 2017-03-19 00:30:14 +0900 (Sun, 19 Mar 2017) | 5 lines

test_lambda.rb: refine test

* test/ruby/test_lambda.rb (test_lambda_as_iterator): refine a
  test for the intention of the original report.
  [ruby-core:61340] [Bug #9605]
------------------------------------------------------------------------
r58015 | nobu | 2017-03-18 23:22:15 +0900 (Sat, 18 Mar 2017) | 4 lines

vm_args.c: pass block

* vm_args.c (refine_sym_proc_call): pass block to the method when
  using refinements.  [ruby-core:80219] [Bug #13325]
------------------------------------------------------------------------
r58014 | nobu | 2017-03-18 22:15:15 +0900 (Sat, 18 Mar 2017) | 3 lines

vm.c: fix up r58012

* vm.c (invoke_iseq_block_from_c): fix stack region length.
------------------------------------------------------------------------
r58012 | nobu | 2017-03-18 20:29:35 +0900 (Sat, 18 Mar 2017) | 4 lines

vm.c: guard arguments [EXPERIMENTAL]

* vm.c (invoke_iseq_block_from_c): guard arguments on stack, not
  to be clobbered during splatting.
------------------------------------------------------------------------
r58011 | nobu | 2017-03-18 19:37:53 +0900 (Sat, 18 Mar 2017) | 4 lines

.gdbinit: suppress gdb message [ci skip]

* .gdbinit (rp): check number of instance variables to get rid of
  "Invalid number 0 of repetitions."  message at an empty object.
------------------------------------------------------------------------
r58010 | nobu | 2017-03-18 19:19:52 +0900 (Sat, 18 Mar 2017) | 4 lines

.gdbinit: RArray in history [ci skip]

* .gdbinit (rp): put the contents of RArray in value history, for
  later use.
------------------------------------------------------------------------
r58009 | duerst | 2017-03-18 10:35:03 +0900 (Sat, 18 Mar 2017) | 1 line

fix accidental reversal of r57997 in r58000
------------------------------------------------------------------------
r58008 | stomar | 2017-03-18 05:48:51 +0900 (Sat, 18 Mar 2017) | 10 lines

io.c: improve docs

* io.c: [DOC] improve and harmonize docs for IO#read and ARGF#read;
  fix invalid example code for IO#read to make it syntax highlighted.

* io.c: [DOC] various improvements for docs of IO, ARGF, and Kernel:
  fix indent to ensure correct code block detection; sync "outbuf"
  paragraph for {IO,ARGF}#read, {IO,ARGF}#readpartial, and IO#sysread;
  fix formatting of call-seq's; improve Kernel#open example to use nil?;
  fix RDoc markup and typos.
------------------------------------------------------------------------
r58007 | svn | 2017-03-18 04:59:57 +0900 (Sat, 18 Mar 2017) | 1 line

* 2017-03-18
------------------------------------------------------------------------
r58006 | normal | 2017-03-18 04:59:56 +0900 (Sat, 18 Mar 2017) | 14 lines

remove branches in dmark and dfree GC callbacks

dmark and dfree callbacks are never called in gc.c for NULL
DATA_PTR values, not even for zombie objects.

* compile.c (ibf_loader_mark): remove branch for pointer validity
* compile.c (ibf_loader_free): ditto
* cont.c (cont_free): ditto
* cont.c (fiber_free): ditto
* dir.c (dir_free): ditto
* ext/stringio/stringio.c (strio_mark): ditto
* proc.c (binding_free): ditto
* thread_sync.c (mutex_free): ditto
* vm.c (thread_free): ditto
------------------------------------------------------------------------
r58005 | kazu | 2017-03-17 22:24:14 +0900 (Fri, 17 Mar 2017) | 1 line

fix a typo [ci skip]
------------------------------------------------------------------------
r58004 | nobu | 2017-03-17 19:08:02 +0900 (Fri, 17 Mar 2017) | 4 lines

vm.c: check stack

* vm.c (invoke_iseq_block_from_c): check stack overflow before
  pushing arguments.
------------------------------------------------------------------------
r58000 | duerst | 2017-03-17 11:24:53 +0900 (Fri, 17 Mar 2017) | 6 lines

clarifiy 'codepoint' in documentation of String#each_codepoint

Make sure it's clear that the returned values are not Unicode codepoints
for encodings other than UTF-8/UTF-16(BE|LE)/UTF-32(BE|LE).

[ci skip] [Bug #13321]
------------------------------------------------------------------------
r57999 | svn | 2017-03-17 10:29:24 +0900 (Fri, 17 Mar 2017) | 1 line

* remove trailing spaces.
------------------------------------------------------------------------
r57998 | hsbt | 2017-03-17 10:29:22 +0900 (Fri, 17 Mar 2017) | 7 lines

Merge rubygems-2.6.11

  This version fixed regression of rubygems-2.6.10.
  https://github.com/rubygems/rubygems/pull/1856

  See details of changelogs for 2.6.11 release:
  https://github.com/rubygems/rubygems/blob/adfcf40502716080bd9cdfdd2e43bd4296872784/History.txt#L3
------------------------------------------------------------------------
r57997 | normal | 2017-03-17 09:55:55 +0900 (Fri, 17 Mar 2017) | 8 lines

deduplicate static rb_str_format format strings

Anybody who hits these code paths can hit them again in the
future, so try deduplicating across multiple runs of these
methods to reduce garbage.

* string.c (str_upto_each): fstring on "%.*d"
* strftime.c (rb_strftime_with_timespec): fstring on "%0*d"
------------------------------------------------------------------------
r57996 | normal | 2017-03-17 09:55:50 +0900 (Fri, 17 Mar 2017) | 6 lines

deduplicate File::NULL string

"/dev/null" is a common sight for pre-1.9.3-compatible code
targeting *nix systems, so deduplicate it here, as well.

* file.c (Init_File): use fstring for File::NULL
------------------------------------------------------------------------
r57995 | normal | 2017-03-17 09:55:45 +0900 (Fri, 17 Mar 2017) | 7 lines

deduplicate "/", ":" and "\n" strings

"/" and ":" are always statically registered in symbol.c (Init_op_tbl),
and "\n" is a commonly seen in source code.

* file.c (Init_File): fstring on File::SEPARATOR and File::PATH_SEPARATOR
* io.c (Init_IO): fstring on rb_default_rs ("\n")
------------------------------------------------------------------------
r57994 | normal | 2017-03-17 08:17:14 +0900 (Fri, 17 Mar 2017) | 5 lines

NEWS: document shorter opt_str_freeze usage

Users do not read commit messages, but maybe they read NEWS.

r57828 ("compile.c: apply opt_str_freeze to String#-@ (uminus)")
------------------------------------------------------------------------
r57993 | svn | 2017-03-17 05:58:59 +0900 (Fri, 17 Mar 2017) | 1 line

* 2017-03-17
------------------------------------------------------------------------
r57992 | stomar | 2017-03-17 05:58:58 +0900 (Fri, 17 Mar 2017) | 1 line

bignum.c: [DOC] typos and grammar
------------------------------------------------------------------------
r57991 | nobu | 2017-03-16 15:51:24 +0900 (Thu, 16 Mar 2017) | 4 lines

rational.c: initialize n

* rational.c (read_num): `n` was used uninitialized when the
  string started with a period.
------------------------------------------------------------------------
r57990 | nobu | 2017-03-16 12:35:29 +0900 (Thu, 16 Mar 2017) | 4 lines

rational.c: float denom

* rational.c (parse_rat): allow float as a denominator as well as
  a numerator.  [ruby-core:79104] [Bug #13134]
------------------------------------------------------------------------
r57989 | nobu | 2017-03-16 12:32:16 +0900 (Thu, 16 Mar 2017) | 5 lines

rational.c: read_num

* rational.c (read_num): use rb_int_parse_cstr to parse integer
  parts, and make String#to_r consistent with #to_i and #to_f.
  [ruby-core:80098] [Bug #13105]
------------------------------------------------------------------------
r57988 | nobu | 2017-03-16 12:21:12 +0900 (Thu, 16 Mar 2017) | 4 lines

bignum.c: rb_int_parse_cstr

* bignum.c (rb_int_parse_cstr): extend rb_cstr_parse_inum with
  flags.
------------------------------------------------------------------------
r57987 | nobu | 2017-03-16 12:05:34 +0900 (Thu, 16 Mar 2017) | 4 lines

test_rational.rb: invalid exponent

* test/ruby/test_rational.rb (test_parse): more checks for invalid
  exponent.  [ruby-core:80098] [Bug #13105]
------------------------------------------------------------------------
r57986 | nobu | 2017-03-16 11:02:47 +0900 (Thu, 16 Mar 2017) | 4 lines

test_rational.rb: duplicate assertions

* test/ruby/test_rational.rb (test_parse): remove duplicate
  assertions.
------------------------------------------------------------------------
r57985 | nobu | 2017-03-16 10:53:52 +0900 (Thu, 16 Mar 2017) | 4 lines

rational.c: zero division

* rational.c (read_rat_nos): denominator cannot be 0, raise zero
  division in that case.
------------------------------------------------------------------------
r57984 | svn | 2017-03-16 09:43:08 +0900 (Thu, 16 Mar 2017) | 1 line

* 2017-03-16
------------------------------------------------------------------------
r57983 | nobu | 2017-03-16 09:43:07 +0900 (Thu, 16 Mar 2017) | 4 lines

test_rational.rb: shorten

* test/ruby/test_rational.rb (test_parse): reduce repeated
  arguments.
------------------------------------------------------------------------
r57982 | nobu | 2017-03-15 21:41:56 +0900 (Wed, 15 Mar 2017) | 1 line

vm_insnhelper.c: adjust indent [ci skip]
------------------------------------------------------------------------
r57981 | svn | 2017-03-15 17:25:59 +0900 (Wed, 15 Mar 2017) | 1 line

* remove trailing spaces.
------------------------------------------------------------------------
r57980 | ko1 | 2017-03-15 17:25:58 +0900 (Wed, 15 Mar 2017) | 19 lines

add several counters to analyze ivar inline caches.

* debug_counter.h: add (and renamed) several counters:
  ivar_get_ic_hit
  ivar_get_ic_miss
  ivar_get_ic_miss_serial
  ivar_get_ic_miss_unset
  ivar_get_ic_miss_noobject
  ivar_set_ic_hit
  ivar_set_ic_miss
  ivar_set_ic_miss_serial
  ivar_set_ic_miss_unset
  ivar_set_ic_miss_oorange
  ivar_set_ic_miss_noobject
  ivar_get_base
  ivar_set_base

  See related source code to know what counters mean.

------------------------------------------------------------------------
r57979 | nobu | 2017-03-15 17:15:32 +0900 (Wed, 15 Mar 2017) | 7 lines

object.c: make String#to_f consistent with literal

* object.c (rb_cstr_to_dbl): stop at successive underscores, as
  well as Float literals.  [ruby-core:80098] [Bug #13105]

  * `_` should be within digits
  * only one `_` allowed between digits
------------------------------------------------------------------------
r57978 | nobu | 2017-03-15 16:57:11 +0900 (Wed, 15 Mar 2017) | 6 lines

string.c: shortcut argument check

* string.c (str_casecmp, str_casecmp_p): split to skip argument
  check when it is a String certainly.

* string.c (sym_casecmp, sym_casecmp_p): shortcut argument checks.
------------------------------------------------------------------------
r57977 | kazu | 2017-03-15 09:59:32 +0900 (Wed, 15 Mar 2017) | 1 line

io.c: [DOC] add missing `$`
------------------------------------------------------------------------
r57976 | marcandre | 2017-03-15 05:09:30 +0900 (Wed, 15 Mar 2017) | 2 lines

* lib/matrix.rb: Add Vector.zero and Vector#zero?
  Patch by Chia-sheng Chen [#13208]
------------------------------------------------------------------------
r57975 | svn | 2017-03-15 00:14:22 +0900 (Wed, 15 Mar 2017) | 1 line

* 2017-03-15
------------------------------------------------------------------------
r57974 | mame | 2017-03-15 00:14:21 +0900 (Wed, 15 Mar 2017) | 4 lines

Stop a global server of Rinda test

This server seemed to cause "leaked file descriptor" warnings.
Moved it into the setup/teardown framework.
------------------------------------------------------------------------
r57973 | kazu | 2017-03-14 23:46:10 +0900 (Tue, 14 Mar 2017) | 1 line

vm_insnhelper.c: undef BUILTIN_CLASS_P too
------------------------------------------------------------------------
r57972 | glass | 2017-03-14 21:53:32 +0900 (Tue, 14 Mar 2017) | 5 lines

Fix bug of Tempfile#size if nothing is written [Bug #13198]

* lib/tempfile.rb (Tempfile#size): Fix its behavior when nothing
  is written. Tempfile#size should return 0 in this case.
  The patch is from nobu <nobu@ruby-lang.org>.
------------------------------------------------------------------------
r57971 | mame | 2017-03-14 20:39:58 +0900 (Tue, 14 Mar 2017) | 6 lines

Fix a consistency bug of ISEQ_COVERAGE [Bug #13305]

There is an invariant that ISEQ_COVERAGE(iseq) must be Qnil if and only
if option->coverage_enabled is false.  This invariant was broken by
NODE_PRELUDE which updates option->coverage_enabled but not
ISEQ_COVERAGE(iseq).
------------------------------------------------------------------------
r57970 | ko1 | 2017-03-14 15:52:44 +0900 (Tue, 14 Mar 2017) | 6 lines

Fiber also has same issue. [Bug #13313]

* thread.c (rb_vm_proc_local_ep): added.

* cont.c (rb_fiber_start): use rb_vm_proc_local_ep().

------------------------------------------------------------------------
r57969 | nobu | 2017-03-14 14:54:35 +0900 (Tue, 14 Mar 2017) | 5 lines

thread.c: Thread.start with Symbol

* thread.c (thread_do_start): fix segfault at start with Symbol.
  proc created by Symbol#to_proc does not have environment unless
  using refinements.  [ruby-core:80147] [Bug #13313]
------------------------------------------------------------------------
r57968 | nobu | 2017-03-14 14:54:33 +0900 (Tue, 14 Mar 2017) | 4 lines

thread.c: thread_do_start

* thread.c (thread_do_start): extract from a macro in
  thread_start_func_2 for debugger.
------------------------------------------------------------------------
r57967 | nobu | 2017-03-14 13:16:02 +0900 (Tue, 14 Mar 2017) | 4 lines

envutil.rb: basename for diagnostic_reports

* test/lib/envutil.rb (EnvUtil.diagnostic_reports): diagnostic
  report file uses base name only.  [ci skip]
------------------------------------------------------------------------
r57966 | nobu | 2017-03-14 13:03:48 +0900 (Tue, 14 Mar 2017) | 5 lines

vm_core.h: assertions for Proc

* vm_core.h (vm_proc_block): assert before accessing.

* vm_core.h (vm_proc_iseq): remove duplicate assertion.
------------------------------------------------------------------------
r57965 | nobu | 2017-03-14 12:42:43 +0900 (Tue, 14 Mar 2017) | 4 lines

string.c: use rb_check_string_type

* string.c (rb_str_cmp_m): use rb_check_string_type for check and
  conversion, instead of calling the conversion method directly.
------------------------------------------------------------------------
r57964 | svn | 2017-03-14 05:20:40 +0900 (Tue, 14 Mar 2017) | 1 line

* 2017-03-14
------------------------------------------------------------------------
r57963 | stomar | 2017-03-14 05:20:40 +0900 (Tue, 14 Mar 2017) | 5 lines

docs for Symbol#casecmp and Symbol#casecmp?

* string.c: [DOC] improve docs of Symbol#casecmp and Symbol#casecmp?
  according to the similar String methods; fix RDoc markup and typos;
  fix call-seq's for Symbol#{upcase,downcase,capitalize,swapcase}.
------------------------------------------------------------------------
r57962 | nobu | 2017-03-13 23:59:08 +0900 (Mon, 13 Mar 2017) | 4 lines

sprintf.c: fix out-of-bound access

* sprintf.c (rb_str_format): get rid of out-of-bound access when
  single % at the end.
------------------------------------------------------------------------
r57961 | nobu | 2017-03-13 20:47:45 +0900 (Mon, 13 Mar 2017) | 1 line

string.c (rb_str_set_len): pathological check
------------------------------------------------------------------------
r57960 | nobu | 2017-03-13 18:29:19 +0900 (Mon, 13 Mar 2017) | 4 lines

file.c: join with /

* file.c (rb_file_join): join using "/" always, not a constant.
  and fix the document.  [ruby-core:79579] [Bug #13223]
------------------------------------------------------------------------
r57958 | nobu | 2017-03-13 18:12:05 +0900 (Mon, 13 Mar 2017) | 4 lines

string.c: $; is a GC-root

* string.c (Init_String): $; must be a GC-root, not to be
  collected.  [ruby-core:79582]
------------------------------------------------------------------------
r57956 | naruse | 2017-03-13 18:05:35 +0900 (Mon, 13 Mar 2017) | 4 lines

Raise error if spec is nil

With parallel test-all, the spec is sometimes nil.
To debug it raise more detailed error.
------------------------------------------------------------------------
r57955 | nobu | 2017-03-13 17:38:12 +0900 (Mon, 13 Mar 2017) | 5 lines

parse.y: relax `&' warning

* parse.y (parser_yylex): disable "`&' interpreted as argument
  prefix" warning when just followed by a symbol literal.
  [ruby-core:79926] [Misc #13283]
------------------------------------------------------------------------
r57951 | mrkn | 2017-03-13 15:03:18 +0900 (Mon, 13 Mar 2017) | 7 lines

bigdecimal: version 1.3.2

Import bigdecimal version 1.3.2.  The full commit log is here:

  https://github.com/ruby/bigdecimal/compare/v1.3.1...v1.3.2

This fixes [ruby-core:79603] [Bug #13232]
------------------------------------------------------------------------
r57950 | nobu | 2017-03-13 14:30:44 +0900 (Mon, 13 Mar 2017) | 4 lines

thread.c: rb_thread_fd_close [ci skip]

* thread.c (rb_thread_fd_close): remove deprecated. a couple of
  external libraries used it.  [ruby-core:80078] [Bug #13304]
------------------------------------------------------------------------
r57949 | nobu | 2017-03-13 12:30:11 +0900 (Mon, 13 Mar 2017) | 1 line

thread.c: rb_thread_fd_close no longer returns
------------------------------------------------------------------------
r57948 | nobu | 2017-03-13 11:14:15 +0900 (Mon, 13 Mar 2017) | 4 lines

thread.c: rb_thread_fd_close [ci skip]

* thread.c (rb_thread_fd_close): re-define only for abi-check,
  abort if called.  [ruby-core:80078] [Bug #13304]
------------------------------------------------------------------------
r57947 | nobu | 2017-03-13 09:11:25 +0900 (Mon, 13 Mar 2017) | 3 lines

compile.c: compile flip-flop

* compile.c (iseq_compile_each0): compile flip-flop directly.
------------------------------------------------------------------------
r57946 | nobu | 2017-03-13 09:11:24 +0900 (Mon, 13 Mar 2017) | 4 lines

compile.c: omit newrange

* compile.c (iseq_compile_each): omit creating literal-only range
  to be popped immediately.
------------------------------------------------------------------------
r57944 | naruse | 2017-03-13 03:40:07 +0900 (Mon, 13 Mar 2017) | 1 line

io.c: [DOC] IO#puts uses IO#write
------------------------------------------------------------------------
r57943 | svn | 2017-03-13 03:31:39 +0900 (Mon, 13 Mar 2017) | 1 line

* 2017-03-13
------------------------------------------------------------------------
r57942 | naruse | 2017-03-13 03:31:38 +0900 (Mon, 13 Mar 2017) | 1 line

Didn't work if backport field is empty
------------------------------------------------------------------------
r57908 | nobu | 2017-03-12 22:51:12 +0900 (Sun, 12 Mar 2017) | 4 lines

compile.c: compile_const_prefix

* compile.c (compile_const_prefix): rename, and check the result
  of parts of the prefix.
------------------------------------------------------------------------
r57892 | nobu | 2017-03-12 14:52:42 +0900 (Sun, 12 Mar 2017) | 4 lines

compile.c: omit newhash

* compile.c (iseq_compile_each): omit creating literal-only hash
  to be popped immediately.
------------------------------------------------------------------------
r57891 | nobu | 2017-03-12 14:48:58 +0900 (Sun, 12 Mar 2017) | 1 line

compile.c: NODE_VALUES must not be popped
------------------------------------------------------------------------
r57890 | nobu | 2017-03-12 07:44:26 +0900 (Sun, 12 Mar 2017) | 4 lines

compile.c: iseq_compile_each0

* compile.c (iseq_compile_each0): split from null node case to
  constify line and type.
------------------------------------------------------------------------
r57889 | nobu | 2017-03-12 07:37:50 +0900 (Sun, 12 Mar 2017) | 3 lines

compile.c: compile_when

* compile.c (compile_when): extract from iseq_compile_each.
------------------------------------------------------------------------
r57888 | nobu | 2017-03-12 07:25:32 +0900 (Sun, 12 Mar 2017) | 3 lines

compile.c: compile_case

* compile.c (compile_case): extract from iseq_compile_each.
------------------------------------------------------------------------
r57887 | stomar | 2017-03-12 06:32:46 +0900 (Sun, 12 Mar 2017) | 17 lines

lib/ostruct.rb: [DOC] revise docs for OpenStruct

* update paragraph on implementation:
  define_singleton_method is used, not define_method
* add call-seq with return values for each_pair
* adopt description of dig from Array and Hash
* fix description of the hash method
* :nodoc: initialize_copy, respond_to_missing?
* other small improvements, e.g. use the term `attribute' in the docs
  (instead of `member'), which is clearer for users of the class
* improve code examples: e.g. use more consistent style (always use
  double quotes, drop `p' and `puts', ...), update inspect output,
  use example data that is not prone to change (like population)
* add more code examples
* fix some small errors and grammar

[ruby-core:79265] [Bug #13159]
------------------------------------------------------------------------
r57886 | stomar | 2017-03-12 05:01:55 +0900 (Sun, 12 Mar 2017) | 5 lines

docs for String#casecmp and String#casecmp?

* string.c: [DOC] specify when String#casecmp and String#casecmp?
  return nil; modify examples to better show difference to <=>;
  fix RDoc markup and typos.
------------------------------------------------------------------------
r57883 | naruse | 2017-03-12 04:03:11 +0900 (Sun, 12 Mar 2017) | 3 lines

Generate log from svn log

When there's multiple revisions, all svn logs should be used.
------------------------------------------------------------------------
r57852 | svn | 2017-03-12 01:08:55 +0900 (Sun, 12 Mar 2017) | 1 line

* 2017-03-12
------------------------------------------------------------------------
r57851 | naruse | 2017-03-12 01:08:54 +0900 (Sun, 12 Mar 2017) | 1 line

suppress warning: shadowing outer local variable - dir & opt
------------------------------------------------------------------------
r57842 | nobu | 2017-03-11 22:24:08 +0900 (Sat, 11 Mar 2017) | 1 line

defs/gmake.mk: update again after comit [ci skip]
------------------------------------------------------------------------
r57836 | nobu | 2017-03-11 21:26:00 +0900 (Sat, 11 Mar 2017) | 6 lines

compile.c: constify flags

* compile.c (compile_cpath): return `noscoped` bit flag, instead
  of boolean flag.

* compile.c (iseq_compile_each): constify flags.
------------------------------------------------------------------------
r57835 | nobu | 2017-03-11 20:15:05 +0900 (Sat, 11 Mar 2017) | 1 line

test/ruby/test_require.rb: use squiggly heredocs
------------------------------------------------------------------------
r57829 | svn | 2017-03-11 05:09:07 +0900 (Sat, 11 Mar 2017) | 1 line

* 2017-03-11
------------------------------------------------------------------------
r57828 | normal | 2017-03-11 05:09:06 +0900 (Sat, 11 Mar 2017) | 5 lines

compile.c: apply opt_str_freeze to String#-@ (uminus)

The same optimization used for "literal string".freeze
can easily apply to uminus without introducing any
compatibility problems.
------------------------------------------------------------------------
r57827 | nobu | 2017-03-10 22:46:22 +0900 (Fri, 10 Mar 2017) | 4 lines

common.mk: ignore clean-rubyspec error [ci skip]

* common.mk (clean-rubyspec): nothing to clean before running
  rubyspec.
------------------------------------------------------------------------
r57826 | nobu | 2017-03-10 16:18:03 +0900 (Fri, 10 Mar 2017) | 7 lines

debug_counter.c: debug_counter_names [ci skip]

* debug_counter.c (debug_counter_names): stringize debug counter
  names by preprocessor.

* debug_counter.h (RB_DEBUG_COUNTER): define counter names outside
  the include guard, to expand multiple times.
------------------------------------------------------------------------
r57825 | nobu | 2017-03-10 14:34:27 +0900 (Fri, 10 Mar 2017) | 7 lines

configure.in: RUBY_SO_NAME as --with-soname

* configure.in (RUBY_SO_NAME): [EXPERIMENTAL] use the given name
  literally if --with-soname is specified.
  [ruby-core:79972] [Misc #13296]

[ci skip]
------------------------------------------------------------------------
r57824 | svn | 2017-03-10 04:48:10 +0900 (Fri, 10 Mar 2017) | 1 line

* 2017-03-10
------------------------------------------------------------------------
r57823 | stomar | 2017-03-10 04:48:09 +0900 (Fri, 10 Mar 2017) | 1 line

object.c: [DOC] simplify Object#tap example
------------------------------------------------------------------------
r57822 | nobu | 2017-03-09 15:44:57 +0900 (Thu, 09 Mar 2017) | 3 lines

rbconfig/sizeof: remove VPATH

* ext/rbconfig/sizeof/depend: remove VPATH for `make dist`.
------------------------------------------------------------------------
r57821 | normal | 2017-03-09 12:49:47 +0900 (Thu, 09 Mar 2017) | 4 lines

ext/socket/raddrinfo.c (addrinfo_mark): avoid needless branch

gc.c (gc_mark_children, case T_DATA) does not use
the dmark function pointer if DATA_PTR is NULL
------------------------------------------------------------------------
r57820 | nobu | 2017-03-09 12:38:06 +0900 (Thu, 09 Mar 2017) | 3 lines

goruby.c: FD leak [ci skip]

* goruby.c (goruby_options): fix potential FD leak.
------------------------------------------------------------------------
r57819 | nobu | 2017-03-09 12:31:53 +0900 (Thu, 09 Mar 2017) | 4 lines

rbconfig/sizeof: nmake VPATH

* ext/rbconfig/sizeof/depend: prepend VPATH for out-of-place build
  using nmake.
------------------------------------------------------------------------
r57818 | shyouhei | 2017-03-09 11:31:23 +0900 (Thu, 09 Mar 2017) | 6 lines

revert RB_FIXABLE related changesets [Bug #13288][Bug #13293][Bug #13294]

This commit is auto-generated using following command:

svn diff -r57807:57788 include internal.h bignum.c numeric.c compile.c insns.def object.c sprintf.c | patch -p0

------------------------------------------------------------------------
r57817 | nobu | 2017-03-09 11:10:27 +0900 (Thu, 09 Mar 2017) | 4 lines

fix UTF-32 valid_encoding?

* test/ruby/test_io_m17n.rb (TestIO_M17N#test_puts_widechar): do
  not use invalid codepoint.  [ruby-core:79966] [Bug #13292]
------------------------------------------------------------------------
r57816 | nobu | 2017-03-09 11:04:10 +0900 (Thu, 09 Mar 2017) | 9 lines

fix UTF-32 valid_encoding?

* enc/utf_32be.c (utf32be_mbc_enc_len): check arguments precisely.
  [ruby-core:79966] [Bug #13292]

* enc/utf_32le.c (utf32le_mbc_enc_len): ditto.

* regenc.h (UNICODE_VALID_CODEPOINT_P): predicate for valid
  Unicode codepoints.
------------------------------------------------------------------------
r57815 | nobu | 2017-03-09 10:55:43 +0900 (Thu, 09 Mar 2017) | 7 lines

test_utf16.rb: refine valid_encoding tests

* test/ruby/enc/test_utf16.rb (test_utf16be_valid_encoding):
  assert all data and use assert_predicate.

* test/ruby/enc/test_utf16.rb (test_utf16le_valid_encoding):
  ditto.
------------------------------------------------------------------------
r57814 | nobu | 2017-03-09 10:06:09 +0900 (Thu, 09 Mar 2017) | 1 line

make commit [ci skip]
------------------------------------------------------------------------
r57813 | normal | 2017-03-09 06:24:24 +0900 (Thu, 09 Mar 2017) | 3 lines

string.c (str_uminus): update doc for deduplication

As of r57698, String#-@ can return pre-existing strings.
------------------------------------------------------------------------
r57812 | svn | 2017-03-09 05:41:39 +0900 (Thu, 09 Mar 2017) | 1 line

* 2017-03-09
------------------------------------------------------------------------
r57811 | stomar | 2017-03-09 05:41:38 +0900 (Thu, 09 Mar 2017) | 9 lines

docs for FileUtils.ln methods

* lib/fileutils.rb: [DOC] add clarifying call-seq's for FileUtil.ln,
  ln_s, and ln_sf, with better argument names for the created link and
  link target.  Reported by Mike Vastola. [ruby-core:62532] [Bug #9829]

* lib/fileutils.rb: [DOC] further improve descriptions of FileUtils.ln
  and related methods; improve examples: relative links probably won't
  work in other dir, avoid `include', use more generic homedir name.
------------------------------------------------------------------------
r57810 | nobu | 2017-03-08 22:52:32 +0900 (Wed, 08 Mar 2017) | 1 line

great love
------------------------------------------------------------------------
r57809 | nobu | 2017-03-08 17:19:56 +0900 (Wed, 08 Mar 2017) | 3 lines

fix paren

* string.c (str_byte_substr): fix misplaced parenthesis at r56155.
------------------------------------------------------------------------
r57808 | nobu | 2017-03-08 16:34:13 +0900 (Wed, 08 Mar 2017) | 1 line

proc.c: preserve class name encoding in Proc#to_s
------------------------------------------------------------------------
r57807 | shyouhei | 2017-03-08 13:50:22 +0900 (Wed, 08 Mar 2017) | 10 lines

re-introduce __builtin_add_overflow

r57789 (74cdd89) was gradually "improve"d by naruse through r57793 to
r57806, resulted in reverting the efect of r57789 while retaining its
complexity.  I think the current situation is slightly worse than
before (same output complicated source code).

Here I introduce __builtin_add_overflow again, which (I think) is what
naruse wanted to do in r57793.

------------------------------------------------------------------------
r57806 | naruse | 2017-03-08 04:48:00 +0900 (Wed, 08 Mar 2017) | 1 line

Always use old RB_FIXABLE to allow double as argument
------------------------------------------------------------------------
r57805 | naruse | 2017-03-08 02:51:35 +0900 (Wed, 08 Mar 2017) | 3 lines

Revert r57803 "Avoid to cast the argument"

__builtin_add_overflow doesn't support double.
------------------------------------------------------------------------
r57804 | svn | 2017-03-08 02:46:55 +0900 (Wed, 08 Mar 2017) | 1 line

* 2017-03-08
------------------------------------------------------------------------
r57803 | naruse | 2017-03-08 02:46:54 +0900 (Wed, 08 Mar 2017) | 3 lines

Avoid to cast the argument

For 32bit environment and __int128 use cases.
------------------------------------------------------------------------
r57802 | kazu | 2017-03-07 22:04:39 +0900 (Tue, 07 Mar 2017) | 4 lines

string.c: [DOC] Fix a typo in String#dump

[Fix GH-1531][ci skip]
Author:    Alex Semyonov <alex@semyonov.us>
------------------------------------------------------------------------
r57801 | nobu | 2017-03-07 19:56:22 +0900 (Tue, 07 Mar 2017) | 5 lines

parse.y: remove trace

* parse.y (reg_named_capture_assign_iter): do not insert trace
  instructions before local variable assinments.  putobject is
  expected at first.  [ruby-core:79940] [Bug #13287]
------------------------------------------------------------------------
r57800 | nobu | 2017-03-07 18:13:41 +0900 (Tue, 07 Mar 2017) | 4 lines

string.c: negation of LONG_MIN

* string.c (rb_str_update): do not use negation of LONG_MIN, which
  is negative too.
------------------------------------------------------------------------
r57799 | nobu | 2017-03-07 18:07:57 +0900 (Tue, 07 Mar 2017) | 6 lines

string.c: fix integer overflow

* string.c (str_byte_substr): fix another integer overflow which
  can happen only when SHARABLE_MIDDLE_SUBSTRING is enabled.
  [ruby-core:79951] [Bug #13289]

------------------------------------------------------------------------
r57798 | naruse | 2017-03-07 15:33:49 +0900 (Tue, 07 Mar 2017) | 1 line

Use RB_POSFIXABLE and RB_NEGFIXABLE to avoid cast introduced at r57793
------------------------------------------------------------------------
r57797 | nobu | 2017-03-07 14:48:15 +0900 (Tue, 07 Mar 2017) | 5 lines

string.c: fix integer overflow

* string.c (rb_str_subpos): fix integer overflow which can happen
  only when SHARABLE_MIDDLE_SUBSTRING is enabled.  incorpolate
  https://github.com/mruby/mruby/commit/7db0786abdd243ba031e24683f
------------------------------------------------------------------------
r57796 | naruse | 2017-03-07 14:19:00 +0900 (Tue, 07 Mar 2017) | 1 line

suppress warning: shadowing outer local variable - e
------------------------------------------------------------------------
r57795 | naruse | 2017-03-07 14:11:02 +0900 (Tue, 07 Mar 2017) | 1 line

Supress warning: instance variable @repeat_count not initialized
------------------------------------------------------------------------
r57794 | hsbt | 2017-03-07 13:46:46 +0900 (Tue, 07 Mar 2017) | 1 line

Fix up r57788, Function is removed at readline-6.3.
------------------------------------------------------------------------
r57793 | naruse | 2017-03-07 12:35:47 +0900 (Tue, 07 Mar 2017) | 13 lines

Use ADD instead of MUL

* On recent CPUs, 2-operand MUL's latency is 3 cycle but ADD is 1 cycle.
* clang Optimizes `MUL rax,2` into `ADD rax,rax` but gcc7 doesn't.
* LONG2FIX is compiled into `lea r14,[r15+r15*1+0x1]`; this is 1cycle
  and run in parallel if the branch prediction is correct.
* Note that old (RB_POSFIXABLE(f) && RB_NEGFIXABLE(f)) is usually uses
  following instructions.
  * movabs rax,0x4000000000000000
  * add    rax,rdi
  * js
  It needs large immediate and Macro-Fusion is not applied.
  ADD and JO is much smaller though it is also Macro-Fusion unfriendly.
------------------------------------------------------------------------
r57792 | nobu | 2017-03-07 10:07:03 +0900 (Tue, 07 Mar 2017) | 7 lines

fix macro name

* tool/instruction.rb (VmBodyGenerator#make_header_prepare_stack):
  REG_CFP has been prefixed with VM_ at r56609.  [Bug #12527]

* tool/instruction.rb (VmBodyGenerator#make_footer_stack_val):
  ditto.
------------------------------------------------------------------------
r57791 | svn | 2017-03-07 04:42:37 +0900 (Tue, 07 Mar 2017) | 1 line

* 2017-03-07
------------------------------------------------------------------------
r57790 | stomar | 2017-03-07 04:42:36 +0900 (Tue, 07 Mar 2017) | 1 line

io.c: [DOC] open mode can be an integer; fix rdoc syntax
------------------------------------------------------------------------
r57789 | shyouhei | 2017-03-06 20:14:05 +0900 (Mon, 06 Mar 2017) | 9 lines

optimize FIXABLE macro

Looking at the source code, FIXABLE tends to be just before LOING2FIX
to check applicability of that operation.  Why not try computing first
then check for overflow, which should be optimial.

I also tried the same thing for unsigned types but resulted in slower
execution.  It seems RB_POSFIXABLE() is fast enough on modern CPUs.

------------------------------------------------------------------------
r57788 | hsbt | 2017-03-06 18:10:21 +0900 (Mon, 06 Mar 2017) | 1 line

Avoid to warning of clang with -Wincompatible-pointer-types.
------------------------------------------------------------------------
r57787 | nobu | 2017-03-06 17:10:20 +0900 (Mon, 06 Mar 2017) | 4 lines

readline.c: fix waiting fucntion

* ext/readline/readline.c (getc_body): use
  rb_w32_wait_events_blocking in block region.
------------------------------------------------------------------------
r57786 | shyouhei | 2017-03-06 16:25:18 +0900 (Mon, 06 Mar 2017) | 6 lines

LONG_LONG_MAX not always available

I was not aware of cases when LONG_LONG_MAX is undefined.  Sorry.

Signed-off-by: Urabe, Shyouhei <shyouhei@ruby-lang.org>

------------------------------------------------------------------------
r57785 | nobu | 2017-03-06 15:44:11 +0900 (Mon, 06 Mar 2017) | 7 lines

opt_eq_func refactor

* vm_insnhelper.c (opt_eq_func): method to dispatch is resolved by
  only the receiver's class, not including the argument class.
  even if basic operation is redefined, other class conditions
  never meet.  optimize Float and non-Float case, delegate to
  rb_float_equal directly.
------------------------------------------------------------------------
r57784 | shyouhei | 2017-03-06 15:04:52 +0900 (Mon, 06 Mar 2017) | 16 lines

use HAVE_BUILTIN___BUILTIN_MUL_OVERFLOW

We already check for __builtin_mul_overflow in configure but never
actually referred it before.  Why not call it if available, because
that should render supposedly-optimial assembly outputs.

Optionally if __builtin_mul_overflow_p is available, which is the case
for recent GCC, use that to detect fixnum overflow.  This is much
faster than the previous.  On my machine generated assembly of
numeric.c:int_pow reduces from 480 to 448 bytes, according to nm(1).
Also on my machine, following script boosts from 7.819 to 6.929 sec.

time ./miniruby -e 'i=0; while i < 30_000_000 do i += 1; 7 ** 23; end'

Signed-off-by: Urabe, Shyouhei <shyouhei@ruby-lang.org>

------------------------------------------------------------------------
r57783 | nobu | 2017-03-06 08:36:44 +0900 (Mon, 06 Mar 2017) | 5 lines

compile.c: variable type

* compile.c (iseq_compile_each): fix variable type, use VALUE for
  Symbol.
  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?revision=57772&view=revision
------------------------------------------------------------------------
r57782 | svn | 2017-03-06 04:43:11 +0900 (Mon, 06 Mar 2017) | 1 line

* 2017-03-06
------------------------------------------------------------------------
r57781 | stomar | 2017-03-06 04:43:10 +0900 (Mon, 06 Mar 2017) | 9 lines

docs for IO.{write,read}

* io.c: [DOC] improve docs for IO
  * IO.{write,read}: fix errors (:open_args is not an array of
    strings, it might include a perm or options hash argument;
    IO.write has no length argument, drop corresponding statement),
    improve formatting, call-seq, grammar.
  * IO#sync=: remove unnecessary "produces no output".
  * other improvements.
------------------------------------------------------------------------
r57780 | stomar | 2017-03-05 21:36:09 +0900 (Sun, 05 Mar 2017) | 5 lines

docs for IO#print

* io.c: [DOC] split documentation for IO#print into smaller paragraphs,
  delete duplicate sentence, fix call-seq.
  Based on a patch by Dario Daic. [ruby-core:78291] [Bug #12975]
------------------------------------------------------------------------
r57779 | nobu | 2017-03-05 10:46:20 +0900 (Sun, 05 Mar 2017) | 4 lines

math.c: more accuracy

* math.c (math_log10): calculate log10(2) for more accuracy.
  [ruby-core:79907] [Bug #13279]
------------------------------------------------------------------------
r57778 | stomar | 2017-03-05 05:08:04 +0900 (Sun, 05 Mar 2017) | 1 line

string.c: [DOC] fix doc formatting for String#==, #===
------------------------------------------------------------------------
r57777 | stomar | 2017-03-05 05:02:48 +0900 (Sun, 05 Mar 2017) | 4 lines

rdoc for String class

* lib/unicode_normalize.rb: [DOC] prevent a comment from
  showing up in the class documentation for String.
------------------------------------------------------------------------
r57776 | svn | 2017-03-05 04:52:31 +0900 (Sun, 05 Mar 2017) | 1 line

* 2017-03-05
------------------------------------------------------------------------
r57775 | stomar | 2017-03-05 04:52:30 +0900 (Sun, 05 Mar 2017) | 5 lines

nodoc OptParse

* lib/optparse.rb: [DOC] nodoc OptParse, introduced with r46126,
  to avoid leaking of its documentation (OptionParser's docs) into
  the class documentation of Object.  [ruby-core:79909] [Bug #13281]
------------------------------------------------------------------------
r57774 | nobu | 2017-03-04 23:44:05 +0900 (Sat, 04 Mar 2017) | 4 lines

compile.c: operand size check

* compile.c (ibf_load_code): raise an exception on invalid operand
  size.  should not use assert() to validate incoming data.
------------------------------------------------------------------------
r57773 | nobu | 2017-03-04 23:37:22 +0900 (Sat, 04 Mar 2017) | 4 lines

compile.c: memory leak

* compile.c (iseq_set_sequence): fix potential memory leaks on an
  invalid instruction sequence.
------------------------------------------------------------------------
r57772 | nobu | 2017-03-04 23:21:57 +0900 (Sat, 04 Mar 2017) | 4 lines

compile.c: fix invalid label message

* compile.c (validate_label): fix invalid label message.
  registered labels are Symbols, not IDs.
------------------------------------------------------------------------
r57771 | stomar | 2017-03-04 22:13:50 +0900 (Sat, 04 Mar 2017) | 5 lines

documentation for sort methods

* array.c: [DOC] fix grammar in Array#sort, #sort!, #sort_by!,
  move references below the code example, add a missing reference.
* enum.c: [DOC] fix grammar in Enumerable#sort, #sort_by.
------------------------------------------------------------------------
r57770 | stomar | 2017-03-04 22:12:20 +0900 (Sat, 04 Mar 2017) | 5 lines

enum.c: documentation for Enumerable#sort_by

* enum.c: [DOC] improve structure of docs for Enumerable#sort_by,
  adopt explanation of the comparison block from Array#sort_by,
  drop mention of 1.8, fix typos.
------------------------------------------------------------------------
r57769 | nobu | 2017-03-04 14:13:18 +0900 (Sat, 04 Mar 2017) | 4 lines

readline.c: fix type

* ext/readline/readline.c (getc_body): fix variable type, and
  extract _get_osfhandle.
------------------------------------------------------------------------
r57768 | svn | 2017-03-04 04:39:36 +0900 (Sat, 04 Mar 2017) | 1 line

* 2017-03-04
------------------------------------------------------------------------
r57767 | stomar | 2017-03-04 04:39:35 +0900 (Sat, 04 Mar 2017) | 5 lines

io.c: documentation for puts

* io.c: [DOC] clarify that the 'record separator' between
  arguments passed to 'puts' is always a newline.
  Based on a patch by Mark Amery. [ruby-core:65801] [Misc #10403]
------------------------------------------------------------------------
r57766 | nobu | 2017-03-03 18:27:27 +0900 (Fri, 03 Mar 2017) | 4 lines

zlib for mingw

* ext/zlib/extconf.rb: fix building zlib for mingw, and for
  cross-compiling.
------------------------------------------------------------------------
r57765 | stomar | 2017-03-03 17:45:04 +0900 (Fri, 03 Mar 2017) | 11 lines

proc.c: documentation for Proc#{call,yield,[]}

* proc.c: [DOC] fix and improve docs for Proc#{call,yield,[]}:

  * change order of Document-method directives as workaround for an
    RDoc rendering problem where the documentation for Proc#call displays
    a "Document-method: []" code block.  [ruby-core:79887] [Bug #13273]
  * add missing call-seq and example for Proc#yield
  * remove pointless cross reference to Proc#yield
  * update description for handling of extra or missing arguments,
    improve examples and add cross reference to #lambda?
------------------------------------------------------------------------
r57764 | nobu | 2017-03-03 15:22:47 +0900 (Fri, 03 Mar 2017) | 4 lines

MINIRUBY for cross-compling

* template/configure-ext.mk.tmpl (EXTMK_ARGS): add MINIRUBY for
  cross-compling, which is used in extmk.rb.
------------------------------------------------------------------------
r57763 | nobu | 2017-03-03 15:18:36 +0900 (Fri, 03 Mar 2017) | 4 lines

fix for mingw64

* util.c: define MINGW_HAS_SECURE_API for qsort_s on recent
  mingw64.
------------------------------------------------------------------------
r57762 | nobu | 2017-03-03 13:51:34 +0900 (Fri, 03 Mar 2017) | 6 lines

broken mingw

* configure.in: check whether frexp and modf are broken.

* include/ruby/win32.h (frexp, modf): ignore bad declarations when
  compiling as C++.  [ruby-core:79859] [Bug #13267]
------------------------------------------------------------------------
r57761 | akr | 2017-03-03 08:36:13 +0900 (Fri, 03 Mar 2017) | 2 lines

[DOC] update doc.

------------------------------------------------------------------------
r57760 | svn | 2017-03-03 08:33:07 +0900 (Fri, 03 Mar 2017) | 1 line

* 2017-03-03
------------------------------------------------------------------------
r57759 | akr | 2017-03-03 08:33:06 +0900 (Fri, 03 Mar 2017) | 6 lines

refine a warning message.

The "n" option for regexp, /.../n, is historical.
It doesn't mean the regexp works as binary match since Ruby 1.9.


------------------------------------------------------------------------
r57758 | stomar | 2017-03-02 19:31:56 +0900 (Thu, 02 Mar 2017) | 5 lines

string.c: restore documentation for String#<<

* string.c: [DOC] restore documentation for String#<<
  which became undocumented with r56021; fix a typo.
  [ruby-core:79865] [Bug #13268]
------------------------------------------------------------------------
r57757 | nobu | 2017-03-02 13:54:19 +0900 (Thu, 02 Mar 2017) | 5 lines

test: use RbConfig::Limits

* test/lib/envutil.rb: rbconfig/sizeof may not be available when
  cross-compiling.  use RbConfig::Limits instead of calculating
  limits of Fixnum with hard-coded CHAR_BIT.
------------------------------------------------------------------------
r57756 | nobu | 2017-03-02 13:54:18 +0900 (Thu, 02 Mar 2017) | 5 lines

fix for cross-compiling

* common.mk (test-rubyspec): add dependency for cross-compiling.

* defs/gmake.mk: ditto.
------------------------------------------------------------------------
r57755 | stomar | 2017-03-02 04:59:03 +0900 (Thu, 02 Mar 2017) | 5 lines

struct.c: improve rdoc for Struct

* struct.c: [DOC] improve examples for ::new, improve #dig example,
  simplify #select example, use consistent style for return values,
  fix typos and example code style, remove duplicate cross reference.
------------------------------------------------------------------------
r57754 | svn | 2017-03-02 04:57:15 +0900 (Thu, 02 Mar 2017) | 1 line

* 2017-03-02
------------------------------------------------------------------------
r57753 | stomar | 2017-03-02 04:57:14 +0900 (Thu, 02 Mar 2017) | 1 line

hash.c: [DOC] fix book title in example
------------------------------------------------------------------------
r57752 | kazu | 2017-03-01 20:37:30 +0900 (Wed, 01 Mar 2017) | 1 line

lib/e2mmap.rb: Specify frozen_string_literal: true.
------------------------------------------------------------------------
r57751 | stomar | 2017-03-01 19:17:42 +0900 (Wed, 01 Mar 2017) | 5 lines

fileutils.rb: improve rdoc for FileUtils

* lib/fileutils.rb: [DOC] fix invalid example code to make it
  syntax highlighted, fix rdoc for lists, nodoc internal methods,
  avoid a dangerous example.
------------------------------------------------------------------------
r57750 | rhe | 2017-03-01 19:15:55 +0900 (Wed, 01 Mar 2017) | 7 lines

openssl: avoid segfault during running tests on Ubuntu trusty

Import the commit 6693a549d673 ("test/test_pkey_ec: do not use dummy 0
order", 2017-02-03) from upstream. Hopefully this will fix the segfault
on RubyCI icc16-x64:

  http://rubyci.org/logs/rubyci.s3.amazonaws.com/icc-x64/ruby-trunk/log/20170301T050002Z.fail.html.gz
------------------------------------------------------------------------
r57749 | stomar | 2017-03-01 17:54:37 +0900 (Wed, 01 Mar 2017) | 6 lines

fileutils.rb: improve docs for FileUtils.compare_file

* lib/fileutils.rb (compare_file): [DOC] clarify documentation
  by avoiding confusing return value of "maybe false".

[ruby-core:75431] [Misc #12365] reported by Robert A. Heiler.
------------------------------------------------------------------------
r57748 | nobu | 2017-03-01 16:53:15 +0900 (Wed, 01 Mar 2017) | 4 lines

common.mk: separate clean-ext

* common.mk (clean-ext): separate clean-up of makefiles and
  timestamps, and clean-up of subdirectories under ext and gems.
------------------------------------------------------------------------
r57747 | nobu | 2017-03-01 14:44:37 +0900 (Wed, 01 Mar 2017) | 4 lines

zlib: clean zlib

* ext/zlib/extconf.rb: clean zlib libraries generated in the
  place.
------------------------------------------------------------------------
r57746 | svn | 2017-03-01 10:16:27 +0900 (Wed, 01 Mar 2017) | 1 line

* 2017-03-01
------------------------------------------------------------------------
r57745 | normal | 2017-03-01 10:16:26 +0900 (Wed, 01 Mar 2017) | 9 lines

deduplicate strings sooner at load and compile

We can use rb_fstring_cstr in some places to prevent an
intermediate object from being created before deduplication
via rb_fstring.

* compile.c (iseq_compile_each): use rb_fstring_cstr
  (rb_insns_name_array): ditto
* load.c (rb_load_internal0): ditto
------------------------------------------------------------------------
r57744 | stomar | 2017-02-28 19:41:03 +0900 (Tue, 28 Feb 2017) | 1 line

lib/mathn.rb: [DOC] nodoc internal Math.rsqrt
------------------------------------------------------------------------
r57743 | nobu | 2017-02-28 17:22:00 +0900 (Tue, 28 Feb 2017) | 3 lines

clean gems

* Makefile.in (clean-ext): clean gem directories too.
------------------------------------------------------------------------
r57742 | hsbt | 2017-02-28 16:45:54 +0900 (Tue, 28 Feb 2017) | 6 lines

Added initial gemspec for SDBM module.

  [Feature #13261]

  * doc/*.rdoc: Move SDBM entry to default gem section.
  * ext/sdbm/sdbm.gemspec: first gemspec.
------------------------------------------------------------------------
r57741 | nobu | 2017-02-28 13:33:15 +0900 (Tue, 28 Feb 2017) | 5 lines

disable critical-error-handler

* win32/win32.c (rb_w32_sysinit): disable critical-error-handler
  message box even on mswin, regardless of runtime DLL version.
  [ruby-dev:49988] [Bug #13254]
------------------------------------------------------------------------
r57740 | nobu | 2017-02-28 11:58:12 +0900 (Tue, 28 Feb 2017) | 9 lines

Makefile.sub: ULL_TO_DOUBLE

* win32/Makefile.sub (config.h): define ULL_TO_DOUBLE for
  conversion from unsigned __int64 to double, which is not
  implemented in till Visual Studio.NET 2003, aka VC7.1.

* bignum.c (estimate_initial_sqrt): use ULL_TO_DOUBLE if defined.

* numeric.c (BDIGIT_DBL_TO_DOUBLE): ditto.
------------------------------------------------------------------------
r57739 | nobu | 2017-02-28 10:10:38 +0900 (Tue, 28 Feb 2017) | 4 lines

numeric.c: suppress warning

* numeric.c (DEFINE_INT_SQRT): suppress a type-limits warning
  where int is always smaller than double.
------------------------------------------------------------------------
r57738 | nobu | 2017-02-28 09:00:33 +0900 (Tue, 28 Feb 2017) | 4 lines

Makefile.in: CHDIR to srcdir

* Makefile.in (update-mspec, update-rubyspec): use CHDIR, which may
  use -P, to resolve symbolic links.
------------------------------------------------------------------------
r57737 | stomar | 2017-02-28 03:26:22 +0900 (Tue, 28 Feb 2017) | 9 lines

date_core.c: expand docs for Date shifting

* ext/date/date_core.c: [DOC] expand docs for Date shifting

  * add examples for Date#>> and Date#<< that clarify some edge cases
  * add examples for Date#next_year and Date#prev_year
  * add cross references to Date#>> and Date#<<

  [ruby-core:79584] [Bug #13225]
------------------------------------------------------------------------
r57736 | svn | 2017-02-28 03:07:12 +0900 (Tue, 28 Feb 2017) | 1 line

* 2017-02-28
------------------------------------------------------------------------
r57735 | stomar | 2017-02-28 03:07:11 +0900 (Tue, 28 Feb 2017) | 7 lines

Fix doc for Hash#dig and Struct#dig

* hash.c (rb_hash_dig): [DOC] correct argument name
  in method description; fix formatting in examples.
* struct.c (rb_struct_dig): ditto.

[ruby-core:79221] [Bug #13148]
------------------------------------------------------------------------
r57734 | nobu | 2017-02-27 22:52:08 +0900 (Mon, 27 Feb 2017) | 4 lines

fix nd_ainfo->kw_rest_arg

[Fix GH-5129]
Author:    fate0 <fate0@users.noreply.github.com>
------------------------------------------------------------------------
r57733 | nobu | 2017-02-27 22:52:07 +0900 (Mon, 27 Feb 2017) | 7 lines

kwrest arg name

* compile.c (iseq_set_arguments_keywords): make keyword rest
  argument name nd_vid consistently, regardless of whether other
  keyword arguments are present.  [Fix GH-1529]

* parse.y (new_args_tail_gen): ditto.
------------------------------------------------------------------------
r57732 | shyouhei | 2017-02-27 22:41:38 +0900 (Mon, 27 Feb 2017) | 2 lines

add NEWS for Random.urandom [ci skip]

------------------------------------------------------------------------
r57731 | nobu | 2017-02-27 22:22:05 +0900 (Mon, 27 Feb 2017) | 1 line

common.mk (distclean): clean docs too
------------------------------------------------------------------------
r57730 | hsbt | 2017-02-27 18:20:39 +0900 (Mon, 27 Feb 2017) | 6 lines

Added initial gemspec for Etc module.

  [Feature #13256]

  * doc/*.rdoc: move Etc module to default gem section.
  * ext/etc/etc.gemspec: first gemspec.
------------------------------------------------------------------------
r57729 | nobu | 2017-02-27 17:23:18 +0900 (Mon, 27 Feb 2017) | 3 lines

Makefile.in: by exts.mk

* Makefile.in (clean-ext): recurse by exts.mk in parallel first.
------------------------------------------------------------------------
r57728 | nobu | 2017-02-27 16:54:24 +0900 (Mon, 27 Feb 2017) | 4 lines

common.mk: clean-rubyspec

* common.mk (clean-rubyspec): remove OBJDIR for rubyspec C-API
  tests.
------------------------------------------------------------------------
r57727 | nobu | 2017-02-27 16:37:55 +0900 (Mon, 27 Feb 2017) | 5 lines

mkmf.rb: get rid of error messages

* lib/mkmf.rb (create_makefile): add TARGET_SO to CLEANLIBS only
  when the extension library will be build, to get rid of trying
  to remove $(TARGET_SO_DIR).
------------------------------------------------------------------------
r57726 | nobu | 2017-02-27 15:39:28 +0900 (Mon, 27 Feb 2017) | 7 lines

clean more

* Makefile.in (clean-local): remove debug symbol directories on
  Mac OS.

* common.mk (clean-ext): remove parent directories of timestamp
  directory.
------------------------------------------------------------------------
r57725 | nobu | 2017-02-27 15:31:25 +0900 (Mon, 27 Feb 2017) | 4 lines

Makefile.in: clean exts.mk files

* Makefile.in (clean-ext): remove exts.mk files in subdirectories
  underneath ext.
------------------------------------------------------------------------
r57724 | nobu | 2017-02-27 14:58:31 +0900 (Mon, 27 Feb 2017) | 1 line

ext/socket/extconf.rb: fix a typo
------------------------------------------------------------------------
r57723 | nobu | 2017-02-27 14:55:32 +0900 (Mon, 27 Feb 2017) | 4 lines

mkmf.rb: clean generated files

* lib/mkmf.rb (try_link0): remove generated files other than the
  executable file.
------------------------------------------------------------------------
r57722 | nobu | 2017-02-27 14:14:30 +0900 (Mon, 27 Feb 2017) | 10 lines

Makefile.in: verify-static-library

* Makefile.in (verify-static-library): separate from LIBRUBY_A.
  no check every times by default.

* lib/mkmf.rb (try_link): remove debugging symbol directory after
  linking, instead of try_do.

* lib/mkmf.rb (try_link): bccwin32 support has been removed long
  ago.
------------------------------------------------------------------------
r57721 | svn | 2017-02-27 09:53:27 +0900 (Mon, 27 Feb 2017) | 1 line

* 2017-02-27
------------------------------------------------------------------------
r57720 | nobu | 2017-02-27 09:53:26 +0900 (Mon, 27 Feb 2017) | 1 line

NEWS: Integer.sqrt [Feature #13219]
------------------------------------------------------------------------
r57719 | stomar | 2017-02-26 21:51:41 +0900 (Sun, 26 Feb 2017) | 4 lines

Add rdoc for Integer.sqrt

* numeric.c (rb_int_s_isqrt): [DOC] add rdoc for Integer.sqrt.
  [ruby-core:79762] [Bug #13251]
------------------------------------------------------------------------
r57718 | nobu | 2017-02-26 18:33:17 +0900 (Sun, 26 Feb 2017) | 6 lines

node.c: fix NODE_OP_ASGN1

* node.c (dump_node): fix a typo, index and rvalue.  fix
  NODE_OP_ASGN1 operator to nd_mid.  [Fix GH-1528]

Author:    fate0 <fate0@users.noreply.github.com>
------------------------------------------------------------------------
r57717 | nobu | 2017-02-26 09:33:06 +0900 (Sun, 26 Feb 2017) | 5 lines

parse.y: indent at invalid identifier

* parse.y (parser_heredoc_identifier): set indent only when valid
  identifier, not to dedent non-existent contents later.
  [ruby-core:79772] [Bug #13253]
------------------------------------------------------------------------
r57716 | svn | 2017-02-26 07:28:23 +0900 (Sun, 26 Feb 2017) | 1 line

* 2017-02-26
------------------------------------------------------------------------
r57715 | suke | 2017-02-26 07:28:22 +0900 (Sun, 26 Feb 2017) | 3 lines

ext/win32ole/win32ole.c(ole_initialize): avoid to fail in Windows nano server. 
This is experimental. Thanks to mwrock, Ethan Brown.

------------------------------------------------------------------------
r57714 | nobu | 2017-02-25 16:27:07 +0900 (Sat, 25 Feb 2017) | 1 line

bignum.c: use predefined IDs
------------------------------------------------------------------------
r57713 | nobu | 2017-02-25 14:44:39 +0900 (Sat, 25 Feb 2017) | 4 lines

bignum.c: improve estimate

* bignum.c (estimate_initial_sqrt, rb_big_isqrt): improve initial
  estimate by sqrt().  [ruby-core:79754] [Feature #13250]
------------------------------------------------------------------------
r57712 | nobu | 2017-02-25 13:13:42 +0900 (Sat, 25 Feb 2017) | 1 line

bignum.c (bary_zero_p): constify
------------------------------------------------------------------------
r57711 | nobu | 2017-02-25 11:59:47 +0900 (Sat, 25 Feb 2017) | 3 lines

.gdbinit: rp_bignum

* .gdbinit (rp_bignum): print bignum from higher digits.
------------------------------------------------------------------------
r57710 | normal | 2017-02-25 11:31:03 +0900 (Sat, 25 Feb 2017) | 4 lines

NEWS: document String#-@ change

* test/ruby/test_string.rb (test_uplus_minus): test deduplication
  [ruby-core:79747] [Feature #13077]
------------------------------------------------------------------------
r57709 | svn | 2017-02-25 08:31:08 +0900 (Sat, 25 Feb 2017) | 1 line

* 2017-02-25
------------------------------------------------------------------------
r57708 | nobu | 2017-02-25 08:31:07 +0900 (Sat, 25 Feb 2017) | 1 line

extract initial sqrt estimation [Feature #13219]
------------------------------------------------------------------------
r57707 | rhe | 2017-02-24 20:33:06 +0900 (Fri, 24 Feb 2017) | 4 lines

securerandom: fix up r57384

SecureRandom.gen_random_openssl still refers to Random.raw_seed, which
is renamed to Random.urandom by r57384.  [Bug #9569]
------------------------------------------------------------------------
r57706 | nobu | 2017-02-24 18:39:17 +0900 (Fri, 24 Feb 2017) | 4 lines

Integer.sqrt argument check

* numeric.c (rb_int_s_isqrt): check if the argument is an integer.
  [Feature #13219]
------------------------------------------------------------------------
r57705 | nobu | 2017-02-24 17:36:16 +0900 (Fri, 24 Feb 2017) | 1 line

Integer.sqrt [Feature #13219]
------------------------------------------------------------------------
r57704 | hsbt | 2017-02-24 16:55:50 +0900 (Fri, 24 Feb 2017) | 3 lines

Update maintainers and standard library docs for GDBM.

  [Feature #13248][ruby-core:79742]
------------------------------------------------------------------------
r57703 | hsbt | 2017-02-24 16:39:37 +0900 (Fri, 24 Feb 2017) | 4 lines

Update rdoc-5.1.0

  * Details of changes are following url.
    https://github.com/rdoc/rdoc/blob/master/History.rdoc#510--2017-02-24
------------------------------------------------------------------------
r57702 | hsbt | 2017-02-24 15:50:43 +0900 (Fri, 24 Feb 2017) | 1 line

gem name should be the downcase.
------------------------------------------------------------------------
r57701 | hsbt | 2017-02-24 15:48:55 +0900 (Fri, 24 Feb 2017) | 1 line

Added initial gemspec for GDBM module.
------------------------------------------------------------------------
r57700 | hsbt | 2017-02-24 15:32:48 +0900 (Fri, 24 Feb 2017) | 3 lines

Update psych-2.2.3

 * It's only typo fix for CRuby.
------------------------------------------------------------------------
r57699 | svn | 2017-02-24 10:01:24 +0900 (Fri, 24 Feb 2017) | 1 line

* 2017-02-24
------------------------------------------------------------------------
r57698 | normal | 2017-02-24 10:01:23 +0900 (Fri, 24 Feb 2017) | 59 lines

string.c (str_uminus): deduplicate strings

This exposes the rb_fstring internal function to return a
deduped and frozen string when a non-frozen string is given.
This is useful for writing all sorts of record processing key
values maybe stored, but certain keys and values are often
duplicated at a high frequency, so memory savings can
noticeable.

Use cases are many:

* email/NNTP header processing

  There are some standard header keys everybody uses
  (From/To/Cc/Date/Subject/Received/Message-ID/References/In-Reply-To),
  as well as common ones specific to a certain lists:
  (ruby-core has X-Redmine-* headers)
  It is also useful to dedupe values, as most inboxes have
  multiple messages from the same sender, or MUA.

* package management systems -
  things like RubyGems stores identical strings for licenses,
  dependency names, author names/emails, etc

* HTTP headers/trailers -
  standard headers (Host/Accept/Accept-Encoding/User-Agent/...)
  are common, but there are also uncommon ones.
  Values may be deduped, as well, as it is likely a user
  agent will make multiple/parallel requests to the same
  server.

* version control systems -
  this can be useful for deduplicating names of frequent
  committers (like "nobu" :)

  In linux.git and git.git, there are also common
  trailers such as Signed-Off-By/Acked-by/Reviewed-by/Fixes/...
  as well as less common ones.

* audio metadata -

  There are commonly used tags (Artist/Album/Title/Tracknumber),
  but Vorbis comments allows arbitrary key values to be stored.
  Music collections contain songs by the same artist or mutiple
  songs from the same album, so deduplicating values will be
  helpful there, too.

* JSON, YAML, XML, HTML processing

  Certain fields, tags and attributes are commonly used
  across the same and multiple documents

There is no security concern in this being a DoS vector by
causing immortal strings.  The fstring table is not a GC-root
and not walked during the mark phase.  GC-able dynamic symbols
since Ruby 2.2 are handled in the same manner, and that
implementation also relies on the non-immortality of fstrings.

[Feature #13077] [ruby-core:79663]
------------------------------------------------------------------------
r57697 | nobu | 2017-02-23 16:14:29 +0900 (Thu, 23 Feb 2017) | 4 lines

appveyor.yaml: matrix

* appveyor.yaml: use build matrix for platforms and compilers.
  resolve hard coded paths from these variables.
------------------------------------------------------------------------
r57696 | nobu | 2017-02-23 15:55:42 +0900 (Thu, 23 Feb 2017) | 4 lines

bignum.c: NAIVE_MUL_DIGITS

* bignum.c (NAIVE_MUL_DIGITS): share threshold for bary_sq_fast
  between bary_mul and bigsq.
------------------------------------------------------------------------
r57695 | nobu | 2017-02-23 13:10:41 +0900 (Thu, 23 Feb 2017) | 4 lines

fix circular dependencies

* defs/gmake.mk (TEST_DEPENDS): remove targets expanded as
  TEST_TARGETS, to get rid of circular dependencies.
------------------------------------------------------------------------
r57694 | nobu | 2017-02-23 11:40:17 +0900 (Thu, 23 Feb 2017) | 3 lines

Revert r57690 except for read_nonblock

https://github.com/ruby/ruby/pull/1527#issuecomment-281867551
------------------------------------------------------------------------
r57693 | nobu | 2017-02-23 11:11:16 +0900 (Thu, 23 Feb 2017) | 1 line

[DOC] mark up literals
------------------------------------------------------------------------
r57692 | nobu | 2017-02-23 11:00:28 +0900 (Thu, 23 Feb 2017) | 1 line

[DOC] keyword argument _exception_
------------------------------------------------------------------------
r57691 | nobu | 2017-02-23 10:54:13 +0900 (Thu, 23 Feb 2017) | 11 lines

socket.rb: [DOC] fix nonblock methods

* ext/socket/lib/socket.rb (BasicSocket#recv_nonblock): fix
  exception class and symbol.

* ext/socket/lib/socket.rb (BasicSocket#recvmsg_nonblock): ditto.

* ext/socket/lib/socket.rb (Socket#recvfrom_nonblock): fix the
  method name.

* ext/socket/lib/socket.rb (UDPSocket#recvfrom_nonblock): both.
------------------------------------------------------------------------
r57690 | nobu | 2017-02-23 10:15:27 +0900 (Thu, 23 Feb 2017) | 7 lines

[DOC] {read,write}_nonblock with exception: false

Update docs to reflect EOF behavior change of read_nonblock and
write_nonblock when using `exception: false`.

[Fix GH-1527]
Author:    Russell Davis <russell-stripe@users.noreply.github.com>
------------------------------------------------------------------------
r57689 | nobu | 2017-02-23 08:49:40 +0900 (Thu, 23 Feb 2017) | 4 lines

rational.c: infinity in power

* rational.c (nurat_expt): return 0 due to overflow.
  [ruby-core:79686] [Bug #13242]:
------------------------------------------------------------------------
r57688 | nobu | 2017-02-23 08:28:26 +0900 (Thu, 23 Feb 2017) | 4 lines

rational.c: infinity in power

* rational.c (nurat_expt): return Infinity due to overflow.
  [ruby-core:79686] [Bug #13242]:
------------------------------------------------------------------------
r57687 | svn | 2017-02-23 00:46:43 +0900 (Thu, 23 Feb 2017) | 1 line

* 2017-02-23
------------------------------------------------------------------------
r57686 | kazu | 2017-02-23 00:46:43 +0900 (Thu, 23 Feb 2017) | 8 lines

rational.c: fix rdoc

* rational.c: [DOC] fix wrong indentations and comment out some lines
  in code examples to make them valid Ruby code and syntax highlighted
  on the rendered page.

[ci skip] [ruby-core:79607] [Bug #13233]
Author:    Marcus Stollsteimer <sto.mar@web.de>
------------------------------------------------------------------------
r57685 | nobu | 2017-02-22 17:50:25 +0900 (Wed, 22 Feb 2017) | 5 lines

eval_error.c: backstrace in reverse order

* eval_error.c (rb_threadptr_error_print): print backtrace and
  error message in reverse order if STDERR is unchanged and a tty.
  [Feature #8661]
------------------------------------------------------------------------
r57684 | akr | 2017-02-22 16:31:25 +0900 (Wed, 22 Feb 2017) | 5 lines

refine warning message for binary regexp /.../n.

Reported by Herwin W.  [ruby-core:78592] [Bug #13024]


------------------------------------------------------------------------
r57683 | nobu | 2017-02-22 16:16:13 +0900 (Wed, 22 Feb 2017) | 4 lines

Thread#fetch

* thread.c (rb_thread_fetch): add new method Thread#fetch.
  [Feature #13009]
------------------------------------------------------------------------
r57682 | nobu | 2017-02-22 11:02:11 +0900 (Wed, 22 Feb 2017) | 8 lines

numeric.c: Numeric#clone and #dup

* numeric.c (num_clone, num_dup): no longer raises TypeError,
  returns the receiver instead as well as Integer and Float.
  [ruby-core:79636] [Bug #13237]

* object.c (rb_immutable_obj_clone): immutable object clone with
  freeze optional keyword argument.
------------------------------------------------------------------------
r57681 | svn | 2017-02-22 10:55:11 +0900 (Wed, 22 Feb 2017) | 1 line

* 2017-02-22
------------------------------------------------------------------------
r57680 | nobu | 2017-02-22 10:55:10 +0900 (Wed, 22 Feb 2017) | 7 lines

object.c: refactor rb_obj_clone and rb_obj_clone2

* object.c (rb_obj_clone2): extract option for clone, and split by
  whether the object is immutable or mutable.

* object.c (rb_obj_clone): no arguments, return immutable object
  immediately.
------------------------------------------------------------------------
r57679 | nobu | 2017-02-21 23:51:22 +0900 (Tue, 21 Feb 2017) | 3 lines

object.c: message encoding

* object.c (rb_obj_clone2): preserve encoding in error messages.
------------------------------------------------------------------------
r57678 | nobu | 2017-02-21 23:42:02 +0900 (Tue, 21 Feb 2017) | 4 lines

backward.h: RClassDeprecated

* include/ruby/backward.h (RClassDeprecated): move from
  ruby/ruby.h.
------------------------------------------------------------------------
r57677 | svn | 2017-02-21 17:18:16 +0900 (Tue, 21 Feb 2017) | 1 line

* properties.
------------------------------------------------------------------------
r57676 | ko1 | 2017-02-21 17:18:15 +0900 (Tue, 21 Feb 2017) | 38 lines

add performance counting mechanism for MRI debug/tuning purpose.

* How to enable this feature?
  * define USE_DEBUG_COUNTER as 1.
  * you can disable to output the result with
    RUBY_DEBUG_COUNTER_DISABLE environment variable
    even if USE_DEBUG_COUNTER == 1.

* How to add new counter?
  * add COUNTER(<name>) line on debug_counter.h.
  * include "debug_counter.h"
  * insert RB_DEBUG_COUNTER_INC(<name>) line on your favorite place.

* counter output example:
  [RUBY_DEBUG_COUNTER]    mc_inline_hit   999
  [RUBY_DEBUG_COUNTER]    mc_inline_miss  3
  [RUBY_DEBUG_COUNTER]    mc_global_hit   23
  [RUBY_DEBUG_COUNTER]    mc_global_miss  273
  [RUBY_DEBUG_COUNTER]    mc_global_state_miss    3
  [RUBY_DEBUG_COUNTER]    mc_class_serial_miss    0
  [RUBY_DEBUG_COUNTER]    mc_cme_complement       0
  [RUBY_DEBUG_COUNTER]    mc_cme_complement_hit   0
  [RUBY_DEBUG_COUNTER]    mc_search_super 1384
  [RUBY_DEBUG_COUNTER]    ivar_get_hit    0
  [RUBY_DEBUG_COUNTER]    ivar_get_miss   0
  [RUBY_DEBUG_COUNTER]    ivar_set_hit    0
  [RUBY_DEBUG_COUNTER]    ivar_set_miss   0
  [RUBY_DEBUG_COUNTER]    ivar_get        431
  [RUBY_DEBUG_COUNTER]    ivar_set        465

  * mc_... is related to method caching.
  * ivar_... is related to instance variable accesses.

* compare with dtrace/system tap features, there are completely
  no performacne penalties when it is disabled.

* This feature is supported only on __GNUC__ compilers.

------------------------------------------------------------------------
r57675 | nobu | 2017-02-21 15:16:50 +0900 (Tue, 21 Feb 2017) | 4 lines

backward.h: move deprecated declaration

* include/ruby/backward.h (rb_autoload): move declaration of
  deprecated function.
------------------------------------------------------------------------
r57674 | nobu | 2017-02-21 15:16:49 +0900 (Tue, 21 Feb 2017) | 1 line

variable.c: remove deprecated internal feature
------------------------------------------------------------------------
r57673 | nobu | 2017-02-21 15:07:22 +0900 (Tue, 21 Feb 2017) | 1 line

error.c: remove deprecated internal features
------------------------------------------------------------------------
r57672 | nobu | 2017-02-21 15:07:21 +0900 (Tue, 21 Feb 2017) | 4 lines

complex.c: remove deprecated functions

* complex.c (rb_complex_set_real, rb_complex_set_imag): remove
  functions deprecated at 2.2.
------------------------------------------------------------------------
r57671 | nobu | 2017-02-21 14:17:41 +0900 (Tue, 21 Feb 2017) | 4 lines

backward.h: 2.2 deprecated features

* include/ruby/backward.h (DECLARE_DEPRECATED_FEATURE): move
  features deprecated at 2.2.
------------------------------------------------------------------------
r57670 | nobu | 2017-02-21 14:16:49 +0900 (Tue, 21 Feb 2017) | 4 lines

internal.h: removed function declaration

* internal.h (rb_compile_error_str): remove declaration of removed
  internal function at r54189.
------------------------------------------------------------------------
r57669 | nobu | 2017-02-21 10:28:30 +0900 (Tue, 21 Feb 2017) | 4 lines

variable.c: noreturn in GCC

* variable.c (rb_generic_ivar_table): declare as noreturn only in
  GCC, which does not err on different attributes.
------------------------------------------------------------------------
r57668 | svn | 2017-02-21 04:12:53 +0900 (Tue, 21 Feb 2017) | 1 line

* 2017-02-21
------------------------------------------------------------------------
r57667 | ko1 | 2017-02-21 04:12:52 +0900 (Tue, 21 Feb 2017) | 4 lines

remove harmful declaration.

* variable.c (gen_ivtbl_get): declaration conflict on VC++.

------------------------------------------------------------------------
r57666 | yui-knk | 2017-02-20 23:40:56 +0900 (Mon, 20 Feb 2017) | 4 lines

compile.c: Fix a typo

* compile.c (compile_branch_condition): NODE_LIT is
  always true.
------------------------------------------------------------------------
r57665 | kazu | 2017-02-20 21:20:22 +0900 (Mon, 20 Feb 2017) | 12 lines

extension.rdoc: add document title

* doc/extension.rdoc, doc/extension.ja.rdoc: [DOC]
  add title and adapt subheading levels.

* doc/extension.rdoc: [DOC] fix subheading level of section
  about "Ruby Constants That Can Be Accessed From C".

* doc/extension.ja.rdoc: [DOC] add missing subheading.

[ruby-core:79590] [Bug #13229]
Author:    Marcus Stollsteimer <sto.mar@web.de>
------------------------------------------------------------------------
r57664 | naruse | 2017-02-20 19:59:10 +0900 (Mon, 20 Feb 2017) | 3 lines

Supress warning: function might be candidate for attribute 'noreturn'

GCC7 shows it.
------------------------------------------------------------------------
r57663 | naruse | 2017-02-20 19:59:10 +0900 (Mon, 20 Feb 2017) | 1 line

Cast as VALUE to suppress type warnings
------------------------------------------------------------------------
r57662 | naruse | 2017-02-20 19:59:09 +0900 (Mon, 20 Feb 2017) | 1 line

They are enum yytokentype, need cast
------------------------------------------------------------------------
r57661 | nobu | 2017-02-20 19:10:08 +0900 (Mon, 20 Feb 2017) | 4 lines

assertions.rb: ignore exit in child

* test/lib/test/unit/assertions.rb (assert_separately): ignore
  SystemExit.  unsuccessful exit still fails an assertion later.
------------------------------------------------------------------------
r57660 | nobu | 2017-02-20 18:46:12 +0900 (Mon, 20 Feb 2017) | 5 lines

regparse.c: initialize return values

* regparse.c (parse_char_class): initialize return values before
  depth limit check.  returned values will be freed in callers
  regardless the error.  [ruby-core:79624] [Bug #13234]
------------------------------------------------------------------------
r57659 | nobu | 2017-02-20 14:35:57 +0900 (Mon, 20 Feb 2017) | 1 line

parse.y: new_qcall
------------------------------------------------------------------------
r57658 | nobu | 2017-02-20 14:35:56 +0900 (Mon, 20 Feb 2017) | 3 lines

parse.y: ID2VAL

* parse.y (ID2VAL): split from TOKEN2VAL.
------------------------------------------------------------------------
r57657 | svn | 2017-02-20 11:16:23 +0900 (Mon, 20 Feb 2017) | 1 line

* 2017-02-20
------------------------------------------------------------------------
r57656 | nobu | 2017-02-20 11:16:22 +0900 (Mon, 20 Feb 2017) | 4 lines

envutil.rb: diagnostic_reports for ruby-runner

* test/lib/envutil.rb (EnvUtil.diagnostic_reports): ruby-runner
  execs "RUBY_INSTALL_NAME" file, so search by that name.
------------------------------------------------------------------------
r57655 | nobu | 2017-02-19 10:27:52 +0900 (Sun, 19 Feb 2017) | 5 lines

vm_insnhelper.c: super to module in refinement

* vm_insnhelper.c (vm_call_zsuper): method defined in module in
  refinement is not callable as-is.  dispatch again.
  [ruby-core:79588] [Bug #13227]
------------------------------------------------------------------------
r57654 | svn | 2017-02-19 07:38:36 +0900 (Sun, 19 Feb 2017) | 1 line

* 2017-02-19
------------------------------------------------------------------------
r57653 | nobu | 2017-02-19 07:38:35 +0900 (Sun, 19 Feb 2017) | 5 lines

COPYING: expand tabs

* COPYING: expand tabs like as the rest lines.  [Fix GH-1526]

Author: Philippe Ombredanne <pombredanne@gmail.com>
------------------------------------------------------------------------
r57652 | kazu | 2017-02-18 14:52:16 +0900 (Sat, 18 Feb 2017) | 1 line

{lib,test}/cgi: Specify frozen_string_literal: true.
------------------------------------------------------------------------
r57651 | nobu | 2017-02-18 13:23:20 +0900 (Sat, 18 Feb 2017) | 4 lines

array.c: check if numeric

* array.c (finish_exact_sum): add 0 and the initial value to check
  if the latter is numeric.  [ruby-core:79572] [Bug #13222]
------------------------------------------------------------------------
r57650 | svn | 2017-02-18 12:42:36 +0900 (Sat, 18 Feb 2017) | 1 line

* 2017-02-18
------------------------------------------------------------------------
r57649 | nobu | 2017-02-18 12:42:35 +0900 (Sat, 18 Feb 2017) | 4 lines

array.c: finish_exact_sum

* array.c (finish_exact_sum): extract duplicate code from
  rb_ary_sum.
------------------------------------------------------------------------
r57648 | nobu | 2017-02-17 22:31:43 +0900 (Fri, 17 Feb 2017) | 5 lines

test_fileutils.rb: no broken symlinks on Cygwin

* test/fileutils/test_fileutils.rb (no_broken_symlink): exclude
  test using broken symlinks on Cygwin, which are not allowed
  because of the directory flag of Windows native symlink.
------------------------------------------------------------------------
r57647 | nobu | 2017-02-17 22:31:42 +0900 (Fri, 17 Feb 2017) | 5 lines

test_fileutils.rb: fix relative symlink path

* test/fileutils/test_fileutils.rb (test_rm_symlink): fix relative
  symlink path, the target should be relative to the directory in
  which the symlink gets created.
------------------------------------------------------------------------
r57646 | nobu | 2017-02-17 19:22:10 +0900 (Fri, 17 Feb 2017) | 4 lines

test_fileutils.rb: workaround for Cygwin

* test/fileutils/test_fileutils.rb (root_in_posix): seems Cygwin
  has some different conditions for privilege.
------------------------------------------------------------------------
r57645 | nobu | 2017-02-17 19:22:09 +0900 (Fri, 17 Feb 2017) | 5 lines

test_fileutils.rb: cache distinct UIDs

* test/fileutils/test_fileutils.rb: cache distinct UIDs as
  constants at initialization.  assume no UIDs will be
  added/removed during tests.
------------------------------------------------------------------------
r57644 | svn | 2017-02-17 14:45:45 +0900 (Fri, 17 Feb 2017) | 1 line

* 2017-02-17
------------------------------------------------------------------------
r57643 | nobu | 2017-02-17 14:45:44 +0900 (Fri, 17 Feb 2017) | 6 lines

DEPRECATED_INTERNAL_FEATURE

* error.c (ruby_deprecated_internal_feature): renamed, to
  explicitly represent deprecation.

* internal.h (DEPRECATED_INTERNAL_FEATURE): ditto.
------------------------------------------------------------------------
r57642 | nobu | 2017-02-16 23:48:12 +0900 (Thu, 16 Feb 2017) | 3 lines

variable.c: fatal rb_generic_ivar_table

* variable.c (rb_generic_ivar_table): raise fatal error.
------------------------------------------------------------------------
r57641 | ko1 | 2017-02-16 18:15:26 +0900 (Thu, 16 Feb 2017) | 2 lines

use rb_iseq_check() for USE_LAZY_LOAD, too.

------------------------------------------------------------------------
r57640 | nobu | 2017-02-16 17:42:22 +0900 (Thu, 16 Feb 2017) | 6 lines

fileutils.rb: do not make root

* lib/fileutils.rb (FileUtils#mkdir_p): no need to make root
  directory which should be exist and cannot be made with mkdir
  recent Cygwin can make a directory contains a colon.
  [Bug #13214]
------------------------------------------------------------------------
r57639 | ko1 | 2017-02-16 17:24:37 +0900 (Thu, 16 Feb 2017) | 2 lines

use rb_iseq_check() for USE_LAZY_LOAD.

------------------------------------------------------------------------
r57638 | svn | 2017-02-16 11:47:22 +0900 (Thu, 16 Feb 2017) | 1 line

* 2017-02-16
------------------------------------------------------------------------
r57637 | nobu | 2017-02-16 11:47:21 +0900 (Thu, 16 Feb 2017) | 6 lines

win32.c: memcpy instead of strlcpy

* win32/win32.c (cmdglob): memcpy the exact size instead of
  strlcpy with +1.

* win32/win32.c (w32_cmdvector): ditto, with NUL-terminating.
------------------------------------------------------------------------
r57636 | nobu | 2017-02-15 20:17:53 +0900 (Wed, 15 Feb 2017) | 1 line

Update gems/bundled_gems
------------------------------------------------------------------------
r57635 | nobu | 2017-02-15 19:51:58 +0900 (Wed, 15 Feb 2017) | 4 lines

gmake.mk: mflags without -jN

* defs/gmake.mk (mflags): override the definition in common.mk
  without -jN option.
------------------------------------------------------------------------
r57634 | nobu | 2017-02-15 17:38:01 +0900 (Wed, 15 Feb 2017) | 7 lines

marshal.c: revert r57631 partially

* marshal.c (rb_marshal_dump_limited): do not free dump_arg, which
  may be dereferenced in check_dump_arg due to continuation, and
  get rid of dangling pointers.

* marshal.c (rb_marshal_load_with_proc): ditto for load_arg.
------------------------------------------------------------------------
r57633 | nobu | 2017-02-15 14:53:01 +0900 (Wed, 15 Feb 2017) | 3 lines

thread.c: fix for VC

* thread.c (rb_fd_no_init): make void same as rb_fd_init_copy.
------------------------------------------------------------------------
r57632 | svn | 2017-02-15 09:42:52 +0900 (Wed, 15 Feb 2017) | 1 line

* 2017-02-15
------------------------------------------------------------------------
r57631 | normal | 2017-02-15 09:42:51 +0900 (Wed, 15 Feb 2017) | 11 lines

marshal.c: use hidden objects to allow recycling

Hidden objects (klass == 0) are not visible to Ruby code invoked
from other threads or signal handlers, so they can never be
accessed from other contexts.  This makes it safe to call
rb_gc_force_recycle on the object slot after releasing malloc
memory.

* marshal.c (rb_marshal_dump_limited): hide dump_arg and recycle when done
  (rb_marshal_load_with_proc): hide load_arg and recycle when done
  [ruby-core:79518]
------------------------------------------------------------------------
r57630 | kou | 2017-02-14 22:29:13 +0900 (Tue, 14 Feb 2017) | 2 lines

Fix a typo

------------------------------------------------------------------------
r57629 | nobu | 2017-02-14 21:34:11 +0900 (Tue, 14 Feb 2017) | 4 lines

resolv9x.rb: fix typo

* ext/win32/lib/win32/resolv9x.rb (WsControl): fix missing close
  parenthesis at r22724.
------------------------------------------------------------------------
r57628 | nobu | 2017-02-14 21:29:56 +0900 (Tue, 14 Feb 2017) | 4 lines

string.c: assertion

* string.c (str_shared_replace): use RUBY_ASSERT for
  pre-condition.
------------------------------------------------------------------------
r57627 | hsbt | 2017-02-14 20:12:52 +0900 (Tue, 14 Feb 2017) | 3 lines

Added initial gemspec for Scanf module.

  [Feature #13213]
------------------------------------------------------------------------
r57625 | nobu | 2017-02-14 16:52:30 +0900 (Tue, 14 Feb 2017) | 6 lines

initialize variables

* string.c (rb_str_enumerate_lines): initialize conditionally
  used variable.

* thread.c (rb_fd_no_init): ditto.
------------------------------------------------------------------------
r57624 | nobu | 2017-02-14 00:28:25 +0900 (Tue, 14 Feb 2017) | 4 lines

gmake.mk: test-ruby

* defs/gmake.mk (ORDERED_TEST_TARGETS): add test-ruby target, test
  for ruby core without bundled libraries.
------------------------------------------------------------------------
r57623 | svn | 2017-02-14 00:19:13 +0900 (Tue, 14 Feb 2017) | 1 line

* 2017-02-14
------------------------------------------------------------------------
r57622 | nobu | 2017-02-14 00:19:12 +0900 (Tue, 14 Feb 2017) | 4 lines

thread.c: use ASSUME only on gcc 5 or later

* thread.c (rb_fd_no_init): on gcc 4, ASSUME macro affects
  something too much.
------------------------------------------------------------------------
r57621 | nobu | 2017-02-13 22:08:44 +0900 (Mon, 13 Feb 2017) | 4 lines

ruby.h: remove comment

* include/ruby/ruby.h (RB_GC_GUARD): remove comment unsupported by
  Solaris AS.
------------------------------------------------------------------------
r57620 | kazu | 2017-02-13 21:16:26 +0900 (Mon, 13 Feb 2017) | 1 line

lib/find.rb: Specify frozen_string_literal: true.
------------------------------------------------------------------------
r57619 | nobu | 2017-02-13 17:14:19 +0900 (Mon, 13 Feb 2017) | 4 lines

ruby.h: RB_GC_GUARD stronger than gcc7

* include/ruby/ruby.h (RB_GC_GUARD): prevent guarded pointer from
  optimization by using as an input to inline asm.
------------------------------------------------------------------------
r57618 | nobu | 2017-02-13 14:44:15 +0900 (Mon, 13 Feb 2017) | 6 lines

suppress warnings

* string.c (rb_str_enumerate_lines): hint to suppress a
  maybe-uninitialized warning by gcc.

* thread.c (rb_fd_no_init): ditto.
------------------------------------------------------------------------
r57617 | nobu | 2017-02-13 14:23:36 +0900 (Mon, 13 Feb 2017) | 4 lines

compile.c: suppress a warning

* compile.c (iseq_build_kw): suppress an alloc-size-larger-than
  warning by gcc 7.
------------------------------------------------------------------------
r57616 | nobu | 2017-02-13 14:11:14 +0900 (Mon, 13 Feb 2017) | 3 lines

gmake.mk: tests step

* defs/gmake.mk (TEST_TARGETS): run tests step by step.
------------------------------------------------------------------------
r57615 | normal | 2017-02-13 11:04:26 +0900 (Mon, 13 Feb 2017) | 6 lines

array.c (ary_recycle_hash): use rb_gc_force_recycle

Hidden objects (RBASIC_CLASS(hash) == 0) can never become
visible to other threads or signal handlers via
ObjectSpace.each_object or similar means.  Thus it is safe to
forcibly recycle the object slot for future use, here.
------------------------------------------------------------------------
r57614 | normal | 2017-02-13 10:05:23 +0900 (Mon, 13 Feb 2017) | 6 lines

cont.c: avoid needless branch for dmark callbacks

gc.c (gc_mark_children, case T_DATA) does not use
the dmark function pointer if DATA_PTR is NULL

* cont.c (cont_mark, fiber_mark): remove branch, ptr is never NULL
------------------------------------------------------------------------
r57613 | svn | 2017-02-13 08:37:29 +0900 (Mon, 13 Feb 2017) | 1 line

* 2017-02-13
------------------------------------------------------------------------
r57612 | nobu | 2017-02-13 08:37:28 +0900 (Mon, 13 Feb 2017) | 4 lines

gmake.mk: -n for tests

* defs/gmake.mk (gnumake_recursive): do not invoke tests if -n
  option is given.
------------------------------------------------------------------------
r57611 | nobu | 2017-02-12 17:43:43 +0900 (Sun, 12 Feb 2017) | 1 line

parse.y: ripper_intern is no longer used
------------------------------------------------------------------------
r57610 | nobu | 2017-02-12 17:33:33 +0900 (Sun, 12 Feb 2017) | 6 lines

parse.y: logop

* defs/id.def (predefined): add keywords `and` and `or`.

* parse.y (log_op): unify parser and ripper, and use tokens
  instead of node types and symbols.
------------------------------------------------------------------------
r57609 | kazu | 2017-02-12 13:31:25 +0900 (Sun, 12 Feb 2017) | 1 line

ext/objspace: Specify frozen_string_literal: true.
------------------------------------------------------------------------
r57608 | nobu | 2017-02-12 13:23:16 +0900 (Sun, 12 Feb 2017) | 4 lines

parse.y: call_bin_op

* parse.y (call_bin_op): unify parser and ripper, and use IDs
  instead of tokens.
------------------------------------------------------------------------
r57607 | nobu | 2017-02-12 13:20:35 +0900 (Sun, 12 Feb 2017) | 6 lines

parse.y: call_uni_op

* defs/id.def (predefined): add keyword `not`.

* parse.y (call_uni_op): unify parser and ripper, and use IDs
  instead of tokens.
------------------------------------------------------------------------
r57606 | nobu | 2017-02-12 12:15:34 +0900 (Sun, 12 Feb 2017) | 6 lines

ripper: fix %-op on_operator_ambiguous

* parse.y (ambiguous_operator): separate token and string
  representation of operators, to fix %-operator argument.  in a
  warning message, needs to be escaped by '%' but the symbol
  should not be.
------------------------------------------------------------------------
r57605 | nobu | 2017-02-12 11:48:28 +0900 (Sun, 12 Feb 2017) | 4 lines

symbol/init.c: ID value

* ext/-test-/symbol/init.c (sym_pinneddown_p): return ID value or
  nil for debugging.
------------------------------------------------------------------------
r57604 | svn | 2017-02-12 00:08:34 +0900 (Sun, 12 Feb 2017) | 1 line

* 2017-02-12
------------------------------------------------------------------------
r57603 | naruse | 2017-02-12 00:08:33 +0900 (Sun, 12 Feb 2017) | 4 lines

Merge Onigmo 6.1.1

* Support absent operator https://github.com/k-takata/Onigmo/issues/82
* https://github.com/k-takata/Onigmo/blob/Onigmo-6.1.1/HISTORY
------------------------------------------------------------------------
r57602 | nobu | 2017-02-11 20:37:14 +0900 (Sat, 11 Feb 2017) | 1 line

appveyor.yml: extract zlib_version
------------------------------------------------------------------------
r57601 | nobu | 2017-02-11 19:33:05 +0900 (Sat, 11 Feb 2017) | 5 lines

fiddle/depend: build-libffi

* ext/fiddle/depend (build-libffi): get rid of making $(LIBFFI_A)
  a sole target, which may be empty when installed libffi is
  found.
------------------------------------------------------------------------
r57600 | kazu | 2017-02-11 12:12:59 +0900 (Sat, 11 Feb 2017) | 4 lines

appveyor.yml: Update zlib

* Update zlib to 1.2.11
* Use https instead of http
------------------------------------------------------------------------
r57599 | svn | 2017-02-11 11:14:07 +0900 (Sat, 11 Feb 2017) | 1 line

* 2017-02-11
------------------------------------------------------------------------
r57598 | nobu | 2017-02-11 11:14:06 +0900 (Sat, 11 Feb 2017) | 6 lines

parse.y: TOKEN2ID

* parse.y (TOKEN2ID): add macro which maps static tokens to IDs.

* template/id.h.tmpl (TOKEN2*ID, DEFINE_*ID_FROM_TOKEN): separate
  into macros, token to ID mapping and enum definitions.
------------------------------------------------------------------------
r57597 | mrkn | 2017-02-10 22:23:58 +0900 (Fri, 10 Feb 2017) | 5 lines

bigdecimal: version 1.3.1

Import bigdecimal version 1.3.1.  The full commit log is here:

  https://github.com/ruby/bigdecimal/compare/v1.3.0...v1.3.1
------------------------------------------------------------------------
r57596 | hsbt | 2017-02-10 18:41:15 +0900 (Fri, 10 Feb 2017) | 7 lines

Added initial gemspec for Fcntl module.

  [Feature #13206]

  * ext/fcntl/fcntl.gemspec: initial commit.
  * doc/maintainers.rdoc, doc/standard_library.rdoc: Move Fcntl module
    to Default gems section.
------------------------------------------------------------------------
r57595 | ko1 | 2017-02-10 17:15:39 +0900 (Fri, 10 Feb 2017) | 2 lines

check thread deadness correctly.

------------------------------------------------------------------------
r57594 | nobu | 2017-02-10 15:12:22 +0900 (Fri, 10 Feb 2017) | 9 lines

MFLAGS for nmake

* common.mk (mflags): pass make flags to sub-makes, for nmake
  which cannot pass them by the environment variable.

* defs/gmake.mk (mflags): filter out -j option for sub-makes.

* template/exts.mk.tmpl (MFLAGS): extract MFLAGS from sub extmk
  files for nmake.
------------------------------------------------------------------------
r57593 | nobu | 2017-02-10 13:24:08 +0900 (Fri, 10 Feb 2017) | 5 lines

fiddle: fix $(SUBMAKE_PRE)

* ext/fiddle/extconf.rb: fix $(SUBMAKE_PRE) to chdir to
  $(LIBFFI_DIR) instead of $(@D), since $(LIBFFI_A) is not
  underneath libffi but under .libs.
------------------------------------------------------------------------
r57592 | nobu | 2017-02-10 12:59:55 +0900 (Fri, 10 Feb 2017) | 4 lines

openssl: fix broken openssl check

* ext/openssl/deprecation.rb: check for broken OpenSSL only on mac
  OS.  [ruby-core:79475] [Bug #13200]
------------------------------------------------------------------------
r57591 | nobu | 2017-02-10 12:58:02 +0900 (Fri, 10 Feb 2017) | 4 lines

openssl: fix broken openssl check

* ext/openssl/extconf.rb: check for broken OpenSSL only on mac OS.
  [ruby-core:79475] [Bug #13200]
------------------------------------------------------------------------
r57590 | nobu | 2017-02-10 12:58:01 +0900 (Fri, 10 Feb 2017) | 4 lines

extmk.rb: split notes

* ext/extmk.rb: split notes and echo per lines, for multiple lines
  messages.  [ruby-core:79475] [Bug #13200]
------------------------------------------------------------------------
r57589 | nobu | 2017-02-10 10:13:22 +0900 (Fri, 10 Feb 2017) | 5 lines

parallel.rb: fix intervention

* test/lib/test/unit/parallel.rb (_report): send a response and a
  newline atomically, to get rid of intervention with "p" which
  runs in a separate thread.
------------------------------------------------------------------------
r57588 | kazu | 2017-02-10 09:58:47 +0900 (Fri, 10 Feb 2017) | 1 line

Use `unpack1` instead of `unpack` and `first`
------------------------------------------------------------------------
r57587 | kazu | 2017-02-10 09:58:45 +0900 (Fri, 10 Feb 2017) | 1 line

lib/base64.rb: Specify frozen_string_literal: true.
------------------------------------------------------------------------
r57586 | svn | 2017-02-10 01:12:01 +0900 (Fri, 10 Feb 2017) | 1 line

* 2017-02-10
------------------------------------------------------------------------
r57585 | kazu | 2017-02-10 01:12:00 +0900 (Fri, 10 Feb 2017) | 1 line

lib/abbrev.rb: Specify frozen_string_literal: true.
------------------------------------------------------------------------
r57584 | akr | 2017-02-09 23:28:27 +0900 (Thu, 09 Feb 2017) | 7 lines

[DOC] Update an obsolete example for slice_before.

The argument for Enumerable#slice_before is is removed at Ruby 2.3.

Reported by Shyouhei Urabe.  [Bug #13202]


------------------------------------------------------------------------
r57583 | nobu | 2017-02-09 21:08:56 +0900 (Thu, 09 Feb 2017) | 4 lines

fiddle: jobserver for libffi

* ext/fiddle/depend (libffi): use $(MAKE) explicitly for recursive
  make, so that jobserver works.
------------------------------------------------------------------------
r57582 | hsbt | 2017-02-09 20:46:32 +0900 (Thu, 09 Feb 2017) | 5 lines

Update maintainers list.

 * Added Default gems section and move some libraries to it section.
 * Added Bundled gems section and added upstream repositories of bundled gems.
 * Added upstream repositories to some default gems.
------------------------------------------------------------------------
r57581 | hsbt | 2017-02-09 20:26:21 +0900 (Thu, 09 Feb 2017) | 5 lines

Update latest infomation of standard libraries.

 * Added Bundled gems section.
 * Added IO::console to Default gems.
 * Move XMLRPC to Bundled gems section.
------------------------------------------------------------------------
r57580 | hsbt | 2017-02-09 19:49:08 +0900 (Thu, 09 Feb 2017) | 1 line

Separated default gems section.
------------------------------------------------------------------------
r57579 | svn | 2017-02-09 16:53:53 +0900 (Thu, 09 Feb 2017) | 1 line

* 2017-02-09
------------------------------------------------------------------------
r57578 | nobu | 2017-02-09 16:53:52 +0900 (Thu, 09 Feb 2017) | 5 lines

parse.y: fix idCOLON2

* defs/id.def: remove idDSTAR and idCOLON3.

* parse.y (tCOLON2): make same as id.h.
------------------------------------------------------------------------
r57577 | hsbt | 2017-02-08 19:05:13 +0900 (Wed, 08 Feb 2017) | 3 lines

Added initial gemspec for DBM module.

  [Feature #13201]
------------------------------------------------------------------------
r57576 | nobu | 2017-02-08 16:06:37 +0900 (Wed, 08 Feb 2017) | 4 lines

parse.y: named caputre into match_op_gen

* parse.y (match_op_gen): move making named capture assignment
  nodes.  remove repeated conditions.
------------------------------------------------------------------------
r57575 | ko1 | 2017-02-08 12:59:53 +0900 (Wed, 08 Feb 2017) | 2 lines

remove warning about enum and int comparison.

------------------------------------------------------------------------
r57574 | svn | 2017-02-08 10:18:56 +0900 (Wed, 08 Feb 2017) | 1 line

* 2017-02-08
------------------------------------------------------------------------
r57573 | nobu | 2017-02-08 10:18:56 +0900 (Wed, 08 Feb 2017) | 4 lines

node.c: compress logop sequence

* node.c (dump_node): compress sequence of same logical binary
  operators, NODE_AND/NODE_OR.
------------------------------------------------------------------------
r57564 | kazu | 2017-02-07 21:49:57 +0900 (Tue, 07 Feb 2017) | 1 line

{ext,test}/zlib: Specify frozen_string_literal: true.
------------------------------------------------------------------------
r57563 | nobu | 2017-02-07 17:16:50 +0900 (Tue, 07 Feb 2017) | 5 lines

test/unit.rb: old GNU make

* test/lib/test/unit.rb (Test::Unit::Parallel#non_options):
  support old GNU make, which uses --jobserver-fds option instead
  of --jobserver-auth.
------------------------------------------------------------------------
r57562 | nobu | 2017-02-07 17:09:23 +0900 (Tue, 07 Feb 2017) | 4 lines

test_parallel.rb: match the count

* test/testunit/test_parallel.rb (test_should_run_all_without_any_leaks):
  match the final test count instead of progressing indicators.
------------------------------------------------------------------------
r57561 | hsbt | 2017-02-07 16:14:22 +0900 (Tue, 07 Feb 2017) | 1 line

Fix a required ruby version on gemspec of gemified libraries.
------------------------------------------------------------------------
r57560 | hsbt | 2017-02-07 16:14:21 +0900 (Tue, 07 Feb 2017) | 1 line

Added initial gemspec for StringScanner class.
------------------------------------------------------------------------
r57559 | nobu | 2017-02-07 14:19:29 +0900 (Tue, 07 Feb 2017) | 4 lines

test/unit.rb: most-asserted

* test/lib/test/unit.rb (Statistics#record): record most asserted
  tests.
------------------------------------------------------------------------
r57558 | ko1 | 2017-02-07 13:24:44 +0900 (Tue, 07 Feb 2017) | 2 lines

TRUE is not defined here...

------------------------------------------------------------------------
r57557 | ko1 | 2017-02-07 13:14:25 +0900 (Tue, 07 Feb 2017) | 6 lines

remove compare with enum value.

* vm_core.h (vm_block_handler_verify): some compilers warn about comparison
  with enum value and 0. Real assertion is in vm_block_handler_type() so
  we only need to call vm_block_handler_type() and the value should be TRUE.

------------------------------------------------------------------------
r57556 | nobu | 2017-02-07 12:58:07 +0900 (Tue, 07 Feb 2017) | 4 lines

test/unit.rb: defined

* test/lib/test/unit.rb (Test::Unit::Statistics#record): check if
  @longest is set first.
------------------------------------------------------------------------
r57555 | nobu | 2017-02-07 12:55:47 +0900 (Tue, 07 Feb 2017) | 7 lines

test/unit: record in parallel

* test/lib/test/unit.rb (Test::Unit::Parallel#deal): deal with
  record.

* test/lib/test/unit/parallel.rb (Test::Unit::Worker#record):
  report test records to the master.
------------------------------------------------------------------------
r57554 | nobu | 2017-02-07 11:49:04 +0900 (Tue, 07 Feb 2017) | 4 lines

test/unit.rb: statistics

* test/lib/test/unit.rb (Test::Unit::Statistics): show statistics.
  only --longest option is implemented right now.
------------------------------------------------------------------------
r57553 | svn | 2017-02-07 11:49:03 +0900 (Tue, 07 Feb 2017) | 1 line

* 2017-02-07
------------------------------------------------------------------------
r57552 | nobu | 2017-02-07 11:49:02 +0900 (Tue, 07 Feb 2017) | 3 lines

rbinstall.rb: umask hack

* tool/rbinstall.rb (Gem::Installer#install): moved umask hack.
------------------------------------------------------------------------
r57551 | kazu | 2017-02-06 22:23:39 +0900 (Mon, 06 Feb 2017) | 1 line

{ext,test}/strscan: Specify frozen_string_literal: true.
------------------------------------------------------------------------
r57550 | hsbt | 2017-02-06 18:51:17 +0900 (Mon, 06 Feb 2017) | 3 lines

Added initial gemspec for FileUtils module.

  [Feature #13197]
------------------------------------------------------------------------
r57549 | nobu | 2017-02-06 16:34:13 +0900 (Mon, 06 Feb 2017) | 13 lines

date_core.c: [DOC] revise docs [ci skip]

* fix malformed rdoc for Date#today, Date._strptime,
  and DateTime._strptime
* add code examples for Date#<< and Date#>> to demonstrate
  that different dates can result in the same return value
* use Date::ITALY in call-seq instead of only ITALY
* fix some copy/paste mistakes where Date should be DateTime
* fix various errors and grammar
* fix cross references and formatting

[ruby-core:79433] [Bug #13193]
Author:    Marcus Stollsteimer <sto.mar@web.de>
------------------------------------------------------------------------
r57548 | nobu | 2017-02-06 11:35:48 +0900 (Mon, 06 Feb 2017) | 5 lines

rdoc: suppress warnings in eval

* lib/rdoc/markup/to_html.rb (RDoc::Markup::ToHtml): the argument
  text may contain warnings, which are useless to check if
  parseable.  merge rdoc/rdoc#440.
------------------------------------------------------------------------
r57547 | nobu | 2017-02-06 11:35:47 +0900 (Mon, 06 Feb 2017) | 1 line

common.mk: suppress debugging messages
------------------------------------------------------------------------
r57546 | nobu | 2017-02-06 08:52:49 +0900 (Mon, 06 Feb 2017) | 4 lines

rbinstall.rb: Gem::Installer lacks dir_mode option

* tool/rbinstall.rb (bundle-gems): Gem::Installer does not support
  directory permission option, set umask to owner writable.
------------------------------------------------------------------------
r57545 | nobu | 2017-02-06 08:52:48 +0900 (Mon, 06 Feb 2017) | 1 line

rbinstall.rb: rename tags
------------------------------------------------------------------------
r57544 | nobu | 2017-02-06 01:23:12 +0900 (Mon, 06 Feb 2017) | 1 line

tool/rbinstall.rb: add new tags
------------------------------------------------------------------------
r57543 | nobu | 2017-02-06 01:23:11 +0900 (Mon, 06 Feb 2017) | 6 lines

rbinstall.rb: default umask

* tool/rbinstall.rb: revert r49841 and default umask to just
  prohibit all from writing.  symlink(2) has no argument to set
  permissions but is affected by umask.
  [ruby-dev:49975] [Bug #13194]
------------------------------------------------------------------------
r57542 | svn | 2017-02-06 01:07:31 +0900 (Mon, 06 Feb 2017) | 1 line

* 2017-02-06
------------------------------------------------------------------------
r57541 | naruse | 2017-02-06 01:07:30 +0900 (Mon, 06 Feb 2017) | 1 line

@job_tokens is defined iff @jobserver is true
------------------------------------------------------------------------
r57540 | yui-knk | 2017-02-05 23:16:52 +0900 (Sun, 05 Feb 2017) | 3 lines

node.c: Fix a typo

* node.c (dump_node): Fix a typo of || operator example
------------------------------------------------------------------------
r57539 | nobu | 2017-02-05 20:15:49 +0900 (Sun, 05 Feb 2017) | 5 lines

rational.c: fix rdoc [ci skip]

* rational.c (rb_rational_plus): [DOC] fix an example.
  A patch by Trygve Flathen <at.ruby-lang AT flathen.net> in
  [ruby-core:71755].  [Bug #11752]
------------------------------------------------------------------------
r57538 | kazu | 2017-02-05 16:54:32 +0900 (Sun, 05 Feb 2017) | 1 line

{ext,test}/ripper: Specify frozen_string_literal: true.
------------------------------------------------------------------------
r57537 | nobu | 2017-02-05 10:26:27 +0900 (Sun, 05 Feb 2017) | 4 lines

pty/shl.rb: update [ci skip]

* sample/pty/shl.rb: leap exited child process.
  [ruby-dev:49974] [Bug #13191]
------------------------------------------------------------------------
r57536 | normal | 2017-02-05 09:22:03 +0900 (Sun, 05 Feb 2017) | 9 lines

doc: Add example for Symbol#to_s

* string.c: add example for Symbol#to_s.

The docs for Symbol#to_s only include an example for
Symbol#id2name, but not for #to_s which is an alias;
the docs should include examples for both methods.

From: Marcus Stollsteimer <sto.mar@web.de>
------------------------------------------------------------------------
r57535 | svn | 2017-02-05 03:14:43 +0900 (Sun, 05 Feb 2017) | 1 line

* 2017-02-05
------------------------------------------------------------------------
r57534 | naruse | 2017-02-05 03:14:42 +0900 (Sun, 05 Feb 2017) | 1 line

fix description for current implementation
------------------------------------------------------------------------
r57533 | nobu | 2017-02-04 19:48:15 +0900 (Sat, 04 Feb 2017) | 4 lines

pty/shl.rb: update [ci skip]

* sample/pty/shl.rb: do not manage array length separately.
  [ruby-dev:49974] [Bug #13191]
------------------------------------------------------------------------
r57532 | nobu | 2017-02-04 19:48:14 +0900 (Sat, 04 Feb 2017) | 4 lines

pty/shl.rb: update [ci skip]

* sample/pty/shl.rb: use io/console instead of stty.
  [ruby-dev:49974] [Bug #13191]
------------------------------------------------------------------------
r57531 | nobu | 2017-02-04 19:48:13 +0900 (Sat, 04 Feb 2017) | 5 lines

pty/shl.rb: update [ci skip]

* sample/pty/shl.rb: stop writer loop when the child exited.
  PTY::ChildExited no longer raises asynchronously since r20298.
  [ruby-dev:49974] [Bug #13191]
------------------------------------------------------------------------
r57530 | kazu | 2017-02-04 15:49:07 +0900 (Sat, 04 Feb 2017) | 5 lines

sample/pty/shl.rb: update sample

* Specify frozen_string_literal: true.
* Fix TypeError of raise.
* Use a character literal instead of Integer.
------------------------------------------------------------------------
r57529 | kazu | 2017-02-04 15:49:06 +0900 (Sat, 04 Feb 2017) | 1 line

sample/pty/script.rb: Specify frozen_string_literal: true.
------------------------------------------------------------------------
r57528 | kazu | 2017-02-04 15:49:04 +0900 (Sat, 04 Feb 2017) | 5 lines

sample/pty/expect_sample.rb: Update sample

* Fix regexp capture scope bug.
* Specify frozen_string_literal: true.
* Use passive mode.
------------------------------------------------------------------------
r57527 | kazu | 2017-02-04 15:49:00 +0900 (Sat, 04 Feb 2017) | 1 line

ext/pty: Specify frozen_string_literal: true.
------------------------------------------------------------------------
r57526 | nobu | 2017-02-04 14:23:48 +0900 (Sat, 04 Feb 2017) | 5 lines

test/unit.rb: jobserver for workers

* test/lib/test/unit.rb (Test::Unit::Parallel#process_args):
  initialize @run_options to pass jobserver auth pipes to worker
  processes.
------------------------------------------------------------------------
r57525 | nobu | 2017-02-04 12:28:17 +0900 (Sat, 04 Feb 2017) | 4 lines

test/unit.rb: job tokens

* test/lib/test/unit.rb (_run_parallel): deal with job tokens for
  each workers.
------------------------------------------------------------------------
r57524 | nobu | 2017-02-04 11:17:35 +0900 (Sat, 04 Feb 2017) | 4 lines

test/unit.rb: initialize instance variable

* test/lib/test/unit.rb (Test::Unit::Parallel#non_options):
  initialize @jobserver instance variable to suppress warnings.
------------------------------------------------------------------------
r57523 | nobu | 2017-02-04 10:04:14 +0900 (Sat, 04 Feb 2017) | 4 lines

test_gem.rb: exclude default gems

* test/rubygems/test_gem.rb: check difference to exclude default
  gems from the expected results.  [Feature #13186]
------------------------------------------------------------------------
r57522 | normal | 2017-02-04 08:58:18 +0900 (Sat, 04 Feb 2017) | 14 lines

doc: restore class documentation for Struct

* struct.c: restore class documentation for Struct
  that disappeared with r46663.

Due to r46663, the class documentation for Struct disappeared.
(The revision inserted the definition of `InitVM_Struct` between
the rdoc and the definition of `Init_Struct`.)

The docs are rendered for 2.1: <https://docs.ruby-lang.org/en/2.1.0/Struct.html>,
but not for later versions, see: <https://docs.ruby-lang.org/en/2.2.0/Struct.html>
(Same for `ri` pages).

[ruby-core:79416] [Bug #13189]
------------------------------------------------------------------------
r57521 | normal | 2017-02-04 08:55:06 +0900 (Sat, 04 Feb 2017) | 8 lines

symbol.c (rb_id2str): eliminate branch to set class

Since the fstring table encompasses all strings in the
symbol table, we may reuse the fstring table walk to set
the class and eliminate the branch in rb_id2str.

* string.c (Init_String): use rb_cString immediately after definition
* symbol.c (rb_id2str): eliminate branch to set class
------------------------------------------------------------------------
r57520 | nobu | 2017-02-04 08:50:41 +0900 (Sat, 04 Feb 2017) | 5 lines

ruby.h: unused parameter

* include/ruby/ruby.h (rb_scan_args_set): remove unused parameter
  for more pedantic extension libraries.
  [ruby-core:79399] [Feature #13184]
------------------------------------------------------------------------
r57519 | normal | 2017-02-04 08:40:59 +0900 (Sat, 04 Feb 2017) | 1 line

.gitignore: add ext/rbconfig/sizeof/limits.c
------------------------------------------------------------------------
r57518 | normal | 2017-02-04 08:40:05 +0900 (Sat, 04 Feb 2017) | 3 lines

ext/rbconfig/sizeof: add limits.c to svn:ignore


------------------------------------------------------------------------
r57517 | normal | 2017-02-04 08:34:48 +0900 (Sat, 04 Feb 2017) | 8 lines

doc: Fix error for escape sequences in string literals

Backslash goes first in escape sequences, so it must be
"any other character following a backslash is interpreted as ...",
while the doc says "...followed by...".

Author: Marcus Stollsteimer <sto.mar@web.de>
[ruby-core:79418] [Bug #13190]
------------------------------------------------------------------------
r57516 | svn | 2017-02-04 03:25:29 +0900 (Sat, 04 Feb 2017) | 1 line

* 2017-02-04
------------------------------------------------------------------------
r57515 | marcandre | 2017-02-04 03:25:28 +0900 (Sat, 04 Feb 2017) | 3 lines

lib/ostruct.rb: Fix returned value of each_pair.

From a patch by Marcus Stollsteimer. [Fixes #13169]
------------------------------------------------------------------------
r57514 | nobu | 2017-02-03 21:52:09 +0900 (Fri, 03 Feb 2017) | 4 lines

test/unit.rb: share job slots

* test/lib/test/unit.rb (Test::Unit::Parallel#_run_parallel):
  share job slots with GNU 'make'.
------------------------------------------------------------------------
r57513 | nobu | 2017-02-03 21:52:08 +0900 (Fri, 03 Feb 2017) | 4 lines

test/unit.rb: job testing flag

* test/lib/test/unit.rb (Parallel#non_options): split testing flag
  and job count by OptionParser.
------------------------------------------------------------------------
r57512 | hsbt | 2017-02-03 21:39:04 +0900 (Fri, 03 Feb 2017) | 3 lines

Added initial gemspec for zlib module.

  [Feature #13186]
------------------------------------------------------------------------
r57511 | nobu | 2017-02-03 15:48:02 +0900 (Fri, 03 Feb 2017) | 4 lines

ensured.c: fix conflict

* ext/-test-/exception/ensured.c (exc_raise): get rid of conflict
  with raise(2) in the standard.  [ruby-core:79371] [Bug #13176]
------------------------------------------------------------------------
r57510 | nobu | 2017-02-03 15:23:34 +0900 (Fri, 03 Feb 2017) | 4 lines

eval.c: hide internal objects

* eval.c (rb_ensure): veil internal exception objects not to leak
  in ensure functions.  [ruby-core:79371] [Bug #13176]
------------------------------------------------------------------------
r57509 | nobu | 2017-02-03 15:11:32 +0900 (Fri, 03 Feb 2017) | 4 lines

internal.h: fix r57507

* internal.h (rb_overflowed_fix_to_int): invert sign bit.  should
  not set LSB of fixnum value, which is always set, to MSB.
------------------------------------------------------------------------
r57508 | normal | 2017-02-03 03:59:40 +0900 (Fri, 03 Feb 2017) | 10 lines

io.c: remove rb_ensure usage for rb_str_tmp_frozen_* calls

Using rb_ensure pessimizes the common case and makes the code
more difficult to read and follow.  If we hit an exceptions
during write, just let the GC handle cleanup as the exception
is already bad for garbage.

* io.c (io_fwrite): call rb_str_tmp_frozen{acquire,release} directly
  (rb_io_syswrite): ditto
  (fwrite_do, fwrite_end, swrite_do, swrite_end): remove
------------------------------------------------------------------------
r57507 | naruse | 2017-02-03 02:07:28 +0900 (Fri, 03 Feb 2017) | 1 line

fix typo and argument of r57506
------------------------------------------------------------------------
r57506 | naruse | 2017-02-03 00:54:51 +0900 (Fri, 03 Feb 2017) | 13 lines

Use carry flag to reduce instructions

NOTE:
(1) Fixnum's LSB is always 1.
    It means you can always run `x - 1` without overflow.
(2) Of course `z = x + (y-1)` may overflow.
    Now z's LSB is always 1, and the MSB of true result is also 1.
    You can get true result in long as `(1<<63)|(z>>1)`,
    and it equals to `(z<<63)|(z>>1)` == `ror(z)`.

GCC and Clang have __builtin_add_ovewflow:
* https://gcc.gnu.org/onlinedocs/gcc/Integer-Overflow-Builtins.html
* https://clang.llvm.org/docs/LanguageExtensions.html#checked-arithmetic-builtins
------------------------------------------------------------------------
r57505 | svn | 2017-02-03 00:12:30 +0900 (Fri, 03 Feb 2017) | 1 line

* 2017-02-03
------------------------------------------------------------------------
r57504 | kazu | 2017-02-03 00:12:29 +0900 (Fri, 03 Feb 2017) | 1 line

ext/fcntl: Specify frozen_string_literal: true.
------------------------------------------------------------------------
r57503 | kazu | 2017-02-02 21:38:41 +0900 (Thu, 02 Feb 2017) | 1 line

Add class name to assert messages
------------------------------------------------------------------------
r57502 | hsbt | 2017-02-02 17:38:54 +0900 (Thu, 02 Feb 2017) | 3 lines

Added initial gemspec for Date module.

  [Feature #13183]
------------------------------------------------------------------------
r57501 | nobu | 2017-02-02 17:02:36 +0900 (Thu, 02 Feb 2017) | 4 lines

escape.c: check argument

* ext/cgi/escape/escape.c (optimized_unescape): check
  accept_charset encoding argument.
------------------------------------------------------------------------
r57500 | hsbt | 2017-02-02 16:49:19 +0900 (Thu, 02 Feb 2017) | 3 lines

Added initial gemspec for CMath module.

  [Feature #13182]
------------------------------------------------------------------------
r57499 | nobu | 2017-02-02 16:03:59 +0900 (Thu, 02 Feb 2017) | 6 lines

test_cgi_util.rb: encoding tests

* test/cgi/test_cgi_util.rb (test_cgi_unescape): \u is useless on
  old versions.

* test/cgi/test_cgi_util.rb (test_cgi_include_unescape): ditto.
------------------------------------------------------------------------
r57498 | nobu | 2017-02-02 14:56:06 +0900 (Thu, 02 Feb 2017) | 5 lines

compile.c: restore catch entry sp

* compile.c (iseq_build_from_ary_exception): restore stack depth
  of catch entries.  accurate stack depths cannot be calculated
  from dumped array.
------------------------------------------------------------------------
r57497 | nobu | 2017-02-02 14:45:22 +0900 (Thu, 02 Feb 2017) | 4 lines

compile.c: restore misc params

* compile.c (rb_iseq_build_from_ary): restore misc params.
  accurate stack depths cannot be calculated from dumped array.
------------------------------------------------------------------------
r57496 | nobu | 2017-02-02 14:45:21 +0900 (Thu, 02 Feb 2017) | 4 lines

compile.c: keyword table for required kwarg

* compile.c (iseq_build_kw): keyword table is necessary also when
  required keyword argumetns only.
------------------------------------------------------------------------
r57495 | nobu | 2017-02-02 14:43:58 +0900 (Thu, 02 Feb 2017) | 6 lines

test_iseq_load.rb: refine test_require_integration

* test/-ext-/iseq_load/test_iseq_load.rb (test_require_integration):
  assert with diff.

[ci skip]
------------------------------------------------------------------------
r57494 | nobu | 2017-02-02 07:18:28 +0900 (Thu, 02 Feb 2017) | 4 lines

test_time.rb: use UTC

* test/ruby/test_time.rb (test_strftime_no_hidden_garbage): fix
  failure due to timezone offset.
------------------------------------------------------------------------
r57493 | svn | 2017-02-02 07:14:23 +0900 (Thu, 02 Feb 2017) | 1 line

* 2017-02-02
------------------------------------------------------------------------
r57492 | nobu | 2017-02-02 07:14:22 +0900 (Thu, 02 Feb 2017) | 5 lines

test_queue.rb: fix portability

* test/thread/test_queue.rb (test_queue_with_trap): fix
  portability.  use SIGINT instead of SIGUSR2 which is supported
  on not all platforms.
------------------------------------------------------------------------
r57491 | hsbt | 2017-02-01 18:12:53 +0900 (Wed, 01 Feb 2017) | 6 lines

Prepare to make CSV module to default gem.

  * lib/csv.gemspec: initial gemspec for csv gem.
  * tool/rbinstall.rb: support gemspec located under lib direcotry like `lib/foo.gemspec`

  [Feature #13177]
------------------------------------------------------------------------
r57490 | nobu | 2017-02-01 16:40:58 +0900 (Wed, 01 Feb 2017) | 5 lines

configure.in: use AC_SEARCH_LIBS

* configure.in (--with-gmp, --with-jemalloc): use AC_SEARCH_LIBS
  to check if no library is required, instead of AC_CHECK_LIB.
  [ruby-core:79368] [Bug #13175]
------------------------------------------------------------------------
r57489 | nobu | 2017-02-01 13:54:04 +0900 (Wed, 01 Feb 2017) | 7 lines

common.mk: remove explicit MFLAGS

It is unnecessary to pass MFLAGS to sub-makes, because it is
evaluated implicitly if set by make.  GNU make 4.2 sets both of
-jN and --jobserver-auth (or --jobserver-fds in older versions)
options which conflict.  And it is useless for command line macros
since Microsoft NMAKE does not set them.
------------------------------------------------------------------------
r57488 | nobu | 2017-02-01 13:54:03 +0900 (Wed, 01 Feb 2017) | 1 line

win32/setup.mak: reorder
------------------------------------------------------------------------
r57487 | svn | 2017-02-01 02:46:52 +0900 (Wed, 01 Feb 2017) | 1 line

* 2017-02-01
------------------------------------------------------------------------
r57486 | tenderlove | 2017-02-01 02:46:51 +0900 (Wed, 01 Feb 2017) | 6 lines

Add IMEMO type to heap dump output.

IMEMO objects have many types.  Without this change, we cannot see what
types of IMEMO objects are being used when dumping the heap.  Adding the
type to the IMEMO object will allow us to gather statistics about IMEMO
objects being used.
------------------------------------------------------------------------
r57485 | nobu | 2017-01-31 21:55:00 +0900 (Tue, 31 Jan 2017) | 4 lines

ruby.c: defining DATA

* ruby.c (load_file_internal): define DATA here instead of ensure
  func.
------------------------------------------------------------------------
r57484 | nobu | 2017-01-31 21:54:59 +0900 (Tue, 31 Jan 2017) | 5 lines

ruby.c: forbid options

* ruby.c (forbid_setid): constified.

* ruby.c (process_options): forbid if setid earlier.
------------------------------------------------------------------------
r57483 | naruse | 2017-01-31 19:37:50 +0900 (Tue, 31 Jan 2017) | 4 lines

Describe about RUBY_CODESIGN

With RUBY_CODESIGN people can avoid pushing many OK button of firewall
dialogs on macOS through test-all.
------------------------------------------------------------------------
r57482 | rhe | 2017-01-31 19:08:22 +0900 (Tue, 31 Jan 2017) | 24 lines

openssl: import v2.0.3

Import Ruby/OpenSSL 2.0.3. Only bugfixes. The full commit log since
2.0.2 (imported at r57146) can be found at:

  https://github.com/ruby/openssl/compare/v2.0.2...v2.0.3

----------------------------------------------------------------
Corey Bonnell (1):
      Fix for ASN1::Constructive 'each' implementation

Kazuki Yamaguchi (10):
      Fix build with static OpenSSL libraries on Windows
       ([ruby-core:78878] [Bug #13080])
      Merge pull request #96 from CBonnell/master
      Merge branch 'topic/windows-static-linking-without-pkg-config' into maint
      appveyor.yml: update OpenSSL version to 1.0.2j
      buffering: fix typo in doc
      test/envutil: fix assert_raise_with_message
      x509: fix OpenSSL::X509::Name#eql?
       ([ruby-core:79310] [Bug #13170])
      ruby-openssl-docker: update versions of Ruby and OpenSSL
      .travis.yml: test with Ruby 2.4
      Ruby/OpenSSL 2.0.3
------------------------------------------------------------------------
r57481 | hsbt | 2017-01-31 17:48:14 +0900 (Tue, 31 Jan 2017) | 3 lines

Initial commit for gem release of webrick.

  [Feature #13173]
------------------------------------------------------------------------
r57480 | nobu | 2017-01-31 17:03:08 +0900 (Tue, 31 Jan 2017) | 3 lines

mkmf.rb: message format string

* lib/mkmf.rb (checking_for): message needs format string.
------------------------------------------------------------------------
r57479 | ko1 | 2017-01-31 16:00:38 +0900 (Tue, 31 Jan 2017) | 7 lines

allow Queue operation in trap.

* thread_sync.c: allow spurious wakeup to check Queue status just after trap.
  [Bug #12405]

* test/thread/test_queue.rb: add a test for it.

------------------------------------------------------------------------
r57478 | ko1 | 2017-01-31 15:39:01 +0900 (Tue, 31 Jan 2017) | 6 lines

define rb_thread_sleep_deadly_allow_spurious_wakeup().

* thread.c, thread_sync.c: define new function
  rb_thread_sleep_deadly_allow_spurious_wakeup() and use it instead of
  using sleep_forever() directly.

------------------------------------------------------------------------
r57477 | ko1 | 2017-01-31 15:31:06 +0900 (Tue, 31 Jan 2017) | 2 lines

use TRUE/FALSE.

------------------------------------------------------------------------
r57476 | normal | 2017-01-31 11:18:58 +0900 (Tue, 31 Jan 2017) | 7 lines

time.c (time_strftime): avoid garbage in common case

strftime format strings which are dynamically-generated will benefit
from avoiding garbage, here.

* time.c (time_strftime): use rb_str_tmp_frozen_{acquire,release}
* test/ruby/test_time.rb (test_strftime_no_hidden_garbage): new test
------------------------------------------------------------------------
r57475 | nobu | 2017-01-31 11:01:31 +0900 (Tue, 31 Jan 2017) | 4 lines

limits.c.tmpl: fallback ULLONG_MAX

* template/limits.c.tmpl (ULLONG_MAX): add a fallback definition.
  On old CentOS lacks ULLONG_MAX.
------------------------------------------------------------------------
r57474 | nobu | 2017-01-31 10:18:10 +0900 (Tue, 31 Jan 2017) | 4 lines

test_io.rb: separate a test

* test/ruby/test_io.rb (test_closed_stream_in_rescue): run in a
  separated process.
------------------------------------------------------------------------
r57473 | normal | 2017-01-31 09:41:56 +0900 (Tue, 31 Jan 2017) | 8 lines

sprintf.c: avoid garbage in common (no exception) case

Format strings which are dynamically-generated will benefit
from this.  This won't cover exceptions, but exceptions for
sprintf should be too uncommon to care about (unlike IO)

* sprintf.c (rb_str_format): use rb_str_tmp_frozen_{acquire,release}
* test/ruby/test_sprintf.rb (test_no_hidden_garbage): new test
------------------------------------------------------------------------
r57472 | normal | 2017-01-31 07:03:57 +0900 (Tue, 31 Jan 2017) | 8 lines

io.c (rb_io_syswrite): avoid leaving garbage after write

As with IO#write, IO#syswrite also generates garbage which can
be harmful in hand-coded read-write loops.

* io.c (swrite_arg, swrite_do, swrite_end): new
  (rb_io_syswrite): use new functions to cleanup garbage
  [ruby-core:78898] [Bug #13085]
------------------------------------------------------------------------
r57471 | normal | 2017-01-31 06:54:32 +0900 (Tue, 31 Jan 2017) | 8 lines

string.c (rb_str_tmp_frozen_release): release embedded strings

Handle the embedded case first, since we may have an embedded
duplicate and non-embedded original string.

* string.c (rb_str_tmp_frozen_release): handled embedded strings
* test/ruby/test_io.rb (test_write_no_garbage): new test
  [ruby-core:78898] [Bug #13085]
------------------------------------------------------------------------
r57470 | svn | 2017-01-31 05:40:19 +0900 (Tue, 31 Jan 2017) | 1 line

* 2017-01-31
------------------------------------------------------------------------
r57469 | normal | 2017-01-31 05:40:18 +0900 (Tue, 31 Jan 2017) | 37 lines

io.c: recycle garbage on write

* string.c (STR_IS_SHARED_M): new flag to mark shared mulitple times
  (STR_SET_SHARED): set STR_IS_SHARED_M
  (rb_str_tmp_frozen_acquire, rb_str_tmp_frozen_release): new functions
  (str_new_frozen): set/unset STR_IS_SHARED_M as appropriate
* internal.h: declare new functions
* io.c (fwrite_arg, fwrite_do, fwrite_end): new
  (io_fwrite): use new functions

Introduce rb_str_tmp_frozen_acquire and rb_str_tmp_frozen_release
to manage a hidden, frozen string.  Reuse one bit of the embed
length for shared strings as STR_IS_SHARED_M to indicate a string
has been shared multiple times.  In the common case, the string
is only shared once so the object slot can be reclaimed immediately.

minimum results in each 3 measurements. (time and size)

Execution time (sec)
name                            trunk   built
io_copy_stream_write            0.682   0.254
io_copy_stream_write_socket     1.225   0.751

Speedup ratio: compare with the result of `trunk' (greater is better)
name    built
io_copy_stream_write            2.680
io_copy_stream_write_socket     1.630

Memory usage (last size) (B)
name                            trunk           built
io_copy_stream_write            95436800.000    6512640.000
io_copy_stream_write_socket     117628928.000   7127040.000

Memory consuming ratio (size) with the result of `trunk' (greater is better)
name    built
io_copy_stream_write            14.654
io_copy_stream_write_socket     16.505
------------------------------------------------------------------------
r57468 | nobu | 2017-01-30 21:00:34 +0900 (Mon, 30 Jan 2017) | 6 lines

common.mk: limits.c

* common.mk (ext/rbconfig/sizeof/sizes.c): specify the target
  explicitly.

* common.mk (ext/rbconfig/sizeof/limits.c): add the recipe.
------------------------------------------------------------------------
r57467 | nobu | 2017-01-30 20:45:00 +0900 (Mon, 30 Jan 2017) | 1 line

VC18 or later support stdbool.h
------------------------------------------------------------------------
r57466 | svn | 2017-01-30 19:12:19 +0900 (Mon, 30 Jan 2017) | 1 line

* properties.
------------------------------------------------------------------------
r57465 | shyouhei | 2017-01-30 19:12:18 +0900 (Mon, 30 Jan 2017) | 15 lines

make FIXNUM_MAX visible from Ruby

Because our tests now have several places where FIXNUM_MAX is needed,
we decided to provide it along with several other constants.

	* template/limits.c.tmpl: new file, defining RbConfig::Limits

	* ext/rbconfig/sizeof/depend (limits.c): rule to generate limits.c

	* test/-ext-/num2int/test_num2int.rb: use RbConfig::Limits

	* bootstraptest/test_insns.rb: ditto.

	* .gitignore: ignore new generated file.

------------------------------------------------------------------------
r57464 | ko1 | 2017-01-30 16:39:27 +0900 (Mon, 30 Jan 2017) | 2 lines

add a ticket number.

------------------------------------------------------------------------
r57463 | nobu | 2017-01-30 14:09:13 +0900 (Mon, 30 Jan 2017) | 1 line

reduce iterations for slower machines
------------------------------------------------------------------------
r57462 | nobu | 2017-01-30 13:54:52 +0900 (Mon, 30 Jan 2017) | 4 lines

fix up r57461

* internal.h: Microsoft Visual C++ has never supported C99 yet,
  even in 2017.
------------------------------------------------------------------------
r57461 | nobu | 2017-01-30 13:47:44 +0900 (Mon, 30 Jan 2017) | 4 lines

refine assertions

* test/irb/test_ruby-lex.rb (test_prompt): invert confinue flag by
  FIXME comments.  adjust line numbers.
------------------------------------------------------------------------
r57460 | shyouhei | 2017-01-30 13:42:04 +0900 (Mon, 30 Jan 2017) | 30 lines

#include <stdbool.h>

17+ years passed since standardized in ISO, 8 years since we added
AC_HEADER_STDBOOL to configure.in.  I'm quite confident that it's
already safe to use <stdbool.h>.

I understand that when we introduced AC_HEADER_STDBOOL, <stdbool.h>
was remain not included because C standard and SVR4 curses conflicted
miserably back then (#1).  Though I believe such situation has been
fixed already(#2), I'm afraid of your operating system might ship a
proprietary curses that still conflicts with the standard. So to avoid
potential problem, we limit the inclusion to our internal use only.

#1 : 1997 version of SUSv2 said bool is "defined though typedef" in
     <curses.h>, while C99 said bool is a macro, plus in C++ bool is a
     keyword.  AFASIK the curses library has never been a part of
     POSIX.

#2 : In reality ncurses and NetBSD curses both just follow C99 to
     include <stdbool.h> from <curses.h>.  I think C99 is now widely
     adopted.

----

	* internal.h: #include <stdbool.h> if present.  That is
	  believed to be the case for 99.9% systems that lives today.
	  Non-C99, non-C++ situations are intentionally left
	  undefined, advised by Motohiro Kosaki.  If you have such
	  compiler, please fill the definition appropriately.

------------------------------------------------------------------------
r57459 | nobu | 2017-01-30 12:57:46 +0900 (Mon, 30 Jan 2017) | 1 line

more checks for prompt
------------------------------------------------------------------------
r57458 | svn | 2017-01-30 12:21:16 +0900 (Mon, 30 Jan 2017) | 1 line

* 2017-01-30
------------------------------------------------------------------------
r57457 | nobu | 2017-01-30 12:21:15 +0900 (Mon, 30 Jan 2017) | 1 line

test for prompt
------------------------------------------------------------------------
r57456 | nobu | 2017-01-29 21:53:24 +0900 (Sun, 29 Jan 2017) | 1 line

test for immature statement
------------------------------------------------------------------------
r57455 | nobu | 2017-01-29 21:53:23 +0900 (Sun, 29 Jan 2017) | 1 line

test for top level statement
------------------------------------------------------------------------
r57454 | nobu | 2017-01-29 21:20:26 +0900 (Sun, 29 Jan 2017) | 1 line

test for comment
------------------------------------------------------------------------
r57453 | nobu | 2017-01-29 18:51:55 +0900 (Sun, 29 Jan 2017) | 1 line

tests for irb lexer
------------------------------------------------------------------------
r57452 | svn | 2017-01-29 10:35:24 +0900 (Sun, 29 Jan 2017) | 1 line

* 2017-01-29
------------------------------------------------------------------------
r57451 | kazu | 2017-01-29 10:35:23 +0900 (Sun, 29 Jan 2017) | 1 line

{ext,test}/etc: Specify frozen_string_literal: true.
------------------------------------------------------------------------
r57450 | nobu | 2017-01-28 20:27:32 +0900 (Sat, 28 Jan 2017) | 4 lines

test/unit.rb: minimum workers

* test/lib/test/unit.rb (_run_parallel): launch only necessary
  workers.
------------------------------------------------------------------------
r57449 | nobu | 2017-01-28 14:31:25 +0900 (Sat, 28 Jan 2017) | 4 lines

extmk.rb: remove clean and install mode

* ext/extmk.rb (parse_args): remove clean and install mode, now
  configure mode only.
------------------------------------------------------------------------
r57448 | nobu | 2017-01-28 14:23:39 +0900 (Sat, 28 Jan 2017) | 4 lines

extmk.rb: remove direct build mode

* ext/extmk.rb (parse_args): --command-output is now mandatory.
  remove direct build mode.
------------------------------------------------------------------------
r57447 | nobu | 2017-01-28 14:02:41 +0900 (Sat, 28 Jan 2017) | 5 lines

extension gems in static-linked-exts

* template/configure-ext.mk.tmpl: --no-extstatic option to gems.

* template/exts.mk.tmpl: include extension gems.
------------------------------------------------------------------------
r57446 | nobu | 2017-01-28 14:02:39 +0900 (Sat, 28 Jan 2017) | 4 lines

mkmf.rb: fix script installation

* lib/mkmf.rb (MakeMakefile): fix condition to install script
  files.
------------------------------------------------------------------------
r57445 | kazu | 2017-01-28 13:36:08 +0900 (Sat, 28 Jan 2017) | 1 line

{ext,test}/dbm: Specify frozen_string_literal: true.
------------------------------------------------------------------------
r57444 | nobu | 2017-01-28 10:43:29 +0900 (Sat, 28 Jan 2017) | 3 lines

exts.mk.tmpl: ruby names

* template/exts.mk.tmpl: extract configured ruby names.
------------------------------------------------------------------------
r57443 | svn | 2017-01-28 00:32:50 +0900 (Sat, 28 Jan 2017) | 1 line

* 2017-01-28
------------------------------------------------------------------------
r57442 | naruse | 2017-01-28 00:32:50 +0900 (Sat, 28 Jan 2017) | 1 line

fix typo
------------------------------------------------------------------------
r57441 | nobu | 2017-01-27 17:05:06 +0900 (Fri, 27 Jan 2017) | 5 lines

extmk.rb: fix for static-linked-ext

* ext/extmk.rb (extmake): fix up r57424 for static-linked-ext.
  separate maybestatic argument from basedir which is given always
  now.
------------------------------------------------------------------------
r57440 | nobu | 2017-01-27 16:51:58 +0900 (Fri, 27 Jan 2017) | 1 line

template/exts.mk.tmpl: fix missing dependencies
------------------------------------------------------------------------
r57439 | nobu | 2017-01-27 16:23:21 +0900 (Fri, 27 Jan 2017) | 1 line

template/exts.mk.tmpl: consider EXEEXT
------------------------------------------------------------------------
r57438 | nobu | 2017-01-27 16:16:36 +0900 (Fri, 27 Jan 2017) | 4 lines

exts.mk.tmpl: for not GNU makes

* template/exts.mk.tmpl: use `cd` then `make` instead of `make -C`
  when not GNU make.
------------------------------------------------------------------------
r57437 | nobu | 2017-01-27 14:01:18 +0900 (Fri, 27 Jan 2017) | 5 lines

leakchecker.rb: get rid of uninitialized Tempfile

* test/lib/leakchecker.rb (LeakChecker#find_tempfiles): get rid of
  errors on uninitialized Tempfile, which can be left when
  Dir.tmpdir failed or by Tempfile.allocate.
------------------------------------------------------------------------
r57436 | nobu | 2017-01-27 12:24:45 +0900 (Fri, 27 Jan 2017) | 3 lines

enum.c: write barrier

* enum.c (rb_nmin_run): set the class with write barrier.
------------------------------------------------------------------------
r57435 | nobu | 2017-01-27 12:24:44 +0900 (Fri, 27 Jan 2017) | 1 line

enum.c (rb_nmin_run): adjust indent [ci skip]
------------------------------------------------------------------------
r57434 | nobu | 2017-01-27 12:24:43 +0900 (Fri, 27 Jan 2017) | 9 lines

Enumerable#{min,min_by,max,max_by} [ci skip]

* enum.c: [DOC] Enumerable#{min,min_by,max,max_by} return a sorted
  array when +n+ argument is used.

* enum.c: Small typo : minimum -> maximum

[Bug #13161]
Author:    Eric Duminil <eric.duminil@gmail.com>
------------------------------------------------------------------------
r57433 | nobu | 2017-01-27 11:55:02 +0900 (Fri, 27 Jan 2017) | 4 lines

configure-ext.mk.tmpl: fix ext build

* template/configure-ext.mk.tmpl: fixed inverted names of target
  and directory, and chomp the last slash.
------------------------------------------------------------------------
r57432 | kazu | 2017-01-27 09:29:21 +0900 (Fri, 27 Jan 2017) | 1 line

{ext,test}/date: Specify frozen_string_literal: true.
------------------------------------------------------------------------
r57431 | kazu | 2017-01-27 00:14:02 +0900 (Fri, 27 Jan 2017) | 1 line

[DOC] Use Integer instead of Fixnum [ci skip]
------------------------------------------------------------------------
r57430 | svn | 2017-01-27 00:14:01 +0900 (Fri, 27 Jan 2017) | 1 line

* 2017-01-27
------------------------------------------------------------------------
r57429 | kazu | 2017-01-27 00:14:00 +0900 (Fri, 27 Jan 2017) | 1 line

lib/weakref.rb: Specify frozen_string_literal: true.
------------------------------------------------------------------------
r57428 | kou | 2017-01-26 21:47:51 +0900 (Thu, 26 Jan 2017) | 6 lines

Add document for lib/rss/atom.rb

[fix GH-1520]

Patch by Tsehau Chao. Thanks!!!

------------------------------------------------------------------------
r57427 | ko1 | 2017-01-26 18:57:41 +0900 (Thu, 26 Jan 2017) | 5 lines

skip T_IMEMO for VMDEBUG

* vm_dump.c (vm_stack_dump_each): skip T_IMEMO object to display
  for VMDEBUG=3. [Bug #13030]

------------------------------------------------------------------------
r57426 | ko1 | 2017-01-26 18:40:25 +0900 (Thu, 26 Jan 2017) | 2 lines

* vm_dump.c: enable to compile with VMDEBUG == 3.

------------------------------------------------------------------------
r57425 | svn | 2017-01-26 17:19:35 +0900 (Thu, 26 Jan 2017) | 1 line

* 2017-01-26
------------------------------------------------------------------------
r57424 | nobu | 2017-01-26 17:19:34 +0900 (Thu, 26 Jan 2017) | 1 line

Parallel gem configuration
------------------------------------------------------------------------
r57423 | hsbt | 2017-01-26 16:09:58 +0900 (Thu, 26 Jan 2017) | 4 lines

Fix function name for DBM on extension document.

  Patch by Yuji Yaginuma, @y-yagi <yuuji.yaginuma@gmail.com>
  [ci skip][fix GH-1519]
------------------------------------------------------------------------
r57422 | nobu | 2017-01-25 23:34:07 +0900 (Wed, 25 Jan 2017) | 4 lines

io.c: close before wait

* io.c (io_close_fptr): notify then close, and wait for other
  threads before free fptr.  [ruby-core:79262] [Bug #13158]
------------------------------------------------------------------------
r57421 | kazu | 2017-01-25 23:28:42 +0900 (Wed, 25 Jan 2017) | 3 lines

[DOC] Add empty example to enum.all? and any?

[ci skip]
------------------------------------------------------------------------
r57420 | nobu | 2017-01-25 15:08:16 +0900 (Wed, 25 Jan 2017) | 3 lines

regcomp.c: debug function [ci skip]

* regcomp.c (print_indent_tree): make a function for debug static.
------------------------------------------------------------------------
r57419 | nobu | 2017-01-25 15:05:51 +0900 (Wed, 25 Jan 2017) | 4 lines

.gdbinit: fix on empty strings [ci skip]

* .gdbinit (output_string): get rid of "Invalid number 0 of
  repetitions" error on empty strings.
------------------------------------------------------------------------
r57418 | nobu | 2017-01-25 15:05:50 +0900 (Wed, 25 Jan 2017) | 3 lines

.gdbinit: op symbols [ci skip]

* .gdbinit (rp_id): add unhandled operator symbols.
------------------------------------------------------------------------
r57417 | svn | 2017-01-25 12:03:53 +0900 (Wed, 25 Jan 2017) | 1 line

* 2017-01-25
------------------------------------------------------------------------
r57416 | ko1 | 2017-01-25 12:03:52 +0900 (Wed, 25 Jan 2017) | 6 lines

swithc id_table data structure.

* id_table.c: swtich to "simple open addressing with quadratic probing"
  by Yura Sokolov.  For more detail measurements, see [Feature #12180]
* id_table.c: remove other algorithms to simplify the source code.

------------------------------------------------------------------------
r57415 | nobu | 2017-01-24 23:52:07 +0900 (Tue, 24 Jan 2017) | 4 lines

eval.c: copy special exception

* eval.c (setup_exception): make unfrozen copy of special
  exception before setting up a cause.
------------------------------------------------------------------------
r57414 | nobu | 2017-01-24 16:52:41 +0900 (Tue, 24 Jan 2017) | 1 line

parse.y (parser_yylex): remove wrong warning
------------------------------------------------------------------------
r57413 | svn | 2017-01-24 11:38:58 +0900 (Tue, 24 Jan 2017) | 1 line

* remove trailing spaces.
------------------------------------------------------------------------
r57412 | hsbt | 2017-01-24 11:38:57 +0900 (Tue, 24 Jan 2017) | 4 lines

Update Rubygems 2.6.10

 * https://github.com/rubygems/rubygems/commit/2ee5bf9fd3bd7649d3e244bc40107ff32070ef47
 * https://github.com/rubygems/rubygems/commit/be510dd4097e65c6a256a6e173d6b724a3a96472
------------------------------------------------------------------------
r57411 | naruse | 2017-01-24 02:02:08 +0900 (Tue, 24 Jan 2017) | 3 lines

Fix typo of URI#escape [Bug #13147]

patched by Steve Hill <sghill.dev@gmail.com>
------------------------------------------------------------------------
r57410 | naruse | 2017-01-24 01:58:27 +0900 (Tue, 24 Jan 2017) | 5 lines

Prevent GC by volatile [Bug #13150]

test/ruby/test_marshal.rb test_context_switch (load) and test_gc (dump)
are failed on FreeBSD 10.3 and gcc7 (FreeBSD Ports Collection) 7.0.0
20170115 (experimental); RB_GC_GUARD looks not worked well.
------------------------------------------------------------------------
r57409 | svn | 2017-01-24 00:47:33 +0900 (Tue, 24 Jan 2017) | 1 line

* 2017-01-24
------------------------------------------------------------------------
r57408 | kazu | 2017-01-24 00:47:32 +0900 (Tue, 24 Jan 2017) | 1 line

test/test_tmpdir.rb: Specify frozen_string_literal: true.
------------------------------------------------------------------------
r57407 | nobu | 2017-01-23 15:16:04 +0900 (Mon, 23 Jan 2017) | 5 lines

object.c: no TypeError at Symbol

* object.c (special_object_p): uninterned Symbol also should not
  raise a TypeError but return itself instead, as well as interned
  Symbols.  [ruby-core:79216] [Bug #13145]
------------------------------------------------------------------------
r57406 | nobu | 2017-01-23 14:59:28 +0900 (Mon, 23 Jan 2017) | 4 lines

csv.rb: fix field_size_limit check

* lib/csv.rb (CSV#shift): the last column is an Array in extended
  column since r55985.  [ruby-dev:49964] [Bug #13149]
------------------------------------------------------------------------
r57405 | nobu | 2017-01-23 13:49:19 +0900 (Mon, 23 Jan 2017) | 6 lines

error.c: fixed doc [ci skip]

* error.c (exc_message): fixed doc regarding the presence of
  to_str.  [Fix GH-1517]

Author:    Marc Gauthier <marcg.gauthier@gmail.com>
------------------------------------------------------------------------
r57404 | nobu | 2017-01-23 13:22:23 +0900 (Mon, 23 Jan 2017) | 4 lines

configure-ext.mk.tmpl: embed macros

* template/configure-ext.mk.tmpl: embed MINIRUBY and SCRIPT_ARGS
  to get rid of quoting problems of nmake.
------------------------------------------------------------------------
r57403 | nobu | 2017-01-23 12:51:25 +0900 (Mon, 23 Jan 2017) | 11 lines

Fix for nmake

* common.mk (EXT_MK): use double-quotes and remove SCRIPT_ARGS
  which contains both types of quotes.

* template/configure-ext.mk.tmpl (all): use single-quotes for MAKE
  which is set by nmake and contains spaces in the path. do not
  use SCRIPT_ARGS.

* template/exts.mk.tmpl (all, static): separate dependency lines,
  not to become a default target unintentionally.
------------------------------------------------------------------------
r57402 | nobu | 2017-01-23 12:43:43 +0900 (Mon, 23 Jan 2017) | 4 lines

configure-ext.mk.tmpl: FORCE

* template/configure-ext.mk.tmpl (FORCE): add missing target for
  BSD make.
------------------------------------------------------------------------
r57401 | nobu | 2017-01-23 11:50:23 +0900 (Mon, 23 Jan 2017) | 7 lines

Parallel ext configuration

* ext/configure-ext.mk: configure each directories underneath ext
  in parallel.

* template/exts.mk.tmpl: then collect the results.

------------------------------------------------------------------------
r57400 | svn | 2017-01-23 11:47:17 +0900 (Mon, 23 Jan 2017) | 1 line

* properties.
------------------------------------------------------------------------
r57399 | shyouhei | 2017-01-23 11:47:16 +0900 (Mon, 23 Jan 2017) | 14 lines

improve C0 coverage of insns.def from 65.9% to 96.1%

While I was developing my private topic branch I found that the VM
itself is not tested very much in `make test` tests.  Of course
`make test-all` covers vast majority of the VM but running that task
is not an immediately possible thing when we are touching the VM.  In
order to boost development in a rapid cycle I decided to add some
tests to the bootstraptest.  Here it is.

	* test_insns.rb: new test that covers insns.def.

	* runner.rb (#assert_equal): pass extra options to the target
	  so that we can test frozen_string_literal: true situation.

------------------------------------------------------------------------
r57398 | nobu | 2017-01-23 11:19:00 +0900 (Mon, 23 Jan 2017) | 4 lines

extinit.c.tmpl: drop after dot

* template/extinit.c.tmpl: drop rest from the first dot in the
  base name of a feature is ignored since r30464.
------------------------------------------------------------------------
r57397 | svn | 2017-01-23 11:18:59 +0900 (Mon, 23 Jan 2017) | 1 line

* 2017-01-23
------------------------------------------------------------------------
r57396 | nobu | 2017-01-23 11:18:59 +0900 (Mon, 23 Jan 2017) | 5 lines

extmk.rb: EXTINITS to sub make

* ext/extmk.rb: pass EXTINITS to sub make.  if the template for
  extinit.c is modified after extinit.c got compiled, extinit.c
  will be re-generated together with ruby.
------------------------------------------------------------------------
r57395 | nobu | 2017-01-22 21:50:36 +0900 (Sun, 22 Jan 2017) | 3 lines

template/extinit.c.tmpl

* template/extinit.c.tmpl: separate from ext/extmk.rb.
------------------------------------------------------------------------
r57394 | nobu | 2017-01-22 17:04:37 +0900 (Sun, 22 Jan 2017) | 5 lines

Makefile.sub: refine distclean-ext

* win32/Makefile.sub (distclean-ext, realclean-ext): remove
  extinit.c and suppress error message when failed to remove ext
  directory.
------------------------------------------------------------------------
r57393 | shyouhei | 2017-01-22 13:14:21 +0900 (Sun, 22 Jan 2017) | 2 lines

NEWS for SecureRandom's random source [ci skip]

------------------------------------------------------------------------
r57392 | shyouhei | 2017-01-22 13:02:42 +0900 (Sun, 22 Jan 2017) | 2 lines

NEWS for SipHash13 [ci skip]

------------------------------------------------------------------------
r57391 | svn | 2017-01-22 12:06:18 +0900 (Sun, 22 Jan 2017) | 1 line

* 2017-01-22
------------------------------------------------------------------------
r57390 | kazu | 2017-01-22 12:06:17 +0900 (Sun, 22 Jan 2017) | 4 lines

Hash#fetch: fix grammar in documentation.

[Fix GH-1515][ci skip]
Author:    Alyssa Ross <hi+services.github@alyssa.is>
------------------------------------------------------------------------
r57389 | kazu | 2017-01-21 21:21:05 +0900 (Sat, 21 Jan 2017) | 1 line

lib/tempfile.rb: Specify frozen_string_literal: true.
------------------------------------------------------------------------
r57388 | svn | 2017-01-21 15:17:08 +0900 (Sat, 21 Jan 2017) | 1 line

* 2017-01-21
------------------------------------------------------------------------
r57387 | nobu | 2017-01-21 15:17:07 +0900 (Sat, 21 Jan 2017) | 1 line

Makefile.in: clean ruby-runner [ci skip]
------------------------------------------------------------------------
r57386 | kazu | 2017-01-20 22:33:06 +0900 (Fri, 20 Jan 2017) | 5 lines

Remove deprecated rbconfig/datadir

This is deleted at
https://github.com/rubygems/rubygems/commit/0e3c2c1f04182990c4c7a0aa53435ad8427342fd
in upstream.
------------------------------------------------------------------------
r57385 | nobu | 2017-01-20 19:59:47 +0900 (Fri, 20 Jan 2017) | 4 lines

extmk.rb: ignore generated sources

* ext/extmk.rb (extract_makefile): ignore generated source files
  not to reconfigure when in-place build.
------------------------------------------------------------------------
r57384 | shyouhei | 2017-01-20 17:00:00 +0900 (Fri, 20 Jan 2017) | 24 lines

SecureRandom should try /dev/urandom first [Bug #9569]

	* random.c (InitVM_Random): rename Random.raw_seed to
	  Random.urandom.  A quick search seems there are no practical use
	  of this method than securerandom.rb so I think it's OK to rename
	  but if there are users of it, this hunk is subject to revert.

	* test/ruby/test_rand.rb (TestRand#test_urandom): test for it.

	* lib/securerandom.rb (SecureRandom.gen_random): Prefer OS-
	  provided CSPRNG if available. Otherwise falls back to OpenSSL.
	  Current preference is:

	  1. CSPRNG routine that the OS has; one of
	     - getrandom(2),
	     - arc4random(3), or
	     - CryptGenRandom()
	  2. /dev/urandom device
	  3. OpenSSL's RAND_bytes(3)

	  If none of above random number generators are available, you
	  cannot use this module.  An exception is raised that case.


------------------------------------------------------------------------
r57383 | nobu | 2017-01-20 16:45:10 +0900 (Fri, 20 Jan 2017) | 4 lines

Keep -jN option

* {cygwin,template}/GNUmakefile.in (MFLAGS, MAKEFLAGS): keep -jN
  option.
------------------------------------------------------------------------
r57382 | shyouhei | 2017-01-20 15:01:23 +0900 (Fri, 20 Jan 2017) | 16 lines

switch SipHash from SipHash24 to SipHash13 variant

SipHash13 is secure enough to be used in hash-tables,
and SipHash's author confirms that.
Rust already considered switch to SipHash13:
  https://github.com/rust-lang/rust/issues/29754#issue-116174313
Jean-Philippe Aumasson confirmation:
  https://github.com/rust-lang/rust/issues/29754#issuecomment-156073946
Merged pull request:
  https://github.com/rust-lang/rust/pull/33940

From: Sokolov Yura aka funny_falcon <funny.falcon@gmail.com>
Date: Thu, 8 Dec 2016 20:31:29 +0300
Signed-off-by: Urabe, Shyouhei <shyouhei@ruby-lang.org>
Fixes: [Feature #13017]

------------------------------------------------------------------------
r57381 | nobu | 2017-01-20 13:27:55 +0900 (Fri, 20 Jan 2017) | 5 lines

compile.c: optimization of defined? in condition

* compile.c (compile_branch_condition): trivial optimization of
  defined? expression in a branch condition, where a string is not
  needed, but just a boolean.
------------------------------------------------------------------------
r57380 | nobu | 2017-01-20 11:39:27 +0900 (Fri, 20 Jan 2017) | 5 lines

array.c: improve Array#sample

* array.c (rb_ary_sample): improve performance when many samples
  from a large array.  based on the patch by tomoya ishida
  <tomoyapenguin AT gmail.com> in [ruby-dev:49956].  [Bug #13136]
------------------------------------------------------------------------
r57379 | nobu | 2017-01-20 11:27:28 +0900 (Fri, 20 Jan 2017) | 1 line

benchmarks for Bug#13136
------------------------------------------------------------------------
r57378 | svn | 2017-01-20 10:02:38 +0900 (Fri, 20 Jan 2017) | 1 line

* 2017-01-20
------------------------------------------------------------------------
r57377 | nobu | 2017-01-20 10:02:37 +0900 (Fri, 20 Jan 2017) | 4 lines

error.c: print default RS

* error.c (rb_warn_m): print the default RS instead of an empty
  string with a newline.  [Feature #12944]
------------------------------------------------------------------------
r57376 | nobu | 2017-01-19 18:54:58 +0900 (Thu, 19 Jan 2017) | 4 lines

parse.y: rescue/else/ensure in do-end

* parse.y (do_body): allow rescue/else/ensure inside do/end
  blocks.  [Feature #12906]
------------------------------------------------------------------------
r57375 | naruse | 2017-01-19 18:34:30 +0900 (Thu, 19 Jan 2017) | 1 line

More description about the protected attribute of a method
------------------------------------------------------------------------
r57374 | shugo | 2017-01-19 17:13:03 +0900 (Thu, 19 Jan 2017) | 3 lines

string.c: rindex(//) should set $~.

This seems a bug introduced by r520 (1.4.0).  [ruby-core:79110] [Bug #13135]
------------------------------------------------------------------------
r57373 | nobu | 2017-01-19 16:18:23 +0900 (Thu, 19 Jan 2017) | 4 lines

parse.y: chomp by -l

* parse.y (rb_parser_while_loop): should chomp but not chop by -l
  option.  [ruby-core:78099] [Bug #12926]
------------------------------------------------------------------------
r57372 | hsbt | 2017-01-19 16:07:17 +0900 (Thu, 19 Jan 2017) | 3 lines

Fix documentation of options for all of methods in FileUtils.

Patch by galia traub( @galiat ). [Fix GH-1510][ci skip]
------------------------------------------------------------------------
r57371 | nobu | 2017-01-19 15:39:44 +0900 (Thu, 19 Jan 2017) | 4 lines

ENV#fetch: fix documentation of raised exception

[Fix GH-1514]
Author:    Misty De Meo <mistydemeo@github.com>
------------------------------------------------------------------------
r57370 | nobu | 2017-01-19 15:25:06 +0900 (Thu, 19 Jan 2017) | 15 lines

Change Kernel#warn to call Warning.warn

This allows Warning.warn to filter/process warning messages
generated by Kernel#warn.  Currently, Warning.warn can only handle
messages generated by the rb_warn/rb_warning C functions.

The Kernel#warn API is different than the Warning.warn API, this
tries to get similar behavior, but there are probably corner cases
where the behavior is different.

This makes str_end_with_asciichar in io.c no longer static so it
can be called from error.c.

[Feature #12944]
Author:    Jeremy Evans <code@jeremyevans.net>
------------------------------------------------------------------------
r57369 | nobu | 2017-01-19 14:24:34 +0900 (Thu, 19 Jan 2017) | 1 line

id_table.c: fix typo
------------------------------------------------------------------------
r57368 | nobu | 2017-01-19 12:42:07 +0900 (Thu, 19 Jan 2017) | 4 lines

compile.c: check err_info

* compile.c (iseq_setup): bail out if any errors found.
  [ruby-core:76531] [Bug #12613]
------------------------------------------------------------------------
r57367 | nobu | 2017-01-19 10:38:59 +0900 (Thu, 19 Jan 2017) | 3 lines

parse.y: warn space

* parse.y (parser_yylex): warn parentheses after space.
------------------------------------------------------------------------
r57366 | svn | 2017-01-19 03:23:49 +0900 (Thu, 19 Jan 2017) | 1 line

* 2017-01-19
------------------------------------------------------------------------
r57365 | svn | 2017-01-19 03:23:49 +0900 (Thu, 19 Jan 2017) | 1 line

* properties.
------------------------------------------------------------------------
r57364 | normal | 2017-01-19 03:23:49 +0900 (Thu, 19 Jan 2017) | 4 lines

another benchmark for IO.copy_stream socket writing

For testing Linux socket-only workaround for
https://bugs.ruby-lang.org/issues/13085
------------------------------------------------------------------------
r57363 | kazu | 2017-01-18 21:35:10 +0900 (Wed, 18 Jan 2017) | 1 line

lib/profiler.rb: Specify frozen_string_literal: true.
------------------------------------------------------------------------
r57362 | nobu | 2017-01-18 14:23:53 +0900 (Wed, 18 Jan 2017) | 4 lines

vm_method.c: resolve refined method to undef

* vm_method.c (rb_undef): resolve the method entry which refines a
  prepended method entry.  [ruby-core:78944] [Bug #13096]
------------------------------------------------------------------------
r57361 | svn | 2017-01-18 12:38:53 +0900 (Wed, 18 Jan 2017) | 1 line

* 2017-01-18
------------------------------------------------------------------------
r57360 | nobu | 2017-01-18 12:38:52 +0900 (Wed, 18 Jan 2017) | 4 lines

class.c: non-keyword hash class

* class.c (rb_extract_keywords): keep the class of non-keyword
  elements hash as the original.  [ruby-core:77813] [Bug #12884]
------------------------------------------------------------------------
r57359 | nobu | 2017-01-17 21:54:35 +0900 (Tue, 17 Jan 2017) | 4 lines

uri/generic.rb: fix exception on non-IP format

* lib/uri/generic.rb (URI::Generic#find_proxy): match IP address
  no_proxy against resolved self IP address.  [Fix GH-1513]
------------------------------------------------------------------------
r57358 | kazu | 2017-01-17 21:47:38 +0900 (Tue, 17 Jan 2017) | 1 line

lib/pstore.rb: Specify frozen_string_literal: true.
------------------------------------------------------------------------
r57355 | normal | 2017-01-17 12:31:57 +0900 (Tue, 17 Jan 2017) | 4 lines

rinda/ring.rb (make_socket): do not keep socket on failures

This prevents leaked FD warnings on test/rinda/test_rinda.rb
when testing on a machine without multicast support.
------------------------------------------------------------------------
r57354 | normal | 2017-01-17 06:42:05 +0900 (Tue, 17 Jan 2017) | 4 lines

basicsocket (rsock_bsock_send): do not truncate return value

send(2) and sendto(2) syscalls return `ssize_t', use the
proper type and macro for converting to a Numeric VALUE.
------------------------------------------------------------------------
r57353 | svn | 2017-01-17 06:08:13 +0900 (Tue, 17 Jan 2017) | 1 line

* 2017-01-17
------------------------------------------------------------------------
r57352 | normal | 2017-01-17 06:08:12 +0900 (Tue, 17 Jan 2017) | 9 lines

doc: improve documentation for Binding [ci skip]

* remove explicit return from code examples
* grammar fixes
* other small fixes

Patch by: Marcus Stollsteimer <sto.mar@web.de>

[ruby-core:79082] [Bug #13132]
------------------------------------------------------------------------
r57339 | kazu | 2017-01-16 21:37:42 +0900 (Mon, 16 Jan 2017) | 1 line

Fix a typo [ci skip]
------------------------------------------------------------------------
r57338 | nobu | 2017-01-16 11:56:28 +0900 (Mon, 16 Jan 2017) | 4 lines

test_rational.rb: messages

* test/ruby/test_rational.rb (test_parse): add messages to
  assertions.
------------------------------------------------------------------------
r57337 | svn | 2017-01-16 11:43:56 +0900 (Mon, 16 Jan 2017) | 1 line

* 2017-01-16
------------------------------------------------------------------------
r57336 | nobu | 2017-01-16 11:43:55 +0900 (Mon, 16 Jan 2017) | 4 lines

file.c: refine message

* file.c (rb_get_path_check_convert): refine the error message
  when the path name contains null byte.
------------------------------------------------------------------------
r57335 | a_matsuda | 2017-01-15 22:45:12 +0900 (Sun, 15 Jan 2017) | 7 lines

s/SaveStringValue/SafeStringValue/

Fix a typo in extension.rdoc.

Signed-off-by: Akira Matsuda <ronnie@dio.jp>

closes #1512
------------------------------------------------------------------------
r57334 | nobu | 2017-01-15 15:08:09 +0900 (Sun, 15 Jan 2017) | 4 lines

.gdbinit: refine rp [ci skip]

* .gdbinit (rp, output_string, rp): show the contents after NUL
  char.
------------------------------------------------------------------------
r57333 | nobu | 2017-01-15 14:50:41 +0900 (Sun, 15 Jan 2017) | 5 lines

rbinstall.rb: mimic rubygems wrapper script

* tool/rbinstall.rb (app_script_text): move shell script part
  after comments generated by RubyGems. '#'-lines are comments in
  both of ruby and shell script.
------------------------------------------------------------------------
r57332 | kazu | 2017-01-15 11:56:04 +0900 (Sun, 15 Jan 2017) | 1 line

lib/profile.rb: Specify frozen_string_literal: true.
------------------------------------------------------------------------
r57331 | nobu | 2017-01-15 09:45:10 +0900 (Sun, 15 Jan 2017) | 6 lines

rbinstall.rb: do nothing if bin script is same

* tool/rbinstall.rb (check_executable_overwrite): do nothing if
  the existing file equals to the wrapper script to be generated.

* tool/rbinstall.rb (generate_bin_script): ditto.
------------------------------------------------------------------------
r57330 | svn | 2017-01-15 08:09:56 +0900 (Sun, 15 Jan 2017) | 1 line

* 2017-01-15
------------------------------------------------------------------------
r57329 | normal | 2017-01-15 08:09:55 +0900 (Sun, 15 Jan 2017) | 28 lines

mention behavior of Array#join for nested arrays [ci skip]

The current documentation for Array#join does not mention the
special treatment of nested arrays.

It says:
> Returns a string created by converting each element of the
> array to a string, separated by the given separator.

Expected behavior according to the docs would be:

    [ "a", [1, 2, [:x, :y]], "b" ].join("-")  #=> "a-[1, 2, [:x, :y]]-b"
    # because of:
    [1, 2, [:x, :y]].to_s  #=> "[1, 2, [:x, :y]]"

Actual behavior:

    [ "a", [1, 2, [:x, :y]], "b" ].join("-")  #=> "a-1-2-x-y-b"

because join is applied recursively for nested arrays.

The patch clarifies this behavior.

(Also: small markup and grammar fix.)

Patch by Marcus Stollsteimer <sto.mar@web.de>

[ruby-talk:437238] [ruby-core:79079] [Bug #13130]
------------------------------------------------------------------------
r57328 | nobu | 2017-01-14 18:38:56 +0900 (Sat, 14 Jan 2017) | 5 lines

revert r57323

StringIO.new makes the buffer IO.default_external, while
StringIO.new("".dup) makes source encoding which is defaulted to
UTF-8.
------------------------------------------------------------------------
r57327 | nobu | 2017-01-14 15:13:23 +0900 (Sat, 14 Jan 2017) | 3 lines

fix up r57322

* tool/rbinstall.rb: ruby_install_name is used too.
------------------------------------------------------------------------
r57326 | nobu | 2017-01-14 11:26:49 +0900 (Sat, 14 Jan 2017) | 4 lines

resolv.rb: byte buffer

* lib/resolv.rb (Resolv::DNS::Message::MessageDecoder): treat the
  data as a byte buffer.
------------------------------------------------------------------------
r57325 | nobu | 2017-01-14 11:26:48 +0900 (Sat, 14 Jan 2017) | 8 lines

Made #decode_rdata client to catch errors

* lib/resolv.rb (Resolv::DNS::Message::MessageDecoder#get_rr):
  re-raise an exception from decode_rdata as DecodeError, so it
  can report them to the top in more informative way.  It was not
  reflecting on errors of data and thus breaking.  Client code
  expects `DecodeError` and knows how to handle broken messages.
  [Fix GH-1511]
------------------------------------------------------------------------
r57324 | svn | 2017-01-14 11:06:23 +0900 (Sat, 14 Jan 2017) | 1 line

* 2017-01-14
------------------------------------------------------------------------
r57323 | nobu | 2017-01-14 11:06:22 +0900 (Sat, 14 Jan 2017) | 1 line

StringIO.new makes a RW buffer
------------------------------------------------------------------------
r57322 | nobu | 2017-01-13 23:15:00 +0900 (Fri, 13 Jan 2017) | 1 line

fix prolog in gem wrapper scripts
------------------------------------------------------------------------
r57321 | kazu | 2017-01-13 21:08:29 +0900 (Fri, 13 Jan 2017) | 1 line

lib/observer.rb: Specify frozen_string_literal: true.
------------------------------------------------------------------------
r57320 | nobu | 2017-01-13 14:58:44 +0900 (Fri, 13 Jan 2017) | 4 lines

rbinstall.rb: LIBRUBY_RELATIVE

* tool/rbinstall.rb: see LIBRUBY_RELATIVE in CONFIG instead of
  reading config.h.
------------------------------------------------------------------------
r57319 | nobu | 2017-01-13 14:49:43 +0900 (Fri, 13 Jan 2017) | 4 lines

insns.def: float comparison

* insns.def (opt_lt, opt_le, opt_gt, opt_ge): optimize flonum and
  on-heap float comparison.
------------------------------------------------------------------------
r57318 | nobu | 2017-01-13 12:24:22 +0900 (Fri, 13 Jan 2017) | 4 lines

error.c: moved

* error.c (preface_dump, postscript_dump): CrashReporter directory
  was used before Mac OS X 10.6.
------------------------------------------------------------------------
r57317 | nobu | 2017-01-13 11:57:45 +0900 (Fri, 13 Jan 2017) | 5 lines

error.c: moved

* error.c (preface_dump, postscript_dump): moved from
  rb_vm_bugreport to place the last important message at the very
  last after [NOTE].
------------------------------------------------------------------------
r57316 | svn | 2017-01-13 10:46:45 +0900 (Fri, 13 Jan 2017) | 1 line

* 2017-01-13
------------------------------------------------------------------------
r57315 | nobu | 2017-01-13 10:46:45 +0900 (Fri, 13 Jan 2017) | 4 lines

vm_dump.c: postscript_dump

* vm_dump.c (postscript_dump): mention crash report log twice
  because important.
------------------------------------------------------------------------
r57314 | kazu | 2017-01-12 21:17:33 +0900 (Thu, 12 Jan 2017) | 1 line

lib/net/smtp.rb: Specify frozen_string_literal: true.
------------------------------------------------------------------------
r57313 | nobu | 2017-01-12 16:41:35 +0900 (Thu, 12 Jan 2017) | 11 lines

immediate message mode of compile error

* compile.c (append_compile_error): set Qtrue for erred state with
  showing the message immediately.

* iseq.c (prepare_iseq_build): make immediate message mode if main
  or top level context, not to show the failed path twice in the
  first line.

* iseq.c (cleanup_iseq_build): raise default message exception if
  immediate message mode.
------------------------------------------------------------------------
r57312 | nobu | 2017-01-12 14:43:00 +0900 (Thu, 12 Jan 2017) | 4 lines

compile.c: invalid yield in main

* compile.c (iseq_compile_each): yield cannot be in the main
  context as well as a top context.
------------------------------------------------------------------------
r57311 | shugo | 2017-01-12 11:19:17 +0900 (Thu, 12 Jan 2017) | 5 lines

lib/net/protocol.rb: preserve backtrace information

BufferedIO#rbuf_fill should preserve backtrace information when raising
EOFError.  Otherwise, users get confused when EOFError is leaked out from
Net::SMTP etc.  [ruby-core:78550] [Bug #13018]
------------------------------------------------------------------------
r57310 | normal | 2017-01-12 08:53:05 +0900 (Thu, 12 Jan 2017) | 5 lines

test/rinda/test_rinda: skip multicast tests for unsupported systems

This allows "test-all" to pass on systems without multicast
support.  I leave CONFIG_IP_MULTICAST unset in my Linux kernel
.config, nowadays.
------------------------------------------------------------------------
r57309 | normal | 2017-01-12 08:46:05 +0900 (Thu, 12 Jan 2017) | 10 lines

test/fiddle/helper: remove special case for x86_64-linux

RUBY_PLATFORM is "x86_64-linux" on a 32-bit (x86) Ruby built and
running on a 64-bit Linux kernel.  I also have a /lib64
directory nowadays because I just installed multi-arch support
in userspace.  So, fall back to loading based in the size of a
packed "unsigned long" type instead of special-casing.

Tested with both x86 and x86_64 userspace on 64-bit Linux kernel,
as well as x86 with a 32-bit Linux kernel.
------------------------------------------------------------------------
r57308 | svn | 2017-01-12 07:38:51 +0900 (Thu, 12 Jan 2017) | 1 line

* 2017-01-12
------------------------------------------------------------------------
r57307 | normal | 2017-01-12 07:38:50 +0900 (Thu, 12 Jan 2017) | 10 lines

random.c (fill_random_bytes_syscall): use "__NR_" prefix on Linux

glibc still does not define the SYS_getrandom alias for
__NR_getrandom in the Linux kernel.  However, installing
up-to-date Linux kernel headers (linux-libc-dev >= 3.17 package
on Debian) will get the __NR_getrandom syscall number defined
properly without relying on glibc.

This allows users with a modern kernel+headers to use the getrandom
syscall without waiting on glibc support.
------------------------------------------------------------------------
r57306 | kazu | 2017-01-11 23:48:51 +0900 (Wed, 11 Jan 2017) | 1 line

lib/net/protocol.rb: Specify frozen_string_literal: true.
------------------------------------------------------------------------
r57305 | nobu | 2017-01-11 13:12:56 +0900 (Wed, 11 Jan 2017) | 5 lines

variable.c: fix the condition to cache

* variable.c (rb_const_set): fix the condition to cache the class
  path and cache permanent or temporary path corresponding to the
  outer klass.  [ruby-core:79039] [Bug #13120]
------------------------------------------------------------------------
r57304 | nobu | 2017-01-11 11:31:02 +0900 (Wed, 11 Jan 2017) | 4 lines

string.c: replacement and block

* string.c (rb_enc_str_scrub): only one of replacement and block
  is allowed.  [ruby-core:79038] [Bug #13119]
------------------------------------------------------------------------
r57303 | nobu | 2017-01-11 11:18:45 +0900 (Wed, 11 Jan 2017) | 4 lines

string.c: yield invalid part

* string.c (rb_enc_str_scrub): yield the invalid part only with
  ASCII-incompatible.  [ruby-core:79039] [Bug #13120]
------------------------------------------------------------------------
r57302 | nobu | 2017-01-11 10:03:37 +0900 (Wed, 11 Jan 2017) | 4 lines

string.c: block for scrub with ASCII-incompatible

* string.c (rb_enc_str_scrub): honor the given block with
  ASCII-incompatible encoding.  [ruby-core:79039] [Bug #13120]
------------------------------------------------------------------------
r57301 | svn | 2017-01-11 00:28:12 +0900 (Wed, 11 Jan 2017) | 1 line

* 2017-01-11
------------------------------------------------------------------------
r57300 | nobu | 2017-01-11 00:28:11 +0900 (Wed, 11 Jan 2017) | 4 lines

compile.c: check compile

* compile.c (iseq_compile_each): check if sub nodes succeeded.
  [ruby-core:76531] [Bug #12613]
------------------------------------------------------------------------
r57299 | nobu | 2017-01-10 22:41:18 +0900 (Tue, 10 Jan 2017) | 4 lines

rational.c: short circuit optimization

* rational.c (nurat_reduce): short circuit when arguments are ONE,
  nothing is needed.
------------------------------------------------------------------------
r57298 | nobu | 2017-01-10 22:37:34 +0900 (Tue, 10 Jan 2017) | 3 lines

rational.c: f_idiv

* rational.c (f_idiv): call rb_int_idiv directly if possible.
------------------------------------------------------------------------
r57297 | kazu | 2017-01-10 21:32:56 +0900 (Tue, 10 Jan 2017) | 1 line

lib/net/pop.rb: Specify frozen_string_literal: true.
------------------------------------------------------------------------
r57296 | nobu | 2017-01-10 21:18:21 +0900 (Tue, 10 Jan 2017) | 4 lines

numeric.c: short circuit optimization

* numeric.c (fix_mul): short circuit when multiplication of Bignum
  and 0 or 1 not to make a Bignum unnecessarily.
------------------------------------------------------------------------
r57295 | svn | 2017-01-10 19:57:26 +0900 (Tue, 10 Jan 2017) | 1 line

* 2017-01-10
------------------------------------------------------------------------
r57294 | nobu | 2017-01-10 19:57:26 +0900 (Tue, 10 Jan 2017) | 4 lines

thread.c: fix todo

* thread.c (rb_threadptr_pending_interrupt_check_mask): traverse
  the super class chain instead of making ancestors array.
------------------------------------------------------------------------
r57293 | nobu | 2017-01-09 11:55:39 +0900 (Mon, 09 Jan 2017) | 5 lines

vm_insnhelper.c: block argument at tailcall

* vm_insnhelper.c (vm_call_iseq_setup_tailcall): check interrupts
  after set up the new frame, not the passed block to be clobbered
  by invoked finalizers and so on.  [ruby-core:78981] [Bug #13107]
------------------------------------------------------------------------
r57292 | svn | 2017-01-09 11:45:29 +0900 (Mon, 09 Jan 2017) | 1 line

* 2017-01-09
------------------------------------------------------------------------
r57291 | nobu | 2017-01-09 11:45:28 +0900 (Mon, 09 Jan 2017) | 4 lines

slex.rb: japanese comment [ci skip]

* lib/irb/slex.rb (postproc): translated a japanese comment in
  ISO-2022-JP.  [ruby-core:79017] [Misc #13117]
------------------------------------------------------------------------
r57290 | kazu | 2017-01-08 13:17:08 +0900 (Sun, 08 Jan 2017) | 1 line

lib/getoptlong.rb: Specify frozen_string_literal: true.
------------------------------------------------------------------------
r57289 | nobu | 2017-01-08 13:04:29 +0900 (Sun, 08 Jan 2017) | 4 lines

test_io_console.rb: fix of old CentOS5

* test/io/console/test_io_console.rb (test_winsize): on old CentOS5
  window size seems unable to be set across a pty.
------------------------------------------------------------------------
r57288 | nobu | 2017-01-08 12:51:35 +0900 (Sun, 08 Jan 2017) | 4 lines

driver.rb: measure_target option [ci skip]

* benchmark/driver.rb (BenchmarkDriver.load): restore
  measure_target option from the loaded results.
------------------------------------------------------------------------
r57287 | nobu | 2017-01-08 12:50:32 +0900 (Sun, 08 Jan 2017) | 4 lines

driver.rb: out output file when loading [ci skip]

* benchmark/driver.rb: default output file is not used when
  loading rawdata.
------------------------------------------------------------------------
r57286 | nobu | 2017-01-08 12:46:17 +0900 (Sun, 08 Jan 2017) | 4 lines

driver.rb: extract loop times [ci skip]

* benchmark/driver.rb (BenchmarkDriver.load): extract loop times
  from the loaded results to adjust the results.
------------------------------------------------------------------------
r57285 | nobu | 2017-01-08 12:45:34 +0900 (Sun, 08 Jan 2017) | 4 lines

driver.rb: adjust name width [ci skip]

* benchmark/driver.rb (show_results): count adjusted result marks
  as the name width.
------------------------------------------------------------------------
r57284 | nobu | 2017-01-08 10:59:54 +0900 (Sun, 08 Jan 2017) | 5 lines

variable.c: resolve permanent name only

* variable.c (rb_const_set): resolve and cache class name
  immediately only if the outer class/module has the name,
  otherwise just set the ID.  [ruby-core:79007] [Bug #13113]
------------------------------------------------------------------------
r57283 | nobu | 2017-01-08 10:46:10 +0900 (Sun, 08 Jan 2017) | 1 line

benchmarks for [Bug #13113] [ci skip]
------------------------------------------------------------------------
r57282 | nobu | 2017-01-08 08:02:29 +0900 (Sun, 08 Jan 2017) | 4 lines

console.c: unpaired size

* ext/io/console/console.c (console_set_winsize): reject unpaired
  pixel size.
------------------------------------------------------------------------
r57281 | svn | 2017-01-08 07:52:03 +0900 (Sun, 08 Jan 2017) | 1 line

* 2017-01-08
------------------------------------------------------------------------
r57280 | nobu | 2017-01-08 07:52:03 +0900 (Sun, 08 Jan 2017) | 4 lines

console.c: OOB access

* ext/io/console/console.c (console_set_winsize): fix
  out-of-bounds access.  [ruby-core:79004] [Bug #13112]
------------------------------------------------------------------------
r57279 | nobu | 2017-01-07 20:54:10 +0900 (Sat, 07 Jan 2017) | 1 line

adjust indent [ci skip]
------------------------------------------------------------------------
r57278 | eregon | 2017-01-07 20:31:53 +0900 (Sat, 07 Jan 2017) | 8 lines

fix optimization for hash aset/aref with fstring

Patch by Eric Wong [ruby-core:78797].
I don't like the idea of making insns.def any bigger to support
a corner case, and "test_hash_aref_fstring_identity" shows
how contrived this is.

[ruby-core:78783] [Bug #12855]
------------------------------------------------------------------------
r57277 | nobu | 2017-01-07 17:31:03 +0900 (Sat, 07 Jan 2017) | 4 lines

bignum.c: unnecessary check

* bignum.c (rb_cstr_parse_inum): remove unnecessary check.
  successive sign is rejected by conv_digit.
------------------------------------------------------------------------
r57276 | svn | 2017-01-07 11:14:08 +0900 (Sat, 07 Jan 2017) | 1 line

* 2017-01-07
------------------------------------------------------------------------
r57275 | kazu | 2017-01-07 11:14:07 +0900 (Sat, 07 Jan 2017) | 1 line

lib/fileutils.rb: Specify frozen_string_literal: true.
------------------------------------------------------------------------
r57274 | nobu | 2017-01-06 12:11:45 +0900 (Fri, 06 Jan 2017) | 4 lines

prelude.rb: Binding#irb [ci skip]

* prelude.rb (Binding#irb): [EXPERIMENTAL] automatically require
  irb and run.  [ruby-core:78960] [Bug #13099]
------------------------------------------------------------------------
r57273 | nobu | 2017-01-06 12:02:38 +0900 (Fri, 06 Jan 2017) | 4 lines

test_io.rb: squiggly heredoc

* test/ruby/test_io.rb (test_threaded_flush): use squiggly here
  document to strip leading spaces.
------------------------------------------------------------------------
r57272 | svn | 2017-01-06 11:05:36 +0900 (Fri, 06 Jan 2017) | 1 line

* 2017-01-06
------------------------------------------------------------------------
r57271 | kazu | 2017-01-06 11:05:35 +0900 (Fri, 06 Jan 2017) | 1 line

lib/delegate.rb: Specify frozen_string_literal: true.
------------------------------------------------------------------------
r57270 | nobu | 2017-01-05 16:27:19 +0900 (Thu, 05 Jan 2017) | 3 lines

numeric.c: short circuit

* numeric.c (int_pow): short circuit when y is 0, always return 1.
------------------------------------------------------------------------
r57269 | nobu | 2017-01-05 16:27:18 +0900 (Thu, 05 Jan 2017) | 4 lines

bignum.c: fix rb_cstr_parse_inum endp

* bignum.c (rb_cstr_parse_inum): stores the address of the first
  invalid character when str is too big or contains an underscore.
------------------------------------------------------------------------
r57268 | svn | 2017-01-05 10:00:02 +0900 (Thu, 05 Jan 2017) | 1 line

* 2017-01-05
------------------------------------------------------------------------
r57267 | kazu | 2017-01-05 10:00:01 +0900 (Thu, 05 Jan 2017) | 1 line

lib/debug.rb: Specify frozen_string_literal: true.
------------------------------------------------------------------------
r57266 | nobu | 2017-01-04 20:06:16 +0900 (Wed, 04 Jan 2017) | 4 lines

win32/registry.rb: registry type names

* ext/win32/lib/win32/registry.rb (Win32::Registry#read): show
  registry type names instead of numeric values.
------------------------------------------------------------------------
r57265 | nobu | 2017-01-04 17:21:14 +0900 (Wed, 04 Jan 2017) | 7 lines

win32/resolv.rb: ad hoc workaround

* ext/win32/lib/win32/resolv.rb (Win32::Resolv::SZ): an ad hoc
  workaround for broken registry.  SearchList and other registry
  values must be REG_SZ, or Windows ignores anything in those
  values otherwise.  [ruby-dev:49924] [Bug #13081]
  https://github.com/rubygems/rubygems/issues/1700
------------------------------------------------------------------------
r57264 | kazu | 2017-01-04 14:47:52 +0900 (Wed, 04 Jan 2017) | 1 line

lib/cmath.rb: Specify frozen_string_literal: true.
------------------------------------------------------------------------
r57262 | nobu | 2017-01-04 09:30:45 +0900 (Wed, 04 Jan 2017) | 1 line

adjust indent [ci skip]
------------------------------------------------------------------------
r57261 | svn | 2017-01-04 07:42:11 +0900 (Wed, 04 Jan 2017) | 1 line

* 2017-01-04
------------------------------------------------------------------------
r57260 | tenderlove | 2017-01-04 07:42:10 +0900 (Wed, 04 Jan 2017) | 16 lines

Add `full` option to `ObjectSpace.dump_all`

The `full` option includes all slots (even `T_NONE`) in the JSON output.
This is to help with debugging heap fragmentation.

Here is an example usage:

```ruby
File.open('heap.json', 'w') do |f|
  ObjectSpace.dump_all(output: f, full: true)
end
```

The `heap.json` file contains all slots, including empty slots.

[Feature #13001] [ruby-core:78468]
------------------------------------------------------------------------
r57259 | nobu | 2017-01-03 19:49:12 +0900 (Tue, 03 Jan 2017) | 4 lines

compile.c: fallback nil

* compile.c (iseq_compile_each): push fallback nil only when
  defined guard is added.
------------------------------------------------------------------------
r57258 | nobu | 2017-01-03 18:48:43 +0900 (Tue, 03 Jan 2017) | 4 lines

compile.c: omit unnecessary defined guard

* compile.c (defined_expr): omit unnecessary defined guard when
  method call has no receiver and no arguments.
------------------------------------------------------------------------
r57257 | nobu | 2017-01-03 18:47:16 +0900 (Tue, 03 Jan 2017) | 4 lines

forwardable.rb: fix branches

* lib/forwardable.rb (instance_delegate, single_delegate): fix
  inverted branches.
------------------------------------------------------------------------
r57256 | nobu | 2017-01-03 18:35:26 +0900 (Tue, 03 Jan 2017) | 5 lines

forwardable.rb: use defined?

* lib/forwardable.rb (_delegator_method): use defined? operator
  instead of binding and calling unbound Kernel#respond_to?.  a
  remedy for an performance bottleneck.
------------------------------------------------------------------------
r57255 | nobu | 2017-01-03 17:40:51 +0900 (Tue, 03 Jan 2017) | 5 lines

forwardable.rb: use defined?

* lib/forwardable.rb (_delegator_method): use defined? operator
  instead of binding and calling unbound Kernel#respond_to?.  a
  remedy for an performance bottleneck.
------------------------------------------------------------------------
r57254 | svn | 2017-01-03 11:00:02 +0900 (Tue, 03 Jan 2017) | 1 line

* 2017-01-03
------------------------------------------------------------------------
r57253 | kazu | 2017-01-03 11:00:01 +0900 (Tue, 03 Jan 2017) | 1 line

lib/benchmark.rb: Specify frozen_string_literal: true.
------------------------------------------------------------------------
r57252 | kazu | 2017-01-02 21:20:09 +0900 (Mon, 02 Jan 2017) | 1 line

lib/English.rb: Specify frozen_string_literal: true.
------------------------------------------------------------------------
r57251 | duerst | 2017-01-02 10:40:12 +0900 (Mon, 02 Jan 2017) | 1 line

adjust spacing [ci skip]
------------------------------------------------------------------------
r57250 | nobu | 2017-01-02 09:22:46 +0900 (Mon, 02 Jan 2017) | 5 lines

object.c: rb_class_alloc

* object.c (rb_obj_alloc): add pathological check of klass for
  extension libraries which do not check given arguments properly.
  [ruby-core:78934] [Bug #13093]
------------------------------------------------------------------------
r57249 | nobu | 2017-01-02 09:03:28 +0900 (Mon, 02 Jan 2017) | 5 lines

object.c: rb_class_s_new

* object.c (rb_class_new_instance): add pathological check of
  klass for extension libraries which do not check given arguments
  properly.  [ruby-core:78934] [Bug #13093]
------------------------------------------------------------------------
r57248 | nobu | 2017-01-02 07:20:38 +0900 (Mon, 02 Jan 2017) | 4 lines

 dir.c: getattrlist on OSX 10.5

* dir.c (is_case_sensitive): use getattrlist() if fgetattrlist()
  is unavailable, on OSX 10.5.  [ruby-core:68829] [Bug #11054]
------------------------------------------------------------------------
r57247 | svn | 2017-01-02 01:42:44 +0900 (Mon, 02 Jan 2017) | 1 line

* 2017-01-02
------------------------------------------------------------------------
r57246 | naruse | 2017-01-02 01:42:43 +0900 (Mon, 02 Jan 2017) | 1 line

fix typo [Bug #13091]
------------------------------------------------------------------------
r57245 | nobu | 2017-01-01 18:17:10 +0900 (Sun, 01 Jan 2017) | 1 line

test for [Feature #11547]
------------------------------------------------------------------------
r57244 | nobu | 2017-01-01 18:07:56 +0900 (Sun, 01 Jan 2017) | 4 lines

variable.c: top-level constant look-up

* variable.c (rb_const_search): [EXPERIMENTAL] remove top-level
  constant look-up.  [Feature #11547]
------------------------------------------------------------------------
r57243 | nobu | 2017-01-01 17:22:02 +0900 (Sun, 01 Jan 2017) | 1 line

passed block should keep the lambda-ness
------------------------------------------------------------------------
r57242 | svn | 2017-01-01 07:44:32 +0900 (Sun, 01 Jan 2017) | 1 line

* 2017-01-01
------------------------------------------------------------------------
r57241 | hsbt | 2017-01-01 07:44:31 +0900 (Sun, 01 Jan 2017) | 1 line

Update submaintainer of default gems.
------------------------------------------------------------------------
r57240 | nobu | 2016-12-31 17:07:58 +0900 (Sat, 31 Dec 2016) | 6 lines

vm.c: fix return in lambda

* vm.c (invoke_block_from_c_splattable): pass lambda-ness.

* vm_eval.c (yield_under): invoke lambda proc properly.
  [ruby-core:78917] [Bug #13090]
------------------------------------------------------------------------
r57239 | svn | 2016-12-31 09:41:15 +0900 (Sat, 31 Dec 2016) | 1 line

* 2016-12-31
------------------------------------------------------------------------
r57238 | svn | 2016-12-31 09:41:15 +0900 (Sat, 31 Dec 2016) | 1 line

* properties.
------------------------------------------------------------------------
r57237 | normal | 2016-12-31 09:41:14 +0900 (Sat, 31 Dec 2016) | 4 lines

add benchmark for IO.copy_stream IO#write case

I will attempt to reduce garbage in proposed fix
for https://bugs.ruby-lang.org/issues/13085
------------------------------------------------------------------------
r57236 | nobu | 2016-12-30 17:01:34 +0900 (Fri, 30 Dec 2016) | 5 lines

rational.c: memory leak in gcd

* rational.c (rb_gcd_gmp): fix memory leak.  patched by KISHIMOTO,
  Makoto <ksmakoto AT dd.iij4u.or.jp> in [ruby-dev:49934].
  [Bug #13089]
------------------------------------------------------------------------
r57235 | svn | 2016-12-30 01:16:33 +0900 (Fri, 30 Dec 2016) | 1 line

* 2016-12-30
------------------------------------------------------------------------
r57234 | rhe | 2016-12-30 01:16:32 +0900 (Fri, 30 Dec 2016) | 9 lines

test/ruby/test_pack.rb: fix test case added by r57187

The test case for String#unpack added by r57187 is not properly testing
because the String will be filled after the block invocation.
[ruby-core:78841] [Bug #13075]

Thanks to nagachika for pointing this out:

  http://d.hatena.ne.jp/nagachika/20161226/ruby_trunk_changes_57184_57194#r57187
------------------------------------------------------------------------
r57233 | nobu | 2016-12-29 19:32:48 +0900 (Thu, 29 Dec 2016) | 4 lines

rational.c: refactor to_r

* rational.c (read_num, read_rat_nos): refactor to curtail
  creating Rational objects.
------------------------------------------------------------------------
r57232 | nobu | 2016-12-29 18:26:45 +0900 (Thu, 29 Dec 2016) | 4 lines

rational.c: fix for mathn

* rational.c (read_num, read_rat_nos): dispatch by the type of numerator, for
  mathn.  [ruby-core:78893] [Bug #13084]
------------------------------------------------------------------------
r57231 | svn | 2016-12-29 18:06:00 +0900 (Thu, 29 Dec 2016) | 1 line

* 2016-12-29
------------------------------------------------------------------------
r57230 | nobu | 2016-12-29 18:05:59 +0900 (Thu, 29 Dec 2016) | 4 lines

rational.c: canonicalization

* rational.c (canonicalization): define always regardless CANON,
  and remove unnecessary ifdefs.
------------------------------------------------------------------------
r57228 | svn | 2016-12-28 13:40:59 +0900 (Wed, 28 Dec 2016) | 1 line

* 2016-12-28
------------------------------------------------------------------------
r57227 | nobu | 2016-12-28 13:40:58 +0900 (Wed, 28 Dec 2016) | 4 lines

numeric.c: reduce fdiv

* numeric.c (rb_int_fdiv_double): reduce first for more precise
  result.  [ruby-core:78886] [Bug #13078]
------------------------------------------------------------------------
r57224 | nobu | 2016-12-27 20:43:34 +0900 (Tue, 27 Dec 2016) | 5 lines

io.c: fix race between read and close

* io.c (io_fillbuf): fix race between read and close and bail out
  in the case the IO gets closed before the reading thread achieve
  the lock.  [ruby-core:78845] [Bug #13076]
------------------------------------------------------------------------
r57206 | usa | 2016-12-27 18:07:02 +0900 (Tue, 27 Dec 2016) | 5 lines

revert a part of r57199

* io.c (io_fillbuf): revert a part of r57199 because it broke IO#getch.
  see also [Bug #13076]

------------------------------------------------------------------------
r57205 | normal | 2016-12-27 17:52:32 +0900 (Tue, 27 Dec 2016) | 4 lines

cont.c: change fiber stack size doc [ci skip]

It's many years since we had tiny 4KB fiber stacks :<
point to the manpage instead for current, larger sizes.
------------------------------------------------------------------------
r57204 | nobu | 2016-12-27 16:39:29 +0900 (Tue, 27 Dec 2016) | 1 line

io.c: use io_close to close ARGF
------------------------------------------------------------------------
r57203 | nobu | 2016-12-27 16:18:27 +0900 (Tue, 27 Dec 2016) | 4 lines

io.c: ARGF fd leak

* io.c (argf_next_argv): fix leak of fd after breaking in #each
  method.
------------------------------------------------------------------------
r57202 | nobu | 2016-12-27 16:10:11 +0900 (Tue, 27 Dec 2016) | 5 lines

thread.c: fix race between read and close

* thread.c (rb_thread_fd_close): wait until all threads using the
  fd finish the operation, not to free the buffer in use.
  [ruby-core:78845] [Bug #13076]
------------------------------------------------------------------------
r57201 | svn | 2016-12-27 10:40:40 +0900 (Tue, 27 Dec 2016) | 1 line

* 2016-12-27
------------------------------------------------------------------------
r57200 | hsbt | 2016-12-27 10:40:39 +0900 (Tue, 27 Dec 2016) | 1 line

Ignored extracted gem files.
------------------------------------------------------------------------
r57199 | nobu | 2016-12-26 23:14:18 +0900 (Mon, 26 Dec 2016) | 5 lines

io.c: fix race between read and close

* io.c (io_fillbuf): fix race between read and close, in the case
  the IO gets closed before the reading thread achieve the lock.
  [ruby-core:78845] [Bug #13076]
------------------------------------------------------------------------
r57198 | nobu | 2016-12-26 22:31:03 +0900 (Mon, 26 Dec 2016) | 4 lines

parse.y: preserve cmdarg stack

* parse.y (do_body): preserve cmdarg stack around do/end block.
  [ruby-core:78837] [Bug #13073]
------------------------------------------------------------------------
r57197 | svn | 2016-12-26 21:00:03 +0900 (Mon, 26 Dec 2016) | 1 line

* properties.
------------------------------------------------------------------------
r57196 | kazu | 2016-12-26 21:00:02 +0900 (Mon, 26 Dec 2016) | 1 line

Add NEWS for Ruby 2.5.0
------------------------------------------------------------------------
r57195 | kazu | 2016-12-26 21:00:01 +0900 (Mon, 26 Dec 2016) | 1 line

Move from NEWS to doc/NEWS-2.4.0
------------------------------------------------------------------------
r57194 | nobu | 2016-12-26 19:00:36 +0900 (Mon, 26 Dec 2016) | 4 lines

vm_eval.c: Symbol#to_proc and instance_exec

* vm_eval.c (yield_under): should evaluate the proc on the first
  argument.  [ruby-core:78839] [Bug #13074]
------------------------------------------------------------------------
r57193 | nobu | 2016-12-26 19:00:34 +0900 (Mon, 26 Dec 2016) | 1 line

test/ruby/test_symbol.rb: use begin;end; hack
------------------------------------------------------------------------
r57192 | nobu | 2016-12-26 18:32:07 +0900 (Mon, 26 Dec 2016) | 1 line

[Bug #12705]
------------------------------------------------------------------------
r57191 | nobu | 2016-12-26 18:28:48 +0900 (Mon, 26 Dec 2016) | 3 lines

get rid of sprintf

* missing/strerror.c (strerror): use snprintf instead of sprintf.
------------------------------------------------------------------------
r57190 | nobu | 2016-12-26 18:28:47 +0900 (Mon, 26 Dec 2016) | 4 lines

get rid of strcat

* regerror.c (onig_vsnprintf_with_pattern): use memcpy with the
  known length instead of strcat.
------------------------------------------------------------------------
r57189 | nobu | 2016-12-26 18:28:46 +0900 (Mon, 26 Dec 2016) | 10 lines

get rid of strcpy

* addr2line.c (follow_debuglink): insert global_debug_dir by using
  memmove instead of copying to temporary buffer.

* dln.c (dln_load): use memcpy with the known length instead of
  strcpy.

* gc.c (rb_gc_unprotect_logging): use strdup instead of malloc and
  strcpy.
------------------------------------------------------------------------
r57188 | nobu | 2016-12-26 17:01:37 +0900 (Mon, 26 Dec 2016) | 5 lines

Makefile.sub: refine configuration check

* win32/Makefile.sub (config.status): check configured target by
  reading from config.status, and remove version dependent values
  from config.h.
------------------------------------------------------------------------
r57187 | rhe | 2016-12-26 15:32:00 +0900 (Mon, 26 Dec 2016) | 7 lines

pack.c: avoid returning uninitialized String

Fix unpacking with 'b', 'B', 'h' and 'H' format. Do not return an
uninitialized String to Ruby before filling the content bytes.
Fixes r11175 ("pack.c (pack_unpack): execute block if given with
unpacked value instead of creating an array", 2006-10-15).
[ruby-core:78841] [Bug #13075]
------------------------------------------------------------------------
r57186 | nobu | 2016-12-26 14:07:54 +0900 (Mon, 26 Dec 2016) | 4 lines

Makefile.sub: fix dependency of RUBYDEF

* win32/Makefile.sub (RUBYDEF): fix dependency, win32/mkexports.rb
  requires rbconfig.rb.
------------------------------------------------------------------------
r57185 | nobu | 2016-12-26 08:56:55 +0900 (Mon, 26 Dec 2016) | 4 lines

string.c: CRLF in paragraph mode

* string.c (rb_str_enumerate_lines): allow CRLF to separate
  paragraphs.
------------------------------------------------------------------------
r57184 | nobu | 2016-12-26 08:50:09 +0900 (Mon, 26 Dec 2016) | 5 lines

string.c: consistent paragraph mode with IO

* string.c (rb_str_enumerate_lines): in paragraph mode, do not
  include newlines which separate paragraphs, so that it will be
  consistent with IO#each_line.
------------------------------------------------------------------------
r57183 | matz | 2016-12-26 01:53:00 +0900 (Mon, 26 Dec 2016) | 2 lines

include/ruby/version.h: Update API version.

------------------------------------------------------------------------
r57182 | svn | 2016-12-26 01:35:52 +0900 (Mon, 26 Dec 2016) | 1 line

* 2016-12-26
------------------------------------------------------------------------
r57181 | matz | 2016-12-26 01:35:51 +0900 (Mon, 26 Dec 2016) | 2 lines

version.h (RUBY_VERSION): 2.5.0 development has started.

------------------------------------------------------------------------
r57180 | nobu | 2016-12-25 23:32:29 +0900 (Sun, 25 Dec 2016) | 4 lines

memory_status.c: support old Mac OS

* ext/-test-/memory_status/memory_status.c (read_status): use
  TASK_BASIC_INFO instead of MACH_TASK_BASIC_INFO on old Mac OS.
------------------------------------------------------------------------
r57179 | nobu | 2016-12-25 17:47:22 +0900 (Sun, 25 Dec 2016) | 3 lines

bignum.c: precise fdiv

* bignum.c (big_fdiv): more precise calculation.  [ruby-dev:49915]
------------------------------------------------------------------------
r57178 | nobu | 2016-12-25 17:42:28 +0900 (Sun, 25 Dec 2016) | 1 line

bignum.c (DBL_BIGDIG): make enum
------------------------------------------------------------------------
r57177 | svn | 2016-12-25 14:58:25 +0900 (Sun, 25 Dec 2016) | 1 line

* 2016-12-25
------------------------------------------------------------------------
r57176 | nobu | 2016-12-25 14:58:24 +0900 (Sun, 25 Dec 2016) | 4 lines

.gdbinit: refine rp

* .gdbinit (rp): refine output of T_STRUCT and T_BIGNUM to show
  all elements.
------------------------------------------------------------------------
r57175 | nobu | 2016-12-24 22:22:53 +0900 (Sat, 24 Dec 2016) | 4 lines

regint.h: version for secure functions

* regint.h (xvsnprintf): secure version functions are not
  supported on old VC.
------------------------------------------------------------------------
r57174 | nobu | 2016-12-24 22:21:30 +0900 (Sat, 24 Dec 2016) | 4 lines

hash.c: split long long literals

* hash.c (prime1, prime2): split long long literals for platforms
  where LL suffix is not supported, e.g., VC6.
------------------------------------------------------------------------
r57173 | nobu | 2016-12-24 22:19:50 +0900 (Sat, 24 Dec 2016) | 4 lines

compile.c: constify

* compile.c (method_for_self): constify an argument of build
  function for VC6.
------------------------------------------------------------------------
r57172 | nobu | 2016-12-24 21:21:52 +0900 (Sat, 24 Dec 2016) | 4 lines

time.c: fix type of usec2subsecx

* time.c (usec2subsecx): fix return type, which is a numeric
  object but not a long int.  [ruby-dev:49912] [Bug #13066]
------------------------------------------------------------------------
r57171 | nobu | 2016-12-24 21:19:23 +0900 (Sat, 24 Dec 2016) | 1 line

time.c: remove debug code
------------------------------------------------------------------------
r57170 | nobu | 2016-12-24 20:56:12 +0900 (Sat, 24 Dec 2016) | 1 line

time.c: fix typo in value_insane_p
------------------------------------------------------------------------
r57169 | nobu | 2016-12-24 18:22:21 +0900 (Sat, 24 Dec 2016) | 4 lines

test/unit.rb: restore parallel option

* test/lib/test/unit.rb (_run_parallel): restore parallel option
  after retrying for --repeat-count option.
------------------------------------------------------------------------
r57168 | nobu | 2016-12-24 09:51:01 +0900 (Sat, 24 Dec 2016) | 7 lines

test/unit.rb: --subprocess-timeout-scale option

* test/lib/envutil.rb (EnvUtil#invoke_ruby): add subprocess
  timeout scaling factor.

* test/lib/test/unit.rb (Test::Unit::SubprocessOption): add
  --subprocess-timeout-scale option.
------------------------------------------------------------------------
r57167 | nobu | 2016-12-24 09:50:59 +0900 (Sat, 24 Dec 2016) | 4 lines

test/unit.rb: --repeat-count option

* test/lib/test/unit.rb (Test::Unit::RepeatOption): --repeat-count
  option to repeat COUNT times while success.
------------------------------------------------------------------------
r57166 | svn | 2016-12-24 01:09:10 +0900 (Sat, 24 Dec 2016) | 1 line

* 2016-12-24
------------------------------------------------------------------------
r57165 | naruse | 2016-12-24 01:09:09 +0900 (Sat, 24 Dec 2016) | 1 line

Add ruby_2_4 branch to test on travis [skip ci]
------------------------------------------------------------------------
r57160 | naruse | 2016-12-23 23:54:04 +0900 (Fri, 23 Dec 2016) | 3 lines

Increase timeout

http://rubyci.org/logs/rubyci.s3.amazonaws.com/aix71_ppc/ruby-trunk/log/20161223T113301Z.fail.html.gz
------------------------------------------------------------------------
r57159 | nobu | 2016-12-23 12:22:36 +0900 (Fri, 23 Dec 2016) | 5 lines

assertions.rb: prepare_syntax_check

* test/lib/test/unit/assertions.rb (prepare_syntax_check): extract
  common preparation of arguments from assert_valid_syntax and
  assert_syntax_error.
------------------------------------------------------------------------
r57158 | nobu | 2016-12-23 12:22:35 +0900 (Fri, 23 Dec 2016) | 8 lines

assertions.rb: syntax check by iseq

* test/lib/test/unit/assertions.rb (assert_valid_syntax): use
  RubyVM::InstructionSequence.compile to get rid of executing the
  code, instead of catch&throw.  sample/trick2015/kinaba/entry.rb
  no longer raises an Invalid return.

* test/lib/test/unit/assertions.rb (assert_syntax_error): ditto.
------------------------------------------------------------------------
r57157 | nobu | 2016-12-23 09:05:40 +0900 (Fri, 23 Dec 2016) | 4 lines

time.c: inquire suspicious values

* time.c (time_arg): dump sec and subsec arguments if subsecx is
  insane.
------------------------------------------------------------------------
r57156 | nobu | 2016-12-23 08:20:00 +0900 (Fri, 23 Dec 2016) | 5 lines

test_modify_expand.rb: skip if no overflow

* test/-ext-/string/test_modify_expand.rb (test_integer_overflow):
  no longer happens on platforms where size_t is larger than long,
  e.g. 64bit windows, since r57122.
------------------------------------------------------------------------
r57155 | nobu | 2016-12-23 07:34:18 +0900 (Fri, 23 Dec 2016) | 1 line

time.c: inquire suspicious values
------------------------------------------------------------------------
r57154 | nobu | 2016-12-23 07:16:19 +0900 (Fri, 23 Dec 2016) | 4 lines

string.c: suppress a warning

* string.c (rb_str_casecmp_p): [DOC] use Unicode escape form to
  get rid of warning C4819 by Microsoft Visual C++.
------------------------------------------------------------------------
r57153 | svn | 2016-12-23 05:58:55 +0900 (Fri, 23 Dec 2016) | 1 line

* 2016-12-23
------------------------------------------------------------------------
r57152 | nobu | 2016-12-23 05:58:55 +0900 (Fri, 23 Dec 2016) | 1 line

get rid of implicit signedness conversions
------------------------------------------------------------------------
r57151 | yui-knk | 2016-12-22 19:29:40 +0900 (Thu, 22 Dec 2016) | 4 lines

test_float.rb: add test cases for Float#round

* test_float.rb: add test cases for Float#round with
  half nil. Follow up r57130.
------------------------------------------------------------------------
r57150 | naruse | 2016-12-22 18:44:30 +0900 (Thu, 22 Dec 2016) | 3 lines

suppress warning: implicit conversion changes signedness

It causes [Bug #13060]
------------------------------------------------------------------------
r57149 | rhe | 2016-12-22 13:40:28 +0900 (Thu, 22 Dec 2016) | 4 lines

io.c: [DOC] update outdated documentation of ARGF.close

As of Ruby 2.3, IO#close no longer raises IOError if the file is already
closed.
------------------------------------------------------------------------
r57148 | hsbt | 2016-12-22 12:53:53 +0900 (Thu, 22 Dec 2016) | 1 line

Update xmlrpc-0.2.1 for Ruby 2.4.0 release.
------------------------------------------------------------------------
r57147 | nobu | 2016-12-22 11:00:02 +0900 (Thu, 22 Dec 2016) | 4 lines

test_rinda.rb: ipv6_mc

* test/rinda/test_rinda.rb (RingIPv6#ipv6_mc): extract IPv6
  multicast setup and cleanup, and ignore ENETDOWN.
------------------------------------------------------------------------
r57146 | rhe | 2016-12-22 10:43:41 +0900 (Thu, 22 Dec 2016) | 14 lines

openssl: import v2.0.2

Import Ruby/OpenSSL 2.0.2. This release contains only bugfixes. The full
commit log since 2.0.1 (imported at r57041) can be found at:

  https://github.com/ruby/openssl/compare/v2.0.1...v2.0.2

----------------------------------------------------------------
Kazuki Yamaguchi (5):
      ssl: check for SSL_CTX_clear_options()
      Rename functions in openssl_missing.c
      ssl: use SSL_SESSION_get_protocol_version()
      pkey: allow instantiating OpenSSL::PKey::PKey with unsupported key type
      Ruby/OpenSSL 2.0.2
------------------------------------------------------------------------
r57145 | mrkn | 2016-12-22 00:35:29 +0900 (Thu, 22 Dec 2016) | 5 lines

bigdecimal: version 1.3.0

Import bigdecimal version 1.3.0.  The full commit log is here:

  https://github.com/ruby/bigdecimal/compare/v1.3.0.pre.2...v1.3.0
------------------------------------------------------------------------
r57144 | svn | 2016-12-22 00:21:20 +0900 (Thu, 22 Dec 2016) | 1 line

* 2016-12-22
------------------------------------------------------------------------
r57143 | ngoto | 2016-12-22 00:21:19 +0900 (Thu, 22 Dec 2016) | 5 lines

regcomp.c: Fix compile error with old version of fcc on Solaris

* regcomp.c (get_min_match_length): Fix compile error with old version
  of fcc (Fujitsu C Compiler) on Solaris 10. [Bug #13059][ruby-dev:49909]

------------------------------------------------------------------------
r57142 | nobu | 2016-12-21 22:46:46 +0900 (Wed, 21 Dec 2016) | 1 line

time.c: debug print
------------------------------------------------------------------------
r57141 | yui-knk | 2016-12-21 22:26:16 +0900 (Wed, 21 Dec 2016) | 4 lines

numeric.c: remove not used lines

* numeric.c (rb_num_get_rounding_option): remove not used
  lines. After r57130 these lines are never reached.
------------------------------------------------------------------------
r57140 | nobu | 2016-12-21 21:06:40 +0900 (Wed, 21 Dec 2016) | 4 lines

time.c: refine num_exact error message

* time.c (num_exact): show the original argument when conversion
  failed, instead of intermediate nil.
------------------------------------------------------------------------
r57139 | nobu | 2016-12-21 21:05:41 +0900 (Wed, 21 Dec 2016) | 4 lines

time.c: use RB_TYPE_P

* time.c (time_timespec): use RB_TYPE_P instead of switching by
  TYPE.
------------------------------------------------------------------------
r57138 | nobu | 2016-12-21 20:20:02 +0900 (Wed, 21 Dec 2016) | 4 lines

st.c: suppress a warning

* st.c (st_hash): suppress unused label warning on 32bit
  platforms.  fix up r57134.
------------------------------------------------------------------------
r57137 | nobu | 2016-12-21 20:12:39 +0900 (Wed, 21 Dec 2016) | 4 lines

eval.c: fix circular cause

* eval.c (exc_setup_cause): always set cause of cause to get rid
  of circular references.  [ruby-core:78688] [Bug #13043]
------------------------------------------------------------------------
r57136 | usa | 2016-12-21 17:13:42 +0900 (Wed, 21 Dec 2016) | 2 lines

* win32/win32.c (winnt_stat): use `numberof` macro instead of constant.

------------------------------------------------------------------------
r57135 | usa | 2016-12-21 16:50:14 +0900 (Wed, 21 Dec 2016) | 8 lines

Fixed potentially buffer overrun.

* win32/win32.c (winnt_stat): the return value of `get_final_path` is the
  expected buffer length, not the actuall filled length.

* win32/win32.c (winnt_stat): `finalname` may be accessed in the outer block of
  its definition via `path`.

------------------------------------------------------------------------
r57134 | nobu | 2016-12-21 15:22:16 +0900 (Wed, 21 Dec 2016) | 29 lines

st.c: fix st_hash* functions [Bug #13019]

Previous implementation had an issues:
- macros murmur1 assumes murmur_step takes rotation value
  as a second argument
- but murmur_step second argument is "next block"
- this makes st_hash_uint and st_hash_end to not mix high bits of
  hash value into lower bits
- this leads to pure hash behavior on doubles and mixing hashes using
  st_hash_uint.
  It didn't matter when bins amount were prime numbers, but it hurts
  when bins are powers of two.

Mistake were created cause of attempt to co-exist Murmur1 and Murmur2
in a same code.

Change it to single hash-function implementation.
- block function is in a spirit of Murmur functions,
  but handles inter-block dependency a bit better (imho).
- final block is read in bit more optimal way on CPU with unaligned word access,
- final block is mixed in simple way,
- finalizer is taken from MurmurHash3 (it makes most of magic :) )
  (64bit finalizer is taken from
  http://zimbry.blogspot.ru/2011/09/better-bit-mixing-improving-on.html)

Also remove ST_USE_FNV1: it lacks implementation of many functions,
and looks to be abandoned

Author: Sokolov Yura aka funny_falcon <funny.falcon@gmail.com>
------------------------------------------------------------------------
r57133 | akr | 2016-12-21 14:26:35 +0900 (Wed, 21 Dec 2016) | 2 lines

[DOC] itemize values for half option of Float#round.

------------------------------------------------------------------------
r57132 | nobu | 2016-12-21 10:58:32 +0900 (Wed, 21 Dec 2016) | 4 lines

compile.c: toplevel return

* compile.c (iseq_compile_each): stop execution of the current source
  by toplevel return.  [ruby-core:36785] [Feature #4840]
------------------------------------------------------------------------
r57131 | nobu | 2016-12-21 10:29:58 +0900 (Wed, 21 Dec 2016) | 3 lines

numeric.c: rdoc of half option [ci skip]

* numeric.c (flo_round): [DOC] mention half option.  [Bug #12548]
------------------------------------------------------------------------
r57130 | nobu | 2016-12-21 10:29:57 +0900 (Wed, 21 Dec 2016) | 4 lines

numeric.c: allow nil as rounding mode option

* numeric.c (rb_num_get_rounding_option): allow nil same as the
  default behavior, per [ruby-core:77961].  [Bug #12548]
------------------------------------------------------------------------
r57129 | nobu | 2016-12-21 02:15:37 +0900 (Wed, 21 Dec 2016) | 4 lines

rdoc for r57126 [ci skip]

* ext/zlib/zlib.c: [DOC] update as keyword arguments.
  [Feature #13020]
------------------------------------------------------------------------
r57128 | svn | 2016-12-21 01:02:22 +0900 (Wed, 21 Dec 2016) | 1 line

* 2016-12-21
------------------------------------------------------------------------
r57127 | naruse | 2016-12-21 01:02:22 +0900 (Wed, 21 Dec 2016) | 1 line

suppress warning: attempt to close unfinished zstream; reset forced.
------------------------------------------------------------------------
r57126 | naruse | 2016-12-21 01:02:21 +0900 (Wed, 21 Dec 2016) | 1 line

Zlib.gzip uses kwargs instead of argc [Feature #13020]
------------------------------------------------------------------------
r57125 | nobu | 2016-12-20 17:25:03 +0900 (Tue, 20 Dec 2016) | 4 lines

io.c: update argf lineno

* io.c (argf_rewind): rewind line number in non-global ARGF
  instance.
------------------------------------------------------------------------
r57124 | nobu | 2016-12-20 17:25:02 +0900 (Tue, 20 Dec 2016) | 4 lines

io.c: update argf lineno

* io.c (argf_block_call_line): update line number in non-global
  ARGF instance.  [ruby-core:78728] [Bug #13051]
------------------------------------------------------------------------
r57123 | rhe | 2016-12-20 16:32:23 +0900 (Tue, 20 Dec 2016) | 5 lines

re.c: consider the case of RMatch::regexp is nil

Follow r49675, r57098 and r57110. Don't assume RMatch::regexp always
contains a valid Regexp instance; it will be Qnil if the MatchData is
created by rb_backref_set_string().  [ruby-core:78741] [Bug #13054]
------------------------------------------------------------------------
r57122 | rhe | 2016-12-20 15:53:45 +0900 (Tue, 20 Dec 2016) | 5 lines

string.c: add missing size_t cast

Add size_t cast to avoid signed integer overflow. r56157 ("string.c:
avoid signed integer overflow", 2016-09-13) missed this. Suppresses
UBSan.
------------------------------------------------------------------------
r57121 | rhe | 2016-12-20 15:53:44 +0900 (Tue, 20 Dec 2016) | 6 lines

array.c: do not resize to less than 0

Shrinking the Array from the block invoked by Array#select! or
Array#reject! causes the Array to be a negative number size. Ensure that
the resulting Array won't be smaller than 0.
[ruby-core:78739] [Bug #13053]
------------------------------------------------------------------------
r57120 | yuki | 2016-12-20 15:53:17 +0900 (Tue, 20 Dec 2016) | 2 lines

* gems/bundled_gems: Upgrade the did_you_mean gem to 1.1.0

------------------------------------------------------------------------
r57119 | rhe | 2016-12-20 14:26:08 +0900 (Tue, 20 Dec 2016) | 8 lines

array.c: check array length every time after yielding

Since the Array may be modified during rb_yield(), the length before
invoking the block can't be trusted. Fix possible out-of-bounds read in
Array#combination and Array#repeated_combination.

It may better to make a defensive copy of the Array, but for now let's
follow what Array#permutation does.  [ruby-core:78738] [Bug #13052]
------------------------------------------------------------------------
r57118 | rhe | 2016-12-20 14:26:07 +0900 (Tue, 20 Dec 2016) | 10 lines

proc.c: assume rb_iseq_location_t::first_lineno is always a Fixnum

Do not check for the value of rb_iseq_constant_body::line_info_table as
it is no longer related. The checks seem to be the remains from the day
before the dedicated 'first_lineno' field was introduced. Remove them.

Note, rb_iseq_constant_body::line_info_table can be NULL only when the
iseq does not contain any instructions that originate from Ruby code,
for example, an iseq created with 'proc {}' under a non-default compile
options where trace instructions are disabled.
------------------------------------------------------------------------
r57117 | svn | 2016-12-20 14:09:18 +0900 (Tue, 20 Dec 2016) | 1 line

* 2016-12-20
------------------------------------------------------------------------
r57116 | nobu | 2016-12-20 14:09:18 +0900 (Tue, 20 Dec 2016) | 4 lines

test/unit.rb: separator [ci skip]

* test/lib/test/unit.rb (ExcludesOption#setup_options): add
  separator for --excludes-dir in help message.
------------------------------------------------------------------------
r57115 | nobu | 2016-12-19 17:36:21 +0900 (Mon, 19 Dec 2016) | 4 lines

time.c: refine error message

* time.c (validate_vtm): separate validation failure messages for
  each members.
------------------------------------------------------------------------
r57114 | nobu | 2016-12-19 13:07:40 +0900 (Mon, 19 Dec 2016) | 4 lines

re.c: RB_TYPE_P

* re.c (match_backref_number, namev_to_backref_number): use
  RB_TYPE_P instead of switching by TYPE.
------------------------------------------------------------------------
r57113 | svn | 2016-12-19 12:11:58 +0900 (Mon, 19 Dec 2016) | 1 line

* 2016-12-19
------------------------------------------------------------------------
r57112 | nobu | 2016-12-19 12:11:57 +0900 (Mon, 19 Dec 2016) | 4 lines

re.c: NAME_TO_NUMBER

* re.c (namev_to_backref_number, rb_reg_regsub): extract name to
  backref number check as NAME_TO_NUMBER.
------------------------------------------------------------------------
r57111 | ktsj | 2016-12-18 21:29:34 +0900 (Sun, 18 Dec 2016) | 1 line

doc/standard_library.rdoc: Tk is removed from stdlib
------------------------------------------------------------------------
r57110 | nobu | 2016-12-18 20:43:51 +0900 (Sun, 18 Dec 2016) | 4 lines

re.c: use name_to_backref_number

* re.c (match_backref_number): use name_to_backref_number for
  casts.
------------------------------------------------------------------------
r57109 | naruse | 2016-12-18 20:28:01 +0900 (Sun, 18 Dec 2016) | 3 lines

Increase timeout

http://rubyci.s3.amazonaws.com/unstable10s/ruby-trunk/log/20161215T021909Z.fail.html.gz
------------------------------------------------------------------------
r57108 | nobu | 2016-12-18 03:04:30 +0900 (Sun, 18 Dec 2016) | 4 lines

sprintf.c: fix width underflow

* sprintf.c (rb_str_format): fix memory corruption by width
  underflow.  https://github.com/mruby/mruby/issues/3347
------------------------------------------------------------------------
r57107 | svn | 2016-12-18 01:10:57 +0900 (Sun, 18 Dec 2016) | 1 line

* 2016-12-18
------------------------------------------------------------------------
r57106 | naruse | 2016-12-18 01:10:56 +0900 (Sun, 18 Dec 2016) | 3 lines

Increase timeout

http://rubyci.org/logs/13.78.52.201/vc12-x64/ruby-trunk/log/20161217T103523Z.log.html.gz
------------------------------------------------------------------------
r57105 | rhe | 2016-12-17 17:25:34 +0900 (Sat, 17 Dec 2016) | 3 lines

compile.c: do not emit numeric literal range in void context

A fix-up for r56316. Fix stack consistency error on '1..3; nil'.
------------------------------------------------------------------------
r57104 | nobu | 2016-12-17 16:48:58 +0900 (Sat, 17 Dec 2016) | 1 line

Reapply r57093,r57094,r57097 "dtrace build fixes on FreeBSD"
------------------------------------------------------------------------
r57103 | nobu | 2016-12-17 16:48:57 +0900 (Sat, 17 Dec 2016) | 3 lines

Reapply r57092 "configure.in: repeated checks"

Needs DTRACE_OBJ when "$rb_cv_prog_dtrace_g" = rebuild, too.
------------------------------------------------------------------------
r57102 | nobu | 2016-12-17 14:27:05 +0900 (Sat, 17 Dec 2016) | 1 line

Revert r57092 "configure.in: repeated checks"
------------------------------------------------------------------------
r57101 | naruse | 2016-12-17 14:14:14 +0900 (Sat, 17 Dec 2016) | 1 line

Revert r57093,r57094,r57097 "dtrace build fixes on FreeBSD"
------------------------------------------------------------------------
r57100 | nobu | 2016-12-17 09:58:47 +0900 (Sat, 17 Dec 2016) | 4 lines

test_mailto.rb: overwritten methods

* test/uri/test_mailto.rb (URI::TestMailTo#test_to_mailtext):
  merge overwritten methods.  [Bug #10774]
------------------------------------------------------------------------
r57099 | nobu | 2016-12-17 09:58:46 +0900 (Sat, 17 Dec 2016) | 1 line

test_mailto.rb: adjust scope
------------------------------------------------------------------------
r57098 | nobu | 2016-12-17 09:52:47 +0900 (Sat, 17 Dec 2016) | 4 lines

re.c: non-regexp name reference

* re.c (rb_reg_regsub): other than regexp has no name references.
  [ruby-core:78686] [Bug #13042]
------------------------------------------------------------------------
r57097 | nobu | 2016-12-17 09:01:42 +0900 (Sat, 17 Dec 2016) | 4 lines

configure.in: fix r57093

* configure.in (RUBY_DTRACE_AVAILABLE): try -xnolibs first.
  [ruby-core:78676] [Bug #13041]
------------------------------------------------------------------------
r57096 | svn | 2016-12-17 07:57:02 +0900 (Sat, 17 Dec 2016) | 1 line

* 2016-12-17
------------------------------------------------------------------------
r57095 | nobu | 2016-12-17 07:57:01 +0900 (Sat, 17 Dec 2016) | 4 lines

fix r57089

* parse.y (parser_heredoc_identifier): fix multiline here document
  identifier condition.
------------------------------------------------------------------------
r57094 | nobu | 2016-12-16 21:28:19 +0900 (Fri, 16 Dec 2016) | 3 lines

garbage space [ci skip]

* configure.in (RUBY_DTRACE_AVAILABLE): remove a garbage space.
------------------------------------------------------------------------
r57093 | nobu | 2016-12-16 21:16:33 +0900 (Fri, 16 Dec 2016) | 5 lines

dtrace build fixes on FreeBSD

* configure.in (RUBY_DTRACE_AVAILABLE, RUBY_DTRACE_POSTPROCESS):
  incorporate dtrace build fix on FreeBSD, dtrace needs -xnolibs
  in a jail.  [ruby-core:78676] [Bug #13041]
------------------------------------------------------------------------
r57092 | nobu | 2016-12-16 20:59:57 +0900 (Fri, 16 Dec 2016) | 4 lines

configure.in: repeated checks

* configure.in (enable_dtrace): reduce repeated
  RUBY_DTRACE_AVAILABLE checks.
------------------------------------------------------------------------
r57091 | nobu | 2016-12-16 14:05:42 +0900 (Fri, 16 Dec 2016) | 4 lines

no crypt.h on FreeBSD 12

* string.c (crypt.h): crypt_r() was added in FreeBSD 12.0 but is
  declared in unistd.h.  [ruby-core:78664] [Bug #13038]
------------------------------------------------------------------------
r57090 | nobu | 2016-12-16 12:30:26 +0900 (Fri, 16 Dec 2016) | 4 lines

configure.in: no crypt.h on FreeBSD 12

* configure.in (crypt.h): crypt_r() was added in FreeBSD 12.0 but
  is declared in unistd.h.  [ruby-core:78664] [Bug #13038]
------------------------------------------------------------------------
r57089 | nobu | 2016-12-16 10:27:47 +0900 (Fri, 16 Dec 2016) | 4 lines

multiline heredoc identifier

* parse.y (parser_heredoc_identifier): reject multiline here
  document identifier, which never matches single line.
------------------------------------------------------------------------
r57088 | nobu | 2016-12-16 10:12:09 +0900 (Fri, 16 Dec 2016) | 6 lines

fix chomping newline only line

* string.c (chomp_newline): fix chomping newline only line.
  rb_enc_prev_char return NULL if no previous character and must
  not call rb_enc_ascget on it.  a patch by Ary Borenszweig
  <asterite AT gmail.com> at [ruby-core:78666].  [Bug #13037]
------------------------------------------------------------------------
r57087 | svn | 2016-12-16 01:08:34 +0900 (Fri, 16 Dec 2016) | 1 line

* 2016-12-16
------------------------------------------------------------------------
r57086 | mrkn | 2016-12-16 01:08:33 +0900 (Fri, 16 Dec 2016) | 1 line

NEWS: Fix the default rounding mode
------------------------------------------------------------------------
r57085 | nobu | 2016-12-15 21:58:59 +0900 (Thu, 15 Dec 2016) | 4 lines

parse.y: newline in heredoc identifier

* parse.y (parser_heredoc_identifier): warn newline in here
  document identifier.
------------------------------------------------------------------------
r57084 | hsbt | 2016-12-15 20:00:41 +0900 (Thu, 15 Dec 2016) | 1 line

Added entry of psych 2.2.2
------------------------------------------------------------------------
r57083 | hsbt | 2016-12-15 20:00:40 +0900 (Thu, 15 Dec 2016) | 3 lines

Update psych-2.2.2

 * It fixed only JRuby dependency issue.
------------------------------------------------------------------------
r57082 | nobu | 2016-12-15 15:22:09 +0900 (Thu, 15 Dec 2016) | 1 line

parse.y: one warning, one line [ci skip]
------------------------------------------------------------------------
r57081 | usa | 2016-12-15 02:53:20 +0900 (Thu, 15 Dec 2016) | 5 lines

Removed the obstacle to running test-all with VC14.

* test/fiddle/test_import.rb (LIBC.fprintf): VC14's `fprintf` is very distinct
  name, then, just ignore this test.

------------------------------------------------------------------------
r57080 | svn | 2016-12-15 02:49:27 +0900 (Thu, 15 Dec 2016) | 1 line

* 2016-12-15
------------------------------------------------------------------------
r57079 | usa | 2016-12-15 02:49:26 +0900 (Thu, 15 Dec 2016) | 6 lines

Fixed link error with VC14.

* win32/mkexports.rb (Exports::Mswin#each_exports): should ignore `vsprintf_s_l`
  and the like just like `vsprintf_l`.
  [ruby-dev:49899] [Bug #13033]

------------------------------------------------------------------------
r57078 | rhe | 2016-12-14 21:32:42 +0900 (Wed, 14 Dec 2016) | 9 lines

encoding.c: handle needmore error from rb_enc_precise_mbclen()

rb_enc_ascget() erroneously reports success even if the given byte
sequence is incomplete, for non-ASCII compatible encoding strings.

rb_enc_precise_mbclen() may return a negative value on error, and thus
rb_enc_ascget() must not store the return value in 'unsigned int';
otherwise the subsequent MBCLEN_CHARFOUND_P() check won't catch the
error.  [ruby-core:78646] [Bug #13034]
------------------------------------------------------------------------
r57077 | nobu | 2016-12-14 17:25:56 +0900 (Wed, 14 Dec 2016) | 5 lines

vcs.rb: no ext/date in vcs.rb

* tool/vcs.rb (VCS::GIT#export_changelog): do not require date
  extension library so that miniruby can run.
  [ruby-core:78641] [Bug #13032]
------------------------------------------------------------------------
r57076 | nobu | 2016-12-14 17:06:55 +0900 (Wed, 14 Dec 2016) | 4 lines

constify

* vm_dump.c (rb_vmdebug_debug_print_pre): constify pc argument for
  VMDEBUG.
------------------------------------------------------------------------
r57075 | nobu | 2016-12-14 16:30:41 +0900 (Wed, 14 Dec 2016) | 4 lines

parse.y: curtail scanning

* parse.y (parser_yyerror): curtail scanning range, not to exceed
  the max margin.
------------------------------------------------------------------------
r57074 | svn | 2016-12-14 13:35:29 +0900 (Wed, 14 Dec 2016) | 1 line

* 2016-12-14
------------------------------------------------------------------------
r57073 | nobu | 2016-12-14 13:35:28 +0900 (Wed, 14 Dec 2016) | 4 lines

parse.y: fix yyerror message

* parse.y (parser_yyerror): show the error line even if the error
  is at the end.
------------------------------------------------------------------------
r57072 | usa | 2016-12-13 14:17:48 +0900 (Tue, 13 Dec 2016) | 7 lines

declare `rb_w32_sysinit` in header.

* include/ruby/win32.h (rb_w32_sysinit): declare.
  [ruby-core:78444] [Bug #12994]

* ruby.c (ruby_sysinit): follow above change.

------------------------------------------------------------------------
r57071 | nobu | 2016-12-13 12:55:14 +0900 (Tue, 13 Dec 2016) | 1 line

require "irb/output-method" for StdioOutputMethod
------------------------------------------------------------------------
r57070 | nobu | 2016-12-13 12:55:13 +0900 (Tue, 13 Dec 2016) | 1 line

make-snapshot: fix circular dependency
------------------------------------------------------------------------
r57069 | hsbt | 2016-12-13 11:01:34 +0900 (Tue, 13 Dec 2016) | 1 line

Update description of XMLRPC section.
------------------------------------------------------------------------
r57068 | usa | 2016-12-13 01:18:45 +0900 (Tue, 13 Dec 2016) | 5 lines

get rid of a test failure with VC10.

* numeric.c (round_half_up, round_half_down): use `round` always because it's
  defined in this file even if doesn't exist.

------------------------------------------------------------------------
r57067 | svn | 2016-12-13 00:24:29 +0900 (Tue, 13 Dec 2016) | 1 line

* 2016-12-13
------------------------------------------------------------------------
r57066 | naruse | 2016-12-13 00:24:28 +0900 (Tue, 13 Dec 2016) | 4 lines

Use URI.decode_www_form_component [Bug #10774]

`parser` refered RFC2396_Parser, but it is separated.
test is contributed by Dominik Menke
------------------------------------------------------------------------
r57065 | naruse | 2016-12-12 23:55:15 +0900 (Mon, 12 Dec 2016) | 4 lines

st: Add 'static const'

patched by Ken Takata [ruby-core:78558]
https://github.com/k-takata/Onigmo/commit/44e3c0a16da1116be641ea807c1202434b743ace
------------------------------------------------------------------------
r57062 | naruse | 2016-12-12 22:37:27 +0900 (Mon, 12 Dec 2016) | 1 line

fix command
------------------------------------------------------------------------
r57060 | naruse | 2016-12-12 22:20:00 +0900 (Mon, 12 Dec 2016) | 3 lines

Use 7z if exist

7z can compress with higher ratio than gzip/zip.
------------------------------------------------------------------------
r57059 | kazu | 2016-12-12 22:12:08 +0900 (Mon, 12 Dec 2016) | 1 line

NEWS: Add String#match? and Symbol#match? [ci skip]
------------------------------------------------------------------------
r57058 | kazu | 2016-12-12 22:12:06 +0900 (Mon, 12 Dec 2016) | 1 line

NEWS: Use spaces instead of tab [ci skip]
------------------------------------------------------------------------
r57057 | kazu | 2016-12-12 22:12:05 +0900 (Mon, 12 Dec 2016) | 1 line

NEWS: Sort entries [ci skip]
------------------------------------------------------------------------
r57056 | nobu | 2016-12-12 16:12:07 +0900 (Mon, 12 Dec 2016) | 4 lines

string.c: fix method name in rdoc [ci skip]

* string.c (rb_str_equal): [DOC] fix fallback method name. the
  peer's == method will be used, not ===.
------------------------------------------------------------------------
r57055 | nobu | 2016-12-12 12:19:52 +0900 (Mon, 12 Dec 2016) | 1 line

test for Symbol#match?  [Feature #12898]
------------------------------------------------------------------------
r57054 | nobu | 2016-12-12 12:07:47 +0900 (Mon, 12 Dec 2016) | 4 lines

test_m17n.rb: escape

* test/ruby/test_m17n.rb (test_regexp_ascii_none): escape regexp
  meta characters.
------------------------------------------------------------------------
r57053 | nobu | 2016-12-12 11:56:12 +0900 (Mon, 12 Dec 2016) | 5 lines

String#match? and Symbol#match?

* string.c (rb_str_match_m_p): inverse of Regexp#match?.  based on
  the patch by Herwin Weststrate <herwin@snt.utwente.nl>.
  [Fix GH-1483] [Feature #12898]
------------------------------------------------------------------------
r57052 | svn | 2016-12-12 11:38:54 +0900 (Mon, 12 Dec 2016) | 1 line

* 2016-12-12
------------------------------------------------------------------------
r57051 | nobu | 2016-12-12 11:38:53 +0900 (Mon, 12 Dec 2016) | 4 lines

re.c: char boundary

* re.c (rb_reg_match_m_p): consider char boundary.  rb_str_subpos
  does not adjust to the boundary if len == 0.
------------------------------------------------------------------------
r57050 | nobu | 2016-12-11 18:20:27 +0900 (Sun, 11 Dec 2016) | 4 lines

parse.y: zero codepoints

* parse.y (parser_tokadd_utf8): relax restriction to allow zero or
  more codepoints.
------------------------------------------------------------------------
r57049 | naruse | 2016-12-11 15:13:02 +0900 (Sun, 11 Dec 2016) | 1 line

fix Zlib.gzip/gunzip document
------------------------------------------------------------------------
r57048 | naruse | 2016-12-11 03:34:07 +0900 (Sun, 11 Dec 2016) | 7 lines

Updated documentation examples for Hash#value?

The same code is used for has_value? and value?, but according to
http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-core/43765
has_value is deprecated. Use the non-deprecated syntax in the examples.
by Herwin Weststrate <herwin@snt.utwente.nl>
fix https://github.com/ruby/ruby/pull/1491
------------------------------------------------------------------------
r57047 | naruse | 2016-12-11 03:23:33 +0900 (Sun, 11 Dec 2016) | 7 lines

Add missing :nodoc: comment

We were missing a `:nodoc:` magic comment that was making automated tools show
that this method was missing documentation, when it really didn't need to be
documented.
by Devon Estes <devon.c.estes@gmail.com>
https://github.com/ruby/ruby/pull/1482 fix GH-1482
------------------------------------------------------------------------
r57046 | svn | 2016-12-11 02:47:06 +0900 (Sun, 11 Dec 2016) | 1 line

* 2016-12-11
------------------------------------------------------------------------
r57045 | naruse | 2016-12-11 02:47:04 +0900 (Sun, 11 Dec 2016) | 8 lines

Merge Onigmo 6.0.0

* https://github.com/k-takata/Onigmo/blob/Onigmo-6.0.0/HISTORY
* fix for ruby 2.4: https://github.com/k-takata/Onigmo/pull/78
* suppress warning: https://github.com/k-takata/Onigmo/pull/79
* include/ruby/oniguruma.h: include onigmo.h.
* template/encdb.h.tmpl: ignore duplicated definition of EUC-CN in
  enc/euc_kr.c. It is defined in enc/gb2313.c with CRuby macro.
------------------------------------------------------------------------
r57044 | mrkn | 2016-12-10 17:56:05 +0900 (Sat, 10 Dec 2016) | 5 lines

bigdecimal: version 1.3.0.pre.2

Import bigdecimal version 1.3.0.pre.2.  The full commit log is here:

  https://github.com/ruby/bigdecimal/compare/v1.3.0.pre...v1.3.0.pre.2
------------------------------------------------------------------------
r57043 | nobu | 2016-12-10 17:54:40 +0900 (Sat, 10 Dec 2016) | 4 lines

stringio.c: chomp CR

* ext/stringio/stringio.c (strio_getline): chomp CR not only LF,
  as well as String#chomp.
------------------------------------------------------------------------
r57042 | nobu | 2016-12-10 17:26:40 +0900 (Sat, 10 Dec 2016) | 5 lines

zlib.c: replace with substring

* ext/zlib/zlib.c (zstream_discard_input): replace with unread
  portion substring, not modifying the input buffer directly.
  [ruby-core:78567] [Bug #13021]
------------------------------------------------------------------------
r57041 | rhe | 2016-12-10 17:12:02 +0900 (Sat, 10 Dec 2016) | 9 lines

openssl: import v2.0.1

Import Ruby/OpenSSL 2.0.1. The full commit history since 2.0.0 (imported
at r56946) can be found at:

  https://github.com/ruby/openssl/compare/v2.0.0...v2.0.1

This release contains only bug fixes. Note, the first two commits since
v2.0.0 are already imported at r56953 to make Travis and RubyCI green.
------------------------------------------------------------------------
r57040 | mrkn | 2016-12-10 16:49:15 +0900 (Sat, 10 Dec 2016) | 6 lines

bigdecimal: import version 1.3.0.pre

Import bigdecimal version 1.3.0.pre.  The full commit log of this
changes can be found at:

    https://github.com/ruby/bigdecimal/compare/5c43a9e...v1.3.0.pre
------------------------------------------------------------------------
r57039 | nobu | 2016-12-10 15:25:26 +0900 (Sat, 10 Dec 2016) | 1 line

Fix grammer [ci skip]
------------------------------------------------------------------------
r57038 | mrkn | 2016-12-10 11:36:16 +0900 (Sat, 10 Dec 2016) | 10 lines

internal.h: change the default rounding mode to half-up

* internal.h (ROUND_DEFAULT): changed to RUBY_NUM_ROUND_HALF_UP.
  [Bug #12958] [ruby-core:78204]

* test/ruby/test_integer.rb: fix assertions for the above change.

* test/ruby/test_rational.rb: ditto.

* test/test_mathn.rb: ditto.
------------------------------------------------------------------------
r57037 | kazu | 2016-12-10 11:16:55 +0900 (Sat, 10 Dec 2016) | 5 lines

Fix document of gunzip and gzip [ci skip]

- fix a typo (`GzipReadr` -> `GzipReader`)
- `Zlib::GzipReader.new` does not take block
- fix encoding
------------------------------------------------------------------------
r57036 | svn | 2016-12-10 07:45:39 +0900 (Sat, 10 Dec 2016) | 1 line

* 2016-12-10
------------------------------------------------------------------------
r57035 | naruse | 2016-12-10 07:45:39 +0900 (Sat, 10 Dec 2016) | 3 lines

Zlib.gzip and Zlib.gunzip [Feature #13020]

Encode and Decode gzip data without creating files.
------------------------------------------------------------------------
r57034 | naruse | 2016-12-10 07:45:38 +0900 (Sat, 10 Dec 2016) | 4 lines

Suppress warning: this use of "defined" may not be portable

Use of defined() in macro expansion is considered non portable.
https://gcc.gnu.org/ml/gcc-patches/2014-10/msg01577.html
------------------------------------------------------------------------
r57033 | nobu | 2016-12-09 12:25:20 +0900 (Fri, 09 Dec 2016) | 4 lines

ruby.h: add prefix

* include/ruby/ruby.h (RB_TEST, RB_NIL_P): prefix RB to get rid of
  name conflicts with other headers.
------------------------------------------------------------------------
r57032 | nobu | 2016-12-09 11:59:55 +0900 (Fri, 09 Dec 2016) | 1 line

Adjust indent [ci skip]
------------------------------------------------------------------------
r57031 | svn | 2016-12-09 11:57:58 +0900 (Fri, 09 Dec 2016) | 1 line

* 2016-12-09
------------------------------------------------------------------------
r57030 | nobu | 2016-12-09 11:57:57 +0900 (Fri, 09 Dec 2016) | 6 lines

remove core#hash_merge_ary

* compile.c (compile_array_): remove m_core_hash_merge_ary which
  seems unreachable, and wrong number of arguments.

* vm.c (m_core_hash_merge_ary): removed because it is never used.
------------------------------------------------------------------------
r57029 | nobu | 2016-12-08 22:51:34 +0900 (Thu, 08 Dec 2016) | 4 lines

compile.c: static_literal_value

* compile.c (static_literal_value): separate getter from predicate
  function.
------------------------------------------------------------------------
r57028 | kazu | 2016-12-08 21:58:26 +0900 (Thu, 08 Dec 2016) | 10 lines

extension.rdoc: add ANYARGS to method definitions

* doc/extension.rdoc (rb_define_method, rb_define_singleton_method,
  rb_define_private_method, rb_define_protected_method,
  rb_define_module_function, rb_define_global_function): set ANYARGS
  as arguments to their underlying functions.

[ci skip]
Patch by: Dmitry Gritsay <unseductable@gmail.com>
[Fix GH-1473]
------------------------------------------------------------------------
r57027 | nobu | 2016-12-08 17:31:01 +0900 (Thu, 08 Dec 2016) | 5 lines

ruby-lex.rb: fix for label

* lib/irb/ruby-lex.rb (identify_identifier): treat identifier just
  followed by a colon as a lable.  this is not a precise solution
  but enough for the time being.  [ruby-core:78526] [Bug #13012]
------------------------------------------------------------------------
r57026 | nobu | 2016-12-08 17:25:21 +0900 (Thu, 08 Dec 2016) | 4 lines

test/unit.rb: fix -n option

* test/lib/test/unit.rb (non_options): turn name patterns into
  Regexps.
------------------------------------------------------------------------
r57025 | nobu | 2016-12-08 16:54:58 +0900 (Thu, 08 Dec 2016) | 5 lines

compile.c: optimize literal nodes

* compile.c (static_literal_node_p): optimize literal nodes for
  true, false, and nil, which are static literals in specific
  nodes but not in NODE_LIT.
------------------------------------------------------------------------
r57024 | nobu | 2016-12-08 15:19:06 +0900 (Thu, 08 Dec 2016) | 4 lines

vm.c: check type of hash to merge

* vm.c (core_hash_merge): check the type of the target hash to
  merge.  [ruby-core:78536] [Bug #13015]
------------------------------------------------------------------------
r57023 | nobu | 2016-12-08 14:16:33 +0900 (Thu, 08 Dec 2016) | 4 lines

vm_insnhelper.c: zsuper in refinements

* vm_insnhelper.c (vm_call_zsuper): prevent infinite recursion
  zsuper in refinements.  [ruby-core:77161] [Bug #12729]
------------------------------------------------------------------------
r57022 | nobu | 2016-12-08 09:45:13 +0900 (Thu, 08 Dec 2016) | 4 lines

parse.y: ripper generic input

* parse.y (ripper_initialize): allow generic input as source, if
  it has #gets method.
------------------------------------------------------------------------
r57021 | shugo | 2016-12-08 08:47:59 +0900 (Thu, 08 Dec 2016) | 12 lines

Add volatile to a suppress warning.

Without the fix, the following warning is shown:

    compiling cont.c
    cont.c: In function ?rb_callcc?:
    cont.c:949:39: warning: passing argument 1 of ?cont_capture? discards ?volatile? qualifier from pointer target type [-Wdiscarded-qualifiers]
	 volatile VALUE val = cont_capture(&called);
					   ^
    cont.c:473:1: note: expected ?int * volatile? but argument is of type ?volatile int *?
     cont_capture(int *volatile stat)
     ^
------------------------------------------------------------------------
r57020 | shugo | 2016-12-08 08:27:51 +0900 (Thu, 08 Dec 2016) | 5 lines

Add clang volatile fixes from FreeBSD and NetBSD.

Use volatile instead of optnone to avoid optimization which causes
segmentation faults.
Patch by Dimitry Andric.  [ruby-core:78531] [Bug #13014]
------------------------------------------------------------------------
r57019 | svn | 2016-12-08 00:30:02 +0900 (Thu, 08 Dec 2016) | 1 line

* 2016-12-08
------------------------------------------------------------------------
r57018 | kazu | 2016-12-08 00:30:01 +0900 (Thu, 08 Dec 2016) | 9 lines

fix typo in `IO#write_nonblock` example [ci skip]

This example explains when writing a value greater than 65536,
so the value specify must be greater than 65536.

This seems to be wrong in cee7f69

Patch by: Yuji Yaginuma <yuuji.yaginuma@gmail.com>
[Fix GH-1496]
------------------------------------------------------------------------
r57017 | nobu | 2016-12-07 23:39:24 +0900 (Wed, 07 Dec 2016) | 4 lines

ruby.c: dump option

* ruby.c (process_options): dump specified informations all, not
  only first one.
------------------------------------------------------------------------
r57016 | nobu | 2016-12-07 23:26:44 +0900 (Wed, 07 Dec 2016) | 4 lines

assertions.rb: defered message in FailDesc

* test/lib/test/unit/assertions.rb (FailDesc): allow to defer
  message generation, as well as other assertion methods.
------------------------------------------------------------------------
r57015 | svn | 2016-12-07 21:59:49 +0900 (Wed, 07 Dec 2016) | 1 line

* properties.
------------------------------------------------------------------------
r57014 | shugo | 2016-12-07 21:59:48 +0900 (Wed, 07 Dec 2016) | 5 lines

Delay Utils.getservername until needed.

There is no need to call Utils.getservername when the :ServerName option is
specified, so delay Utils.getservername until needed to avoid unnecessary
DNS lookups.  [ruby-core:78492] [Bug #13007]
------------------------------------------------------------------------
r57013 | nobu | 2016-12-07 17:44:34 +0900 (Wed, 07 Dec 2016) | 6 lines

compile.c: remove dead code

* compile.c (DECL_ANCHOR, INIT_ANCHOR): make anchor name an array
  and unassignable.

* compile.c (iseq_compile_each): ret is never 0.
------------------------------------------------------------------------
r57012 | nobu | 2016-12-07 13:25:50 +0900 (Wed, 07 Dec 2016) | 4 lines

hash.c: hash should be long

* hash.c (any_hash): should return `long', because ruby assumes
  the hash value of the object id of an object is `long'.
------------------------------------------------------------------------
r57011 | nobu | 2016-12-07 12:19:33 +0900 (Wed, 07 Dec 2016) | 4 lines

win32.c: suppress warning

* win32/win32.c (rb_w32_home_dir): suppress sequence-point
  warning, REALLOC_N re-assigns the variable.
------------------------------------------------------------------------
r57010 | shugo | 2016-12-07 11:41:00 +0900 (Wed, 07 Dec 2016) | 3 lines

Extend timeout for Solaris unstable10s.

http://rubyci.org/logs/rubyci.s3.amazonaws.com/unstable10s/ruby-trunk/log/20161206T181910Z.fail.html.gz
------------------------------------------------------------------------
r57009 | nobu | 2016-12-07 11:19:29 +0900 (Wed, 07 Dec 2016) | 4 lines

file.c: cygwin behavior

* file.c: recent cygwin hides NTFS specific features.
  [ruby-core:78497] [Bug #13008]
------------------------------------------------------------------------
r57008 | svn | 2016-12-07 11:03:41 +0900 (Wed, 07 Dec 2016) | 1 line

* 2016-12-07
------------------------------------------------------------------------
r57007 | usa | 2016-12-07 11:03:40 +0900 (Wed, 07 Dec 2016) | 4 lines

const pointer is not able to be free.

* win32/file.c (rb_default_home_dir): should not be marked as const.

------------------------------------------------------------------------
r57006 | kazu | 2016-12-07 00:33:49 +0900 (Wed, 07 Dec 2016) | 4 lines

untabify [ci skip]

based on the patch by W <wolf@wolfsden.cz>
[Fix GH-1497]
------------------------------------------------------------------------
r57005 | kazu | 2016-12-07 00:33:47 +0900 (Wed, 07 Dec 2016) | 1 line

Fix indent [ci skip]
------------------------------------------------------------------------
r57004 | svn | 2016-12-06 22:57:57 +0900 (Tue, 06 Dec 2016) | 1 line

* properties.
------------------------------------------------------------------------
r57003 | kou | 2016-12-06 22:57:56 +0900 (Tue, 06 Dec 2016) | 2 lines

rexml: REXML::Element#[] accepts String or Symbol as attribute name

------------------------------------------------------------------------
r57002 | nobu | 2016-12-06 22:57:23 +0900 (Tue, 06 Dec 2016) | 6 lines

Make `trace_running` an integer flag again

* vm_core.h (rb_vm_struct): trace_running should be a counter but
  not a bit flag.  [ruby-core:78514] [Bug #13011]

Author: David Rodr?guez <deivid.rodriguez@gmail.com>
------------------------------------------------------------------------
r57001 | mrkn | 2016-12-06 22:40:31 +0900 (Tue, 06 Dec 2016) | 9 lines

array.c, enum.c: change sum algorithm

* array.c (rb_ary_sum): change the algorithm to Kahan-Babuska balancing
  summation to be more precise.
  [Feature #12871] [ruby-core:77771]

* enum.c (sum_iter, enum_sum): ditto.

* test_array.rb, test_enum.rb: add an assertion for the above change.
------------------------------------------------------------------------
r57000 | mrkn | 2016-12-06 21:54:19 +0900 (Tue, 06 Dec 2016) | 6 lines

numeric.c: fix exception message for nil rounding

* numeric.c (rb_num_get_rounding_option): fix exception message
  for the case of nil rounding mode.

* test_float.rb: add an assertion for the above change.
------------------------------------------------------------------------
r56999 | kazu | 2016-12-06 21:49:46 +0900 (Tue, 06 Dec 2016) | 4 lines

Fix typos

Patch by: Koichi ITO <koic.ito@gmail.com>
[Fix GH-1498]
------------------------------------------------------------------------
r56998 | hsbt | 2016-12-06 20:57:19 +0900 (Tue, 06 Dec 2016) | 4 lines

Update latest bundled gems.

  * Rake 12.0.0
  * minitest 5.10.1
------------------------------------------------------------------------
r56997 | nobu | 2016-12-06 16:46:14 +0900 (Tue, 06 Dec 2016) | 4 lines

EPERM by symlink

* test/ruby/test_file.rb (test_realpath_encoding): EPERM can raise
  on cygwin.
------------------------------------------------------------------------
r56996 | nobu | 2016-12-06 16:21:55 +0900 (Tue, 06 Dec 2016) | 4 lines

file.c: isADS

* file.c (isADS): add macro to tell if Alternate Data Stream
  separator, to distinguish from drive letter.
------------------------------------------------------------------------
r56995 | nobu | 2016-12-06 15:16:57 +0900 (Tue, 06 Dec 2016) | 4 lines

EPERM by symlink

* test/ruby/test_file_exhaustive.rb (symlinkfile): EPERM can raise
  on cygwin.
------------------------------------------------------------------------
r56994 | rhe | 2016-12-06 15:14:17 +0900 (Tue, 06 Dec 2016) | 5 lines

re.c: check that MatchData is initialized

Follow r16757 ("* re.c: fix SEGV by Regexp.allocate.names,
Match.allocate.names, etc.", 2008-06-02). Don't do null dereference if
MatchData#hash or #== is called against an uninitialized instance.
------------------------------------------------------------------------
r56993 | rhe | 2016-12-06 15:14:16 +0900 (Tue, 06 Dec 2016) | 4 lines

test/ruby/test_hash.rb: suppress syntax warning

Avoid "ambiguous first argument; put parentheses or a space even after
`-' operator" warning in assert_in_out_err. Fixes r56992.
------------------------------------------------------------------------
r56992 | nobu | 2016-12-06 13:43:48 +0900 (Tue, 06 Dec 2016) | 23 lines

switching hash removal

* st.h (struct st_hash_type): Remove strong_hash.
  (struct st_table): Remove inside_rebuild_p and curr_hash.
* st.c (do_hash): Use type->hash instead of curr_hash.
  (make_tab_empty): Remove setting up curr_hash.
  (st_init_table_with_size): Remove setting up inside_rebuild_p.
  (rebuild_table): Remove clearing inside_rebuild_p.
  (reset_entry_hashes, HIT_THRESHOULD_FOR_STRONG_HASH): Remove code
  recognizing a denial attack and switching to strong hash.
* hash.c (rb_dbl_long_hash, rb_objid_hash, rb_ident_hash): Use
  rb_hash_start to randomize the hash.
  (str_seed): Remove.
  (any_hash): Remove strong_p and use always rb_str_hash for
  strings.
  (any_hash_weak, rb_any_hash_weak): Remove.
  (st_hash_type objhash): Remove rb_any_hash_weak.

based on the patch by Vladimir N Makarov <vmakarov@redhat.com> at
[ruby-core:78490].  [Bug #13002]

* test/ruby/test_hash.rb (test_wrapper): objects other than special
  constants should be able to be wrapped.
------------------------------------------------------------------------
r56991 | nobu | 2016-12-06 12:36:52 +0900 (Tue, 06 Dec 2016) | 5 lines

remove unnecessary variable

* st.c (do_hash): remove unnecessary variable and cast.

* hash.c, numeric.c, st.c: adjust style and indent.
------------------------------------------------------------------------
r56990 | nobu | 2016-12-06 12:25:21 +0900 (Tue, 06 Dec 2016) | 4 lines

random.c: pack hash seeds

* random.c (seed_keys_t, init_seed): pack seed for rb_hash_start and
  rb_memhash, and fill them at once.
------------------------------------------------------------------------
r56989 | svn | 2016-12-06 08:37:25 +0900 (Tue, 06 Dec 2016) | 1 line

* 2016-12-06
------------------------------------------------------------------------
r56988 | shugo | 2016-12-06 08:37:25 +0900 (Tue, 06 Dec 2016) | 1 line

Add a comment.
------------------------------------------------------------------------
r56987 | kazu | 2016-12-05 21:35:03 +0900 (Mon, 05 Dec 2016) | 1 line

Remove closed checks and use `&.`
------------------------------------------------------------------------
r56986 | kazu | 2016-12-05 21:35:02 +0900 (Mon, 05 Dec 2016) | 1 line

NEWS: mention chomp option of String and StringIO
------------------------------------------------------------------------
r56985 | shugo | 2016-12-05 20:10:05 +0900 (Mon, 05 Dec 2016) | 5 lines

Don't insert an entry to loading_tbl if another thread succeed to load.

If rb_thread_shield_wait() returns Qfalse, the file has been successfully
loaded by another thread, so there is no need to insert a new entry into
loading_tbl.  [ruby-core:78464] [Bug #12999]
------------------------------------------------------------------------
r56984 | nobu | 2016-12-05 09:03:45 +0900 (Mon, 05 Dec 2016) | 4 lines

random.c: private rand

* random.c (rb_random_ulong_limited): do not call private method
  rand.  [ruby-dev:49892] [Misc #13003]
------------------------------------------------------------------------
r56983 | svn | 2016-12-05 08:14:47 +0900 (Mon, 05 Dec 2016) | 1 line

* 2016-12-05
------------------------------------------------------------------------
r56982 | naruse | 2016-12-05 08:14:46 +0900 (Mon, 05 Dec 2016) | 4 lines

Increase timeout of TestRequire#test_require_with_loaded_features_pop

unstable10s fails it because of timeout
http://rubyci.s3.amazonaws.com/unstable10s/ruby-trunk/log/20161201T161908Z.fail.html.gz
------------------------------------------------------------------------
r56981 | nobu | 2016-12-04 17:50:29 +0900 (Sun, 04 Dec 2016) | 5 lines

class.c: missing unknown_keyword_error

* class.c (rb_get_kwargs): when values are stored, corresponding
  keys have been remove from the keyword hash, and the hash should
  be empty in that case.  [ruby-dev:49893] [Bug #13004]
------------------------------------------------------------------------
r56980 | nobu | 2016-12-04 17:50:28 +0900 (Sun, 04 Dec 2016) | 5 lines

extension.rdoc: fix rb_get_kwargs [ci skip]

* doc/extension.rdoc: [DOC] optional keyword arguments are
  defaulted to Qundef.  ignored keys are kept in the hash but a
  new Hash is not created.  [ruby-dev:49893] [Bug #13004]
------------------------------------------------------------------------
r56979 | ktsj | 2016-12-04 14:40:18 +0900 (Sun, 04 Dec 2016) | 4 lines

Revert changes on rb_frame_method_id_and_class()

r56593 introduced backwards incompatible changes in the API.
[ruby-core:78471] [Feature #12747]
------------------------------------------------------------------------
r56978 | shugo | 2016-12-04 14:05:54 +0900 (Sun, 04 Dec 2016) | 1 line

Specify the socktype explicitly.
------------------------------------------------------------------------
r56977 | shugo | 2016-12-04 13:53:33 +0900 (Sun, 04 Dec 2016) | 1 line

Use 127.0.0.1 if getaddrinfo fails.
------------------------------------------------------------------------
r56976 | duerst | 2016-12-04 10:58:54 +0900 (Sun, 04 Dec 2016) | 10 lines

remove special processing for U+03B9/U+03BC/U+A64B

* enc/unicode.c: Remove special processing for U+03B9/U+03BC/U+A64B
  (GREEK SMALL LETTERs IOTA/MU, CYRILLIC SMALL LETTER MONOGRAPH UK)
  from onigenc_unicode_case_map and simplify code.

* enc/unicode/case-folding.rb: Remove check for U+03B9/U+03BC/U+A64B.

This and the previous few related commits make sure that we won't hit
the equivalent of bug #12990 anymore for future updates of Unicode versions.
------------------------------------------------------------------------
r56975 | duerst | 2016-12-04 10:17:34 +0900 (Sun, 04 Dec 2016) | 6 lines

Reorder codepoints in some entries of CaseUnfold_11_Table

* enc/unicode/case-folding.rb: Reorder codepoints so that the upper-case
  mapping comes first.
* enc/unicode/9.0.0/casefold.h: Codepoints reordered, upper-case mapping
  flag added.
------------------------------------------------------------------------
r56974 | svn | 2016-12-04 00:41:15 +0900 (Sun, 04 Dec 2016) | 1 line

* 2016-12-04
------------------------------------------------------------------------
r56973 | shugo | 2016-12-04 00:41:14 +0900 (Sun, 04 Dec 2016) | 3 lines

Use IPv6 if it's preferred.

I hope this fix makes tests faster on Windows.
------------------------------------------------------------------------
r56972 | nobu | 2016-12-03 23:18:03 +0900 (Sat, 03 Dec 2016) | 3 lines

string.c: chomp option

* string.c (rb_str_enumerate_lines): implement chomp option.
------------------------------------------------------------------------
r56971 | kazu | 2016-12-03 20:18:44 +0900 (Sat, 03 Dec 2016) | 8 lines

Cleanup ruby method definitions in hash.c

Always add a space between a comma and the next element. These spaces
were there sometimes, but not always. This keeps to code consistent.

Patch by: Herwin Weststrate <herwin@snt.utwente.nl>

[ruby-core:78297] [Misc #12977] [GH-1492]
------------------------------------------------------------------------
r56970 | nobu | 2016-12-03 20:01:25 +0900 (Sat, 03 Dec 2016) | 3 lines

stringio: chomp option

* ext/stringio/stringio.c (strio_getline): implement chomp option.
------------------------------------------------------------------------
r56969 | nobu | 2016-12-03 20:01:24 +0900 (Sat, 03 Dec 2016) | 4 lines

test_stringio.rb: paragraph mode

* test/stringio/test_stringio.rb (test_gets, test_each):
  assertions for paragraph mode.
------------------------------------------------------------------------
r56968 | duerst | 2016-12-03 16:18:41 +0900 (Sat, 03 Dec 2016) | 5 lines

add tests againts regressions for upcoming codepoint reordering in unfolding table

* test/ruby/enc/test_case_mapping.rb: Add method test_reorder_unfold to test against
  problems when reordering codepoints in some entries in
  CaseUnfold_11_Type CaseUnfold_11_Table.
------------------------------------------------------------------------
r56967 | svn | 2016-12-03 14:09:10 +0900 (Sat, 03 Dec 2016) | 1 line

* 2016-12-03
------------------------------------------------------------------------
r56966 | duerst | 2016-12-03 14:09:09 +0900 (Sat, 03 Dec 2016) | 5 lines

change test class name because it is not only about folding

* test/ruby/enc/test_case_comprehensive.rb: Change test class name from
  TestComprehensiveCaseFold to TestComprehensiveCaseMapping because the
  tests are about mapping in general, not only folding
------------------------------------------------------------------------
r56965 | nobu | 2016-12-02 15:12:56 +0900 (Fri, 02 Dec 2016) | 1 line

test/ruby/test_string.rb: ensure restoring $/
------------------------------------------------------------------------
r56964 | nobu | 2016-12-02 12:33:54 +0900 (Fri, 02 Dec 2016) | 4 lines

parse.y: simplify parsing utf-8 string

* parse.y (parser_tokadd_codepoint): move error checks and add
  char.
------------------------------------------------------------------------
r56963 | nobu | 2016-12-02 11:47:11 +0900 (Fri, 02 Dec 2016) | 4 lines

parse.y: relax spaces

* parse.y (parser_tokadd_utf8): relax restriction spaces inside
  "\u{...}".
------------------------------------------------------------------------
r56962 | rhe | 2016-12-02 11:24:45 +0900 (Fri, 02 Dec 2016) | 5 lines

re.c: count associated Regexp object in MatchData#hash

Don't discard the hash value computed for the regexp object. It seems it
was simply missed out in r24754, when MatchData#hash was initially
implemented.
------------------------------------------------------------------------
r56961 | svn | 2016-12-02 02:43:42 +0900 (Fri, 02 Dec 2016) | 1 line

* 2016-12-02
------------------------------------------------------------------------
r56960 | naruse | 2016-12-02 02:43:41 +0900 (Fri, 02 Dec 2016) | 1 line

Remove unused variable
------------------------------------------------------------------------
r56959 | naruse | 2016-12-01 23:18:32 +0900 (Thu, 01 Dec 2016) | 3 lines

String#unpack1 [Feature #12752]

Returns the first value of String#unpack.
------------------------------------------------------------------------
r56958 | usa | 2016-12-01 22:20:47 +0900 (Thu, 01 Dec 2016) | 4 lines

Remove `offset:` from `Array#pack`

* pack.c (pack_pack): can use `@` instead of `offset:`.

------------------------------------------------------------------------
r56957 | usa | 2016-12-01 22:08:20 +0900 (Thu, 01 Dec 2016) | 5 lines

Supports `buffer` and `offset` in `Array#pack`

* pack.c (pack_pack): Supports `buffer` and `offset` in `Array#pack`.
  [Feature #12754] [ruby-dev:49798]

------------------------------------------------------------------------
r56956 | nobu | 2016-12-01 17:26:39 +0900 (Thu, 01 Dec 2016) | 4 lines

parse.y: reject invalid codepoint

* parse.y (parser_tokadd_codepoint): reject invalid codepoint,
  surrogate blocks and surrogate pair, as well as mruby.
------------------------------------------------------------------------
r56955 | hsbt | 2016-12-01 14:24:00 +0900 (Thu, 01 Dec 2016) | 4 lines

Update bundled_gems

  * minitest-5.10.0
  * test-unit-3.2.3
------------------------------------------------------------------------
r56954 | shugo | 2016-12-01 13:51:42 +0900 (Thu, 01 Dec 2016) | 10 lines

Wait until excpetion handling is ready.

Because RubyCI on Solaris 10 failed as follows:

    1) Failure:
  TestProcess#test_execopts_redirect_open_fifo_interrupt_raise [/export/home/rubyci/unstable10s/tmp/build/20161130T201909Z/ruby/test/ruby/test_process.rb:646]:
  <"ok\n"> expected but was
  <"">.

The argument of sleep (0.5) can be smaller, but I'm not sure.
------------------------------------------------------------------------
r56953 | rhe | 2016-12-01 13:42:10 +0900 (Thu, 01 Dec 2016) | 27 lines

openssl: import fixes from upstream

Import the following two commits from upstream:

  commit 72126d6c8b88abd69c3565fc3bbbd5ed1e401611
  Author: Kazuki Yamaguchi <k@rhe.jp>
  Date:   Thu Dec 1 22:27:03 2016 +0900

      pkey: check existence of EVP_PKEY_get0()

      EVP_PKEY_get0() did not exist in early OpenSSL 0.9.8 series. So define
      ourselves if needed.

  commit 94a1c4e0c5705ad1e9a4ca08cacaa6cba8b1e6f5
  Author: Kazuki Yamaguchi <k@rhe.jp>
  Date:   Thu Dec 1 22:13:22 2016 +0900

      test/test_cipher: fix test with OpenSSL 1.0.1 before 1.0.1d

      Set the authentication tag before the AAD when decrypting.

      Before OpenSSL commit 96f7fafa2431 ("Don't require tag before ciphertext
      in AESGCM mode", 2012-10-16, at OpenSSL_1_0_1-stable branch, included in
      OpenSSL 1.0.1d), the authentication tag must be set before any calls of
      EVP_CipherUpdate().

They should fix build on CentOS 5 and Ubuntu 12.04 respectively.
------------------------------------------------------------------------
r56952 | nobu | 2016-12-01 09:34:42 +0900 (Thu, 01 Dec 2016) | 1 line

Use offsetof macro and shrink table size
------------------------------------------------------------------------
r56951 | nobu | 2016-12-01 09:34:41 +0900 (Thu, 01 Dec 2016) | 1 line

constify CaseMappingSpecials
------------------------------------------------------------------------
r56950 | svn | 2016-12-01 02:29:20 +0900 (Thu, 01 Dec 2016) | 1 line

* 2016-12-01
------------------------------------------------------------------------
r56949 | naruse | 2016-12-01 02:29:19 +0900 (Thu, 01 Dec 2016) | 22 lines

Regexp supports Unicoe 9.0.0's \X

* meta character \X matches Unicode 9.0.0 characters with some workarounds
  for UTR #51 Unicode Emoji, Version 4.0 emoji zwj sequences.
  [Feature #12831] [ruby-core:77586]

The term "character" can have many meanings bytes, codepoints, combined
characters, and so on. "grapheme cluster" is highest one of such words,
which means user-perceived characters.
Unicode Standard Annex #29 UNICODE TEXT SEGMENTATION specifies how to
handle grapheme clusters (extended grapheme cluster).
But some specs aren't updated to current situation because Unicode Emoji
is rapidly extended without well definition.
It breaks the precondition of UTR#29 "Grapheme cluster boundaries can be
easily tested by looking at immediately adjacent characters". (the
sentence will be removed in the next version)
Though some of its detail are described in Unicode Technical Report #51
UNICODE EMOJI but it is not merged into UTR#29 yet.

http://unicode.org/reports/tr29/
http://unicode.org/reports/tr51/
http://unicode.org/Public/emoji/4.0/
------------------------------------------------------------------------
r56948 | nobu | 2016-11-30 23:54:09 +0900 (Wed, 30 Nov 2016) | 4 lines

ossl.c: cast

* ext/openssl/ossl.c (ossl_pem_passwd_cb): cast to int.  it's safe
  because len does not exceed int max_len.
------------------------------------------------------------------------
r56947 | nobu | 2016-11-30 23:43:43 +0900 (Wed, 30 Nov 2016) | 4 lines

parse.y: refine error message

* parse.y (parser_tokadd_utf8): refine error message at bad char
  in unicode escape, "invalid" instead of "unterminated".
------------------------------------------------------------------------
r56946 | rhe | 2016-11-30 23:41:46 +0900 (Wed, 30 Nov 2016) | 6 lines

openssl: import v2.0.0

Import Ruby/OpenSSL 2.0.0. The full commit history since 2.0.0 beta.2
(imported at r56098) can be found at:

  https://github.com/ruby/openssl/compare/v2.0.0.beta.2...v2.0.0
------------------------------------------------------------------------
r56945 | hsbt | 2016-11-30 23:24:12 +0900 (Wed, 30 Nov 2016) | 3 lines

Fixed error with `make install`

  rbinstall.rb couldn't load "psych/versions".
------------------------------------------------------------------------
r56944 | hsbt | 2016-11-30 22:55:02 +0900 (Wed, 30 Nov 2016) | 6 lines

Update psych-2.2.1

  It fixed segmentation fault related with GC.
  https://github.com/ruby/psych/pull/296

  and removed deprecated code of Ruby 1.8.
------------------------------------------------------------------------
r56943 | nobu | 2016-11-30 22:09:51 +0900 (Wed, 30 Nov 2016) | 4 lines

parse.y: parser_tokadd_codepoint

* parse.y (parser_tokadd_codepoint): extract from
  parser_tokadd_utf8.
------------------------------------------------------------------------
r56942 | nobu | 2016-11-30 22:09:50 +0900 (Wed, 30 Nov 2016) | 3 lines

parse.y: brace constants

* parse.y (parser_tokadd_utf8): make open/close braces constant.
------------------------------------------------------------------------
r56941 | duerst | 2016-11-30 17:25:46 +0900 (Wed, 30 Nov 2016) | 14 lines

fix uppercasing for U+A64B, CYRILLIC SMALL LETTER MONOGRAPH UK

* enc/unicode.c: Add U+A64B to the special cases 03B9 and 03BC
  at the end of onigenc_unicode_case_map (Bug #12990).

* enc/unicode/case-folding.rb: Add U+A64B to the special cases
  03B9 and 03BC. Add a comment pointing to enc/unicode.c.
  Change warnings to exceptions for unpredicted cases,
  because this would have been more easily noticed
  (the warning was not noticed when upgrading to Unicode 9.0.0).

* test/ruby/enc/test_case_comprehensive.rb: Remove temporary
  exclusion of U+A64B from testing.

------------------------------------------------------------------------
r56940 | nobu | 2016-11-30 10:40:11 +0900 (Wed, 30 Nov 2016) | 4 lines

parse.y: no warning for lambda

* parse.y (parser_yylex): do not warn parentheses of lambda
  argument list, because there is no name.
------------------------------------------------------------------------
r56939 | shugo | 2016-11-30 10:22:05 +0900 (Wed, 30 Nov 2016) | 1 line

Supress warnings.
------------------------------------------------------------------------
r56938 | tenderlove | 2016-11-30 02:06:35 +0900 (Wed, 30 Nov 2016) | 28 lines

Stop reading past the end of `ivptr` array

If you have code like this:

```ruby
class A
  def initialize
    @a = nil
    @b = nil
    @c = nil
    @d = nil
    @e = nil
  end
end

x = A.new
y = x.clone
100.times { |z| x.instance_variable_set(:"@foo#{z}", nil) }
puts y.inspect
```

`x` and `y` will share `iv_index_tbl` hashes.  However, the size of the
hash will grow larger than the number if entries in `ivptr` in `y`.
Before this commit, `rb_ivar_count` would use the size of the hash to
determine how far to read in to the array, but this means that it could
read past the end of the array and cause the program to segv

[ruby-core:78403]
------------------------------------------------------------------------
r56937 | nobu | 2016-11-30 01:06:54 +0900 (Wed, 30 Nov 2016) | 1 line

get rid of ambiguous parentheses warnings
------------------------------------------------------------------------
r56936 | rhe | 2016-11-30 00:48:47 +0900 (Wed, 30 Nov 2016) | 4 lines

webrick: don't use OpenSSL::TestUtils from webrick tests

Follow net/http and open-uri. Don't rely on the constants/methods from
OpenSSL::TestUtils.
------------------------------------------------------------------------
r56935 | rhe | 2016-11-30 00:48:46 +0900 (Wed, 30 Nov 2016) | 3 lines

open-uri: don't use OpenSSL::TestUtils from open-uri tests

Follow net/http. Define own test DH parameters and use.
------------------------------------------------------------------------
r56934 | rhe | 2016-11-30 00:48:45 +0900 (Wed, 30 Nov 2016) | 5 lines

net/http: don't use OpenSSL::TestUtils from test code

Make test code independent of test/openssl/utils.rb. The development of
openssl library has moved to a separate repository and
OpenSSL::TestUtils may be modified at any time.
------------------------------------------------------------------------
r56933 | nobu | 2016-11-30 00:34:31 +0900 (Wed, 30 Nov 2016) | 4 lines

object.c: no TypeError at special const

* object.c (special_object_p): no longer raise a TypeError for
  Integer and Float, and return itself instead.  [Feature#12979]
------------------------------------------------------------------------
r56932 | kazu | 2016-11-30 00:31:16 +0900 (Wed, 30 Nov 2016) | 3 lines

NEWS: Add String/Symbol#casecmp? [Feature #12786]

[ci skip]
------------------------------------------------------------------------
r56931 | usa | 2016-11-30 00:23:12 +0900 (Wed, 30 Nov 2016) | 4 lines

get rid of test failures on CI introduced at r56927

* lib/matrix.rb: now ruby warns ambiguous parentheses after a space in method definitions.

------------------------------------------------------------------------
r56930 | svn | 2016-11-30 00:14:06 +0900 (Wed, 30 Nov 2016) | 1 line

* 2016-11-30
------------------------------------------------------------------------
r56929 | nobu | 2016-11-30 00:14:05 +0900 (Wed, 30 Nov 2016) | 5 lines

object.c: no TypeError at special const clone

* object.c (rb_obj_clone2): no longer raise a TypeError for
  special constants, and return itself instead.  however, if
  freeze option is false, raise an ArgumentError.  [Feature#12979]
------------------------------------------------------------------------
r56928 | nobu | 2016-11-29 21:54:43 +0900 (Tue, 29 Nov 2016) | 8 lines

thread.c: fix doc of abort_on_exception [ci skip]

* thread.c (rb_thread_s_abort_exc, rb_thread_s_abort_exc_set):
  [DOC] the raised exception will be re-raised in the main thread,
  and then follows the ordinary exception sequence, exit status is
  not 0.  [ruby-core:78415] [Bug #12991]

* thread.c (rb_thread_abort_exc_set): ditto.
------------------------------------------------------------------------
r56927 | nobu | 2016-11-29 19:47:43 +0900 (Tue, 29 Nov 2016) | 4 lines

parse.y: ambiguous parentheses

* parse.y (parser_yylex): warn ambiguous parentheses after a space
  in method definitions.
------------------------------------------------------------------------
r56926 | duerst | 2016-11-29 19:45:54 +0900 (Tue, 29 Nov 2016) | 6 lines

Fix/improve documentation of String/Symbol#casecmp[?]

Fix documentation of String#casecmp? (examples didn't have the '?').
Add an example with non-ASCII characters. Clarify that casecmp,
unlike casecmp?, only does case-insensitivity on A-Z/a-z.
[ci skip]
------------------------------------------------------------------------
r56925 | shugo | 2016-11-29 17:44:21 +0900 (Tue, 29 Nov 2016) | 1 line

Suppress warnings.
------------------------------------------------------------------------
r56924 | duerst | 2016-11-29 17:39:57 +0900 (Tue, 29 Nov 2016) | 5 lines

Fix erroneous test of target against target

* test/ruby/enc/test_case_comprehensive.rb: fix test condition,
  add a temporary check for U+A64B, the only character where the tests
  currently fail. (Bug #12990)
------------------------------------------------------------------------
r56923 | shugo | 2016-11-29 17:31:39 +0900 (Tue, 29 Nov 2016) | 4 lines

Ignore SystemCallError in case it is raised by SSLSocket#accept.

Errno::ECONNRESET was raised by test_tls_post_connection_check and
test_tls_unknown_ca on mswin64 CI.
------------------------------------------------------------------------
r56922 | nobu | 2016-11-29 12:06:03 +0900 (Tue, 29 Nov 2016) | 4 lines

test_keyword.rb: more assertions

* test/ruby/test_keyword.rb (test_block_required_keyword): more
  assertions for positional and require keyword parameters.
------------------------------------------------------------------------
r56921 | nobu | 2016-11-29 12:06:02 +0900 (Tue, 29 Nov 2016) | 4 lines

test_keyword.rb: assert_raise_with_message value

* test/ruby/test_keyword.rb (test_block_required_keyword):
  assert_raise_with_message returns the raised exception object.
------------------------------------------------------------------------
r56920 | nobu | 2016-11-29 12:06:01 +0900 (Tue, 29 Nov 2016) | 4 lines

string.c: use xmalloc

* string.c (rb_str_casemap): use xmalloc simply instead of
  ALLOC_N.
------------------------------------------------------------------------
r56919 | shugo | 2016-11-29 11:47:11 +0900 (Tue, 29 Nov 2016) | 7 lines

net/ftp: add a new option ssl_handshake_timeout to Net::FTP.new.

The TLS handshake timeout can be specified independently, because the TLS
handshake doesn't start just after the underlying connection is established,
but after the AUTH command is completed.  It's also useful for testing
purposes.  However, if ssl_handshake_timeout is not specified, open_timeout
is used instead for convenience.
------------------------------------------------------------------------
r56918 | shugo | 2016-11-29 11:33:34 +0900 (Tue, 29 Nov 2016) | 3 lines

net/ftp: close the socket directly when an error occurs during TLS handshake.

Otherwise, @sock.read in Net::FTP#close hungs until read_timeout exceeded.
------------------------------------------------------------------------
r56917 | svn | 2016-11-29 11:21:51 +0900 (Tue, 29 Nov 2016) | 1 line

* 2016-11-29
------------------------------------------------------------------------
r56916 | shugo | 2016-11-29 11:21:50 +0900 (Tue, 29 Nov 2016) | 3 lines

net/ftp: close the connection if the TLS handshake timeout is exceeded.

Otherwise, file descriptor leaks may occur in Net::FTP.new.
------------------------------------------------------------------------
r56915 | nobu | 2016-11-28 22:16:00 +0900 (Mon, 28 Nov 2016) | 4 lines

string.c: fix zero-length array

* string.c (mapping_buffer): get rid of zero-length array member,
  which is not a part of C90.
------------------------------------------------------------------------
r56914 | usa | 2016-11-28 19:17:03 +0900 (Mon, 28 Nov 2016) | 4 lines

hide exceptions in server thread

* test/net/ftp/test_ftp.rb (test_tls_connect_timeout): sleeping to give a chance of complete of accept is a timing issue at all.  therefore, simply ignore the exception.

------------------------------------------------------------------------
r56913 | nobu | 2016-11-28 18:37:19 +0900 (Mon, 28 Nov 2016) | 4 lines

string.c: enable rdoc

* string.c (rb_str_casecmp_p): [DOC] move forward declaration of
  rb_str_downcase to enable rdoc.
------------------------------------------------------------------------
r56912 | duerst | 2016-11-28 17:37:32 +0900 (Mon, 28 Nov 2016) | 8 lines

implement String/Symbol#casecmp? including Unicode case folding

* string.c: Implement String#casecmp? and Symbol#casecmp? by using
  String#downcase :fold for Unicode case folding. This does not include
  options such as :turkic, because these currently cannot be combined
  with the :fold option. This implements feature #12786.

* test/ruby/test_string.rb/test_symbol.rb: Tests for above.
------------------------------------------------------------------------
r56911 | nobu | 2016-11-28 12:48:34 +0900 (Mon, 28 Nov 2016) | 4 lines

insns.def: adjust index type

* insns.def (checkmatch): adjust type of the index variable, to
  get rid of (potential) overflow.
------------------------------------------------------------------------
r56910 | usa | 2016-11-28 12:14:07 +0900 (Mon, 28 Nov 2016) | 4 lines

Give a chance to complete server.accept

* test/net/ftp/test_ftp.rb (test_tls_connect_timeout): get rid of a test error on Windows.

------------------------------------------------------------------------
r56909 | svn | 2016-11-28 11:02:41 +0900 (Mon, 28 Nov 2016) | 1 line

* 2016-11-28
------------------------------------------------------------------------
r56908 | nobu | 2016-11-28 11:02:40 +0900 (Mon, 28 Nov 2016) | 4 lines

compile.c: splatarray peephole opt

* compile.c (iseq_peephole_optimize): remove splatarray following
  always-array insn.
------------------------------------------------------------------------
r56907 | nobu | 2016-11-27 20:22:42 +0900 (Sun, 27 Nov 2016) | 5 lines

signal.c: improve stack overflow check

* signal.c (check_stack_overflow): [EXPERIMENTAL] consider the
  segfault a stack overflow when the fault address is between SP
  and BP.
------------------------------------------------------------------------
r56906 | nobu | 2016-11-27 20:07:27 +0900 (Sun, 27 Nov 2016) | 4 lines

object.c: no TypeError at special const dup

* object.c (rb_obj_dup): no longer raise a TypeError for special
  constants, and return itself instead.  [Feature#12979]
------------------------------------------------------------------------
r56905 | knu | 2016-11-27 19:08:00 +0900 (Sun, 27 Nov 2016) | 5 lines

Reverse compatibility_version and current_version for Darwin

The `compatibility_version` should have an API version and the
`current_version` should have a program version of Ruby, but they have
been reversed and the binary compatibility has never worked.
------------------------------------------------------------------------
r56904 | svn | 2016-11-27 18:40:52 +0900 (Sun, 27 Nov 2016) | 1 line

* 2016-11-27
------------------------------------------------------------------------
r56903 | ktsj | 2016-11-27 18:40:51 +0900 (Sun, 27 Nov 2016) | 1 line

gems/bundled_gems: Update to power_assert 0.4.1
------------------------------------------------------------------------
r56902 | nobu | 2016-11-26 20:37:01 +0900 (Sat, 26 Nov 2016) | 4 lines

file.c: home directory from system

* file.c (rb_default_home_dir): resolve home directory from the
  system database when HOME is not set.  [Feature #12695]
------------------------------------------------------------------------
r56901 | nobu | 2016-11-26 20:37:01 +0900 (Sat, 26 Nov 2016) | 4 lines

win32.c: special folders as home dir

* win32/win32.c (rb_w32_home_dir): move from win32/file.c to try
  special folders.
------------------------------------------------------------------------
r56900 | nobu | 2016-11-26 19:57:02 +0900 (Sat, 26 Nov 2016) | 1 line

NEWS: mention [Feature #12953] [ci skip]
------------------------------------------------------------------------
r56899 | svn | 2016-11-26 18:29:12 +0900 (Sat, 26 Nov 2016) | 1 line

* 2016-11-26
------------------------------------------------------------------------
r56898 | shugo | 2016-11-26 18:29:11 +0900 (Sat, 26 Nov 2016) | 3 lines

net/ftp: support timeout for TLS handshake.

Net::FTP inherits ssl_socket_connect from Net::Protocol to implement timeout.
------------------------------------------------------------------------
r56897 | nobu | 2016-11-25 15:28:00 +0900 (Fri, 25 Nov 2016) | 4 lines

round-down

* numeric.c (round_half_down, int_round_half_down): support
  round-down mode.
------------------------------------------------------------------------
r56896 | svn | 2016-11-25 05:51:46 +0900 (Fri, 25 Nov 2016) | 1 line

* 2016-11-25
------------------------------------------------------------------------
r56895 | usa | 2016-11-25 05:51:45 +0900 (Fri, 25 Nov 2016) | 4 lines

use `rb_struct_ptr` for `RSTRUCT_PTR` macro

* include/ruby/ruby.h (RSTRUCT_PTR): at r55788, `rb_struct_const_ptr` had been hidden and `rb_struct_ptr` had been implemented for backward compatiblity.  but the definition of `RSTRUCT_PTR` was not modified to use it, probably by mistake.

------------------------------------------------------------------------
r56894 | nobu | 2016-11-24 20:07:12 +0900 (Thu, 24 Nov 2016) | 5 lines

marshal.c: fix infinite recursion

* marshal.c (check_userdump_arg): marshal_dump should not return
  an instance of the same class, otherwise it causes infinite
  recursion.  [ruby-core:78289] [Bug #12974]
------------------------------------------------------------------------
r56893 | nobu | 2016-11-24 19:59:35 +0900 (Thu, 24 Nov 2016) | 4 lines

marshal.c: negative limit

* marshal.c (w_object): should not decrement negative limit which
  means unlimited.
------------------------------------------------------------------------
r56892 | nobu | 2016-11-24 12:01:59 +0900 (Thu, 24 Nov 2016) | 6 lines

test_fileutils.rb: fix deadlock

* test/fileutils/test_fileutils.rb (assert_output_lines): ensure
  that write pipe is closed, not the reader thread to deadlock
  when an exception raised in the given block.
  [ruby-core:78053] [Bug #12910]
------------------------------------------------------------------------
r56891 | shugo | 2016-11-24 10:03:07 +0900 (Thu, 24 Nov 2016) | 1 line

Add credit and PR/issue numbers.
------------------------------------------------------------------------
r56890 | normal | 2016-11-24 08:57:30 +0900 (Thu, 24 Nov 2016) | 7 lines

resolv: use safe navigation operator to avoid extra hash lookups

@addr2name is a private Hash and never changes its default_proc,
so only pay the hash lookup cost once; we know missing entries
in the hash will be nil.

* lib/resolv.rb (each_name): use safe navigation operator
------------------------------------------------------------------------
r56889 | normal | 2016-11-24 08:14:15 +0900 (Thu, 24 Nov 2016) | 6 lines

webrick/server: use symbol proc

Symbol proc is less code and avoids confusion from variable
naming.

* lib/webrick/server.rb (shutdown): use symbol proc
------------------------------------------------------------------------
r56886 | svn | 2016-11-24 00:10:20 +0900 (Thu, 24 Nov 2016) | 1 line

* 2016-11-24
------------------------------------------------------------------------
r56885 | shugo | 2016-11-24 00:10:19 +0900 (Thu, 24 Nov 2016) | 1 line

Add CR/LF check to Net::FTP#status.
------------------------------------------------------------------------
r56884 | nobu | 2016-11-23 20:30:02 +0900 (Wed, 23 Nov 2016) | 9 lines

test_fileutils.rb: Use primary group too

* test/fileutils/test_fileutils.rb (TestFileUtils#setup): Use
  primary group as well as supplementary groups.  based on the
  patch by V?t Ondruch at [ruby-core:78053].  [Bug #12910]

It might happen in certain environments (systemd-nspawn) that
process has no supplementary groups, but primary groups should be
enough to pass most of the tests.
------------------------------------------------------------------------
r56883 | normal | 2016-11-23 17:10:44 +0900 (Wed, 23 Nov 2016) | 3 lines

lib/net/ftp: fix typo

* lib/net/ftp.rb (shutdown): fix typo
------------------------------------------------------------------------
r56882 | shugo | 2016-11-23 14:26:18 +0900 (Wed, 23 Nov 2016) | 4 lines

rescue Errno::EPROTOTYPE in FTPTest#test_list_read_timeout_exceeded.

Errno::EPROTOTYPE is sometimes raised on Mac OS X 10.10.
[ruby-core:78066] [Bug #12914]
------------------------------------------------------------------------
r56881 | shugo | 2016-11-23 13:40:40 +0900 (Wed, 23 Nov 2016) | 4 lines

Don't encode to UTF-8 if it's unnecessary.

If the file system encoding is ISO-8851-1 or if the encoding of the target
string is invalid, don't encode to UTF-8.  [ruby-core:78271] [Bug#12972]
------------------------------------------------------------------------
r56880 | shugo | 2016-11-23 09:34:13 +0900 (Wed, 23 Nov 2016) | 6 lines

Disconnect immediately even if Net::FTP#close is called without quit.

In that case, BufferedSSLSocket#read in FTP#close exceeded timeout because
BufferedSSLSocket#shutdown did nothing.  So BufferedIO#rbuf_fill is
overridden in BufferedSSLSocket to raise an EOFError if the connection is
shut down.
------------------------------------------------------------------------
r56879 | shugo | 2016-11-23 09:03:27 +0900 (Wed, 23 Nov 2016) | 4 lines

Add a new optinal argument pathname to FTP#stat.

Based on the patch by soleboxy.
[Fix GH-1478] [ruby-core:78240] [Feature #12965]
------------------------------------------------------------------------
r56878 | kazu | 2016-11-23 08:44:51 +0900 (Wed, 23 Nov 2016) | 1 line

Use `&.` instead of `if` and `? :`
------------------------------------------------------------------------
r56877 | nobu | 2016-11-23 08:32:44 +0900 (Wed, 23 Nov 2016) | 4 lines

parse.y: warn ? followed by a word

* parse.y (parse_qmark): warn `?` with unbalanced space, which is
  interpreted as a conditional operator.
------------------------------------------------------------------------
r56876 | svn | 2016-11-23 08:11:41 +0900 (Wed, 23 Nov 2016) | 1 line

* 2016-11-23
------------------------------------------------------------------------
r56875 | nobu | 2016-11-23 08:11:41 +0900 (Wed, 23 Nov 2016) | 1 line

Use `&.` and `||=` instead of if guards
------------------------------------------------------------------------
r56874 | kazu | 2016-11-22 22:59:16 +0900 (Tue, 22 Nov 2016) | 4 lines

IOError does not happen

* IOError does not happen even if another thread closes io
* Use symbol proc
------------------------------------------------------------------------
r56873 | kazu | 2016-11-22 22:11:43 +0900 (Tue, 22 Nov 2016) | 1 line

Use `&.` instead of modifier if
------------------------------------------------------------------------
r56872 | mrkn | 2016-11-22 14:21:12 +0900 (Tue, 22 Nov 2016) | 11 lines

complex.c: optimize f_gt_p some cases

* complex.c (f_gt_p): optimize f_gt_p for specific types of arguments.

* internal.h (rb_int_gt, rb_float_gt, rb_rational_cmp): exported.

* numeric.c (rb_float_gt): rename from flo_gt and be exported.

* numeric.c (rb_int_gt): rename from int_gt and be exported.

* rational.c (rb_rational_cmp): rename from nurat_cmp and be exported.
------------------------------------------------------------------------
r56871 | shugo | 2016-11-22 14:17:45 +0900 (Tue, 22 Nov 2016) | 4 lines

Add BufferedSSLSocket#send.

SSLSocket#send is not defined, so use #write instead.  flags and dest are
ignored.
------------------------------------------------------------------------
r56870 | mrkn | 2016-11-22 13:54:57 +0900 (Tue, 22 Nov 2016) | 5 lines

complex.c: optimize Kernel#Complex

* complex.c (nucomp_f_complex): use nucomp_s_convert directly.

* complex.c (id_convert): removed.
------------------------------------------------------------------------
r56869 | normal | 2016-11-22 09:16:23 +0900 (Tue, 22 Nov 2016) | 6 lines

webrick/server: simplify Daemon.start

Process.daemon exists since Ruby 1.9.1 and does most of what we need.

* lib/webrick/server.rb (Daemon.start): simplify
  [Misc #12937]
------------------------------------------------------------------------
r56868 | normal | 2016-11-22 08:50:31 +0900 (Tue, 22 Nov 2016) | 5 lines

resolv: use symbol proc when possible

This reduces both human code and bytecode.

lib/resolv.rb (sender_for, Config.parse_resolv_conf): use symbol proc
------------------------------------------------------------------------
r56867 | normal | 2016-11-22 08:50:25 +0900 (Tue, 22 Nov 2016) | 8 lines

socket: use symbol proc for IO#close loops

Made possible by r56795, this reduces human and byte code size.

* ext/socket/lib/socket.rb (self.ip_sockets_port0,
  self.tcp_server_sockets_port0,
  self.tcp_server_sockets,
  self.udp_server_sockets): use symbol proc
------------------------------------------------------------------------
r56866 | normal | 2016-11-22 08:13:16 +0900 (Tue, 22 Nov 2016) | 6 lines

lib/open3: favor symbol proc when possible

It reduces both human and machine code; as well as reducing
the confusion from variable naming.

* lib/open3.rb (popen_run, pipeline, pipeline_run): avoid capture
------------------------------------------------------------------------
r56865 | normal | 2016-11-22 08:05:41 +0900 (Tue, 22 Nov 2016) | 17 lines

lib/*: remove closed checks

Follow r56795.  Since Ruby 2.2, calling #close on a closed
socket no longer raises exceptions.

* lib/cgi/session.rb (update): remove closed? check
* lib/net/http.rb (finish, transport_request): ditto
* lib/net/imap.rb (disconnect): ditto
* lib/net/pop.rb (do_start, do_finish): ditto
* lib/net/smtp.rb (do_start, do_finish): ditto
* lib/open3.rb (popen_run, pipeline_run): ditto
* lib/pstore.rb (transaction): ditto
* lib/shell/process-controller.rb (sfork):
* lib/tempfile (_close, call, Tempfile.create): ditto
* lib/webrick/httpauth/htdigest.rb (flush): ditto
* lib/webrick/httpauth/htpasswd.rb (flush): ditto
* lib/webrick/server.rb (start_thread, cleanup_shutdown_pipe): ditto
------------------------------------------------------------------------
r56864 | svn | 2016-11-22 07:45:27 +0900 (Tue, 22 Nov 2016) | 1 line

* 2016-11-22
------------------------------------------------------------------------
r56863 | nobu | 2016-11-22 07:45:26 +0900 (Tue, 22 Nov 2016) | 3 lines

Revert r56856

* parse.y: tCHAR can be concatenated.
------------------------------------------------------------------------
r56862 | nobu | 2016-11-21 21:34:54 +0900 (Mon, 21 Nov 2016) | 4 lines

ftp.rb: fix typo [ci skip]

* lib/net/ftp.rb (Net::FTP#initialize): [DOC] fix type in option
  name, :username is used but :use is not.
------------------------------------------------------------------------
r56861 | shugo | 2016-11-21 19:38:31 +0900 (Mon, 21 Nov 2016) | 1 line

Add new options open_timeout and read_timeout to Net::FTP.new.
------------------------------------------------------------------------
r56860 | shugo | 2016-11-21 17:55:25 +0900 (Mon, 21 Nov 2016) | 1 line

Use dynamic dispatch instead of is_a?.
------------------------------------------------------------------------
r56857 | rhe | 2016-11-21 14:02:58 +0900 (Mon, 21 Nov 2016) | 13 lines

net/http: avoid writing/reading from unstarted SSL socket

When net/http connects to an HTTPS server through a CONNECT proxy, it
writes the CONNECT request to an unconnected OpenSSL::SSL::SSLSocket.

OpenSSL::SSL::SSLSocket traditionally fallbacks to a method call on the
underlying IO object if a read/write method is called before the TLS
connection is established. So it automagically works correctly, emitting
the "SSL session is not started yet" warning.

This is not obvious at first glance. The warning is also noisy. Let's
just write to the plain socket instead of relying on the SSLSocket's
behavior.
------------------------------------------------------------------------
r56856 | nobu | 2016-11-21 12:13:59 +0900 (Mon, 21 Nov 2016) | 4 lines

parse.y: tCHAR cannot be concatenated

* parse.y (strings): tCHAR is not a subject of string literal
  concatenation and string interpolation.
------------------------------------------------------------------------
r56855 | svn | 2016-11-21 11:17:29 +0900 (Mon, 21 Nov 2016) | 1 line

* 2016-11-21
------------------------------------------------------------------------
r56854 | nobu | 2016-11-21 11:17:29 +0900 (Mon, 21 Nov 2016) | 4 lines

numeric.c: refine error message

* numeric.c (rb_num_get_rounding_option): refine error message at
  invalid rounding mode.
------------------------------------------------------------------------
r56853 | nobu | 2016-11-20 19:52:28 +0900 (Sun, 20 Nov 2016) | 3 lines

proc.c: enable Proc#to_s rdoc

* proc.c (proc_to_s): move just after the rdoc comment.
------------------------------------------------------------------------
r56852 | nobu | 2016-11-20 19:41:09 +0900 (Sun, 20 Nov 2016) | 4 lines

proc.c: suppress warning

* proc.c (NO_CLOBBERED): suppress clobbered warning which appears
  only on mingw.
------------------------------------------------------------------------
r56851 | shugo | 2016-11-20 18:11:44 +0900 (Sun, 20 Nov 2016) | 1 line

Remove an unused variable to suppress a warning.
------------------------------------------------------------------------
r56850 | nobu | 2016-11-20 15:53:39 +0900 (Sun, 20 Nov 2016) | 4 lines

win32ole.c: suppress warnings

* ext/win32ole/win32ole.c (g_ole_initialized): compare with 0
  instead of cast to get rid of pointer-to-int-cast warnings.
------------------------------------------------------------------------
r56849 | usa | 2016-11-20 15:19:05 +0900 (Sun, 20 Nov 2016) | 5 lines

get rid of test failures introduced at r56848

* ext/rubyvm/lib/forwardable/impl.rb: remove an unused variable definition to
  get rid of a warning.

------------------------------------------------------------------------
r56848 | nobu | 2016-11-20 11:12:48 +0900 (Sun, 20 Nov 2016) | 5 lines

forwardable/impl.rb

* lib/forwardable/impl.rb (_valid_method?, _compile_method):
  extract to separate implementation specific part.
  [ruby-core:78138] [Bug #12938]
------------------------------------------------------------------------
r56847 | shugo | 2016-11-20 10:49:25 +0900 (Sun, 20 Nov 2016) | 3 lines

remote_address should be called on @bare_sock.

Because @sock.remote_address fails if @sock is an SSLSocket.
------------------------------------------------------------------------
r56846 | shugo | 2016-11-20 10:44:07 +0900 (Sun, 20 Nov 2016) | 4 lines

shutdown(2) should not be called for SSLSocket.

SSLSocket#stop is a private method and cannot be called, but explicit calls
are not necessary because SSL_shutdown() is called from SSLSocket#close.
------------------------------------------------------------------------
r56845 | svn | 2016-11-20 08:51:50 +0900 (Sun, 20 Nov 2016) | 1 line

* 2016-11-20
------------------------------------------------------------------------
r56844 | suke | 2016-11-20 08:51:49 +0900 (Sun, 20 Nov 2016) | 3 lines

* ext/win32ole/win32ole.c: independent of libgcc_s_seh-1.dll [Bug #12959] 
  Thanks to Tsuyoshi Morita for bug report.

------------------------------------------------------------------------
r56843 | shugo | 2016-11-19 20:01:55 +0900 (Sat, 19 Nov 2016) | 1 line

Use Socket instead of TCPSocket/TCPServer.
------------------------------------------------------------------------
r56842 | shugo | 2016-11-19 16:02:32 +0900 (Sat, 19 Nov 2016) | 1 line

Expand abbreviated option names.
------------------------------------------------------------------------
r56840 | nobu | 2016-11-19 13:32:52 +0900 (Sat, 19 Nov 2016) | 4 lines

ruby.h: rb_big_sign

* include/ruby/ruby.h (RBIGNUM_SIGN): use a wrapper function to
  return the sign bit, instead of comparing with 0.
------------------------------------------------------------------------
r56839 | shugo | 2016-11-19 13:19:35 +0900 (Sat, 19 Nov 2016) | 1 line

Shut down TLS connections gracefully.
------------------------------------------------------------------------
r56837 | shugo | 2016-11-19 11:40:33 +0900 (Sat, 19 Nov 2016) | 1 line

Remove garbage.
------------------------------------------------------------------------
r56836 | shugo | 2016-11-19 11:37:39 +0900 (Sat, 19 Nov 2016) | 1 line

Move certificates to test/net/fixtures/.
------------------------------------------------------------------------
r56835 | svn | 2016-11-19 11:29:24 +0900 (Sat, 19 Nov 2016) | 1 line

* remove trailing spaces.
------------------------------------------------------------------------
r56834 | shugo | 2016-11-19 11:29:23 +0900 (Sat, 19 Nov 2016) | 5 lines

Support TLS and hash styles options for Net::FTP.new.

If the :ssl options is specified, the control connection is protected with
TLS in the manner described in RFC 4217.  Data connections are also
protected with TLS unless the :private_data_connection is set to false.
------------------------------------------------------------------------
r56833 | nobu | 2016-11-19 10:55:34 +0900 (Sat, 19 Nov 2016) | 4 lines

math.c: unused_obj

* math.c (exp1, exp2): use immediate 0 instead of rb_mMath, which
  is never used.
------------------------------------------------------------------------
r56832 | nobu | 2016-11-19 10:16:50 +0900 (Sat, 19 Nov 2016) | 5 lines

dln.c: raise LoadError

* dln.c (dln_load): raise LoadError instead of fatal error on
  recent OSX, dlclose seems fixed in El Capitan or later.
  [ruby-core:78200] [Bug #12956]
------------------------------------------------------------------------
r56831 | tadd | 2016-11-19 00:31:05 +0900 (Sat, 19 Nov 2016) | 2 lines

* NEWS: Added entry for optimized Rational. [Feature #12484] [ci skip]

------------------------------------------------------------------------
r56830 | mrkn | 2016-11-19 00:17:19 +0900 (Sat, 19 Nov 2016) | 13 lines

complex.c: optimize f_negate

* complex.c (f_negate): optimize for special numeric types.

* complex.c (nucomp_expt): use rb_int_uminus instead of f_negate for
  fixnum value.

* internal.h (rb_float_uminus, rb_rational_uminus): exported.

* numeric.c (rb_float_uminus): rename from flo_uminus.

* rational.c (rb_rational_uminus): rename from nurat_negate, and add
  assertion for the parameter.
------------------------------------------------------------------------
r56829 | svn | 2016-11-19 00:04:37 +0900 (Sat, 19 Nov 2016) | 1 line

* 2016-11-19
------------------------------------------------------------------------
r56828 | mrkn | 2016-11-19 00:04:36 +0900 (Sat, 19 Nov 2016) | 8 lines

rational.c: optimization and refactoring

* rational.c (nurat_s_new_bang, nurat_canonicalize): small optimization
  by using rb_int_uminus instead of f_negate.

* rational.c (nurat_canonicalize): add assertions for parameters.

* rational.c (f_negate, id_negate): removed.
------------------------------------------------------------------------
r56827 | mrkn | 2016-11-18 23:24:15 +0900 (Fri, 18 Nov 2016) | 7 lines

complex.c: refactoring

* complex.c (nucomp_abs): use rb_math_hypot directly.

* complex.c (nucomp_arg): use rb_math_atan2 directly.

* complex.c (imp2, m_{atan2,hypot}_bang, m_hypot): removed.
------------------------------------------------------------------------
r56826 | yui-knk | 2016-11-18 20:05:20 +0900 (Fri, 18 Nov 2016) | 3 lines

objspace.c:: indent [ci skip]

* ext/objspace/objspace.c (memsize_of_m): adjust indent of comments.
------------------------------------------------------------------------
r56825 | yui-knk | 2016-11-18 19:58:30 +0900 (Fri, 18 Nov 2016) | 1 line

* NEWS: Fix class name
------------------------------------------------------------------------
r56824 | nobu | 2016-11-18 15:29:51 +0900 (Fri, 18 Nov 2016) | 4 lines

internal.h: round macros

* internal.h (ROUND_FUNC, ROUND_CALL): macros wrapping round
  functions.
------------------------------------------------------------------------
r56823 | svn | 2016-11-18 13:34:27 +0900 (Fri, 18 Nov 2016) | 1 line

* 2016-11-18
------------------------------------------------------------------------
r56822 | nobu | 2016-11-18 13:34:26 +0900 (Fri, 18 Nov 2016) | 6 lines

extmk.rb: removed compiled? method [ci skip]

* ext/extmk.rb (compiled?): removed.

* ext/win32/extconf.rb: try to install libraries regardless
  fiddle.
------------------------------------------------------------------------
r56821 | hsbt | 2016-11-17 22:05:46 +0900 (Thu, 17 Nov 2016) | 12 lines

Remove webhook notification to Travis CI [skip ci]

  As travis-rubies now uses 3 Mac jobs to create archives for various OS
  releases.

  This is a bit wasteful if multiple builds pass in a short period.

  Instead, Travis CI is now running a nightly build of ruby-head
  (around 22:30 UTC). This will happen regardless of the state of the
  master branch.

  Author: Hiro Asari <asari.ruby@gmail.com>
------------------------------------------------------------------------
r56820 | nobu | 2016-11-17 20:52:11 +0900 (Thu, 17 Nov 2016) | 4 lines

readline.c: str_subpos

* ext/readline/readline.c (str_subpos): make string instance only
  if necessary.
------------------------------------------------------------------------
r56819 | usa | 2016-11-17 17:50:36 +0900 (Thu, 17 Nov 2016) | 4 lines

numeric.c: get rid of a compile error on mingw64

* numeric.c (rb_fix2str): typo.

------------------------------------------------------------------------
r56818 | svn | 2016-11-17 16:19:50 +0900 (Thu, 17 Nov 2016) | 1 line

* 2016-11-17
------------------------------------------------------------------------
r56817 | shugo | 2016-11-17 16:19:49 +0900 (Thu, 17 Nov 2016) | 4 lines

mkconfig.rb: add a magic comment to rbconfig.rb

* tool/mkconfig.rb: add a magic comment to rbconfig.rb in case the command
  line option -K is specified.  [ruby-core:78181] [Bug #12949]
------------------------------------------------------------------------
r56815 | nobu | 2016-11-16 15:59:42 +0900 (Wed, 16 Nov 2016) | 7 lines

logger.rb: fix next rotate time

* lib/logger.rb (Logger::LogDevice#initialize): calculate next
  rotate time based on the mtime of the last existing file.
  [ruby-dev:49881] [Bug #12948]

Author: Tsukasa Oishi <tsukasa.oishi@gmail.com>
------------------------------------------------------------------------
r56814 | nobu | 2016-11-16 15:59:41 +0900 (Wed, 16 Nov 2016) | 1 line

test/logger/test_logdevice.rb: heredoc styles
------------------------------------------------------------------------
r56813 | nobu | 2016-11-16 15:59:40 +0900 (Wed, 16 Nov 2016) | 5 lines

ruby-additional.el: unquoted code block

* misc/ruby-additional.el (ruby-insert-heredoc-code-block): make
  code between "begin;" and "end;" unquoted.  still quotable
  before "begin;".
------------------------------------------------------------------------
r56812 | nobu | 2016-11-16 15:07:55 +0900 (Wed, 16 Nov 2016) | 4 lines

configure.in: compressed debug section option

* configure.in: make compressed debug section optional.
  [ruby-core:78121] [Bug #12934]
------------------------------------------------------------------------
r56811 | nobu | 2016-11-16 14:25:53 +0900 (Wed, 16 Nov 2016) | 4 lines

test_flip.rb: r56316

* test/ruby/test_flip.rb (test_input_line_number_range): test for
  r56316.  [ruby-core:78162] [Bug #12947]
------------------------------------------------------------------------
r56810 | mrkn | 2016-11-16 13:25:37 +0900 (Wed, 16 Nov 2016) | 4 lines

math.c: remove needless ifdef clause

* math.c (ifdef M_PI): M_PI is eventually defined in missing.h even if math.h
  doesn't supply it.
------------------------------------------------------------------------
r56809 | mrkn | 2016-11-16 13:25:35 +0900 (Wed, 16 Nov 2016) | 16 lines

complex.c: optimize Numeric#polar and Numeric#arg

* complex.c (numeric_polar): optimize for Integer, Float, and Rational.

* complex.c (numeric_arg): directly create the value of pi.

* complex.c (f_negative_p): optimize for Integer, Float, and Rational.

* rational.c (INT_NEGATIVE_P): move the definition into internal.h.

* internal.h (INT_NEGATIVE_P): ditto.

* numeric.c (rb_float_abs): rename from flo_abs and export to be used
  from other source files..

* internal.h (rb_float_abs): ditto.
------------------------------------------------------------------------
r56808 | mrkn | 2016-11-16 13:25:33 +0900 (Wed, 16 Nov 2016) | 4 lines

rational.c: optimize Rational#abs

* rational.c (rb_rational_abs): optimize Rational#abs with the
  specialized implementation.
------------------------------------------------------------------------
r56807 | hsbt | 2016-11-16 12:02:42 +0900 (Wed, 16 Nov 2016) | 3 lines

Fix a typo.

https://github.com/ruby/psych/commit/18d13b1df09504548feb4cb9b259fed552d6a4d5
------------------------------------------------------------------------
r56806 | hsbt | 2016-11-16 11:51:26 +0900 (Wed, 16 Nov 2016) | 4 lines

Fixed regression of typo fix.

Picked from upstream: https://github.com/ruby/psych/commit/66fb7fb77533d0606748940288858794752d95cb
[ci skip][ruby-dev:49879][Bug #12942]
------------------------------------------------------------------------
r56805 | svn | 2016-11-16 00:04:57 +0900 (Wed, 16 Nov 2016) | 1 line

* 2016-11-16
------------------------------------------------------------------------
r56804 | kazu | 2016-11-16 00:04:56 +0900 (Wed, 16 Nov 2016) | 1 line

Fix regexp and typo
------------------------------------------------------------------------
r56801 | naruse | 2016-11-15 21:42:04 +0900 (Tue, 15 Nov 2016) | 3 lines

Use rb_mod_name instead of classname

classname() is static function.
------------------------------------------------------------------------
r56799 | shugo | 2016-11-15 17:16:45 +0900 (Tue, 15 Nov 2016) | 1 line

ftp.rb: use Addrinfo interfaces
------------------------------------------------------------------------
r56797 | nobu | 2016-11-15 15:28:05 +0900 (Tue, 15 Nov 2016) | 6 lines

complex.c: purge id_eqeq_p and limit return value

* complex.c (f_eqeq_p): use rb_equal.

* complex.c (nucomp_eqeq_p): limit return value to true or false,
  instead of the result of the other as-is.
------------------------------------------------------------------------
r56795 | nobu | 2016-11-15 10:39:11 +0900 (Tue, 15 Nov 2016) | 4 lines

socket.rb: remove closed checks

* ext/socket/lib/socket.rb: remove unnecessary closed checks,
  close on closed socket no longer raises an exception.
------------------------------------------------------------------------
r56794 | nobu | 2016-11-15 10:39:10 +0900 (Tue, 15 Nov 2016) | 4 lines

ftp.rb: use Addrinfo

* lib/net/ftp.rb (sendport, makeport, makepasv, BufferedSocket):
  use Addrinfo interfaces.
------------------------------------------------------------------------
r56793 | normal | 2016-11-15 09:27:20 +0900 (Tue, 15 Nov 2016) | 11 lines

st.c: fix crashes on huge hash tables

From: Vladimir Makarov <vmakarov@redhat.com>

By Vladimir's estimation, this requires at least 64 GB of memory
to reproduce this bug due to the hash sizes required.  So there
is no new test case (and I am unable to test it, myself).

* st.c (get_bins_num): avoid out-of-bounds on shift by using correct type
  [ruby-core:78139] [Bug #12939]
* st.c (get_allocated_entries): ditto
------------------------------------------------------------------------
r56792 | headius | 2016-11-15 04:39:21 +0900 (Tue, 15 Nov 2016) | 2 lines

* test/thread/test_queue.rb: Give up to ten seconds for threads to
  reach expected state before proceeding.
------------------------------------------------------------------------
r56791 | svn | 2016-11-15 04:27:25 +0900 (Tue, 15 Nov 2016) | 1 line

* 2016-11-15
------------------------------------------------------------------------
r56790 | headius | 2016-11-15 04:27:24 +0900 (Tue, 15 Nov 2016) | 5 lines

* test/ruby/test_module.rb: Method tables are not guaranteed to be
  ordered.
* test/ruby/test_struct.rb: Ditto.
* test/ruby/test_thread.rb: Thread locals are not guaranteed to be
ordered.
------------------------------------------------------------------------
r56780 | nobu | 2016-11-14 16:59:50 +0900 (Mon, 14 Nov 2016) | 3 lines

net/ftp.rb: kwargs

* lib/net/ftp.rb (Net::FTP#open_socket): use keyword argument.
------------------------------------------------------------------------
r56779 | nobu | 2016-11-14 16:53:32 +0900 (Mon, 14 Nov 2016) | 4 lines

net/protocol.rb: kwargs

* lib/net/protocol.rb (Net::BufferedIO#initialize): add keyword
  arguments for initial attributes.
------------------------------------------------------------------------
r56778 | nobu | 2016-11-14 16:53:31 +0900 (Mon, 14 Nov 2016) | 6 lines

socket.rb: kwargs

* ext/socket/lib/socket.rb (connect_{from,to}, connect): let use
  keyword arguments.

* ext/socket/lib/socket.rb (Socket.tcp): ditto.
------------------------------------------------------------------------
r56777 | nobu | 2016-11-14 14:17:55 +0900 (Mon, 14 Nov 2016) | 4 lines

vm_eval.c: fstring instance_eval

* vm_eval.c (singleton_class_for_eval): enable fstring singleton
  class for instance_eval.  [ruby-core:78116] [Bug #12930]
------------------------------------------------------------------------
r56776 | nobu | 2016-11-14 13:06:15 +0900 (Mon, 14 Nov 2016) | 8 lines

complex.c: optimize

* complex.c (f_negative_p): use rb_num_negative_p instead of funcall.

* complex.c (f_kind_of_p, f_numeric_p): cast down to int because
  rb_obj_is_kind_of is safe.

* complex.c (f_signbit, f_tpositive_p): remove f_boolcast.
------------------------------------------------------------------------
r56775 | nobu | 2016-11-14 13:02:45 +0900 (Mon, 14 Nov 2016) | 4 lines

rational.c: cast to int

* rational.c (f_kind_of_p): rb_obj_is_kind_of returns Qtrue or
  Qfalse always, and is safe to cast down to int.
------------------------------------------------------------------------
r56774 | svn | 2016-11-14 09:40:06 +0900 (Mon, 14 Nov 2016) | 1 line

* remove trailing spaces.
------------------------------------------------------------------------
r56773 | hsbt | 2016-11-14 09:40:04 +0900 (Mon, 14 Nov 2016) | 4 lines

Update bundled psych to 2.2.0.

 * Merge libyaml-0.1.7 for bundled-libyaml option.
 * Update canonical url to https://github.com/ruby/psych.
------------------------------------------------------------------------
r56772 | mrkn | 2016-11-14 01:43:43 +0900 (Mon, 14 Nov 2016) | 5 lines

complex.c: refactoring

* complex.c (f_zero_p): return int rather than VALUE.

* complex.c (rb_complex_mul): remove needless negate operations.
------------------------------------------------------------------------
r56771 | mrkn | 2016-11-14 01:22:26 +0900 (Mon, 14 Nov 2016) | 3 lines

complex.c: refactoring

* complex.c (f_one_p): removed.
------------------------------------------------------------------------
r56770 | mrkn | 2016-11-14 01:22:08 +0900 (Mon, 14 Nov 2016) | 6 lines

complex.c: refactoring and small optimization

* complex.c (nucomp_expt): optimize the access to the numerator and
  denominator of a rational number.

* complex.c (k_rational_p): removed.
------------------------------------------------------------------------
r56769 | svn | 2016-11-14 01:21:55 +0900 (Mon, 14 Nov 2016) | 1 line

* 2016-11-14
------------------------------------------------------------------------
r56768 | mrkn | 2016-11-14 01:21:54 +0900 (Mon, 14 Nov 2016) | 3 lines

complex.c: refactoring

* complex.c (f_addsub, k_complex_p, k_float_p): removed.
------------------------------------------------------------------------
r56767 | nobu | 2016-11-13 14:25:54 +0900 (Sun, 13 Nov 2016) | 7 lines

error.c: redefined backtrace

* error.c (rb_get_backtrace): honor redefined Exception#backtrace
  method.  [ruby-core:78097] [Bug #12925]

* eval.c (setup_exception): rescue exceptions during backtrace
  setup.
------------------------------------------------------------------------
r56766 | nobu | 2016-11-13 14:25:53 +0900 (Sun, 13 Nov 2016) | 4 lines

error.c: rb_get_backtrace

* error.c (rb_get_backtrace): move from eval_error.c to call
  exc_backtrace directly.  [ruby-core:78097] [Bug #12925]
------------------------------------------------------------------------
r56765 | nobu | 2016-11-13 11:11:07 +0900 (Sun, 13 Nov 2016) | 7 lines

readline: remove dependency on internal.h

* ext/readline/depend: remove dependency on internal.h.

* ext/readline/readline.c (readline_s_delete_text): use
  rb_enc_str_new_static instead of rb_setup_fake_str not to depend
  on internal.h.
------------------------------------------------------------------------
r56764 | nobu | 2016-11-13 11:04:51 +0900 (Sun, 13 Nov 2016) | 4 lines

numeric.c: limit return value

* numeric.c (num_equal): limit return value to true or false,
  instead of the result of the other as-is.
------------------------------------------------------------------------
r56763 | nobu | 2016-11-13 10:51:29 +0900 (Sun, 13 Nov 2016) | 5 lines

purge id_eqeq_p

* rational.c (f_{eqeq,zero,one,minus_one}_p, nurat_eqeq_p): use
  rb_equal.  this function returns Qtrue or Qfalse always, so it
  is safe to cast down to int.
------------------------------------------------------------------------
r56762 | mrkn | 2016-11-13 03:42:30 +0900 (Sun, 13 Nov 2016) | 6 lines

complex.c: refactoring

* complex.c: refactor to use some specific macros and
  to reduce needless conversion by FIX2LONG.

* complex.c (k_fixnum_p, k_bignum_p): removed.
------------------------------------------------------------------------
r56761 | mrkn | 2016-11-13 01:29:11 +0900 (Sun, 13 Nov 2016) | 3 lines

rational.c: refactoring

* rational.c: use RB_INTEGER_TYPE_P, RB_FLOAT_TYPE_P, and FIXNUM_ZERO_P.
------------------------------------------------------------------------
r56760 | mrkn | 2016-11-13 00:43:34 +0900 (Sun, 13 Nov 2016) | 3 lines

rational.c: remove f_negative_p

* rational.c (f_negative_p): removed.
------------------------------------------------------------------------
r56759 | mrkn | 2016-11-13 00:43:26 +0900 (Sun, 13 Nov 2016) | 8 lines

rational.c: optimize Integer#lcm

* rational.c (f_div, f_mul, f_abs): optimize Integer#lcm
  Author: Tadashi Saito <tad.a.digger@gmail.com>

* numeric.c (rb_int_abs): rename from int_abs to be exported.

* internal.h (rb_int_div, rb_int_abs): exported.
------------------------------------------------------------------------
r56758 | mrkn | 2016-11-13 00:43:18 +0900 (Sun, 13 Nov 2016) | 4 lines

rational.c: optimize (-rational).rationalize(some)

* rational.c (nurat_rationalize): optimize (-rational).rationalize(some).
  Author: Tadashi Saito <tad.a.digger@gmail.com>
------------------------------------------------------------------------
r56757 | svn | 2016-11-13 00:07:53 +0900 (Sun, 13 Nov 2016) | 1 line

* 2016-11-13
------------------------------------------------------------------------
r56756 | mrkn | 2016-11-13 00:07:53 +0900 (Sun, 13 Nov 2016) | 5 lines

rational.c: define Rational#{negative?,positive?}

* rational.c (nurat_{negative,positive}_p): define Rational#negative?
  and Rational#positive?, respectively.
  Author: Tadashi Saito <tad.a.digger@gmail.com>
------------------------------------------------------------------------
r56755 | mrkn | 2016-11-12 23:54:19 +0900 (Sat, 12 Nov 2016) | 4 lines

rational.c: refactoring

* rational.c (id_expt, id_fdiv, f_expt, f_fdiv, f_positive_p): removed.
  Author: Tadashi Saito <tad.a.digger@gmail.com>
------------------------------------------------------------------------
r56754 | nobu | 2016-11-12 22:24:23 +0900 (Sat, 12 Nov 2016) | 4 lines

test_fstring.rb: fix exception

* test/-ext-/string/test_fstring.rb (test_singleton_class): fix
  expected exception class.  [ruby-dev:49867] [Bug #12923]
------------------------------------------------------------------------
r56753 | mrkn | 2016-11-12 21:16:12 +0900 (Sat, 12 Nov 2016) | 3 lines

raitonal.c: remove needless macro

* rational.c (id_lshift, f_lshift): removed.
------------------------------------------------------------------------
r56752 | mrkn | 2016-11-12 21:14:10 +0900 (Sat, 12 Nov 2016) | 5 lines

rational.c: optimize Float#rationalize

* rational.c (rb_flt_rationalize{,_with_prec},float_rationalize):
  optimize Float#rationalize.
  Author: Tadashi Saito <tad.a.digger@gmail.com>
------------------------------------------------------------------------
r56751 | mrkn | 2016-11-12 20:52:09 +0900 (Sat, 12 Nov 2016) | 4 lines

rational.c: use rb_num_zerodiv instead of rb_raise_zerodiv

* rational.c (rb_raize_zerodiv): replace by rb_num_zerodiv.
  Author: Tadashi Saito <tad.a.digger@gmail.com>
------------------------------------------------------------------------
r56750 | mrkn | 2016-11-12 20:52:00 +0900 (Sat, 12 Nov 2016) | 7 lines

rational.c: optimize Float#to_r

* rational.c (float_to_r): optimize Float#to_r.

* numeric.c (rb_int_lshift): exported.

* internal.h (rb_int_lshift): ditto.
------------------------------------------------------------------------
r56749 | mrkn | 2016-11-12 20:51:51 +0900 (Sat, 12 Nov 2016) | 5 lines

rational.c: optimize Float#{numerator,denominator}

* rational.c (float_{numerator,denominator}): optimize
  Float#{numerator,denominator}.
  Author: Tadashi Saito <tad.a.digger@gmail.com>
------------------------------------------------------------------------
r56748 | mrkn | 2016-11-12 20:51:41 +0900 (Sat, 12 Nov 2016) | 4 lines

rational.c: optimize Numeric#quo

* rational.c (numeric_quo): optimize Numeric#quo.
  Author: Tadashi Saito <tad.a.digger@gmail.com>
------------------------------------------------------------------------
r56747 | nobu | 2016-11-12 18:43:05 +0900 (Sat, 12 Nov 2016) | 5 lines

class.c: no fstring singleton class

* class.c (singleton_class_of): prohibit fstrings from creating
  singleton classes.
  temporary measure for [ruby-dev:49867] [Bug #12923]
------------------------------------------------------------------------
r56746 | nobu | 2016-11-12 17:16:58 +0900 (Sat, 12 Nov 2016) | 4 lines

symbol/noninterned_name.rb

* test/-ext-/symbol/noninterned_name.rb: split from
  test_inadvertent_creation.rb.
------------------------------------------------------------------------
r56745 | mrkn | 2016-11-12 16:32:28 +0900 (Sat, 12 Nov 2016) | 3 lines

rational.c: refactor by removing needless ID vars

* rational.c (id_cmp, id_trunate): removed.
------------------------------------------------------------------------
r56744 | mrkn | 2016-11-12 16:28:47 +0900 (Sat, 12 Nov 2016) | 8 lines

rational.c: optimize Rational#fdiv

* rational.c (nurat_fdiv): optimize Rational#fdiv.
  Author: Tadashi Saito <tad.a.digger@gmail.com>

* rational.c (f_to_f, id_to_f): removed.

* rational.c (f_expt): only used when FLT_RADIX is not 2.
------------------------------------------------------------------------
r56743 | mrkn | 2016-11-12 15:58:35 +0900 (Sat, 12 Nov 2016) | 4 lines

rational.c: optimize Rational#to_i

* rational.c (nurat_truncate): optimize Rational#to_i.
  Author: Tadashi Saito <tad.a.digger@gmail.com>
------------------------------------------------------------------------
r56742 | mrkn | 2016-11-12 15:45:11 +0900 (Sat, 12 Nov 2016) | 11 lines

rational.c: optimize Rational#{floor,ceil,round,truncate}

* rational.c (f_{expt10,round_common},nurat_{floor,ceil,round_half_{up,even}}):
  optimize Rational#{floor,ceil,round,truncate}.
  Author: Tadashi Saito <tad.a.digger@gmail.com>

* numeric.c (rb_int_divmod): rename from int_divmod to be exported.

* numeric.c (rb_int_and): rename from int_and to be exported.

* intern.h (rb_int_{divmod,and}): exported.
------------------------------------------------------------------------
r56741 | mrkn | 2016-11-12 15:17:12 +0900 (Sat, 12 Nov 2016) | 5 lines

rational.c: optimize rational.coerce(float) and float [+-*/] rational

* rational.c (nurat_coerce): optimize rational.coerce(float).
  note that this makes `float [+-*/] rational` faster
  Author: Tadashi Saito <tad.a.digger@gmail.com>
------------------------------------------------------------------------
r56740 | nobu | 2016-11-12 15:12:13 +0900 (Sat, 12 Nov 2016) | 7 lines

pack.c: simplify

* pack.c (str_associate): remove unnecessary branch.
  the argument must be a plain vanilla string object.

* pack.c (str_associated): use rb_ivar_lookup to give the
  undefined value.
------------------------------------------------------------------------
r56739 | nobu | 2016-11-12 15:12:12 +0900 (Sat, 12 Nov 2016) | 4 lines

class.c: trivial optimization

* class.c (singleton_class_of): just copy FROZEN flag without
  conditions.
------------------------------------------------------------------------
r56738 | nobu | 2016-11-12 15:12:09 +0900 (Sat, 12 Nov 2016) | 4 lines

.gdbinit: improve rp [ci skip]

* .gdbinit (rp): improve T_OBJECT dump.  show the contents of the
  instance variables table.
------------------------------------------------------------------------
r56737 | mrkn | 2016-11-12 15:07:46 +0900 (Sat, 12 Nov 2016) | 9 lines

rational.c: optimize construction of Rational

* rational.c (nurat_{s_new_bang,canonicalize,f_rational,s_convert}):
  optimize construction of Rational from numbers.
  Author: Tadashi Saito <tad.a.digger@gmail.com>

* rational.c (read_{num,rat_nos}): optimize construction of Rational
  from string.
  Author: Tadashi Saito <tad.a.digger@gmail.com>
------------------------------------------------------------------------
r56736 | mrkn | 2016-11-12 15:07:24 +0900 (Sat, 12 Nov 2016) | 10 lines

rational.c: purge f_cmp

* rational.c (f_cmp, nurat_expt): purge f_cmp.
  Author: Tadashi Saito <tad.a.digger@gmail.com>

* rational.c (INT_POSITIVE_P): added.

* numeric.c (FIXNUM_POSITIVE_P): move the definition into internal.h.

* internal.h (FIXNUM_POSITIVE_P): ditto.
------------------------------------------------------------------------
r56735 | mrkn | 2016-11-12 15:07:01 +0900 (Sat, 12 Nov 2016) | 4 lines

rational.c: optimize Rational#-@

* rational.c (nurat_negate): introduced to optimize Rational#-@.
  Author: Tadashi Saito <tad.a.digger@gmail.com>
------------------------------------------------------------------------
r56734 | mrkn | 2016-11-12 11:24:32 +0900 (Sat, 12 Nov 2016) | 9 lines

rational.c: optimize Rational#==

* rational.c (nurat_eqeq_p): optimize Rational#==.
  Author: Tadashi Saito <tad.a.digger@gmail.com>

* numeric.c (rb_int_equal): rename from int_equal and remove static
  to be exported.

* internal.h (rb_int_equal): exported.
------------------------------------------------------------------------
r56733 | mrkn | 2016-11-12 10:29:01 +0900 (Sat, 12 Nov 2016) | 9 lines

rational.c: optimize Rational#<=>

* rational.c (nurat_cmp): optimize Rational#<=>.
  Author: Tadashi Saito <tad.a.digger@gmail.com>

* numeric.c (rb_int_cmp): rename from int_cmp and remove static
  to be exported.

* internal.h (rb_int_cmp): exported.
------------------------------------------------------------------------
r56725 | mrkn | 2016-11-12 01:38:28 +0900 (Sat, 12 Nov 2016) | 9 lines

rational.c: optimize Rational#**

* rational.c (nurat_expt): optimize Rational#**.
  Author: Tadashi Saito <tad.a.digger@gmail.com>

* numeric.c (rb_float_pow): rename flo_pow() to rb_float_pow()
  and remove static to be exporetd.

* internal.h (rb_int_pow, rb_float_pow): exported.
------------------------------------------------------------------------
r56724 | mrkn | 2016-11-12 01:18:13 +0900 (Sat, 12 Nov 2016) | 3 lines

rational.c: add argument type check assertions in f_muldiv

* rational.c (f_muldiv): add assertions to check argument types
------------------------------------------------------------------------
r56723 | mrkn | 2016-11-12 01:17:56 +0900 (Sat, 12 Nov 2016) | 4 lines

rational.c: optimize Rational#/

* rational.c (f_muldiv, nurat_div): optimize Rational#/.
  Author: Tadashi Saito <tad.a.digger@gmail.com>
------------------------------------------------------------------------
r56719 | mrkn | 2016-11-12 00:55:30 +0900 (Sat, 12 Nov 2016) | 25 lines

rational.c: avoid needless object allocation with nurat_to_double

* rational.c (nurat_to_double): introduce to convert rational to double
  without object allocation.

* rational.c (rb_rational_plus, nurat_{sub,mul,to_f}): rewrite by using
  nurat_to_double.

* bignum.c (rb_big_fdiv_double): introduce to calculate fdiv and return
  the result as a double value.

* bignum.c (big_fdiv{,_int,_float}): change the return types for
  implementing rb_big_fdiv_double.

* bignum.c (rb_big_fdiv): rewrite by using rb_big_fdiv_double.

* numeric.c (rb_int_fdiv_double): introduce to calculate fdiv and return
  the result as a double value.

* numeric.c (fix_fdiv_double): rewrite from fix_fdiv to return the
  result as a double value.

* numeric.c (rb_int_fdiv): rewrite by using rb_int_fdiv_double.

* internal.h (rb_{big,int}_fdiv_double): exported.
------------------------------------------------------------------------
r56716 | nagachika | 2016-11-12 00:43:43 +0900 (Sat, 12 Nov 2016) | 2 lines

fix a constant name typo in redmine-backporter.rb
[ci skip]
------------------------------------------------------------------------
r56713 | svn | 2016-11-12 00:11:05 +0900 (Sat, 12 Nov 2016) | 1 line

* 2016-11-12
------------------------------------------------------------------------
r56712 | mrkn | 2016-11-12 00:11:04 +0900 (Sat, 12 Nov 2016) | 5 lines

rational.c: optimize rational * {float, huge rational, bignum}

* rational.c (f_muldiv, nurat_mul):
  optimize rational * {float, huge rational, bignum}.
  Author: Tadashi Saito <tad.a.digger@gmail.com>
------------------------------------------------------------------------
r56711 | mrkn | 2016-11-11 23:57:11 +0900 (Fri, 11 Nov 2016) | 4 lines

rational.c: optimize rational - {float,rational}

* rational.c (f_addsub, nurat_sub): optimize rational - {float,rational}.
  Author: Tadashi Saito <tad.a.digger@gmail.com>
------------------------------------------------------------------------
r56710 | mrkn | 2016-11-11 23:45:11 +0900 (Fri, 11 Nov 2016) | 4 lines

rational.c: optimize rational - integer

* rational.c (nurat_sub): optimize rational - integer.
  Author: Tadashi Saito <tad.a.digger@gmail.com>
------------------------------------------------------------------------
r56709 | mrkn | 2016-11-11 23:42:53 +0900 (Fri, 11 Nov 2016) | 4 lines

rational.c: optimize rational + rational

* rational.c (f_addsub): optimize rational + rational.
  Author: Tadashi Saito <tad.a.digger@gmail.com>
------------------------------------------------------------------------
r56708 | mrkn | 2016-11-11 23:39:34 +0900 (Fri, 11 Nov 2016) | 4 lines

rational.c: prevent unused warning

* rational.c (f_mod): define only when NDEBUG is not defined to prevent
  unused warning
------------------------------------------------------------------------
r56707 | mrkn | 2016-11-11 23:39:25 +0900 (Fri, 11 Nov 2016) | 8 lines

numeric.c, rational.c: refactor by using FIXNUM_NEGATIVE_P and FIXNUM_ZERO_P

* numeric.c (num_zero_p, fix_divide, fix_mod, fix_divmod): refactor by using
  FIXNUM_NEGATIVE_P and FIXNUM_ZERO_P.

* rational.c (INT_NEGATIVE_P, INT_ZERO_P): ditto.

* internal.h: move FIXNUM_NEGATIVE_P and FIXNUM_ZERO_P from numeric.c
------------------------------------------------------------------------
r56706 | mrkn | 2016-11-11 23:39:16 +0900 (Fri, 11 Nov 2016) | 4 lines

rational.c: optimize Integer#gcd.

* rational.c (f_gcd_normal): optimize Integer#gcd.
  Author: Tadashi Saito <tad.a.digger@gmail.com>
------------------------------------------------------------------------
r56705 | mrkn | 2016-11-11 23:39:07 +0900 (Fri, 11 Nov 2016) | 4 lines

rational.c: optimize rational + integer.

* rational.c (rb_rational_plus): optimize rational + integer.
  Author: Tadashi Saito <tad.a.digger@gmail.com>
------------------------------------------------------------------------
r56704 | mrkn | 2016-11-11 23:38:59 +0900 (Fri, 11 Nov 2016) | 4 lines

rational.c: optimize rational + float.

* rational.c (rb_rational_plus): optimize rational + float.
  Author: Tadashi Saito <tad.a.digger@gmail.com>
------------------------------------------------------------------------
r56703 | nobu | 2016-11-11 20:52:03 +0900 (Fri, 11 Nov 2016) | 4 lines

range.c: check loading

* range.c (range_loader): check loading values if the data came
  from an initialized range object. [ruby-core:78067] [Bug #12915]
------------------------------------------------------------------------
r56702 | nobu | 2016-11-11 16:26:14 +0900 (Fri, 11 Nov 2016) | 4 lines

rational.c: check load

* rational.c (nurat_loader, nurat_marshal_load): check if loading
  values are Integer.  [ruby-core:78071] [Bug #12918]
------------------------------------------------------------------------
r56701 | nobu | 2016-11-11 16:08:53 +0900 (Fri, 11 Nov 2016) | 7 lines

rational.c: optimize

* rational.c (f_{lt,eqeq,zero,one,minus_one,kind_of}_p): add RTEST
  to results of funcalls.

* rational.c (f_negative_p, k_{integer,float,rational}_p):
  optimize.
------------------------------------------------------------------------
r56700 | nobu | 2016-11-11 16:08:52 +0900 (Fri, 11 Nov 2016) | 1 line

rational.c: use RB_INTEGER_TYPE_P
------------------------------------------------------------------------
r56699 | akr | 2016-11-11 12:04:38 +0900 (Fri, 11 Nov 2016) | 2 lines

Enable the document for Kernel[#.]pp.

------------------------------------------------------------------------
r56698 | nobu | 2016-11-11 09:08:41 +0900 (Fri, 11 Nov 2016) | 4 lines

vm_eval.c: reorder

* vm_eval.c (vm_call0_body): reorder the conditions.
  [ruby-core:78073] [Bug #12920]
------------------------------------------------------------------------
r56697 | mrkn | 2016-11-11 00:23:43 +0900 (Fri, 11 Nov 2016) | 3 lines

rational.c: optimize Rational#to_f by using rb_int_fdiv

* rational.c (nurat_to_f): optimize Rational#to_f by using rb_int_fdiv.
------------------------------------------------------------------------
r56696 | svn | 2016-11-11 00:23:34 +0900 (Fri, 11 Nov 2016) | 1 line

* 2016-11-11
------------------------------------------------------------------------
r56695 | mrkn | 2016-11-11 00:23:33 +0900 (Fri, 11 Nov 2016) | 5 lines

numeric.c, internal.h: export int_fdiv() as rb_int_fdiv()

* numeric.c (rb_int_fdiv): export int_fdiv() as rb_int_fdiv().

* internal.h (rb_int_fdiv): add declaration of rb_int_fdiv().
------------------------------------------------------------------------
r56694 | nobu | 2016-11-10 23:18:52 +0900 (Thu, 10 Nov 2016) | 4 lines

vm_eval.c: fix refined method when prepended

* vm_eval.c (vm_call0_body): refined module should not be skipped
  as prepended.  [ruby-core:78073] [Bug #12920]
------------------------------------------------------------------------
r56693 | nobu | 2016-11-10 19:39:51 +0900 (Thu, 10 Nov 2016) | 3 lines

range.c: check if range modifiable

* range.c (range_modify): frozen object cannot be modified.
------------------------------------------------------------------------
r56692 | nobu | 2016-11-10 16:47:44 +0900 (Thu, 10 Nov 2016) | 5 lines

parse.y: new_attr_op_assign in ripper needs symbol

* parse.y (command_asgn, arg): new_attr_op_assign in ripper
  expects a Symbol VALUE as the operator, not an ID, so convert
  literal IDs to Symbols.  [ruby-core:78069] [Bug #12916]
------------------------------------------------------------------------
r56691 | nobu | 2016-11-10 16:47:43 +0900 (Thu, 10 Nov 2016) | 4 lines

test_files.rb: sample size

* test/ripper/test_files.rb (assert_parse_files): extract at least
  one sample.
------------------------------------------------------------------------
r56690 | nobu | 2016-11-10 15:45:57 +0900 (Thu, 10 Nov 2016) | 4 lines

test_files.rb: separate tests

* test/ripper/test_files.rb (assert_parse_files): separate tests
  for each directories.
------------------------------------------------------------------------
r56689 | hsbt | 2016-11-10 15:38:14 +0900 (Thu, 10 Nov 2016) | 4 lines

Use environment variable for system ruby detection on appveyor.

 * Use ruby_version instead of 22-x64 and 21-x64
 * Use 23-x64 to build Ruby
------------------------------------------------------------------------
r56688 | nobu | 2016-11-10 12:50:47 +0900 (Thu, 10 Nov 2016) | 4 lines

make-snapshot: repository options

* tool/make-snapshot: add -svn and -git options to direct the
  repository to export.
------------------------------------------------------------------------
r56687 | nobu | 2016-11-10 12:50:46 +0900 (Thu, 10 Nov 2016) | 4 lines

make-snapshot: program name

* tool/make-snapshot (package): abort with the basename of this
  script.
------------------------------------------------------------------------
r56686 | shugo | 2016-11-10 11:23:58 +0900 (Thu, 10 Nov 2016) | 11 lines

Extend timeout for RubyCI chkbuild on Debian 8.2 x86_64.

On that machine, TestQueue#test_thr_kill often fails as follows:

      1) Failure:
    TestQueue#test_thr_kill [/home/hsbt/chkbuild/tmp/build/20161109T213002Z/ruby/test/thread/test_queue.rb:155]:
    only 171/250 done in 30 seconds.

Even if it passes, it takes about 30 seconds:

    [11160/16832] TestQueue#test_thr_kill = 29.80 s
------------------------------------------------------------------------
r56685 | svn | 2016-11-10 09:49:17 +0900 (Thu, 10 Nov 2016) | 1 line

* 2016-11-10
------------------------------------------------------------------------
r56684 | nobu | 2016-11-10 09:49:17 +0900 (Thu, 10 Nov 2016) | 5 lines

test_process.rb: fix pgroup test

* test/ruby/test_process.rb (TestProcess#test_execopts_pgroup):
  use dynamically assigned pid for the process group, instead of a
  magic number 2.  [ruby-core:78051] [Bug #12909]
------------------------------------------------------------------------
r56683 | nobu | 2016-11-10 09:49:16 +0900 (Thu, 10 Nov 2016) | 3 lines

range.c: indent [ci skip]

* range.c (range_alloc): adjust indent of comments.
------------------------------------------------------------------------
r56682 | nobu | 2016-11-09 11:42:30 +0900 (Wed, 09 Nov 2016) | 4 lines

default.mspec: end of options

* spec/default.mspec (MSpecScript): add the end of options to
  runruby.rb, to fix failure at ruby/spec@a0e55db.
------------------------------------------------------------------------
r56681 | a_matsuda | 2016-11-09 05:25:44 +0900 (Wed, 09 Nov 2016) | 6 lines

Fix undefined method 'dump' for nil:NilClass (NoMethodError)

Patch by: Dmitry Vorotilin <d.vorotilin@gmail.com> (@route)
Signed-off-by: Akira Matsuda <ronnie@dio.jp>

closes #1475
------------------------------------------------------------------------
r56680 | a_matsuda | 2016-11-09 04:55:59 +0900 (Wed, 09 Nov 2016) | 8 lines

Fix grammar errors

Patch by: Chris Tweedie <cltweedie@gmail.com> (@cltweedie)
Signed-off-by: Akira Matsuda <ronnie@dio.jp>

closes #1074

[ci skip]
------------------------------------------------------------------------
r56679 | a_matsuda | 2016-11-09 04:43:58 +0900 (Wed, 09 Nov 2016) | 9 lines

Update documentation of fetch

The sentence `Negative values of +index+ count from the end of the array.` can be interpreted that it only holds if a block is given. Clarify it.

Patch by: Lukas Elmer <lukas.elmer@gmail.com> (@lukaselmer)
Signed-off-by: Akira Matsuda <ronnie@dio.jp>

closes #1472
[ci skip]
------------------------------------------------------------------------
r56678 | a_matsuda | 2016-11-09 04:37:59 +0900 (Wed, 09 Nov 2016) | 15 lines

Fix typo in code doc of proc.c

Insure has a different meaning than ensure and we mean the latter in
this case.

*Ensure* is to do or have what is necessary for success.
Example: These blankets ensure that you?ll be warm enough.

*Insure* is to cover with an insurance policy.
Example: I will insure my home with additional fire and flood policies.

Patch by: Dimitris Zorbas <zorbash@skroutz.gr> (@Zorbash)
Signed-off-by: Akira Matsuda <ronnie@dio.jp>

closes #1352
------------------------------------------------------------------------
r56677 | kazu | 2016-11-09 00:04:29 +0900 (Wed, 09 Nov 2016) | 1 line

Add a space [ci skip]
------------------------------------------------------------------------
r56676 | svn | 2016-11-09 00:01:56 +0900 (Wed, 09 Nov 2016) | 1 line

* 2016-11-09
------------------------------------------------------------------------
r56675 | kazu | 2016-11-09 00:01:55 +0900 (Wed, 09 Nov 2016) | 1 line

Add ticket number [ci skip]
------------------------------------------------------------------------
r56674 | a_matsuda | 2016-11-08 20:57:00 +0900 (Tue, 08 Nov 2016) | 6 lines

Update comment about default constant

Patch by: Dave Takahashi <dtcello@gmail.com> (@dtakahas)
Signed-off-by: Akira Matsuda <ronnie@dio.jp>

closes #1151
------------------------------------------------------------------------
r56673 | nobu | 2016-11-08 19:44:21 +0900 (Tue, 08 Nov 2016) | 4 lines

vcs.rb: fix GIT.get_revisions

* tool/vcs.rb (VCS::GIT.get_revisions): fix for out-of-place
  build.
------------------------------------------------------------------------
r56672 | svn | 2016-11-08 18:31:53 +0900 (Tue, 08 Nov 2016) | 1 line

* properties.
------------------------------------------------------------------------
r56671 | naruse | 2016-11-08 18:31:52 +0900 (Tue, 08 Nov 2016) | 3 lines

Moved deleted ChangeLog into doc/ChangeLog-2.4.0

And Add doc/ChangeLog-2016 as an anchor.
------------------------------------------------------------------------
r56670 | nobu | 2016-11-08 16:47:23 +0900 (Tue, 08 Nov 2016) | 5 lines

vcs.rb: format from git-log

* tool/vcs.rb (VCS::GIT#export_changelog): re-format from git-log
  to svn style log, instead of git-svn, because cloned working
  directory would not have .git/svn.
------------------------------------------------------------------------
r56669 | nobu | 2016-11-08 16:45:19 +0900 (Tue, 08 Nov 2016) | 4 lines

vcs.rb: expand srcdir

* tool/vcs.rb (VCS::GIT#initialize): expand srcdir if it is a
  local path.
------------------------------------------------------------------------
r56668 | nobu | 2016-11-08 15:39:46 +0900 (Tue, 08 Nov 2016) | 6 lines

vcs.rb: fix srcdir in VCS::GIT

* tool/vcs.rb (VCS::GIT.cmd_args): add chdir option to arguments
  for IO.popen if srcdir is a local path.  unless -srcdir command
  line option is given, srcdir is the default URL.
  [ruby-core:78036] [Bug #12908]
------------------------------------------------------------------------
r56667 | svn | 2016-11-08 00:26:11 +0900 (Tue, 08 Nov 2016) | 1 line

* 2016-11-08
------------------------------------------------------------------------
r56666 | kazu | 2016-11-08 00:26:10 +0900 (Tue, 08 Nov 2016) | 3 lines

Add entry for Enumerator::Lazy#chunk_while

[ci skip][GH-1186]
------------------------------------------------------------------------
r56665 | kazu | 2016-11-07 21:10:36 +0900 (Mon, 07 Nov 2016) | 1 line

fix a typo [ci skip]
------------------------------------------------------------------------
r56664 | hsbt | 2016-11-07 18:46:42 +0900 (Mon, 07 Nov 2016) | 1 line

Added Entry for Rubygems 2.6.8 update.
------------------------------------------------------------------------
r56663 | nobu | 2016-11-07 16:45:18 +0900 (Mon, 07 Nov 2016) | 4 lines

test_optimization.rb: for r56208

* test/ruby/test_optimization.rb (test_tailcall_condition_block):
  test for r56208.  [ruby-core:78015] [Bug #12905]
------------------------------------------------------------------------
r56662 | shugo | 2016-11-07 15:57:14 +0900 (Mon, 07 Nov 2016) | 1 line

Extend Net::HTTP#open_timeout for chkbuild on Solaris 10s.
------------------------------------------------------------------------
r56660 | naruse | 2016-11-07 14:53:42 +0900 (Mon, 07 Nov 2016) | 1 line

Add NEWS about removing ChangeLog
------------------------------------------------------------------------
r56658 | nobu | 2016-11-07 12:47:46 +0900 (Mon, 07 Nov 2016) | 3 lines

vcs.rb: suppress warning

* tool/vcs.rb (DebugPOpen): suppress refinements warning in 2.0.
------------------------------------------------------------------------
r56657 | nobu | 2016-11-07 12:28:57 +0900 (Mon, 07 Nov 2016) | 3 lines

add cast

* hash.c (rb_objid_hash): need to cast down.
------------------------------------------------------------------------
r56656 | nobu | 2016-11-07 12:25:28 +0900 (Mon, 07 Nov 2016) | 7 lines

vcs.rb: exclude beginning revision

* tool/make-snapshot: pass the last revision in the last ChangeLog
  file without increment.

* tool/vcs.rb (export_changelog): exclude the beginning revision
  of the range uniformly. svn log includes it, but git log not.
------------------------------------------------------------------------
r56655 | nobu | 2016-11-07 11:54:28 +0900 (Mon, 07 Nov 2016) | 6 lines

vcs.rb: unnecessary arguments

* tool/make-snapshot: $srcdir is optional.

* tool/vcs.rb (export_changelog): remove unnecessary arguments.
  VCS should know srcdir and url.
------------------------------------------------------------------------
r56654 | nobu | 2016-11-07 11:54:27 +0900 (Mon, 07 Nov 2016) | 4 lines

vcs.rb: use chdir option

* tool/vcs.rb (export_changelog): for old git, use chdir option
  instead of git -C option, and set language environmets to C.
------------------------------------------------------------------------
r56653 | shugo | 2016-11-07 11:10:00 +0900 (Mon, 07 Nov 2016) | 1 line

Just check that interruption doesn't cause SEGV.
------------------------------------------------------------------------
r56652 | nobu | 2016-11-07 10:23:04 +0900 (Mon, 07 Nov 2016) | 4 lines

make-snapshot: sort globbed results

* tool/make-snapshot (package): globbed results order is
  undefined.
------------------------------------------------------------------------
r56651 | ko1 | 2016-11-07 10:03:04 +0900 (Mon, 07 Nov 2016) | 1 line

fix NEWS message
------------------------------------------------------------------------
r56650 | ko1 | 2016-11-07 09:45:00 +0900 (Mon, 07 Nov 2016) | 19 lines

	Introduce table improvement by Vladimir Makarov <vmakarov@redhat.com>.
	[Feature #12142]
	See header of st.c for improvment details.

	You can see all of code history here:
	<https://github.com/vnmakarov/ruby/tree/hash_tables_with_open_addressing>

	This improvement is discussed at
	<https://bugs.ruby-lang.org/issues/12142>
	with many people, especially with Yura Sokolov.

	* st.c: improve st_table.

	* include/ruby/st.h: ditto.

	* internal.h, numeric.c, hash.c (rb_dbl_long_hash): extract a function.

	* ext/-test-/st/foreach/foreach.c: catch up this change.

------------------------------------------------------------------------
r56649 | nobu | 2016-11-07 09:04:20 +0900 (Mon, 07 Nov 2016) | 3 lines

vcs.rb: popen with env

* tool/vcs.rb (IO.popen): support passing environment variables.
------------------------------------------------------------------------
r56648 | naruse | 2016-11-07 02:34:56 +0900 (Mon, 07 Nov 2016) | 3 lines

revision.h shouldn't depend ChangeLog

Maybe it needs vcs dependent ways.
------------------------------------------------------------------------
