PHP 8.2.31
Preview: ChangeLog Size: 1.58 MB
/proc/thread-self/root/opt/alt/ruby26/share/doc/alt-ruby26/ChangeLog

------------------------------------------------------------------------
r67958 | usa | 2022-04-12 20:50:11 +0900 (Tue, 12 Apr 2022) | 1 line

add tag v2_6_10
------------------------------------------------------------------------
r67957 | usa | 2022-04-12 20:49:45 +0900 (Tue, 12 Apr 2022) | 2 lines

Fix dtoa buffer overrun

------------------------------------------------------------------------
r67956 | usa | 2022-04-12 20:03:11 +0900 (Tue, 12 Apr 2022) | 2 lines

Backport date-2.0.3 for Reiwa Support [Backport #18514]

------------------------------------------------------------------------
r67955 | usa | 2022-04-12 19:52:41 +0900 (Tue, 12 Apr 2022) | 2 lines

fix for #16798 to Ruby 2.6 introduced C99 syntax [Backport #18387]

------------------------------------------------------------------------
r67953 | usa | 2021-11-24 20:41:55 +0900 (Wed, 24 Nov 2021) | 1 line

When parsing cookies, only decode the values
------------------------------------------------------------------------
r67952 | usa | 2021-11-24 18:07:47 +0900 (Wed, 24 Nov 2021) | 1 line

Merge date-2.0.2
------------------------------------------------------------------------
r67950 | usa | 2021-07-07 19:38:10 +0900 (Wed, 07 Jul 2021) | 6 lines

Fix StartTLS stripping vulnerability

Reported by Alexandr Savca in https://hackerone.com/reports/1178562

Co-authored-by: Shugo Maeda <shugo@ruby-lang.org>

------------------------------------------------------------------------
r67949 | usa | 2021-07-07 19:34:08 +0900 (Wed, 07 Jul 2021) | 7 lines

Ignore IP addresses in PASV responses by default, and add new option use_pasv_ip

This fixes CVE-2021-31810.
Reported by Alexandr Savca.

Co-authored-by: Shugo Maeda <shugo@ruby-lang.org>

------------------------------------------------------------------------
r67948 | usa | 2021-07-04 02:10:56 +0900 (Sun, 04 Jul 2021) | 2 lines

patchlevel for previous commit

------------------------------------------------------------------------
r67947 | usa | 2021-07-04 02:10:28 +0900 (Sun, 04 Jul 2021) | 8 lines

merge revision(s) b1c73f23,c9ab8fe2: [Backport #17877]

	[ruby/rdoc] Use File.open to fix the OS Command Injection vulnerability in CVE-2021-31799
	
	https://github.com/ruby/rdoc/commit/a7f5d6ab88

	The test for command injection on Unix platforms should be omitted on Windows

------------------------------------------------------------------------
r67946 | usa | 2021-07-04 01:56:34 +0900 (Sun, 04 Jul 2021) | 23 lines

merge revision(s) 9edc1625: [Backport #17781]

	[ruby/resolv] Fix confusion of received response message

	This is a follow up for commit 33fb966197f1 ("Remove sender/message_id
	pair after response received in resolv", 2020-09-11).

	As the @senders instance variable is also used for tracking transaction
	ID allocation, simply removing an entry without releasing the ID would
	eventually deplete the ID space and cause
	Resolv::DNS.allocate_request_id to hang.

	It seems the intention of the code was to check that the received DNS
	message is actually the response for the question made within the method
	earlier. Let's have it actually do so.

	[Bug #12838] https://bugs.ruby-lang.org/issues/12838
	[Bug #17748] https://bugs.ruby-lang.org/issues/17748

	https://github.com/ruby/resolv/commit/53ca9c9209
	---
	 lib/resolv.rb | 6 +++---
	 1 file changed, 3 insertions(+), 3 deletions(-)
------------------------------------------------------------------------
r67945 | usa | 2021-07-04 01:53:29 +0900 (Sun, 04 Jul 2021) | 11 lines

merge revision(s) d8a13e50: [Backport #17780]

	[Bug #17780] Fix Method#super_method for module alias

	Method#super_method crashes for aliased module methods because they are
	not defined on a class. This bug was introduced in
	c60aaed1856b2b6f90de0992c34771830019e021 as part of bug #17130.
	---
	 proc.c                   |  2 +-
	 test/ruby/test_method.rb | 13 +++++++++++++
	 2 files changed, 14 insertions(+), 1 deletion(-)
------------------------------------------------------------------------
r67944 | usa | 2021-06-24 00:47:43 +0900 (Thu, 24 Jun 2021) | 30 lines

merge revision(s) 17aeff3e77e6fe0d37a9943dd93bcb16c4bb9f66,1616dcb16ef34ebf4ffc2167292f9a779f3e121e,1616dcb16ef34ebf4ffc2167292f9a779f3e121e:

	make-snapshot: get rid of circular dependency

	git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@66865 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
	---
	 tool/make-snapshot | 5 ++---
	 1 file changed, 2 insertions(+), 3 deletions(-)

	make-snapshot: try downloading Unicode files

	[Bug #15593]

	git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@67038 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
	---
	 tool/make-snapshot | 7 +------
	 1 file changed, 1 insertion(+), 6 deletions(-)

	make-snapshot: try downloading Unicode files

	[Bug #15593]

	git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@67038 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
	---
	 tool/make-snapshot | 7 +------
	 1 file changed, 1 insertion(+), 6 deletions(-)

	these patches are not for security issue, but are needed to resolv a
	packaging problem.

------------------------------------------------------------------------
r67943 | usa | 2021-05-10 12:24:37 +0900 (Mon, 10 May 2021) | 1 line

fix previous commit
------------------------------------------------------------------------
r67942 | usa | 2021-05-10 01:11:52 +0900 (Mon, 10 May 2021) | 5 lines

fix macos build

note that this is not a security fix, but recognized as critical build problem.
[Backport #17777]

------------------------------------------------------------------------
r67940 | usa | 2021-04-05 20:48:23 +0900 (Mon, 05 Apr 2021) | 2 lines

REXML 3.1.9.1

------------------------------------------------------------------------
r67936 | usa | 2021-04-05 10:22:11 +0900 (Mon, 05 Apr 2021) | 11 lines

merge revision(s) 254bed302752a401b5fcc3b6c65a9c93711d91d6,fad3023e94c45e7f03478732f7641b6f39ba9d12,3156fb0f2c3ebf8229f392c8502c08fe165ab181: [Backport #17218]

	Renamed `nurat_sub` compliant with `rb_rational_plus`


	Fix ArithmeticSequence#last and ArithmeticSequence#each for
	non-integer sequences (#3870)

	[Bug #17218]
	[ruby-core:100312]

------------------------------------------------------------------------
r67935 | usa | 2021-04-05 09:19:04 +0900 (Mon, 05 Apr 2021) | 33 lines

merge revision(s) ebb96fa8808317ad53a4977bff26cf755d68077e: [Backport #17321]

	Fix singleton class cloning

	Before this commit, `clone` gave different results depending on whether the original object
	had an attached singleton class or not.

	Consider the following setup:
	```
	class Foo; end
	Foo.singleton_class.define_method(:foo) {}

	obj = Foo.new

	obj.singleton_class if $call_singleton

	clone = obj.clone
	```

	When `$call_singleton = false`, neither `obj.singleton_class.singleton_class` nor
	`clone.singleton_class.singleton_class` own any methods.

	However, when `$call_singleton = true`, `clone.singleton_class.singleton_class` would own a copy of
	`foo` from `Foo.singleton_class`, even though `obj.singleton_class.singleton_class` does not.

	The latter case is unexpected and results in a visibly different clone, depending on if the original object
	had an attached class or not.

	Co-authored-by: Ufuk Kayserilioglu <ufuk.kayserilioglu@shopify.com>
	---
	 class.c                 | 31 ++++++++++++++++++++++---------
	 test/ruby/test_class.rb | 47 +++++++++++++++++++++++++++++++++++++++++++++++
	 2 files changed, 69 insertions(+), 9 deletions(-)
------------------------------------------------------------------------
r67934 | usa | 2021-04-05 09:17:28 +0900 (Mon, 05 Apr 2021) | 16 lines

merge revision(s) 276f6a225d18561cbe5282b798cb4e416c66079f,95bef7b69a6fb42687a6200b338060be307259f5: [Backport #17352]

	Don't double fractional seconds when passing timezone object to Time.new

	I found that fractional seconds were doubled when using the timezone
	feature of Time in Sequel's named_timezones extension (which uses
	TZInfo for the timezone object), and traced the problem to this code.

	There is no subsecx being modified in the utc_to_local call below
	this, and I'm not sure why you would want to add in the fractional
	seconds unless you assumed the timezone conversion would drop the
	existing fractional seconds (TZInfo doesn't drop fractional seconds).


	Subsecond of Time::tm should be 0

------------------------------------------------------------------------
r67933 | usa | 2021-04-05 09:12:27 +0900 (Mon, 05 Apr 2021) | 27 lines

merge revision(s) c60aaed1856b2b6f90de0992c34771830019e021: [Backport #17130]

	Fix Method#super_method for aliased methods

	Previously, Method#super_method looked at the called_id to
	determine the method id to use, but that isn't correct for
	aliased methods, because the super target depends on the
	original method id, not the called_id.

	Additionally, aliases can reference methods defined in other
	classes and modules, and super lookup needs to start in the
	super of the defined class in such cases.

	This adds tests for Method#super_method for both types of
	aliases, one that uses VM_METHOD_TYPE_ALIAS and another that
	does not. Both check that the results for calling super
	methods return the expected values.

	To find the defined class for alias methods, add an rb_ prefix
	to find_defined_class_by_owner in vm_insnhelper.c and make it
	non-static, so that it can be called from method_super_method
	in proc.c.

	This bug was original discovered while researching [Bug #11189].

	Fixes [Bug #17130]

------------------------------------------------------------------------
r67932 | usa | 2021-04-05 09:05:42 +0900 (Mon, 05 Apr 2021) | 13 lines

merge revision(s) abe2e7de4d1f2d5861d7c9ab9c7e778f2ee1dcd2: [Backport #16774]

	Don't require sub-word atomics

	On some architectures (like RISC-V) sub-word atomics are only available
	when linking against -latomic, but the configure script doesn't do that,
	causing the atomic checks to fail and the resulting ruby binary is
	non-functional.  Ruby does not use sub-word atomic operations, rb_atomic_t
	is defined to unsigned int, so use unsigned int when checking for atomic
	operations.
	---
	 configure.ac | 4 ++--
	 1 file changed, 2 insertions(+), 2 deletions(-)
------------------------------------------------------------------------
r67931 | usa | 2021-04-05 09:04:41 +0900 (Mon, 05 Apr 2021) | 39 lines

merge revision(s) c15cddd1d515c5bd8dfe8fb2725e3f723aec63b8: [Backport #16787]

	Allow Dir.home to work for non-login procs when $HOME not set

	Allow the 'Dir.home' method to reliably locate the user's home directory when
	all three of the following are true at the same time:

	1. Ruby is running on a Unix-like OS
	2. The $HOME environment variable is not set
	3. The process is not a descendant of login(1) (or a work-alike)

	The prior behavior was that the lookup could only work for login-descended
	processes.

	This is accomplished by looking up the user's record in the password database
	by uid (getpwuid_r(3)) as a fallback to the lookup by name (getpwname_r(3))
	which is still attempted first (based on the name, if any, returned by
	getlogin_r(3)).

	If getlogin_r(3), getpwnam_r(3), and/or getpwuid_r(3) is not available at
	compile time, will fallback on using their respective non-*_r() variants:
	getlogin(3), getpwnam(3), and/or getpwuid(3).

	The rationale for attempting to do the lookup by name prior to doing it by uid
	is to accommodate the possibility of multiple login names (each with its own
	record in the password database, so each with a potentially different home
	directory) being mapped to the same uid (as is explicitly allowed for by
	POSIX; see getlogin(3posix)).

	Preserves the existing behavior for login-descended processes, and adds the
	new capability of having Dir.home being able to find the user's home directory
	for non-login-descended processes.

	Fixes [Bug #16787]

	Related discussion:
	https://bugs.ruby-lang.org/issues/16787
	https://github.com/ruby/ruby/pull/3034

------------------------------------------------------------------------
r67930 | usa | 2021-04-05 08:50:56 +0900 (Mon, 05 Apr 2021) | 4 lines

merge revision(s) 2a83650b0fd25719fb6c03bfec7bd895734d3ceb: [Backport #15852]

	Destroy VM-wise locks before freeing [Bug #15852]

------------------------------------------------------------------------
r67929 | usa | 2021-04-05 08:47:58 +0900 (Mon, 05 Apr 2021) | 14 lines

merge revision(s) 9682db065158da5fa4ec8a3bc267da45b429b92c: [Backport #17658]

	Remove sender/message_id pair after response received in resolv

	Once a response for a given DNS request has been received (which
	requires a matching message id), the [sender, message_id] pair
	should be removed from the list of valid senders.  This makes it
	so duplicate responses from the same sender are ignored.

	Fixes [Bug #12838]
	---
	 lib/resolv.rb           |   2 +-
	 test/resolv/test_dns.rb | 113 ++++++++++++++++++++++++++++++++++++++++++++++++
	 2 files changed, 114 insertions(+), 1 deletion(-)
------------------------------------------------------------------------
r67928 | usa | 2021-04-05 08:45:25 +0900 (Mon, 05 Apr 2021) | 14 lines

merge revision(s) f4be7a510eebbe6507ba41d138d7d252f4a68e90,9441f3f97087a4325ee80911859d37da41fa5050: [Backport #17504]

	Added tests for Time#getlocal with UTC offset

	---
	 test/ruby/test_time.rb | 8 ++++++++
	 1 file changed, 8 insertions(+)

	Allow UTC offset without colons per ISO-8601 [Bug #17504]

	---
	 test/ruby/test_time.rb |  6 ++++++
	 time.c                 | 44 +++++++++++++++++++++++++++++---------------
	 2 files changed, 35 insertions(+), 15 deletions(-)
------------------------------------------------------------------------
r67927 | usa | 2021-04-05 08:43:53 +0900 (Mon, 05 Apr 2021) | 4 lines

merge revision(s) 0036648a420f945624898568bb82bc5f83195d12: [Backport #17533]

	Capture to reserved name variables if already defined [Bug #17533]

------------------------------------------------------------------------
r67926 | usa | 2021-04-05 08:40:30 +0900 (Mon, 05 Apr 2021) | 8 lines

merge revision(s) a55eb9a2af7950d180d9d31ffde2bce66710f44f: [Backport #17572]

	Make reciprocal properly of non-integral rational [Bug #17572]

	---
	 rational.c                 | 2 +-
	 test/ruby/test_rational.rb | 7 +++++++
	 2 files changed, 8 insertions(+), 1 deletion(-)
------------------------------------------------------------------------
r67925 | usa | 2021-04-05 08:36:51 +0900 (Mon, 05 Apr 2021) | 7 lines

merge revision(s) ce7a053475cbebfb2f3e5ed6614e0ba631541917,1cbb1f1720127b0b34b38c77e27b51b182008699: [Backport #16695]

    Adjust sp for `x = false; y = (return until x unless x)` [Bug #16695]

    test/ruby/test_syntax.rb: avoid "warning: assigned but unused
     variable"

------------------------------------------------------------------------
r67924 | usa | 2021-04-05 08:31:49 +0900 (Mon, 05 Apr 2021) | 43 lines

merge revision(s) 8b0dc77a621ded75f72486c33f55404ce73f00d7: [Backport #17275]

	configure.ac: Bump the size of sigaltstack

	The RubyVM uses C macro defines to feature detect whether
	`backtrace(2)` support is available, and if so it includes C level backtraces
	when the RubyVM itself crashes.

	But on my machine, C level backtraces from `vm_dump.c` didn't work when
	using a version of Ruby buillt on the machine, but worked fine when using a
	version of Ruby built on another machine and copied to my machine.

	The default autoconf test for backtraces uses a sigaltstack size that is
	too small, so the SIGSEGV signal handler itself causes a SIGSEGV).
	I noticed that signal.c uses a larger sigaltstack size:

	https://github.com/ruby/ruby/blob/v2_6_5/signal.c#L568

	The specific variables it looks at:

	- `HAVE_BACKTRACE`

	  this is a macro defined by autoconf because there is a line in the
	  configure script like `AC_CHECK_FUNCS(backtrace)` (see the autoconf
	  docs for more).

	- `BROKEN_BACKTRACE`

	  this comes from a custom program that Ruby's configure script runs to
	  attempt to figure out whether actually using backtrace(2) in a real
	  program works. You can see the autoconf program here.

	  <https://github.com/ruby/ruby/blob/v2_6_5/configure.ac#L2817-L2863>

	It uses sigaltstack and SA_ONSTACK to create a seperate stack for
	handling signals.

	The problem was: SIGSTKSZ (which comes from a system header!) was not
	suggesting a large enough stack size. When checking on an Ubuntu 16.04
	box, we found that SIGSTKSZ was 8192 and MINSIGSTKSZ was 2048.
	---
	 configure.ac | 4 ++--
	 1 file changed, 2 insertions(+), 2 deletions(-)
------------------------------------------------------------------------
r67923 | usa | 2021-04-05 08:30:49 +0900 (Mon, 05 Apr 2021) | 14 lines

merge revision(s) be9dbe1c3eb4bb4cab0bdc42a91ef425bb1eaddd: [Backport #15178]

	Fix pthread_setname_np arguments on NetBSD

	The previous attempt to fix this in
	b87df1bf243074edb2e6cc8a24bc00df81cebf3c reversed the argument
	order instead of just fixing the quote escaping.

	From Takahiro Kambe.

	Fixes [Bug #15178]
	---
	 configure.ac | 4 ++--
	 1 file changed, 2 insertions(+), 2 deletions(-)
------------------------------------------------------------------------
r67922 | usa | 2021-04-05 08:28:16 +0900 (Mon, 05 Apr 2021) | 4 lines

backported a part of a569bc09e25a2ba813d0bec1228d9ff65330a3db

picked up by Jeremy Evans [Backport #17305]

------------------------------------------------------------------------
r67921 | usa | 2021-04-05 08:07:45 +0900 (Mon, 05 Apr 2021) | 4 lines

merge revision(s) 8e189df32cacef4b21e357a590d349330532baf5: [Backport #17013]

	Add operator info to OP_ASGN2 of RubyVM::AbstractSyntaxTree.

------------------------------------------------------------------------
r67920 | usa | 2021-04-05 08:03:14 +0900 (Mon, 05 Apr 2021) | 35 lines

merge revision(s) de9d6a7a8cb0929e0b4cf0a3120971c7b8ee8927,da5bd0047d6c961105da210c69d4c88421324b70,ce91c5615ca96f357519043181fb5b76b57ee223,c53aebb1d2eb5afbb18f9b3db9f9c956a463a4e1,d05f04d27dd86c67e4a8dfff4392f806cf577bdf: [Backport #16931]

	Split test_defined

	---
	 test/ruby/test_defined.rb | 18 ++++++++++++++++--
	 1 file changed, 16 insertions(+), 2 deletions(-)

	Test for [Bug #16669]

	---
	 test/ruby/test_defined.rb | 8 ++++++++
	 1 file changed, 8 insertions(+)

	Fix typo in test name

	---
	 test/ruby/test_defined.rb | 2 +-
	 1 file changed, 1 insertion(+), 1 deletion(-)

	Split test_defined_method

	---
	 test/ruby/test_defined.rb | 23 ++++++++++++++++++++++-
	 1 file changed, 22 insertions(+), 1 deletion(-)

	Fixed `defined?` against protected method call

	Protected methods are restricted to be called according to the
	class/module in where it is defined, not the actual receiver's
	class.  [Bug #16931]
	---
	 test/ruby/test_defined.rb | 1 +
	 vm_insnhelper.c           | 2 +-
	 2 files changed, 2 insertions(+), 1 deletion(-)
------------------------------------------------------------------------
r67919 | usa | 2021-04-05 07:58:46 +0900 (Mon, 05 Apr 2021) | 44 lines

merge revision(s) a0bc3f2a1c2c98f225612101cb4e1ea1a6813546,75a0447c15a7ab017bd4240c2a9cc69b134b80b9,f1699314147bad2cf5550cc582693424fdbc2510: [Backport #16846]

	Suppress C4267 "possible loss of data" warnings

	---
	 ext/win32ole/win32ole.c | 2 +-
	 1 file changed, 1 insertion(+), 1 deletion(-)

	Suppress C4267 "possible loss of data" warnings

	Just cast down explicitly.
	---
	 ext/win32ole/win32ole.c | 2 +-
	 1 file changed, 1 insertion(+), 1 deletion(-)

	win32ole: separate global variable declarations and definitions

	https://gcc.gnu.org/gcc-10/changes.html#c

	> * GCC now defaults to `-fno-common`.  As a result, global
	>   variable accesses are more efficient on various targets.  In
	>   C, global variables with multiple tentative definitions now
	>   result in linker errors.  With `-fcommon` such definitions are
	>   silently merged during linking.
	---
	 ext/win32ole/win32ole.c           | 1 +
	 ext/win32ole/win32ole.h           | 4 ++--
	 ext/win32ole/win32ole_error.c     | 3 +++
	 ext/win32ole/win32ole_error.h     | 4 ++--
	 ext/win32ole/win32ole_method.c    | 2 ++
	 ext/win32ole/win32ole_method.h    | 2 +-
	 ext/win32ole/win32ole_record.c    | 2 ++
	 ext/win32ole/win32ole_record.h    | 2 +-
	 ext/win32ole/win32ole_type.c      | 2 ++
	 ext/win32ole/win32ole_type.h      | 2 +-
	 ext/win32ole/win32ole_typelib.c   | 2 ++
	 ext/win32ole/win32ole_typelib.h   | 2 +-
	 ext/win32ole/win32ole_variable.c  | 2 ++
	 ext/win32ole/win32ole_variable.h  | 2 +-
	 ext/win32ole/win32ole_variant.c   | 2 ++
	 ext/win32ole/win32ole_variant.h   | 2 +-
	 ext/win32ole/win32ole_variant_m.c | 2 ++
	 ext/win32ole/win32ole_variant_m.h | 2 +-
	 18 files changed, 29 insertions(+), 11 deletions(-)
------------------------------------------------------------------------
r67918 | usa | 2021-04-05 07:50:22 +0900 (Mon, 05 Apr 2021) | 15 lines

merge revision(s) 12391cdbe11f3fbeb3b04c30b944139e5bbd9ea6: [Backport #16834]

	merge revision(s) cbe4f75ef802f13d05f94e42274b65a062bd3666: [Backport
	 #16834]

		Fix rb_profile_frame_classpath to handle module singletons

		Right now `SomeClass.method` is properly named, but `SomeModule.method`
		is displayed as `#<Module:0x000055eb5d95adc8>.method` which makes
		profiling annoying.
	---
	 test/-ext-/debug/test_profile_frames.rb | 40 ++++++++++++++++++++++++++++-----
	 version.h                               |  2 +-
	 vm_backtrace.c                          |  2 +-
	 3 files changed, 36 insertions(+), 8 deletions(-)
------------------------------------------------------------------------
r67917 | usa | 2021-04-05 07:48:27 +0900 (Mon, 05 Apr 2021) | 4 lines

merge revision(s) 08529a61153e5c40f57a65272211357511d6e6db: [Backport #16798]

	Compare environment variable names in those manor [Bug #16798]

------------------------------------------------------------------------
r67916 | usa | 2021-04-05 07:44:23 +0900 (Mon, 05 Apr 2021) | 8 lines

merge revision(s) 2f1895fa: [Backport #16767]

	Fixed formatted substring expansion [Bug #16767]

	---
	 strftime.c             | 2 ++
	 test/ruby/test_time.rb | 7 +++++++
	 2 files changed, 9 insertions(+)
------------------------------------------------------------------------
r67915 | usa | 2021-04-05 07:41:01 +0900 (Mon, 05 Apr 2021) | 4 lines

merge revision(s) 2f1895fa15386fb3cdc91c5604171290828b9da8: [Backport #16767]

	Fix source location of autoloaded constant [Bug #16764]

------------------------------------------------------------------------
r67914 | usa | 2021-04-05 07:27:35 +0900 (Mon, 05 Apr 2021) | 11 lines

merge revision(s) e04418bb16cd99b4a4402e7457d3bdc967284f98: [Backport #16830]

	[ruby/uri] Check if DN exists

	https://bugs.ruby-lang.org/issues/16830

	https://github.com/ruby/uri/commit/b4bf8c1217
	---
	 lib/uri/ldap.rb       | 1 +
	 test/uri/test_ldap.rb | 4 ++++
	 2 files changed, 5 insertions(+)
------------------------------------------------------------------------
r67913 | usa | 2021-04-05 07:24:29 +0900 (Mon, 05 Apr 2021) | 4 lines

merge revision(s) 579645d9: [Backport #17033]

Fixed infinite loop at error in printing cause [Bug #17033]

------------------------------------------------------------------------
r67912 | usa | 2021-03-02 21:00:29 +0900 (Tue, 02 Mar 2021) | 13 lines

merge revision(s) e39f7e64: [Backport #16760]

	parse.y: fix segv with Ripper#yydebug

	* parse.y (parser_token_value_print): in ripper, ID values are
	  wrapped in NODE_RIPPER at set_yylval_name(), so print the Symbol
	  wrapped together.

	git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@67305 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
	---
	 parse.y                    | 2 +-
	 test/ripper/test_ripper.rb | 9 +++++++++
	 2 files changed, 10 insertions(+), 1 deletion(-)
------------------------------------------------------------------------
r67911 | usa | 2021-03-02 20:44:02 +0900 (Tue, 02 Mar 2021) | 4 lines

merge revision(s) 99a9c3fe: [Backport #17024]

	Fixed yday and wday with timezone [Bug #17024]

------------------------------------------------------------------------
r67910 | usa | 2021-03-02 20:37:36 +0900 (Tue, 02 Mar 2021) | 9 lines

merge revision(s) 2ecfb88e: [Backport #16918]

	Correctly remove temporary directory if path yielded is mutated
	
	Another approach would be to freeze the string, but that could
	cause backwards compatibility issues.
	
	Fixes [Bug #16918]

------------------------------------------------------------------------
r67909 | usa | 2021-03-02 20:26:58 +0900 (Tue, 02 Mar 2021) | 15 lines

merge revision(s) 5a79d8e0,160511d8: [Backport #16925]

	Fix error raised by Net::HTTPResponse#inflater if the block raises

	* See https://bugs.ruby-lang.org/issues/13882#note-6
	---
	 lib/net/http/response.rb                    |  5 ++-
	 spec/ruby/library/net/http/http/get_spec.rb | 67 +++++++++++++++++++++++++++++
	 2 files changed, 70 insertions(+), 2 deletions(-)

	Quarantine specs which fail frequently with CHECK_LEAKS=true

	---
	 spec/ruby/library/net/http/http/get_spec.rb | 2 ++
	 1 file changed, 2 insertions(+)
------------------------------------------------------------------------
r67908 | usa | 2021-03-02 20:25:18 +0900 (Tue, 02 Mar 2021) | 11 lines

merge revision(s) 0ba27259: [Backport #16940]

	Fix crashes in the peephole optimizer on OpenBSD/sparc64

	These crashes are due to alignment issues, casting ADJUST to INSN
	and then accessing after the end of the ADJUST.  These patches
	come from Stefan Sperling <stsp@apache.org>, who reported the
	issue.
	---
	 compile.c | 5 +++--
	 1 file changed, 3 insertions(+), 2 deletions(-)
------------------------------------------------------------------------
r67907 | usa | 2021-03-02 20:23:42 +0900 (Tue, 02 Mar 2021) | 13 lines

merge revision(s) a19228f8: [Backport #16979]

	brace the fact that lchmod(2) can EOPNOTSUPP

	Musl libc has this function as a tiny wrapper of fchmodat(3posix).  On
	the other hand Linux kernel does not support changing modes of a symlink.
	The operation always fails with EOPNOTSUPP.  This fchmodat behaviour is
	defined in POSIX.  We have to take care of such exceptions.
	---
	 lib/fileutils.rb               |  3 ++-
	 test/pathname/test_pathname.rb |  2 +-
	 test/ruby/test_notimp.rb       | 19 ++++++++++++-------
	 3 files changed, 15 insertions(+), 9 deletions(-)
------------------------------------------------------------------------
r67906 | usa | 2021-03-02 20:21:10 +0900 (Tue, 02 Mar 2021) | 7 lines

merge revision(s) 263b9413: [Backport #16981]

	[ripper] fix mismatched indentations warning [Bug #16981]
	
	The scanner location has to be set from lex.ptok before it is
	flushed by dispatching the scanner event.

------------------------------------------------------------------------
r67905 | usa | 2021-03-01 22:23:20 +0900 (Mon, 01 Mar 2021) | 24 lines

merge revision(s) e9bb30d4,a064e467,4d753461: [Backport #16998]

	Expect no conflict in the parser

	---
	 parse.y | 1 +
	 1 file changed, 1 insertion(+)

	Support Bison 3

	---
	 common.mk           |  1 +
	 parse.y             |  2 +-
	 tool/pure_parser.rb | 15 +++++++++++++++
	 3 files changed, 17 insertions(+), 1 deletion(-)
	 create mode 100755 tool/pure_parser.rb

	Refine error message

	Highlight failed command and suggest installing the command.
	[Bug #16042]
	---
	 tool/pure_parser.rb | 7 ++++++-
	 1 file changed, 6 insertions(+), 1 deletion(-)
------------------------------------------------------------------------
r67904 | usa | 2021-03-01 00:06:26 +0900 (Mon, 01 Mar 2021) | 13 lines

merge revision(s) ac2106ac,cf90df22: [Backport #16813]

	[DOC] Fixed explanation for Method#>> [Bug #16813] [ci skip]

	---
	 proc.c | 4 ++--
	 1 file changed, 2 insertions(+), 2 deletions(-)

	[DOC] Separated Method#[] from Method#call [Bug #16813] [ci skip]

	---
	 proc.c | 14 +++++++++++++-
	 1 file changed, 13 insertions(+), 1 deletion(-)
------------------------------------------------------------------------
r67903 | usa | 2021-03-01 00:04:13 +0900 (Mon, 01 Mar 2021) | 6 lines

merge revision(s) 01b3a380: [Backport #11143][Backport #15932]

	Fix wrong "void value expression" error

	* parse.y (value_expr_check): if either of then or else statements is not a void value expression, the whole if is not also a void value expression. [Bug #15932]

------------------------------------------------------------------------
r67902 | usa | 2021-02-28 23:53:21 +0900 (Sun, 28 Feb 2021) | 14 lines

merge revision(s) e02bd0e7: [Backport #15608]

	Don't display singleton class in Method#inspect unless method defined there
	
	Previously, if an object has a singleton class, and you call
	Object#method on the object, the resulting string would include
	the object's singleton class, even though the method was not
	defined in the singleton class.
	
	Change this so the we only show the singleton class if the method
	is defined in the singleton class.
	
	Fixes [Bug #15608]

------------------------------------------------------------------------
r67901 | usa | 2021-02-28 23:44:22 +0900 (Sun, 28 Feb 2021) | 7 lines

merge revision(s) 8b6e2685: [Backport #16649]

	Fixed symbol misused as ID
	
	rb_funcallv_public and rb_respond_to require an ID, not a
	Symbol. [Bug #16649]

------------------------------------------------------------------------
r67900 | usa | 2021-02-28 23:37:37 +0900 (Sun, 28 Feb 2021) | 8 lines

merge revision(s) 3c93ed59: [Backport #16514]

	Update documentation for Array/Hash Argument section of methods.rdoc

	[Bug #16514]
	---
	 doc/syntax/methods.rdoc | 15 +++++++++++++--
	 1 file changed, 13 insertions(+), 2 deletions(-)
------------------------------------------------------------------------
r67899 | usa | 2021-02-28 23:31:52 +0900 (Sun, 28 Feb 2021) | 4 lines

	* vm_args.c (setup_parameters_complex): no longer need to warn splat
	  hash in a pattern.
	[Backport #16632][Bacport #16950]

------------------------------------------------------------------------
r67898 | usa | 2021-02-28 23:16:37 +0900 (Sun, 28 Feb 2021) | 24 lines

merge revision(s) f9e5c74c: [Backport #15980]

	compile.c: stop wrong peephole optimization when covearge is enabled

	jump-jump optimization ignores the event flags of the jump instruction
	being skipped, which leads to overlook of line events.

	This changeset stops the wrong optimization when coverage measurement is
	neabled and when the jump instruction has any event flag.

	Note that this issue is not only for coverage but also for TracePoint,
	and this change does not fix TracePoint.
	However, fixing it fundamentally is tough (which requires revamp of
	the compiler).  This issue is critical in terms of coverage measurement,
	but minor for TracePoint (ko1 said), so we here choose a stopgap
	measurement.

	[Bug #15980] [Bug #16397]

	Note for backporters: this changeset can be viewed by `git diff -w`.
	---
	 compile.c                      | 232 +++++++++++++++++++++++------------------
	 test/coverage/test_coverage.rb |  12 +++
	 2 files changed, 141 insertions(+), 103 deletions(-)
------------------------------------------------------------------------
r67897 | usa | 2021-02-28 23:14:25 +0900 (Sun, 28 Feb 2021) | 1 line

merge revision(s) a7b9f085ff952fcb18f82de39b3bf9ab7e5ba3e7,9165fcdfa309052a2adc3c6100ab24204de6c2d1,e42d9d8df87f58b9bfa65647249822df25851375: [Backport #16401]
------------------------------------------------------------------------
r67896 | usa | 2021-02-28 23:01:55 +0900 (Sun, 28 Feb 2021) | 8 lines

merge revision(s) f72dc407: [Backport #16297]

	Prohibit calling undefined allocator [Bug #16297]

	---
	 object.c                | 31 +++++++++++++++++++++++++++++--
	 test/ruby/test_class.rb |  8 ++++++++
	 2 files changed, 37 insertions(+), 2 deletions(-)
------------------------------------------------------------------------
r67895 | usa | 2021-02-28 22:56:46 +0900 (Sun, 28 Feb 2021) | 14 lines

merge revision(s) 74b19e330adbdae2d8e53b58f1a2a7b725e69c8d: [Backport #16268]

	fix imemo entry description.

	* ext/objspace/objspace.c (count_imemo_objects): `imemo_type_ids`
	  should be match with `enum imemo_type` in internal.h and this
	  patch fix mismatch.


	git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@67058 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
	---
	 ext/objspace/objspace.c        | 5 +++--
	 test/objspace/test_objspace.rb | 2 ++
	 2 files changed, 5 insertions(+), 2 deletions(-)
------------------------------------------------------------------------
r67894 | usa | 2021-02-28 22:47:29 +0900 (Sun, 28 Feb 2021) | 10 lines

merge revision(s) f364564e66d1db1de8e80d669287386595c8bc46: [Backport #16269]

	bignum.c (estimate_initial_sqrt): prevent integer overflow

	`Integer.sqrt(0xffff_ffff_ffff_ffff ** 2)` caused assertion failure
	because of integer overflow.  [ruby-core:95453] [Bug #16269]
	---
	 bignum.c                  | 10 +++++++++-
	 test/ruby/test_integer.rb |  3 +++
	 2 files changed, 12 insertions(+), 1 deletion(-)
------------------------------------------------------------------------
r67892 | usa | 2021-01-31 18:56:27 +0900 (Sun, 31 Jan 2021) | 4 lines

Backport webrick patch for CVE-2020-25613

[Backport #17201]

------------------------------------------------------------------------
r67891 | usa | 2021-01-31 18:52:51 +0900 (Sun, 31 Jan 2021) | 7 lines

merge revision(s) 7cb8904a12c850ee30dcd67817fa2f9dc3fee813: [Backport #17567]

	Extract correct processor name for ARM64 Macs

	---
	 tool/m4/ruby_universal_arch.m4 | 3 +++
	 1 file changed, 3 insertions(+)
------------------------------------------------------------------------
r67890 | usa | 2021-01-31 18:45:23 +0900 (Sun, 31 Jan 2021) | 4 lines

change the order of of SERVER_CERT and CA_CERT for OpenSSL 1.1.1

[backport #17501]

------------------------------------------------------------------------
r67888 | usa | 2020-12-09 22:53:56 +0900 (Wed, 09 Dec 2020) | 2 lines

[Backport #17381] replace the old certs in RubyGems

------------------------------------------------------------------------
r67886 | usa | 2020-10-27 23:25:35 +0900 (Tue, 27 Oct 2020) | 31 lines

merge revision(s): 07786ed

	test/net/http/test_https.rb: Stop the error due to openssl 1.1.1h

	On some environments that uses OpenSSL 1.1.1h, the two tests now fail.

	http://rubyci.s3.amazonaws.com/android29-x86_64/ruby-master/log/20200924T062352Z.fail.html.gz
	https://github.com/ruby/ruby/runs/1159288773?check_suite_focus=true

	```
	  1) Failure:
	TestNetHTTPS#test_get [/data/data/com.termux/files/home/cb/tmp/build/20200924T062352Z/ruby/test/net/http/test_https.rb:47]:
	<"0\x82\x03\xED0\x82\x02\xD5\xA0\x03..."> expected but was
	<"0\x82\x03\xE30\x82\x02\xCB\xA0\x03...">.
	```

	Not sure why, but verify_callback now seems to receive only SERVER_CERT
	but not CA_CERT.
	It would be good to investigate the issue furthermore, but tentatively,
	I want to stop the failures.

	test/net/http/test_https.rb: the order of verify_callback seems to
	 vary

	... depending upon the environment.

	test/net/http/test_https.rb: The test logic was buggy

	The expected certs must be `[CA_CERT, SERVER_CERT]` before 1.1.1g and
	`[SERVER_CERT]` after 1.1.1h.

------------------------------------------------------------------------
r67884 | usa | 2020-06-14 00:52:54 +0900 (Sun, 14 Jun 2020) | 10 lines

merge revision(s) 7e289cdf3fed588b2d5a6973e29f9ff95cb8d76c: [Backport #16949]

	[ruby/psych] Fixing compatibility with libyaml 0.2.5

	The main issue is that commas aren't allowed in local tags.  libyaml
	was updated to follow the spec, and our tests were out of date.

	See: https://github.com/yaml/libyaml/issues/196

	https://github.com/ruby/psych/commit/3f5e520fd3
------------------------------------------------------------------------
r67883 | nagachika | 2020-03-31 22:46:22 +0900 (Tue, 31 Mar 2020) | 1 line

bump teeny version to 2.6.7.
------------------------------------------------------------------------
r67875 | nagachika | 2020-03-31 20:21:22 +0900 (Tue, 31 Mar 2020) | 10 lines

merge revision: 61b7f86248bd121be2e83768be71ef289e8e5b90

ext/socket/init.c: do not return uninitialized buffer

Resize string buffer only if some data is received in
BasicSocket#read_nonblock and some methods.

Co-Authored-By: Samuel Williams <samuel.williams@oriontransfer.co.nz>


------------------------------------------------------------------------
r67859 | nagachika | 2020-03-30 13:47:36 +0900 (Mon, 30 Mar 2020) | 6 lines

merge revision(s) 4adb2d655dcd54b28366b4d17e86b21e2b622cd1: [Backport #16738]

	Make RbConfig::CONFIG values mutable [Bug #16738]

	As `RbConfig.expand` modifies the argument and involved `CONFIG`
	values, its values should be mutable.
------------------------------------------------------------------------
r67858 | nagachika | 2020-03-30 11:22:51 +0900 (Mon, 30 Mar 2020) | 13 lines

merge revision(s) 4c019f5a626523e99e2827ed917802e3097c380d,c3584dfacce4d0f2058d8403de6fdce4fd4d686b: [Backport #16676]

	check ar_table after `#hash` call

	ar_table can be converted to st_table just after `ar_do_hash()`
	function which calls `#hash` method. We need to check
	the representation to detect this mutation.
	[Bug #16676]

	check ar_table first.

	RHASH_AR_TABLE_SIZE() has assertion that it is a ar_talbe.
	The last commit breaks this assumption so check ar_table first.
------------------------------------------------------------------------
r67857 | nagachika | 2020-03-20 23:31:10 +0900 (Fri, 20 Mar 2020) | 20 lines

merge revision(s) c6633f21a49c90ab7c37076d79c286bbf3438c1f:

	Update some syslog tests to absurb the format change of FreeBSD
	 syslog

	FreeBSD

	```
	$ ruby -rsyslog -e 'Syslog.open("rubyspec", Syslog::LOG_PERROR) {|s| s.log(Syslog::LOG_ALERT, "Hello") }'
	rubyspec 78462 - - Hello
	```

	Linux

	```
	$ ruby -rsyslog -e 'Syslog.open("rubyspec", Syslog::LOG_PERROR) {|s| s.log(Syslog::LOG_ALERT, "Hello") }'
	rubyspec: Hello
	```

	https://github.com/freebsd/freebsd/commit/591ef7c8076109cff3c41f9bb50da996a34121e9
------------------------------------------------------------------------
r67856 | nagachika | 2020-03-20 17:12:05 +0900 (Fri, 20 Mar 2020) | 2 lines

backport 80b5a0ff2a7709367178f29d4ebe1c54122b1c27 partially as a securify fix for CVE-2020-10663.
The patch was provided by Jeremy Evans.
------------------------------------------------------------------------
r67855 | nagachika | 2020-03-20 17:07:34 +0900 (Fri, 20 Mar 2020) | 1 line

Add svn:ignore properties.
------------------------------------------------------------------------
r67854 | nagachika | 2020-03-20 16:01:35 +0900 (Fri, 20 Mar 2020) | 7 lines

merge revision(s) 87ad5ea729735ff6b8f1ac0bb3aad2aedd6f716e,9745e90197f129708986803e8913fb151862478a:

	Skip jit_test on some new RubyCI envs for now


	Propagate JIT skip to all tests

------------------------------------------------------------------------
r67853 | nagachika | 2020-03-20 15:47:10 +0900 (Fri, 20 Mar 2020) | 18 lines

merge revision(s) b3ea0980db87404c2b7763a3fdbe898c3812843d,5fbb4555b427909aed4fe2376c4c583849c1d51c,6477d98e49dbe04deb03caee1a58a34c3b79d4e4,16415fefc14e1419d5587288fb6a69fe5ccf94ba:

	Check MJIT support in one place

	to fix test failure on trunk-no-mjit
	https://gist.github.com/ko1/32ab982ffd7555988818773c08f97123

	Prefer using MJIT_CC for JIT support check

	because Solaris might have CC=cc and we'd like to check full path
	MJIT_CC=/opt/developerstudio12.5/bin/cc instead.

	test/lib/jit_support.rb: Update the regexp for icc

	MJIT_CC is always an absolute path.

	test/lib/jit_support.rb: The path to icc was changed

------------------------------------------------------------------------
r67852 | nagachika | 2020-03-20 15:43:59 +0900 (Fri, 20 Mar 2020) | 14 lines

merge revision(s) 66590,66615,66781:

	jit_support.rb: skip testing MJIT on oracle developer studio

	jit_support.rb: deal with -std=c99 flag

	CC is changed from "icc" to "icc -std=c99" by r66605.

	https://rubyci.org/logs/rubyci.s3.amazonaws.com/icc-x64/ruby-trunk/log/20181228T130003Z.fail.html.gz

	test_jit.rb: change format of test error output

	to avoid breaking redmine quote like
	https://bugs.ruby-lang.org/issues/15522
------------------------------------------------------------------------
r67851 | nagachika | 2020-03-20 15:36:58 +0900 (Fri, 20 Mar 2020) | 1 line

Add svn:ignore properties.
------------------------------------------------------------------------
r67850 | nagachika | 2020-03-20 15:12:36 +0900 (Fri, 20 Mar 2020) | 9 lines

merge revision(s) adcf0316d1ecedae2a9157ad941550e0c0fb510b: [Backport #16664]

	Prevent unloading methods used in root_fiber while calling another
	 Fiber (#2939)

	Fixing SEGVs like:
	http://ci.rvm.jp/results/trunk-mjit-wait@silicon-docker/2744905
	http://ci.rvm.jp/results/trunk-mjit-wait@silicon-docker/2744420
	http://ci.rvm.jp/results/trunk-mjit-wait@silicon-docker/2741400
------------------------------------------------------------------------
r67849 | nagachika | 2020-03-20 12:09:27 +0900 (Fri, 20 Mar 2020) | 4 lines

merge revision(s) a8dcab723316997d9e01c89d6df969edce75bdca:

	Avoid infinite loop on --jit-wait

------------------------------------------------------------------------
r67848 | nagachika | 2020-03-20 11:54:46 +0900 (Fri, 20 Mar 2020) | 6 lines

merge revision(s) 67325:

	Show retry's stdout as well

	because stderr did not have sufficient information
	https://ci.appveyor.com/project/ruby/ruby/builds/23242505/job/dirugxujk70nnhp6
------------------------------------------------------------------------
r67847 | nagachika | 2020-03-20 11:45:26 +0900 (Fri, 20 Mar 2020) | 7 lines

merge revision(s) 67322,67323:

	Insert --jit-verbose=2 logs for mswin debugging

	Explain why cl.exe needs --jit-verbose=2 [ci skip]

	I forgot to explain it in the previous commit
------------------------------------------------------------------------
r67846 | nagachika | 2020-03-19 21:55:36 +0900 (Thu, 19 Mar 2020) | 43 lines

merge revision(s) c14b67b2a8cf60b37cfb221d8b97c6eb91833522: [Backport #16139]

	Check frozen flag on MJIT setinstancevariable

	It does not seem to have a significant performance impact, hopefully?

	```
	$ benchmark-driver -v benchmark.yml --rbenv 'before --jit;after --jit' --repeat-count=24 --output=all
	before --jit: ruby 2.7.0dev (2019-09-03T21:02:24Z master 77596fb7a9) +JIT [x86_64-linux]
	after --jit: ruby 2.7.0dev (2019-09-04T01:54:44Z master 7363e22d79) +JIT [x86_64-linux]
	Calculating -------------------------------------
	                                 before --jit           after --jit
	Optcarrot Lan_Master.nes    48.44054595799523     71.67010255902900 fps
	                            71.32797692837639     71.97846863769546
	                            72.51921961607691     78.87360980544105
	                            73.54082925611047     79.80408132389941
	                            74.03503843709451     79.85739528572826
	                            74.04863857926493     79.89850834901381
	                            75.30266276129467     80.34607233076015
	                            75.69063990896244     80.88474397425360
	                            75.70458132587405     81.09234267781642
	                            77.39842764662852     82.13766823612643
	                            77.76922944068329     82.20398304840373
	                            81.17984044023393     82.26722630628272
	                            82.85235776076533     82.71375902781254
	                            83.04906099135320     82.75893420702198
	                            83.10214168136230     82.79668965325972
	                            83.71456007558125     82.85131667916379
	                            84.06658306760725     82.95676565411722
	                            84.25690684305728     83.19972846225775
	                            84.27938663923503     83.28510503845854
	                            84.45467716218090     83.41003730434703
	                            84.51563186125925     83.67773614721280
	                            84.56139892968321     84.02082201151110
	                            84.69819452180658     84.10495346787033
	                            84.78125989622576     84.47867803506055
	```

	Note for backporter:
	test_jit's `success_count` would be 1 in Ruby 2.6, since 2.7 introduced
	"MJIT recompile" on JIT-ed code cancel.

	[Bug #16139]
------------------------------------------------------------------------
r67845 | nagachika | 2020-03-18 20:59:35 +0900 (Wed, 18 Mar 2020) | 4 lines

merge revision(s) ee1334189b95cb5e7785e3415b332a7a76879ac3:

	Fix uplevel

------------------------------------------------------------------------
r67844 | nagachika | 2020-03-18 20:24:21 +0900 (Wed, 18 Mar 2020) | 4 lines

merge revision(s) 8a6ba10f9dd456cf54de800203cf04bbe42271fb: [Backport #12392]

	Do not make disabled directories at installation  [Bug #12392]

------------------------------------------------------------------------
r67843 | nagachika | 2020-03-10 20:41:32 +0900 (Tue, 10 Mar 2020) | 1 line

r66845 introduced mixed declarations and code.
------------------------------------------------------------------------
r67842 | nagachika | 2020-03-08 10:48:27 +0900 (Sun, 08 Mar 2020) | 9 lines

merge revision(s) 86022167461dc90b70164e2bb23316959bbfd6ba,47a1872cd8b901b8aab6dedce7fa3807c97d290d: [Backport #16681]

	Switch to download libffi source package to github releases from
	 sourceware.org


	Use osuosl instead of GitHub releases

	  Because the package provided by GitHub releases is different from sourceware.
------------------------------------------------------------------------
r67841 | nagachika | 2020-03-07 19:03:51 +0900 (Sat, 07 Mar 2020) | 10 lines

merge revision(s) 77596fb7a91cc119b25ac9e19b3c8682709765b4: [Backport #16138]

	Do not turn on keyword_init for Struct subclass if keyword hash is
	 empty

	This was accidentally turned on because there was no checking for
	Qundef.

	Also, since only a single keyword is currently supported, simplify
	the rb_get_kwargs call.
------------------------------------------------------------------------
r67840 | nagachika | 2020-03-07 18:57:02 +0900 (Sat, 07 Mar 2020) | 5 lines

merge revision(s) c4794ed73ad348a61a7cfbe3da0a7eb49ba46eb9: [Backport #16641]

	Avoid jumping to a wrong destination

	when the next insn is already compiled by former branches.
------------------------------------------------------------------------
r67839 | nagachika | 2020-03-07 18:44:38 +0900 (Sat, 07 Mar 2020) | 6 lines

merge revision(s) 6e6844320de989cb88a154e2ac75066ccea1bba2: [Backport #16619]

	Fixed duplicated warning

	As `command_rhs` is always a "value expression", `command_asgn`
	does not need the same check.
------------------------------------------------------------------------
r67838 | nagachika | 2020-03-07 18:38:30 +0900 (Sat, 07 Mar 2020) | 8 lines

merge revision(s) 4f19666e8b144600e959e4673f79d63f98bd637d: [Backport #16508]

	`Regexp` in `MatchData` can be `nil`

	`String#sub` with a string pattern defers creating a `Regexp`
	until `MatchData#regexp` creates a `Regexp` from the matched
	string.  `Regexp#last_match(group_name)` accessed its content
	without creating the `Regexp` though.  [Bug #16508]
------------------------------------------------------------------------
r67837 | nagachika | 2020-02-15 18:12:47 +0900 (Sat, 15 Feb 2020) | 6 lines

merge revision(s) 95ab9cd8f453099d7649dc0e0eec55ea891340f5: [Backport #16624]

	Restart timer thread even after preparation failed

	If the timer thread is left stopped, memory crash or segfault can
	happen. [Bug #16624]
------------------------------------------------------------------------
r67836 | nagachika | 2019-12-18 22:41:48 +0900 (Wed, 18 Dec 2019) | 28 lines

merge revision(s) d6a2bce64a7fa1099e507e1d36b5f1533f42f60f,c687be4bc01c9ce52ea990945d9304d6fe59fe9b: [Backport #16159]

	time.c (find_time_t): fix round-to-zero bug

	`find_time_t` did not work correctly for year older than the Epoch
	because it used C's integer division (which rounds negative to zero).

	For example, `TIme.new(1933)` returned a wrong time whose year is 1922
	in Asia/Kuala_Lumpur because there is no 00:00:00 1st Jan. 1933 in the
	time zone.

	```
	$ TZ=Asia/Kuala_Lumpur ruby -e 'p Time.new(1933)'
	1932-12-31 00:00:00 +0700
	```

	This change fixes the issue by using `DIV` macro instead of `/`.
	Now `Time.new(1933)` returns a time in 1933.

	```
	$ TZ=Asia/Kuala_Lumpur ruby -e 'p Time.new(1933)'
	1933-01-01 00:20:00 +0720
	```

	[Bug #16159]

	Added a test for [Bug #16159]

------------------------------------------------------------------------
r67835 | nagachika | 2019-12-15 17:28:52 +0900 (Sun, 15 Dec 2019) | 5 lines

merge revision(s) ff41663403d3eb76d95f465cb94e14d2faaa04d1: [Backport #16354]

	Fix memory corruption in Enumerable#reverse_each [ruby-dev:50867]
	 [Bug #16354]

------------------------------------------------------------------------
r67834 | nagachika | 2019-12-15 17:12:17 +0900 (Sun, 15 Dec 2019) | 21 lines

merge revision(s) 203b7fa1ae8cc40d41c38d684f70b3fea7fae813,0131fab749fb76800de09e49a6abf910201c5b58,9c0cd5c569ba22bc68d1a77ad6580a275cd99639,c144d7215b3444fa36d28d540b60170a5b30743d: [Backport #16196]

	Guard static variable first

	* ext/openssl/ossl_asn1.c (Init_ossl_asn1): register the static
	  variable to grab an internal object, before creating the object.
	  otherwise the just-created object could get collected during the
	  global variable list allocation.  [Bug #16196]

	Slimed down test runtime by stressing openssl.so only [Bug #16196]


	Prefer rb_gc_register_mark_object

	* ext/openssl/ossl_asn1.c (Init_ossl_asn1): prefer
	  `rb_gc_register_mark_object`, which is better for constant
	  objects, over `rb_gc_register_address` for global/static
	  variables which can be re-assigned at runtime.  [Bug #16196]

	Skip very time consuming test [Bug #16196]

------------------------------------------------------------------------
r67833 | nagachika | 2019-12-15 16:20:58 +0900 (Sun, 15 Dec 2019) | 4 lines

merge revision(s) 463092b84da7933f307cc8747f948f68ef19f5fd: [Backport #16279]

	Update rake-12.3.3.

------------------------------------------------------------------------
r67832 | nagachika | 2019-12-15 16:14:45 +0900 (Sun, 15 Dec 2019) | 14 lines

merge revision(s) c9423b016cfeab852bc5a829e55e0a11f80b3ab7,0b1e26398e018116180bf41cb63887f77d5d1b82,78ee2c245331e353e218b8fac9ca722a2bcd8fea: [Backport #15968]

	marshal.c: check instance variable count

	* marshal.c (w_obj_each): ensure that no instance variable was
	  added while dumping other instance variables.  [Bug #15968]

	Hoisted out w_ivar_each


	marshal.c: check instance variable count

	* marshal.c (w_ivar_each): ensure that no instance variable was
	  removed while dumping other instance variables.  [Bug #15968]
------------------------------------------------------------------------
r67831 | nagachika | 2019-12-09 21:25:34 +0900 (Mon, 09 Dec 2019) | 5 lines

merge revision(s) 7d805e67f3275aef066d77aa9c32bef715c362ed: [Backport #15780]

	Avoid triggering autoload in Module#const_defined?(String)

	[Bug #15780]
------------------------------------------------------------------------
r67830 | nagachika | 2019-12-09 21:06:38 +0900 (Mon, 09 Dec 2019) | 16 lines

merge revision(s) e1b592b508c72a56ae012869d97fe1580ff87246,d10451f3fd51f577e704db770de48d05044eb45c: [Backport #15758]

	test_module.rb: fix a typo

	* test/ruby/test_module.rb (TestModule#test_nested_get): fix a
	  typo.  nested module's name is a qualified path.

	git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@67471 b2dd03c8-39d4-4d8f-98ff-823fe69b080e

	object.c: fix searching nested const paths

	* object.c (rb_mod_const_get, rb_mod_const_defined): nested const
	  paths should not search from toplevel constants.
	  [ruby-core:92202] [Bug #15758]

	git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@67472 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
------------------------------------------------------------------------
r67828 | nagachika | 2019-11-09 07:51:51 +0900 (Sat, 09 Nov 2019) | 14 lines

merge revision(s) 6333020fc924d3ae63775c032bbe8f57364cd42e:

	atime may not updated unless strictatime is set on macOS Catalina

	Cited from mount(8):

	```
	strictatime
	        Always update the file access time when reading from a
	        file. Without this option the filesystem may default to a
	        less strict update mode, where some access time updates
	        are skipped for performance reasons. This option could be
	        ignored if it is not supported by the filesystem.
	```
------------------------------------------------------------------------
r67825 | nagachika | 2019-10-02 20:18:43 +0900 (Wed, 02 Oct 2019) | 10 lines

merge revision(s) 63ab7046a1a5c374a52dfa79406fe52d92d80344:

	Skip POINTOPOINT of IPv4 too instead of IPv6 only

	Fix following error on `utun*`:
	```
	  1) Error:
	TestSocket#test_udp_server:
	Errno::ECONNREFUSED: Connection refused - recvmsg(2)
	```
------------------------------------------------------------------------
r67822 | nagachika | 2019-10-02 07:38:59 +0900 (Wed, 02 Oct 2019) | 1 line

bump up teeny version to 2.6.6.
------------------------------------------------------------------------
r67810 | nagachika | 2019-10-01 19:59:35 +0900 (Tue, 01 Oct 2019) | 4 lines

lib/shell/command-processor.rb (Shell#[]): prevent unknown command

`FileTest.send(command, ...)` allows to call not only FileTest-related
methods but also any method that belongs to Kernel, Object, etc.
------------------------------------------------------------------------
r67808 | nagachika | 2019-10-01 19:57:43 +0900 (Tue, 01 Oct 2019) | 9 lines

merge revision(s) 3ce238b5f9795581eb84114dcfbdf4aa086bfecc:

	WEBrick: prevent response splitting and header injection

	This is a follow up to d9d4a28f1cdd05a0e8dabb36d747d40bbcc30f16.
	The commit prevented CRLR, but did not address an isolated CR or an
	isolated LF.

	Co-Authored-By: NARUSE, Yui <naruse@airemix.jp>
------------------------------------------------------------------------
r67807 | nagachika | 2019-10-01 19:56:49 +0900 (Tue, 01 Oct 2019) | 6 lines

merge revision(s) 36e057e26ef2104bc2349799d6c52d22bb1c7d03:

	Loop with String#scan without creating substrings

	Create the substrings necessary parts only, instead of cutting the
	rest of the buffer.  Also removed a useless, probable typo, regexp.
------------------------------------------------------------------------
r67806 | nagachika | 2019-10-01 19:56:11 +0900 (Tue, 01 Oct 2019) | 6 lines

merge revision(s) a0a2640b398cffd351f87d3f6243103add66575b:

	Fix for wrong fnmatch patttern

	* dir.c (file_s_fnmatch): ensure that pattern does not contain a
	  NUL character.  https://hackerone.com/reports/449617
------------------------------------------------------------------------
r67805 | nagachika | 2019-09-28 13:32:46 +0900 (Sat, 28 Sep 2019) | 8 lines

merge revision(s) 8b3774be3dd9f472bddd99e84e3c9fe2ff99d7ac: [Backport #15935]

	Fix memory leak

	* string.c (str_make_independent_expand): free independent buffer.
	  [Bug# 15935]

	Co-Authored-By: luke-gru (Luke Gruber) <luke.gru@gmail.com>
------------------------------------------------------------------------
r67804 | nagachika | 2019-09-27 20:23:18 +0900 (Fri, 27 Sep 2019) | 15 lines

merge revision(s) 93faa011d393bb4b5cf31a0cbb46922f0a5e7cdc: [Backport #16151]

	Tag string shared roots to fix use-after-free

	The buffer deduplication codepath in rb_fstring can be used to free the buffer
	of shared string roots, which leads to use-after-free.

	Introudce a new flag to tag strings that at one point have been a shared root.
	Check for it in rb_fstring to avoid freeing buffers that are shared by
	multiple strings. This change is based on nobu's idea in [ruby-core:94838].

	The included test case test for the sequence of calls to internal functions
	that lead to this bug. See attached ticket for Ruby level repros.

	[Bug #16151]
------------------------------------------------------------------------
r67803 | nagachika | 2019-09-14 11:24:58 +0900 (Sat, 14 Sep 2019) | 15 lines

merge revision(s) ade1283ca276f7d589ffd3539fbc7b9817f682d5: [Backport #16136]

	Fix a use-after-free bug by avoiding rb_str_new_frozen

	`str2 = rb_str_new_frozen(str1)` seems to make str1 a shared string that
	refers to str2, but str2 is not marked as STR_IS_SHARED_M nor
	STR_NOFREE.
	`rb_fstring(str2)` frees str2's ptr because it is not marked, and the
	free'ed pointer is the same as str1's ptr.
	After that, accessing str1 may cause use-after-free memory corruption.

	I guess this is a bug of rb_str_new_frozen, but I'm completely unsure
	what it should be; the string states and flags are not documented.
	So, this is a workaround for [Bug #16136].  I confirmed that rspec of
	activeadmin runs gracefully.
------------------------------------------------------------------------
r67802 | nagachika | 2019-09-13 20:21:17 +0900 (Fri, 13 Sep 2019) | 15 lines

merge revision(s) 547887138f19959f649b1c0dbcde5659ae3878ed:

	test/ruby/test_fiber.rb: reduce the count of object creation to cause
	 GC

	The test consistently fails on OpenBSD.

	https://rubyci.org/logs/rubyci.s3.amazonaws.com/openbsd-current/ruby-master/log/20190903T010009Z.fail.html.gz
	```
	  1) Failure:
	TestFiber#test_fork_from_fiber [/home/chkbuild/chkbuild/tmp/build/20190903T010009Z/ruby/test/ruby/test_fiber.rb:327]:
	[ruby-core:41456].
	<0> expected but was
	<1>.
	```
------------------------------------------------------------------------
r67801 | nagachika | 2019-09-13 20:17:07 +0900 (Fri, 13 Sep 2019) | 8 lines

merge revision(s) b0b0ded5aa2cf7c4574b057d8326ed4e1c172c12:

	webrick/test_utils.rb: loosen timeout severity

	to stabilize CI failure like:
	https://rubyci.org/logs/rubyci.s3.amazonaws.com/osx1013/ruby-trunk/log/20181228T114501Z.fail.html.gz

	git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@66616 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
------------------------------------------------------------------------
r67799 | nagachika | 2019-08-29 20:50:49 +0900 (Thu, 29 Aug 2019) | 1 line

bump up teeny version to 2.6.5.
------------------------------------------------------------------------
r67797 | nagachika | 2019-08-28 16:36:31 +0900 (Wed, 28 Aug 2019) | 7 lines

merge revision(s) f308ab2131ee675000926540cbb8c13c91dc3be5,989e8ad322afdfa3aa06e74b89fc42aef42895d0:

	Remove jquery.js


	Remove debug print [ci skip]

------------------------------------------------------------------------
r67792 | nagachika | 2019-08-28 14:41:10 +0900 (Wed, 28 Aug 2019) | 7 lines

merge revision(s) 4e038a7e64a9d52eed59b8f05647d4e58d265ec3: [Backport #5400]

	Revert "parse.y: Deprecate flip-flops"

	This reverts commit bae638ad5b782c44c80efe33834cb9039279af46.

	[Feature #5400]
------------------------------------------------------------------------
r67782 | nagachika | 2019-08-27 22:00:48 +0900 (Tue, 27 Aug 2019) | 1 line

bump up teeny version to 2.6.4.
------------------------------------------------------------------------
r67780 | nagachika | 2019-08-27 21:54:19 +0900 (Tue, 27 Aug 2019) | 1 line

Update rdoc version from 6.1.0 to 6.1.2.
------------------------------------------------------------------------
r67750 | nagachika | 2019-08-22 20:39:49 +0900 (Thu, 22 Aug 2019) | 6 lines

merge revision(s) fd0e3bd2497d4e796b719c7b7154dc3c945f87b1: [Backport #14834]

	fix VC 2013 compile error

	It seems the compiler does not support VLAs.
	See also: https://ci.appveyor.com/project/ruby/ruby/builds/26392589/job/px6nuiuw4e78weg1
------------------------------------------------------------------------
r67749 | nagachika | 2019-08-22 20:28:30 +0900 (Thu, 22 Aug 2019) | 4 lines

merge revision(s) 9557069299ac3b96691040a541afa65761a724ad: [Backport #15992]

	Avoid creating Hash objects per each mon_synchronize call (#2393)

------------------------------------------------------------------------
r67747 | nagachika | 2019-08-18 16:22:19 +0900 (Sun, 18 Aug 2019) | 7 lines

merge revision(s) d5c33364e3c0efb15e11df417c925afee2cdb9c9: [Backport #16105]

	Fixed heap-use-after-free

	* string.c (rb_str_sub_bang): retrieves a pointer to the
	  replacement string buffer just before using it, for the case of
	  replacement with the receiver string itself.  [Bug #16105]
------------------------------------------------------------------------
r67746 | nagachika | 2019-08-18 15:53:02 +0900 (Sun, 18 Aug 2019) | 6 lines

merge revision(s) 5b1bf8dd2d08ae7371ecf025967376bb794ed651: [Backport #16099]

	UTF LE is fixed at least the first 2 bytes

	* io.c (io_strip_bom): if the first 2 bytes are 0xFF0xFE, it
	should be a little-endian UTF, 16 or 32.  [Bug #16099]
------------------------------------------------------------------------
r67745 | nagachika | 2019-08-18 15:10:46 +0900 (Sun, 18 Aug 2019) | 18 lines

merge revision(s) 5d33f787169bcc3594d2264726695d58c4a06899,8b162ce9d1003e4e469d8f48cb9a2076fd45b47c: [Backport #14834]

	fix tracepoint + backtrace SEGV

	PC modification in gc_event_hook_body was careless.  There are (so
	to say) abnormal iseqs stored in the cfp.  We have to check sanity
	before we touch the PC.

	This has not been fixed because there was no way to (ab)use the
	setup from pure-Ruby.  However by using our official C APIs it is
	possible to touch such frame(s), resulting in SEGV.

	Fixes [Bug #14834].

	Fix assertion failure when VM_CHECK_MODE

	Some VM frames (dummy and top pushed by `rb_vm_call_cfunc`) has
	iseq but has no pc.
------------------------------------------------------------------------
r67744 | nagachika | 2019-08-18 14:21:34 +0900 (Sun, 18 Aug 2019) | 12 lines

merge revision(s) df317151a5b4e0c5a30fcc321a9dc6abad63f7ed: [Backport #16019]

	should not free local hook_list here.

	exec_hooks_postcheck() clean executed hook_list if it is needed.
	list_exec is freed if there are no events and this list is local
	event (connected to specific iseq). However, iseq keeps to point
	this local hook_list, freed list. To prevent this situation,
	do not free hook_list here even if it has no events.

	This issue is reported by @joker1007.
	https://twitter.com/joker1007/status/1153649170797830144
------------------------------------------------------------------------
r67743 | nagachika | 2019-08-18 14:07:50 +0900 (Sun, 18 Aug 2019) | 10 lines

merge revision(s) f1b76ea63ce40670071a857f408a4747c571f1e9,1d1f98d49c9908f4e3928e582d31fd2e9f252f92: [Backport #16024]

	Occupy match data

	* string.c (rb_str_split_m): occupy match data not to be modified
	  during yielding the block.  [Bug #16024]

	Reuse match data

	* string.c (rb_str_split_m): reuse occupied match data.  [Bug #16024]
------------------------------------------------------------------------
r67742 | nagachika | 2019-08-18 13:32:59 +0900 (Sun, 18 Aug 2019) | 8 lines

merge revision(s) f91879a7b548284c93743168acfd11e3d2aeefac: [Backport #15992]

	handle_interrupt to defend monitor state [Bug #15992]

	If an exception is raised from another thread for example Timeout
	and this thread is just after `mon_exit`'s `@mon_owner = nil`,
	the exception breaks the state of MonitorMixin. To prevent that situation,
	it need to block interruption in mon_enter and mon_exit.
------------------------------------------------------------------------
r67741 | nagachika | 2019-08-11 21:17:58 +0900 (Sun, 11 Aug 2019) | 12 lines

merge revision(s) 8aecc90974ab1ac87056f77e2cb3406c5c041504,2f6cc15cdb3d64135b29cfd5ee376a5a03ebbee7: [Backport #15965]

	Hoisted out WIDE_ENCODINGS


	Fixed String#grapheme_clusters with wide encodings

	* string.c (get_reg_grapheme_cluster): make regexp from properly
	  encoded sources fro wide-char encodings.  [Bug #15965]

	* regparse.c (node_extended_grapheme_cluster): suppress false
	  duplicated range warning for the time being.
------------------------------------------------------------------------
r67740 | nagachika | 2019-08-09 23:28:00 +0900 (Fri, 09 Aug 2019) | 13 lines

merge revision(s) ec8e5f5aa64e2a54cf1e303f2b012c98e8d521ba,5a187e26adc8aa32367f294c1496935c7356d386: [Backport #15952]

	array.c: always check frozenness in Array#unshift. Fixes [Bug #15952]

	Closes: https://github.com/ruby/ruby/pull/2251

	array.c add back shared array optimization to
	 ary_ensure_room_for_unshift

	Bug fix in commit ec8e5f5aa64e2a [Bug #15952] disabled an
	optimization in this function.

	Closes: https://github.com/ruby/ruby/pull/2252
------------------------------------------------------------------------
r67739 | nagachika | 2019-08-09 22:42:26 +0900 (Fri, 09 Aug 2019) | 6 lines

merge revision(s) 8f51da5d41f0642d5a971e4223d1ba14643c6398: [Backport #15946]

	Get rid of undefined behavior

	* string.c (rb_str_sub_bang): str and repl can be same.
	  [Bug #15946]
------------------------------------------------------------------------
r67738 | nagachika | 2019-08-09 22:41:04 +0900 (Fri, 09 Aug 2019) | 11 lines

merge revision(s) 28678997e40869f5591eae60edd9757334426ffb,8797f48373dcfa3ff8e748667732dea8aea4347e: [Backport #15937]

	Preserve the string content at self-copying

	* string.c (rb_str_init): preserve the embedded content when
	  self-copying with a capacity.  [Bug #15937]

	New buffer for shared string

	* string.c (rb_str_init): allocate new buffer if the string is
	  shared.  [Bug #15937]
------------------------------------------------------------------------
r67737 | nagachika | 2019-08-08 01:30:37 +0900 (Thu, 08 Aug 2019) | 21 lines

merge revision(s) ae2a904ce9bffedee7d110dc60fd51c0a2879a5b,165ddfda20f6db8a3149d14c4f431fc242ddab70,fa7a768fdfe5223a29db4fa71b3e6101fb02ad51: [Backport #16051]

	Update the certificate files to make the test pass on Debian 10

	The old certificate files (for example, test/rubygems/ca_cert.pem) were
	signed by SHA1.  This message digest is considered too weak and rejected
	by OpenSSL 1.1.1 or later.  Because of this, the test suite does not
	pass on Debian 10.

	https://rubyci.org/logs/rubyci.s3.amazonaws.com/debian/ruby-master/log/20190527T123003Z.fail.html.gz#test%2Frubygems

	This change regenerates the files.
	A shell script for the regeneration (util/create_certs.sh) is also
	added.

	* remove trailing spaces.


	Removed inconsistency file from upstream repository of rubygems.

	  followed up ae2a904ce9bffedee7d110dc60fd51c0a2879a5b
------------------------------------------------------------------------
r67736 | nagachika | 2019-08-07 22:05:00 +0900 (Wed, 07 Aug 2019) | 15 lines

merge revision(s) 5931857281ce45c1c277aa86d1588119ab00a955,76e2370f132f83c16c9de39a0a9356579f364527: [Backport #16041]

	Fix dangling path name from fstring

	* parse.y (yycompile): make sure in advance that the `__FILE__`
	  object shares a fstring, to get rid of dangling path name.
	  Fixed up 53e9908d8afc7f03109b0aafd1698ab35f512b05.  [Bug #16041]

	* vm_eval.c (eval_make_iseq): ditto.

	Fix dangling path name from fstring

	* load.c (rb_require_internal): make sure in advance that the path
	  to be loaded shares a fstring, to get rid of dangling path name.
	  Fixed up 5931857281ce45c1c277aa86d1588119ab00a955.  [Bug #16041]
------------------------------------------------------------------------
r67735 | nagachika | 2019-08-07 21:38:15 +0900 (Wed, 07 Aug 2019) | 12 lines

merge revision(s) 1e54903684aa3c9ea3fe54520157846a1b1f07be: [Backport #16051]

	test/openssl: Support OpenSSL 1.1.1

	OpenSSL 1.1.1 rejects some shorter keys, which caused some failures of
	`make test-all TESTS=openssl`.

	https://rubyci.org/logs/rubyci.s3.amazonaws.com/debian/ruby-master/log/20190606T003005Z.fail.html.gz

	This change merges 6bbc31ddd1 and 63fb3a36d1 in
	https://github.com/ruby/openssl.
	Reference: https://github.com/ruby/openssl/pull/217
------------------------------------------------------------------------
r67734 | nagachika | 2019-08-07 21:25:24 +0900 (Wed, 07 Aug 2019) | 6 lines

merge revision(s) 43730256e800dd8e0c5cc482e9861868590ae037:

	open-uri: Regenerate server certificates for tests

	OpenSSL 1.1.1 requires 2048 bits or more.  This change will fix:
	https://rubyci.org/logs/rubyci.s3.amazonaws.com/debian/ruby-master/log/20190527T003004Z.fail.html.gz#test%2Fopen-uri
------------------------------------------------------------------------
r67733 | nagachika | 2019-08-07 21:23:48 +0900 (Wed, 07 Aug 2019) | 25 lines

merge revision(s) 9dec4e8fc3a6018261834b5ac9b9877f787b97ca: [Backport #15934]

	String#b: Don't depend on dependent string

	Registering a string that depend on a dependent string as fstring
	can lead to use-after-free. See c06ddfe and 3f95620 for details.

	The following script triggers use-after-free on trunk, 2.4.6, 2.5.5
	and 2.6.3. Credits to @wanabe for using eval as a cross-version way
	of registering a fstring.

	```ruby
	a = ('j' * 24).b.b
	eval('', binding, a)

	p a
	4.times { GC.start }
	p a
	```

	 - string.c (str_replace_shared_without_enc): when given a
	   dependent string, depend on the root of the dependent
	   string.

	[Bug #15934]
------------------------------------------------------------------------
r67732 | nagachika | 2019-08-07 21:03:52 +0900 (Wed, 07 Aug 2019) | 15 lines

merge revision(s) 53e9908d8afc7f03109b0aafd1698ab35f512b05: [Backport #15916]

	Fix memory leak

	* string.c (str_replace_shared_without_enc): free previous buffer
	  before replaced.

	* parse.y (gettable): make sure in advance that the `__FILE__`
	  object shares a fstring, to get rid of replacement with the
	  fstring later.
	  TODO: this hack may be needed in other places.

	[Bug #15916]

	Co-Authored-By: luke-gru (Luke Gruber) <luke.gru@gmail.com>
------------------------------------------------------------------------
r67731 | nagachika | 2019-08-07 20:45:24 +0900 (Wed, 07 Aug 2019) | 80 lines

merge revision(s) 3f9562015e651735bfc2fdd14e8f6963b673e22a,c06ddfee878524168e4af07443217ed2f8d0954b,3b3b4a44e57dfe03ce3913009d69a33d6f6100be: [Backport #15792]

	Get rid of indirect sharing

	* string.c (str_duplicate): share the root shared string if the
	  original string is already sharing, so that all shared strings
	  refer the root shared string directly.  indirect sharing can
	  cause a dangling pointer.

	[Bug #15792]

	str_duplicate: Don't share with a frozen shared string

	This is a follow up for 3f9562015e651735bfc2fdd14e8f6963b673e22a.
	Before this commit, it was possible to create a shared string which
	shares with another shared string by passing a frozen shared string
	to `str_duplicate`.

	Such string looks like:

	```
	 --------                    -----------------
	 | root | ------ owns -----> | root's buffer |
	 --------                    -----------------
	     ^                             ^   ^
	 -----------                       |   |
	 | shared1 | ------ references -----   |
	 -----------                           |
	     ^                                 |
	 -----------                           |
	 | shared2 | ------ references ---------
	 -----------
	```

	This is bad news because `rb_fstring(shared2)` can make `shared1`
	independent, which severs the reference from `shared1` to `root`:

	```c
	/* from fstr_update_callback() */
	str = str_new_frozen(rb_cString, shared2);  /* can return shared1 */
	if (STR_SHARED_P(str)) { /* shared1 is also a shared string */
	    str_make_independent(str);  /* no frozen check */
	}
	```

	If `shared1` was the only reference to `root`, then `root` can be
	reclaimed by the GC, leaving `shared2` in a corrupted state:

	```
	 -----------                         --------------------
	 | shared1 | -------- owns --------> | shared1's buffer |
	 -----------                         --------------------
	      ^
	      |
	 -----------                         -------------------------
	 | shared2 | ------ references ----> | root's buffer (freed) |
	 -----------                         -------------------------
	```

	Here is a reproduction script for the situation this commit fixes.

	```ruby
	a = ('a' * 24).strip.freeze.strip
	-a
	p a
	4.times { GC.start }
	p a
	```

	 - string.c (str_duplicate): always share with the root string when
	   the original is a shared string.
	 - test_rb_str_dup.rb: specifically test `rb_str_dup` to make
	   sure it does not try to share with a shared string.

	[Bug #15792]

	Closes: https://github.com/ruby/ruby/pull/2159

	Update dependencies

------------------------------------------------------------------------
r67730 | nagachika | 2019-08-07 19:52:38 +0900 (Wed, 07 Aug 2019) | 1 line

Update Xcode or Homebrew (apply https://github.com/nobu/ruby/commit/c86b74dc431d4cbdeb7d3c3fe5ac0693dc731bb1) [Bug #16032]
------------------------------------------------------------------------
r67729 | nagachika | 2019-08-05 23:05:59 +0900 (Mon, 05 Aug 2019) | 5 lines

merge revision(s) 5e018214e7435030727a97ac49db038d96438e74: [Backport #15720]

	Fix SystemStackError when calling a method in an unused refinement

	Fixes [Bug #15720]
------------------------------------------------------------------------
r67728 | nagachika | 2019-08-05 22:53:03 +0900 (Mon, 05 Aug 2019) | 5 lines

merge revision(s) c1d78a7f0ece2004822193a0c1f1fd3dc38c2fdf: [Backport #15360]

	do_mutex_lock: release mutex before checking for interrupts (fixes
	 issue 15360)

------------------------------------------------------------------------
r67727 | nagachika | 2019-08-05 22:39:48 +0900 (Mon, 05 Aug 2019) | 6 lines

merge revision(s) 2403f9ac3af170ce0107a709a9cb510fe0501648:

	Expand the timeout of
	 `test_pstore_files_are_accessed_as_binary_files`

	Sometimes causes timeout error on mswin CI
------------------------------------------------------------------------
r67726 | nagachika | 2019-08-04 23:29:17 +0900 (Sun, 04 Aug 2019) | 10 lines

merge revision(s) 66977: [Backport #15578]

	Revert r63383, r63248 "compile.c: copy a short insn with leave"

	When copying `leave` insn, TRACE also should be copied if it is
	present, but this optimization is trivial and not worth the
	complexity.  [ruby-core:91366] [Bug #15578]

	4cae5353c03009beb1e0a1619422072773580609
	5afd479de63b6609ddcd1510da94d2c1ac384f7f
------------------------------------------------------------------------
r67725 | nagachika | 2019-08-03 21:27:02 +0900 (Sat, 03 Aug 2019) | 22 lines

merge revision(s) 1ef39d8d099f145222b9352423af16a2bab6e05b: [Backport #15798]

	Fix process not waking up on signals on OpenBSD

	When using UBF_TIMER_PTHREAD (the UBF handler on OpenBSD), the
	timer_pthread_fn function will not signal the main thread with
	SIGVTALRM in cases where timer_pthread is armed before
	consume_communication_pipe is called.  This is because
	consume_communication_pipe will unarm the timer.

	Fix this by checking the return value of consume_communication_pipe.
	If it returns TRUE and the timer_pthread is disarmed, then signal
	the main thread with SIGVTALRM.

	On OpenBSD, this fixes TestThread#test_thread_timer_and_interrupt, and
	fixes hangs in TestProcess#test_execopts_redirect_open_fifo_interrupt_raise
	and TestProcess#test_execopts_redirect_open_fifo_interrupt_print.
	It also fixes the use of Ctrl+C/SIGINT in irb on OpenBSD. It does not
	cause any test failures on Linux when UBF_TIMER_PTHREAD is forced as
	the UBF handler.

	Fixes [Bug #15798]
------------------------------------------------------------------------
r67724 | nagachika | 2019-08-01 22:56:16 +0900 (Thu, 01 Aug 2019) | 14 lines

merge revision(s) 6375c68f8851e1e0fee8a95afba91c4555097127,c05eaa93258ddc01e685b6cc3a0da82998a2af48: [Backport #15839]

	parse.y: function parser_mixed_error & parser_mixed_escape

	git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@66919 b2dd03c8-39d4-4d8f-98ff-823fe69b080e

	Fix mixed encoding in heredoc

	Heredocs are parsed line-by-line, so we need to keep track of the
	temporary encoding of the string.  Previously, a heredoc would
	only detect mixed encoding errors if they were on the same line,
	this changes things so they will be caught on different lines.

	Fixes [Bug #15839]
------------------------------------------------------------------------
r67723 | nagachika | 2019-08-01 22:18:27 +0900 (Thu, 01 Aug 2019) | 7 lines

merge revision(s) 5bab1304af25a843728dbcd2f3594913740aecb0: [Backport #15847]

	fix visibility of SecureRandom.gen_random

	Aliasing a method preserves its visibility.  These aliases turn
	formerly-public methods into private.  Should make them public
	again.  [Bug #15847]
------------------------------------------------------------------------
r67721 | nagachika | 2019-07-31 23:47:34 +0900 (Wed, 31 Jul 2019) | 9 lines

merge revision(s) ea42423908ed055f9039b1dce6e9a232a3b2dd90: [Backport #15887]

	Keep vm->orig_progname alive

	`vm->orig_progname` can be different from `vm->progname` when user
	code assigns to `$0`. While `vm->progname` is kept alive by the
	global table, nothing marked `vm->orig_progname`.

	[Bug #15887]
------------------------------------------------------------------------
r67720 | nagachika | 2019-07-31 23:32:43 +0900 (Wed, 31 Jul 2019) | 10 lines

merge revision(s) b165bedcbd41d791a85fc1ce90b57a0d0525f319,ac00bdc8a8ac2c62a94dd36a7784d15bbcb7df19: [Backport #15821]

	skip a test to pass CIs.

	I'm debugging [Bug #15821] but my patch introduces another issue.
	So I simply skip this test and re-enable it later.

	Do not modify shared array

	[Bug #15821]
------------------------------------------------------------------------
r67719 | nagachika | 2019-07-31 23:14:59 +0900 (Wed, 31 Jul 2019) | 5 lines

merge revision(s) 374c8f4ebab1a740990330c732b9de965c5e8d10: [Backport #15823]

	Fixed about ARGF.lineno

	[Bug #15823]
------------------------------------------------------------------------
r67718 | nagachika | 2019-07-31 23:10:09 +0900 (Wed, 31 Jul 2019) | 12 lines

merge revision(s) d0ba4abf1a00339ebbb5d405db3240a8bdb7b68b,54eac83b2ad77ddea84fa6d66c09e0bb014cf61e: [Backport #15786]

	Add RB_ID_SERIAL_MAX


	Hide internal IDs

	* parse.y (internal_id): number the ID serial for internal use by
	  counting down from the neary maximum value, not to accidentally
	  match permanent IDs.

	[Bug #15768]
------------------------------------------------------------------------
r67716 | nagachika | 2019-07-28 23:16:53 +0900 (Sun, 28 Jul 2019) | 5 lines

merge revision(s) a6a26e42b15c46f117f4fce07a2050e9d727355d: [Backport #15906]

	compile.c: Partially revert r63870 which caused wrong optimization

	[Bug #15906]
------------------------------------------------------------------------
r67715 | nagachika | 2019-07-28 23:02:10 +0900 (Sun, 28 Jul 2019) | 4 lines

merge revision(s) dcb6a6ae3e2b8a3e298e7f0d4a3e7f8ff102a30e: [Backport #15845]

	Windows simply causes an error to open invalid path

------------------------------------------------------------------------
r67714 | nagachika | 2019-07-26 08:17:08 +0900 (Fri, 26 Jul 2019) | 5 lines

merge revision(s) b72623012d74abdb06210153ed48c9e2fa075bbd: [Backport #15775]

	Update broken URL in Float documentation.

	  [Misc #15775][ruby-core:92332]
------------------------------------------------------------------------
r67713 | nagachika | 2019-07-26 08:11:57 +0900 (Fri, 26 Jul 2019) | 18 lines

merge revision(s) a15f7dd1fb1148c3d586238ee6907875f2e40379: [Backport #15803]

	Always mark the string returned by File.realpath as tainted

	This string can include elements that were not in either string
	passed to File.realpath, even if one of the strings is an
	absolute path, due to symlinks:

	```ruby
	Dir.mkdir('b') unless File.directory?('b')
	File.write('b/a', '') unless File.file?('b/a')
	File.symlink('b', 'c') unless File.symlink?('c')
	path = File.realpath('c/a'.untaint, Dir.pwd.untaint)
	path # "/home/testr/ruby/b/a"
	path.tainted? # should be true, as 'b' comes from file system
	```

	[Bug #15803]
------------------------------------------------------------------------
r67712 | nagachika | 2019-06-22 10:56:07 +0900 (Sat, 22 Jun 2019) | 4 lines

merge revision(s) 5e23b1138f16af0defb184d7deeffadfd2ce3c04: [Backport #15820]

	Fix potential memory leak

------------------------------------------------------------------------
r67711 | nagachika | 2019-06-16 12:20:55 +0900 (Sun, 16 Jun 2019) | 7 lines

merge revision(s) af1e487e9bb763b939dc6704c9a343c9eafa1637,6f8ac2cb28f99a4b2588c59ec44eff6ed38c4d3b: [Backport #15801]

	Updated marked commits for ChangeLog


	Include the beginning commit in ChangeLog

------------------------------------------------------------------------
r67710 | nagachika | 2019-06-13 21:23:01 +0900 (Thu, 13 Jun 2019) | 119 lines

merge revision(s) 7b7043e5da8589e01b94575d4ed647e909e5c875: [Backport #15793]

	eliminate use of freed memory

	rb_io_fptr_finalize_internal frees the memory region.

	=================================================================
	==85264==ERROR: AddressSanitizer: heap-use-after-free on address 0x610000000d8c at pc 0x5608e38077f7 bp 0x7ffee12d5440 sp 0x7ffee12d5438
	READ of size 4 at 0x610000000d8c thread T0
	    #0 0x5608e38077f6 in rb_io_memsize io.c:4749:24
	    #1 0x5608e37a0481 in obj_memsize_of gc.c:3547:14
	    #2 0x5608e37a4f30 in check_rvalue_consistency gc.c:1107:2
	    #3 0x5608e37a2624 in RVALUE_OLD_P gc.c:1218:5
	    #4 0x5608e37a5bae in rb_gc_force_recycle gc.c:6652:18
	    #5 0x5608e38191f9 in rb_f_backquote io.c:9021:5
	    #6 0x5608e3d8aa14 in call_cfunc_1 vm_insnhelper.c:2058:12
	    #7 0x5608e3d6e23d in vm_call_cfunc_with_frame vm_insnhelper.c:2211:11
	    #8 0x5608e3d54a35 in vm_call_cfunc vm_insnhelper.c:2229:12
	    #9 0x5608e3d5253b in vm_call_method_each_type vm_insnhelper.c:2564:9
	    #10 0x5608e3d51f50 in vm_call_method vm_insnhelper.c:2701:13
	    #11 0x5608e3cf2de4 in vm_call_general vm_insnhelper.c:2734:12
	    #12 0x5608e3d79918 in vm_sendish vm_insnhelper.c:3627:11
	    #13 0x5608e3d06cf5 in vm_exec_core insns.def:789:11
	    #14 0x5608e3d43700 in rb_vm_exec vm.c:1892:22
	    #15 0x5608e3d47cbf in rb_iseq_eval_main vm.c:2151:11
	    #16 0x5608e37620ca in ruby_exec_internal eval.c:262:2
	    #17 0x5608e376198b in ruby_exec_node eval.c:326:12
	    #18 0x5608e37617d0 in ruby_run_node eval.c:318:25
	    #19 0x5608e35c9486 in main main.c:42:9
	    #20 0x7f62e9421b96 in __libc_start_main /build/glibc-OTsEL5/glibc-2.27/csu/../csu/libc-start.c:310
	    #21 0x5608e3522289 in _start (miniruby+0x15f289)

	0x610000000d8c is located 76 bytes inside of 192-byte region [0x610000000d40,0x610000000e00)
	freed by thread T0 here:
	    #0 0x5608e359a2ed in free (miniruby+0x1d72ed)
	    #1 0x5608e37af421 in objspace_xfree gc.c:9591:5
	    #2 0x5608e37af3da in ruby_sized_xfree gc.c:9687:2
	    #3 0x5608e3799ac8 in ruby_xfree gc.c:9694:5
	    #4 0x5608e380746d in rb_io_fptr_finalize_internal io.c:4728:5
	    #5 0x5608e38191ed in rb_f_backquote io.c:9020:5
	    #6 0x5608e3d8aa14 in call_cfunc_1 vm_insnhelper.c:2058:12
	    #7 0x5608e3d6e23d in vm_call_cfunc_with_frame vm_insnhelper.c:2211:11
	    #8 0x5608e3d54a35 in vm_call_cfunc vm_insnhelper.c:2229:12
	    #9 0x5608e3d5253b in vm_call_method_each_type vm_insnhelper.c:2564:9
	    #10 0x5608e3d51f50 in vm_call_method vm_insnhelper.c:2701:13
	    #11 0x5608e3cf2de4 in vm_call_general vm_insnhelper.c:2734:12
	    #12 0x5608e3d79918 in vm_sendish vm_insnhelper.c:3627:11
	    #13 0x5608e3d06cf5 in vm_exec_core insns.def:789:11
	    #14 0x5608e3d43700 in rb_vm_exec vm.c:1892:22
	    #15 0x5608e3d47cbf in rb_iseq_eval_main vm.c:2151:11
	    #16 0x5608e37620ca in ruby_exec_internal eval.c:262:2
	    #17 0x5608e376198b in ruby_exec_node eval.c:326:12
	    #18 0x5608e37617d0 in ruby_run_node eval.c:318:25
	    #19 0x5608e35c9486 in main main.c:42:9
	    #20 0x7f62e9421b96 in __libc_start_main
	/build/glibc-OTsEL5/glibc-2.27/csu/../csu/libc-start.c:310

	previously allocated by thread T0 here:
	    #0 0x5608e359a56d in malloc (miniruby+0x1d756d)
	    #1 0x5608e37aed12 in objspace_xmalloc0 gc.c:9416:5
	    #2 0x5608e37aebe7 in ruby_xmalloc0 gc.c:9600:12
	    #3 0x5608e37aea8b in ruby_xmalloc_body gc.c:9609:12
	    #4 0x5608e37a6d64 in ruby_xmalloc gc.c:11469:12
	    #5 0x5608e380e4b4 in rb_io_fptr_new io.c:8040:19
	    #6 0x5608e380e446 in rb_io_make_open_file io.c:8077:10
	    #7 0x5608e3850ea0 in pipe_open io.c:6707:5
	    #8 0x5608e384edb4 in pipe_open_s io.c:6772:12
	    #9 0x5608e381910b in rb_f_backquote io.c:9014:12
	    #10 0x5608e3d8aa14 in call_cfunc_1 vm_insnhelper.c:2058:12
	    #11 0x5608e3d6e23d in vm_call_cfunc_with_frame vm_insnhelper.c:2211:11
	    #12 0x5608e3d54a35 in vm_call_cfunc vm_insnhelper.c:2229:12
	    #13 0x5608e3d5253b in vm_call_method_each_type vm_insnhelper.c:2564:9
	    #14 0x5608e3d51f50 in vm_call_method vm_insnhelper.c:2701:13
	    #15 0x5608e3cf2de4 in vm_call_general vm_insnhelper.c:2734:12
	    #16 0x5608e3d79918 in vm_sendish vm_insnhelper.c:3627:11
	    #17 0x5608e3d06cf5 in vm_exec_core insns.def:789:11
	    #18 0x5608e3d43700 in rb_vm_exec vm.c:1892:22
	    #19 0x5608e3d47cbf in rb_iseq_eval_main vm.c:2151:11
	    #20 0x5608e37620ca in ruby_exec_internal eval.c:262:2
	    #21 0x5608e376198b in ruby_exec_node eval.c:326:12
	    #22 0x5608e37617d0 in ruby_run_node eval.c:318:25
	    #23 0x5608e35c9486 in main main.c:42:9
	    #24 0x7f62e9421b96 in __libc_start_main /build/glibc-OTsEL5/glibc-2.27/csu/../csu/libc-start.c:310

	SUMMARY: AddressSanitizer: heap-use-after-free io.c:4749:24 in
	rb_io_memsize
	Shadow bytes around the buggy address:
	  0x0c207fff8160: fa fa fa fa fa fa fa fa 00 00 00 00 00 00 00 00
	  0x0c207fff8170: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
	  0x0c207fff8180: fa fa fa fa fa fa fa fa 00 00 00 00 00 00 00 00
	  0x0c207fff8190: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
	  0x0c207fff81a0: fa fa fa fa fa fa fa fa fd fd fd fd fd fd fd fd
	=>0x0c207fff81b0: fd[fd]fd fd fd fd fd fd fd fd fd fd fd fd fd fd
	  0x0c207fff81c0: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
	  0x0c207fff81d0: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
	  0x0c207fff81e0: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
	  0x0c207fff81f0: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
	  0x0c207fff8200: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
	Shadow byte legend (one shadow byte represents 8 application bytes):
	  Addressable:           00
	  Partially addressable: 01 02 03 04 05 06 07
	  Heap left redzone:       fa
	  Freed heap region:       fd
	  Stack left redzone:      f1
	  Stack mid redzone:       f2
	  Stack right redzone:     f3
	  Stack after return:      f5
	  Stack use after scope:   f8
	  Global redzone:          f9
	  Global init order:       f6
	  Poisoned by user:        f7
	  Container overflow:      fc
	  Array cookie:            ac
	  Intra object redzone:    bb
	  ASan internal:           fe
	  Left alloca redzone:     ca
	  Right alloca redzone:    cb
	  Shadow gap:              cc
	==85264==ABORTING
------------------------------------------------------------------------
r67571 | svn | 2019-04-16 09:02:01 +0900 (Tue, 16 Apr 2019) | 1 line

* 2019-04-16
------------------------------------------------------------------------
r67570 | knu | 2019-04-16 09:02:00 +0900 (Tue, 16 Apr 2019) | 1 line

Mention SNI support in Net::IMAP
------------------------------------------------------------------------
r67567 | naruse | 2019-04-15 23:42:35 +0900 (Mon, 15 Apr 2019) | 6 lines

merge revision(s) 67561:

	Import CSV 3.0.9

	This fixes test failures on Windows.

------------------------------------------------------------------------
r67565 | naruse | 2019-04-15 22:36:58 +0900 (Mon, 15 Apr 2019) | 14 lines

merge revision(s) 67560,67561:

        Import CSV 3.0.8

        This includes performance improvements and backward incompatibility
        fixes.


        Import CSV 3.0.9

        This fixes test failures on Windows.

Note that r67562's commit message is wrong.

------------------------------------------------------------------------
r67564 | naruse | 2019-04-15 22:27:53 +0900 (Mon, 15 Apr 2019) | 9 lines

merge revision(s) 67563:

	Support SNI (Reapplying r67488)

	This fixes connecting using TLS 1.3 to imap.gmail.com

	[Fix GH-2077] [Feature #15594]

	From: Marc-Antoine Perennou <Marc-Antoine@Perennou.com>
------------------------------------------------------------------------
r67562 | naruse | 2019-04-15 18:22:11 +0900 (Mon, 15 Apr 2019) | 8 lines

merge revision(s) 66720:

        separate downloading of Unicode property files and auxiliary files

        Separate downloading of Unicode property files in ucd and in ucd/auxiliary.
        This is needed because we need information from separate index.html files
        to discover the exact file names of property files during a beta period.

------------------------------------------------------------------------
r67529 | naruse | 2019-04-14 07:18:20 +0900 (Sun, 14 Apr 2019) | 7 lines

merge revision(s) 66720:

	separate downloading of Unicode property files and auxiliary files

	Separate downloading of Unicode property files in ucd and in ucd/auxiliary.
	This is needed because we need information from separate index.html files
	to discover the exact file names of property files during a beta period.
------------------------------------------------------------------------
r67528 | naruse | 2019-04-14 07:04:51 +0900 (Sun, 14 Apr 2019) | 45 lines

merge revision(s) 66737,66738,67413,67445,67446,67447,67448,67450,67451,67454:

	add logic to handle Unicode beta period file names

	In downloader.rb, add logic to handle file names of the form
	UnicodeData-12.0.0d6.txt. To find the right file, we download
	the index of the directory. Then we download the files by finding
	the file names from the index. Files are always checked for changes,
	because changes might be frequent during the beta period.
	We also check whether any index.html files are left when we are not
	in the beta period. This would indicate that we might have stale
	data from the beta period rather than the actual release data.

	simplify filename-related code

	(Thanks to Nobuyoshi Nakada for the hint!)

	downloader.rb: keep linked file newer than cached file

	* tool/downloader.rb (Downloader.save_cache): keep linked file
	  newer than cached file, so that GNU make triggers when the
	  content is updated.  it uses the timestamp of symlink itself
	  instead of the target.

	add puts statements to debug Unicode file download (temporary)

	Unicode file download doesn't work with Visual Studio, see e.g.
	https://ci.appveyor.com/project/ruby/ruby/builds/23614399/job/f8vya2l7fjdfcye4
	We temporarily produce more output for debugging.

	* remove trailing spaces.

	output more debug information in downloader.rb (temporary)

	Unicode file download doesn't work with Visual Studio, we need more debug output.

	downloader.rb: quote base name

	downloader.rb: fix typo, extra %

	revert r67445, (r67446,) r67447

	Debugging output is no longer needed because the problem has been fixed with r67449.

	appveyor.yml: Use pre-generated headers and tables
------------------------------------------------------------------------
r67527 | naruse | 2019-04-14 00:14:02 +0900 (Sun, 14 Apr 2019) | 31 lines

merge revision(s) 66745,67397,67398,67399,67400,67409,67410,67411,67412,67425,67426,67473,67474: [Backport #15742]

	Bump version to date-2.0.0.

	  I forgot to change it when Ruby 2.6.0 was released.

	date_parse.c: extract Japanese era initials

	* expand tabs.

	date_parse.c: removed 'r' which is not in JIS X 0301 yet

	Added tests for end of Heisei

	date: use del_hash to extract an element destructively

	* expand tabs.

	date_parse.c: renamed JAPANESE prefix as JISX0301

	date_parse.c: name JISX0301_DEFAULT_ERA

	date: make zone a substring to copy encoding and taintedness

	* expand tabs.

	date_core.c: [DOC] Heisei will be assumed if no-era [ci skip]

	date: support for Reiwa, new Japanese era

	[Feature #15742]
------------------------------------------------------------------------
r67526 | svn | 2019-04-14 00:01:42 +0900 (Sun, 14 Apr 2019) | 1 line

* 2019-04-14
------------------------------------------------------------------------
r67525 | naruse | 2019-04-14 00:01:39 +0900 (Sun, 14 Apr 2019) | 32 lines

merge revision(s) 67439,67441,67453,67476: [Backport #15740]

        change lib/unicode_normalize/tables.rb to single item per line to make diffs shorter

        * template/unicode_norm_gen.tmpl: Change formatting of output to produce only a
          single item (or range) for each line to make future diffs shorter and easier
          to understand and check.

        * lib/unicode_normalize/tables.rb: output of the above

        update to Unicode Version 12.1.0 (beta)

        Unicode Version 12.1.0 adds one single character, U+32FF SQUARE ERA NAME REIWA,
        for the new Japanese era starting on May 1st. 12.1.0 will be finalized only on
        May 7th, so we go with the beta version because further changes in the data we
        need are highly unlikely, and we want to make sure Ruby is ready for the new era.

        * common.mk: change UNICODE_VERSION to 12.1.0, UNICODE_BETA to YES

        * enc/unicode/12.1.0, enc/unicode/12.1.0/casefold.h, enc/unicode/12.1.0/name2ctype.h:
          add directory and generated data files for new version

        * lib/unicode_normalize/tables.rb: update for new character

        * test/ruby/test_regexp.rb: add test for character property age=12.1

        * test/test_unicode_normalize.rb: add test for NFKC decomposition of new character

        This (mostly) completes issue #15195.

        remove Unicode 12.0.0 related directory and generated files

------------------------------------------------------------------------
r67524 | naruse | 2019-04-13 16:33:10 +0900 (Sat, 13 Apr 2019) | 9 lines

merge revision(s) 67497,67498: [Backport #15760]

	ext/openssl/ossl_bn.c (ossl_bn_initialize): get rid of SEGV

	OpenSSL::BN.new(nil, 2) dumped core.

	[ruby-core:92231] [Bug #15760]

	* expand tabs.
------------------------------------------------------------------------
r67516 | naruse | 2019-04-11 21:09:34 +0900 (Thu, 11 Apr 2019) | 6 lines

merge revision(s) 67466: [Backport #15755]

	enumerator.c: force hash values fixable

	* enumerator.c (arith_seq_hash): force hash values fixable on
	  LLP64 environment.  [ruby-core:92190] [Bug #15755]
------------------------------------------------------------------------
r67515 | naruse | 2019-04-11 21:09:16 +0900 (Thu, 11 Apr 2019) | 6 lines

merge revision(s) 67467: [Backport #15756]

	range.c: force hash values fixable

	* range.c (method_hash): force hash values fixable on LLP64
	  environment.  [ruby-core:92191] [Bug #15756]
------------------------------------------------------------------------
r67514 | naruse | 2019-04-11 21:08:55 +0900 (Thu, 11 Apr 2019) | 6 lines

merge revision(s) 67468: [Backport #15757]

	range.c: force hash values fixable

	* range.c (range_hash): force hash values fixable on LLP64
	  environment.  [ruby-core:92194] [Bug #15757]
------------------------------------------------------------------------
r67353 | naruse | 2019-03-28 12:28:38 +0900 (Thu, 28 Mar 2019) | 7 lines

merge revision(s) 67332: [Backport #15649]

	dir.c: fix Dir.glob starts with brace

	* dir.c (ruby_glob0): expand braces if a glob pattern starts with
	  brace.
	  [ruby-core:91728] [Bug #15649]
------------------------------------------------------------------------
r67352 | naruse | 2019-03-28 12:26:50 +0900 (Thu, 28 Mar 2019) | 3 lines

merge revision(s) 67270: [Backport #15670]

	dsym should be treated as string [ruby-core:91852] [Bug #15670]
------------------------------------------------------------------------
r67351 | naruse | 2019-03-28 12:24:57 +0900 (Thu, 28 Mar 2019) | 3 lines

merge revision(s) 67247: [Backport #15666]

	Guard out the test when it is run under root permission
------------------------------------------------------------------------
r67246 | naruse | 2019-03-14 06:55:03 +0900 (Thu, 14 Mar 2019) | 2 lines

bump up teeny version to 2.6.3

------------------------------------------------------------------------
r67231 | naruse | 2019-03-13 05:22:33 +0900 (Wed, 13 Mar 2019) | 2 lines

bump up teeny version to 2.6.2

------------------------------------------------------------------------
r67223 | naruse | 2019-03-11 23:33:45 +0900 (Mon, 11 Mar 2019) | 5 lines

fix merge conflict

Reported by Krzysztof Rybka
https://github.com/ruby/ruby/commit/dca69588f4a46e1ecc94eeb9e01efc8cd7cb82e4#r32684541

------------------------------------------------------------------------
r67222 | naruse | 2019-03-11 22:49:09 +0900 (Mon, 11 Mar 2019) | 7 lines

merge revision(s) 67203: [Backport #15651]

	numeric.c: fix infinite loop

	* numeric.c (int_pow): fix infinite loop in the case of y equal 1
	  and power of x does not overflow.
	  [ruby-core:91734] [Bug #15651]
------------------------------------------------------------------------
r67220 | naruse | 2019-03-11 21:57:34 +0900 (Mon, 11 Mar 2019) | 5 lines

merge revision(s) 67217: [Backport #15658]

	The combination of non-Symbol keys and Symbol keys is now allowed again

	Revert r64358.  [Bug #15658]
------------------------------------------------------------------------
r67210 | naruse | 2019-03-11 16:18:45 +0900 (Mon, 11 Mar 2019) | 3 lines

merge revision(s) 66973: [Backport #15577]

	Run r66972 assertion only when a sticky-bit makes sense
------------------------------------------------------------------------
r67209 | naruse | 2019-03-11 16:01:19 +0900 (Mon, 11 Mar 2019) | 6 lines

merge revision(s) 67201: [Backport #15650]

	eval.c: clear internal errinfo

	* eval.c (ruby_cleanup): clear internal error info when invoking
	  end procs.  [ruby-core:91731] [Bug #15650]
------------------------------------------------------------------------
r67208 | naruse | 2019-03-11 15:52:01 +0900 (Mon, 11 Mar 2019) | 7 lines

merge revision(s) 67200: [Backport #15648]

	Add ignored_sp event

	* ext/ripper/lib/ripper/lexer.rb (Ripper::Lexer): add ignored_sp
	  event which will be fired from Ripper::Lexer#on_heredoc_dedent
	  method.  [ruby-core:91727] [Bug #15648]
------------------------------------------------------------------------
r67207 | naruse | 2019-03-11 15:45:29 +0900 (Mon, 11 Mar 2019) | 6 lines

merge revision(s) 67188: [Backport #15642]

	io.c: chomp CR at the end of read buffer

	* io.c (rb_io_getline_fast): chomp CR followed by LF but separated
	  by the read buffer boundary.  [ruby-core:91707] [Bug #15642]
------------------------------------------------------------------------
r67184 | naruse | 2019-03-06 18:49:16 +0900 (Wed, 06 Mar 2019) | 5 lines

merge revision(s) 67183: [Backport #15607]

	Fix PTY.open on OpenBSD [Bug #15607]

	From: Jeremy Evans <code@jeremyevans.net>
------------------------------------------------------------------------
r67182 | naruse | 2019-03-06 18:01:48 +0900 (Wed, 06 Mar 2019) | 12 lines

Backport RubyGems 3.0.3: [Backport #15637]

	* Fixed following vulnerabilities:
	  * CVE-2019-8320: Delete directory using symlink when decompressing tar
	  * CVE-2019-8321: Escape sequence injection vulnerability in verbose
	  * CVE-2019-8322: Escape sequence injection vulnerability in gem owner
	  * CVE-2019-8323: Escape sequence injection vulnerability in API response handling
	  * CVE-2019-8324: Installing a malicious gem may lead to arbitrary code execution
	  * CVE-2019-8325: Escape sequence injection vulnerability in errors

	* see also https://blog.rubygems.org/2019/03/05/3.0.3-released.html

------------------------------------------------------------------------
r67181 | naruse | 2019-03-06 17:53:51 +0900 (Wed, 06 Mar 2019) | 7 lines

merge revision(s) 67167: [Backport #15635]

	string.c: respect the actual encoding

	* string.c (rb_enc_str_coderange): respect the actual encoding of
	  if a BOM presents, and scan for the actual code range.
	  [ruby-core:91662] [Bug #15635]
------------------------------------------------------------------------
r67180 | naruse | 2019-03-06 17:48:50 +0900 (Wed, 06 Mar 2019) | 10 lines

merge revision(s) 66984: [Backport #15582]

	Fixed gemspec location of bundler.

	  FileCollector of rbinstall.rb requires location of gemspec under
	  the sub-direcotry with the same name as default gems.

	  I forgot to fix it with r66867.

	  [Bug #15582][ruby-core:91374]
------------------------------------------------------------------------
r67179 | naruse | 2019-03-06 16:47:53 +0900 (Wed, 06 Mar 2019) | 5 lines

merge revision(s) 67006: [Backport #15469]

	Ignore to add bundler lib direcotry if it is same as rubylibdir.

	  [Bug #15469][ruby-core:90742]
------------------------------------------------------------------------
r67178 | naruse | 2019-03-06 16:31:29 +0900 (Wed, 06 Mar 2019) | 6 lines

merge revision(s) 67172:

	Remove deprecated `sudo: false` in .travis.yml

	- https://blog.travis-ci.com/2018-11-19-required-linux-infrastructure-migration
	- https://docs.travis-ci.com/user/reference/overview/#deprecated-virtualization-environments
------------------------------------------------------------------------
r67177 | naruse | 2019-03-06 16:14:13 +0900 (Wed, 06 Mar 2019) | 8 lines

merge revision(s) 66972: [Backport #15577]

	Fix exception namespace

	* lib/fileutils.rb (remove_entry_secure): EISDIR is under the
	  Errno namespace.  [ruby-core:91362] [Bug #15577]

	From: Tietew (Toru Iwase) <tietew@tietew.net>
------------------------------------------------------------------------
r67176 | naruse | 2019-03-06 15:58:04 +0900 (Wed, 06 Mar 2019) | 2 lines

Drop pedantic matrix from .travis.yml

------------------------------------------------------------------------
r67175 | naruse | 2019-03-06 15:36:32 +0900 (Wed, 06 Mar 2019) | 18 lines

merge revision(s) 67169,67173,67174: [Backport #15641]

	update Unicode version (and Emoji version) to 12.0.0

	- common.mk: set UNICODE_VERSION and UNICODE_EMOJI_VERSION to 12.0.0

	- lib/unicode_normalize/tables.rb: update table data to Unicode version 12.0.0

	- enc/unicode/12.0.0/casefold.h, enc/unicode/12.0.0/name2ctype.h: add generated
	  files for Unicode version 12.0.0

	This is the main commit for #15321.

	add news about Unicode version update (issue #15321) to NEWS [ci skip]

	delete directory and files related to Unicode version 11.0.0

	this completes and closes feature #15321
------------------------------------------------------------------------
r66953 | naruse | 2019-01-30 23:41:42 +0900 (Wed, 30 Jan 2019) | 2 lines

Ruby 2.6 is still C90

------------------------------------------------------------------------
r66952 | naruse | 2019-01-30 22:09:26 +0900 (Wed, 30 Jan 2019) | 6 lines

merge revision(s) 66888: [Backport #15460]

* Fix rubyspec to follow IO#ungetbyte's fix
  Merge CRuby r66824
  With fixing actual spec and the version the change applied.

------------------------------------------------------------------------
r66949 | naruse | 2019-01-30 15:20:10 +0900 (Wed, 30 Jan 2019) | 13 lines

merge revision(s) 66947: [Backport #15518]

	enumerator.c: fix arith_seq_first for Infinity

	* enumerator.c (arith_seq_first): fix for Float::INFINITY.

	* test/ruby/test_arithmetic_sequence.rb: add tests.

	* numeric.c (ruby_float_step_size): export for internal use.

	* internal.h: add prototype declaration of ruby_float_step_size.

	[ruby-core:90937][Bug #15518]
------------------------------------------------------------------------
r66941 | naruse | 2019-01-29 18:19:52 +0900 (Tue, 29 Jan 2019) | 9 lines

merge revision(s) 66909: [Backport #15555]

	tmpdir.rb: permission of user given directory

	* lib/tmpdir.rb (Dir.mktmpdir): check if the permission of the
	  parent directory only when using the default temporary
	  directory, and no check against user given directory.  the
	  security is the user's responsibility in that case.
	  [ruby-core:91216] [Bug #15555]
------------------------------------------------------------------------
r66940 | naruse | 2019-01-29 14:31:00 +0900 (Tue, 29 Jan 2019) | 10 lines

merge revision(s) 66708: [Backport #15499]

	thread.c (call_without_gvl): spawn thread for UBF iff single-threaded

	We need another native thread to call some unblocking functions
	which aren't RUBY_UBF_IO or RUBY_UBF_PROCESS.  Instead of a
	permanent thread in <= 2.5, we can now rely on the thread cache
	feature to perform interrupts.

	[ruby-core:90865] [Bug #15499]
------------------------------------------------------------------------
r66939 | naruse | 2019-01-29 13:39:32 +0900 (Tue, 29 Jan 2019) | 7 lines

merge revision(s) 66938: [Backport #15488]

	Fix `Module#const_defined?` on inherited constants

	[Fix GH-2061]

	From: manga_osyo <manga.osyo@gmail.com>
------------------------------------------------------------------------
r66926 | naruse | 2019-01-26 17:02:47 +0900 (Sat, 26 Jan 2019) | 4 lines

merge revision(s) 66922: [Backport #15521]

	Upgrade CSV to 3.0.4

------------------------------------------------------------------------
r66925 | naruse | 2019-01-26 16:59:54 +0900 (Sat, 26 Jan 2019) | 7 lines

merge revision(s) 66658: [Backport #15489]

	vm_args.c: search symbol proc in super classes

	* vm_args.c (refine_sym_proc_call): traverse ancestors to search
	  inherited methods for symbol proc.
	  [ruby-dev:50741] [Bug #15489]
------------------------------------------------------------------------
r66924 | naruse | 2019-01-26 16:59:11 +0900 (Sat, 26 Jan 2019) | 16 lines

merge revision(s) 66823,66869: [Backport #15548]

	Revert "mjit_worker.c: try passing -nostdlib to AIX"

	This reverts commit b32fb23083912c37a2601c66531ed786a7c9f3e5.

	This didn't work on AIX.

	mjit_worker.c: do not use GCC_NOSTDLIB_FLAGS for OpenBSD

	OpenBSD's GCC compiler has local extensions that break when
	`-nostartfiles -nodefaultlibs -nostdlib` is used.

	From: Jeremy Evans <merch-redmine@jeremyevans.net>

	[Bug #15548]
------------------------------------------------------------------------
r66913 | naruse | 2019-01-24 10:00:07 +0900 (Thu, 24 Jan 2019) | 13 lines

merge revision(s) 66867: [Backport #15500]

	Revert r58345 and r58371.

	  These changes break the behavior of default gems. Bug #13428 says
	  r58345 is reasonable because gemspec file is installed by `to_ruby_for_cache`
	  method. But I revert `to_ruby_for_cache` in rbinstall.rb at r58403.
	  There is no reason that we apply r58345 now.

	  But I'm not sure about gemspec of default gems affects standalone gems.
	  I'm going to investigate it on rubygems/rubygems.

	  [Bug #15500][ruby-core:90867]
------------------------------------------------------------------------
r66862 | naruse | 2019-01-18 13:19:32 +0900 (Fri, 18 Jan 2019) | 9 lines

merge revision(s) 66796,66797: [Backport #15525]

	No TypeError at nil if exception: false

	[ruby-core:91021] [Bug #15525]

	No FloatDomainError at non-finitive number if exception: false

	[ruby-core:91021] [Bug #15525]
------------------------------------------------------------------------
r66855 | naruse | 2019-01-18 08:09:52 +0900 (Fri, 18 Jan 2019) | 2 lines

bump up teeny version to 2.6.1

------------------------------------------------------------------------
r66854 | naruse | 2019-01-18 08:08:10 +0900 (Fri, 18 Jan 2019) | 117 lines

merge revision(s) 66681,66682,66684,66688,66697,66751,66693,66694: [Backport #15491]

	complex.c: Optimize Complex#+ for some conditions

	Optimize f_add defined in complex.c for some specific conditions.
	It makes Complex#+ about 1.4x faster than r66678.

	Compared to r66678:

	```
	mrkn-mbp15-late2016:complex-optim-o3 mrkn$ make benchmark ITEM=complex_float_ COMPARE_RUBY=/Users/mrkn/.rbenv/versions/trunk-o3/bin/ruby
	/Users/mrkn/src/github.com/ruby/ruby/revision.h unchanged
	/Users/mrkn/.rbenv/shims/ruby --disable=gems -rrubygems -I/Users/mrkn/src/github.com/ruby/ruby/benchmark/lib /Users/mrkn/src/github.com/ruby/ruby/benchmark/benchmark-driver/exe/benchmark-driver \
	                    --executables="compare-ruby::/Users/mrkn/.rbenv/versions/trunk-o3/bin/ruby -I.ext/common --disable-gem" \
	                    --executables="built-ruby::./miniruby -I/Users/mrkn/src/github.com/ruby/ruby/lib -I. -I.ext/common  -r/Users/mrkn/src/github.com/ruby/ruby/prelude --disable-gem" \
	                    $(find /Users/mrkn/src/github.com/ruby/ruby/benchmark -maxdepth 1 -name '*complex_float_*.yml' -o -name '*complex_float_*.rb' | sort)
	Calculating -------------------------------------
	                     compare-ruby  built-ruby
	   complex_float_add       9.132M     12.864M i/s -      1.000M times in 0.109511s 0.077734s
	   complex_float_div     600.723k    627.878k i/s -      1.000M times in 1.664662s 1.592666s
	   complex_float_mul       2.320M      2.347M i/s -      1.000M times in 0.431039s 0.426113s
	   complex_float_new       1.473M      1.489M i/s -      1.000M times in 0.678791s 0.671750s
	 complex_float_power       1.690M      1.722M i/s -      1.000M times in 0.591863s 0.580775s
	   complex_float_sub       8.870M      9.516M i/s -      1.000M times in 0.112740s 0.105091s

	Comparison:
	                complex_float_add
	          built-ruby:  12864383.7 i/s
	        compare-ruby:   9131502.8 i/s - 1.41x  slower

	                complex_float_div
	          built-ruby:    627878.0 i/s
	        compare-ruby:    600722.5 i/s - 1.05x  slower

	                complex_float_mul
	          built-ruby:   2346795.3 i/s
	        compare-ruby:   2319975.7 i/s - 1.01x  slower

	                complex_float_new
	          built-ruby:   1488649.1 i/s
	        compare-ruby:   1473207.5 i/s - 1.01x  slower

	              complex_float_power
	          built-ruby:   1721837.2 i/s
	        compare-ruby:   1689580.2 i/s - 1.02x  slower

	                complex_float_sub
	          built-ruby:   9515562.7 i/s
	        compare-ruby:   8869966.3 i/s - 1.07x  slower
	```

	suppress warning: method redefined; discarding old + introduced at r66681

	complex.c: fix indentation

	complex.c: fix against redefining component methods

	This fixes the incompatibility (maybe unintentionally) introduced by
	removal of `#ifndef PRESERVE_SIGNEDZERO` guards in f_add, f_mul, and
	f_sub functions in r62701.  [Bug #15491] [ruby-core:90843]

	complex.c: Optimize Complex#* and Complex#**

	Optimize f_mul for the core numeric class components.
	This change improves the computation time of Complex#* and Complex#**.

	```
	$ make benchmark ITEM=complex_float_ COMPARE_RUBY=/Users/mrkn/.rbenv/versions/2.6.0/bin/ruby
	generating known_errors.inc
	known_errors.inc unchanged
	/Users/mrkn/src/github.com/ruby/ruby/revision.h unchanged
	/Users/mrkn/.rbenv/shims/ruby --disable=gems -rrubygems -I/Users/mrkn/src/github.com/ruby/ruby/benchmark/lib /Users/mrkn/src/github.com/ruby/ruby/benchmark/benchmark-driver/exe/benchmark-driver \
	                    --executables="compare-ruby::/Users/mrkn/.rbenv/versions/2.6.0/bin/ruby -I.ext/common --disable-gem" \
	                    --executables="built-ruby::./miniruby -I/Users/mrkn/src/github.com/ruby/ruby/lib -I. -I.ext/common  -r/Users/mrkn/src/github.com/ruby/ruby/prelude --disable-gem" \
	                    $(find /Users/mrkn/src/github.com/ruby/ruby/benchmark -maxdepth 1 -name '*complex_float_*.yml' -o -name '*complex_float_*.rb' | sort)
	Calculating -------------------------------------
	                     compare-ruby  built-ruby
	   complex_float_add       6.558M     13.012M i/s -      1.000M times in 0.152480s 0.076850s
	   complex_float_div     576.821k    567.969k i/s -      1.000M times in 1.733640s 1.760660s
	   complex_float_mul       1.690M      2.628M i/s -      1.000M times in 0.591786s 0.380579s
	   complex_float_new       1.350M      1.268M i/s -      1.000M times in 0.740669s 0.788762s
	 complex_float_power       1.571M      1.835M i/s -      1.000M times in 0.636507s 0.544909s
	   complex_float_sub       8.635M      8.779M i/s -      1.000M times in 0.115814s 0.113906s

	Comparison:
	                complex_float_add
	          built-ruby:  13012361.7 i/s
	        compare-ruby:   6558237.1 i/s - 1.98x  slower

	                complex_float_div
	        compare-ruby:    576821.0 i/s
	          built-ruby:    567968.8 i/s - 1.02x  slower

	                complex_float_mul
	          built-ruby:   2627575.4 i/s
	        compare-ruby:   1689800.0 i/s - 1.55x  slower

	                complex_float_new
	        compare-ruby:   1350130.8 i/s
	          built-ruby:   1267809.6 i/s - 1.06x  slower

	              complex_float_power
	          built-ruby:   1835168.8 i/s
	        compare-ruby:   1571074.6 i/s - 1.17x  slower

	                complex_float_sub
	          built-ruby:   8779168.8 i/s
	        compare-ruby:   8634534.7 i/s - 1.02x  slower
	```

	complex.c: replace misused UNLIKELY with LIKELY

	test_complex.rb: fix tests for RUBYOPT="-w"

	test_complex.rb: use the same approach to fix failures

	as r66682.
------------------------------------------------------------------------
r66853 | naruse | 2019-01-18 07:08:56 +0900 (Fri, 18 Jan 2019) | 13 lines

merge revision(s) 66832: [Backport #15536]

	st.c (rb_hash_bulk_insert_into_st_table): avoid out-of-bounds write

	"hash_bulk_insert" first expands the table, but the target size was
	wrong: it was calculated by "num_entries + (size to buld insert)", but
	it was wrong when "num_entries < entries_bound", i.e., it has a deleted
	entry.  "hash_bulk_insert" adds the given entries from entries_bound,
	which led to out-of-bounds write access.  [Bug #15536]

	As a simple fix, this commit changes the calculation to "entries_bound +
	size".  I'm afraid if this might be inefficient, but I think it is safe
	anyway.
------------------------------------------------------------------------
r66852 | naruse | 2019-01-18 07:07:55 +0900 (Fri, 18 Jan 2019) | 7 lines

merge revision(s) 66779: [Backport #15520]

	configure: refuse to build with jemalloc when header is missing

	[ruby-core:90964] [Bug #15520]

	Freom: Misty De Meo <mistydemeo@github.com>
------------------------------------------------------------------------
r66851 | naruse | 2019-01-18 07:03:14 +0900 (Fri, 18 Jan 2019) | 3 lines

merge revision(s) 66819: [Backport #15532]

	ast.c: fix missing head part in dynamic literal
------------------------------------------------------------------------
r66850 | naruse | 2019-01-18 06:55:11 +0900 (Fri, 18 Jan 2019) | 5 lines

merge revision(s) 66817: [Backport #15513]

	mjit_worker.c: pass -nostdlib when making pch as well

	[Bug #15513]
------------------------------------------------------------------------
r66849 | naruse | 2019-01-18 06:54:24 +0900 (Fri, 18 Jan 2019) | 36 lines

merge revision(s) 66811,66812,66816: [Backport #15522]

	mjit_worker.c: untangle CC_LIBS nesting

	This should have no impact.
	The CC_LIBS was too hard to read for human.

	I don't remember whether the order of -lmsvcrt and -lgcc matters or not,
	but I kept that for the best safety.

	mjit_worker.c: pass -lgcc to GCC platforms

	using `-nodefaultlibs -nostdlib`.

	I assume libgcc is needed when we use -nostdlib, and it's linked on some
	platforms but not linked on some platforms (like aarch64, and possibly
	AIX as well) as said in https://wiki.osdev.org/Libgcc :

	> You can link with libgcc by passing -lgcc when linking your kernel
	with your compiler. You don't need to do this unless you pass the
	-nodefaultlibs option (implied by -nostdlib)

	Also note that -nostdlib is not strictly needed (rather implied
	-nodefaultlibs is problematic for Gentoo like Bug#15513, which will be
	approached later) but helpful for performance. So I want to keep it for
	now.

	[Bug #15522]

	I'm not trying to add `-nodefaultlibs -nostdlib` for AIX in this commit
	because AIX RubyCI is dead right now, but I'll try to add them again
	once RubyCI is fixed.

	mjit_worker.c: try passing -nostdlib to AIX

	r66812 might have allowed this. Testing.
------------------------------------------------------------------------
r66848 | naruse | 2019-01-18 06:46:40 +0900 (Fri, 18 Jan 2019) | 10 lines

merge revision(s) 66838: [Backport #15540]

	dir.c: fix Dir.glob with braces and matching dir

	* dir.c (join_path_from_pattern): add the last slash for directory
	  matching.

	* test/ruby/test_dir.rb (test_glob_recursive_directory): add a test
	  for above.
	  [ruby-core:91110] [Bug #15540]
------------------------------------------------------------------------
r66847 | naruse | 2019-01-18 06:39:14 +0900 (Fri, 18 Jan 2019) | 10 lines

merge revision(s) 66756: [Backport #15479]

	Mark array as "going to be modified" in `Array#reject!`

	Before this patch, if `reject!` is called on a shared array it can
	mutate the shared array rather than a copy.  This patch marks the array
	as "going to be modified" so that the shared source array isn't
	mutated.

	[Bug #15479] [ruby-core:90781]
------------------------------------------------------------------------
r66846 | svn | 2019-01-18 06:36:20 +0900 (Fri, 18 Jan 2019) | 1 line

* 2019-01-18
------------------------------------------------------------------------
r66845 | naruse | 2019-01-18 06:36:17 +0900 (Fri, 18 Jan 2019) | 17 lines

merge revision(s) 66760,66761,66824: [Backport #15460]

	Follow behaviour of IO#ungetbyte

	see r65802 and [Bug #14359]

	* expand tabs.

	setbyte / ungetbyte allow out-of-range integers

	* string.c: String#setbyte to accept arbitrary integers [Bug #15460]

	* io.c: ditto for IO#ungetbyte

	* ext/strringio/stringio.c: ditto for StringIO#ungetbyte


------------------------------------------------------------------------
r66829 | naruse | 2019-01-15 18:06:51 +0900 (Tue, 15 Jan 2019) | 8 lines

merge revision(s) 66767: [Backport #15399]

	insns.def (duparray, duphash): add dtrace hooks

	They are considered Array and Hash creation events, so
	allow dtrace (and systemtap) to track those creations.

	Co-Authored-By: Eric Wong <e@80x24.org>
------------------------------------------------------------------------
r66828 | naruse | 2019-01-15 18:00:14 +0900 (Tue, 15 Jan 2019) | 5 lines

merge revision(s) 66788: [Backport #15498]

	Update refinements docs

	Co-Authored-By: Vladimir Dementyev <dementiev.vm@gmail.com>
------------------------------------------------------------------------
r66827 | naruse | 2019-01-15 17:55:56 +0900 (Tue, 15 Jan 2019) | 5 lines

merge revision(s) 66736: [Backport #15511]

	ast.c: argument must be a string

	[ruby-core:90904] [Bug #15511]
------------------------------------------------------------------------
r66826 | naruse | 2019-01-15 17:55:11 +0900 (Tue, 15 Jan 2019) | 5 lines

merge revision(s) 66745: [Backport #15512]

	Bump version to date-2.0.0.

	  I forgot to change it when Ruby 2.6.0 was released.
------------------------------------------------------------------------
r66825 | naruse | 2019-01-15 17:53:40 +0900 (Tue, 15 Jan 2019) | 5 lines

merge revision(s) 66735: [Backport #15506]

	Fix mday overflow

	[ruby-core:90897] [Bug #15506]
------------------------------------------------------------------------
r66815 | naruse | 2019-01-14 15:38:34 +0900 (Mon, 14 Jan 2019) | 13 lines

merge revision(s) 66595: [Backport #15471]

	fix missed script_compiled events. [Bug #15471]

	* ruby.c (process_options): script_compiled events are missed on
	  command line -e or specified file. this commit fix it.
	  [Bug #15471]

	  This patch should be backport to Ruby 2.6 branch.

	* vm_core.h (rb_exec_event_hook_script_compiled): introduce utility
	  function to invoke a script_compiled event.

------------------------------------------------------------------------
r66814 | svn | 2019-01-14 15:34:03 +0900 (Mon, 14 Jan 2019) | 1 line

* 2019-01-14
------------------------------------------------------------------------
r66813 | naruse | 2019-01-14 15:34:02 +0900 (Mon, 14 Jan 2019) | 13 lines

merge revision(s) 66670,66676: [Backport #15476]

	compile.c: support branch coverage for `a&.foo = 1`

	[Bug #15476]

	compile.c (iseq_set_sequence): fix branch coverage table

	Not only TRACE_ELEMENT but also INSN_ELEMENT may have events.
	The old pc2branchindex was created using only events of TRACE_ELEMENTs.
	This change uses events of INSN_ELEMENTs too for pc2branchindex table.

	[Bug #15476]
------------------------------------------------------------------------
r66800 | naruse | 2019-01-13 06:04:31 +0900 (Sun, 13 Jan 2019) | 3 lines

merge revision(s) 66768: [Backport #15519]

	Get rid of C99 feature for now [ruby-core:90949] [Bug #15519]
------------------------------------------------------------------------
r66799 | naruse | 2019-01-13 06:02:26 +0900 (Sun, 13 Jan 2019) | 37 lines

merge revision(s) 66582: [Backport #15468][Backport #15472]

	Fix Net::Protocol::BufferedIO#write when sending large multi-byte string

	This commit should fix Net::Protocol::BufferedIO#write when sending
	large multi-byte string like following example.

	```
	$ ruby -rnet/http -rjson -v -e "Net::HTTP.post(URI('http://httpbin.org/post'), { text: '?'*100_000 }.to_json, 'Content-Type' => 'application/json')"
	ruby 2.6.0p0 (2018-12-25 revision 66547) [x86_64-linux]
	Traceback (most recent call last):
	        19: from -e:1:in `<main>'
	        18: from lib/ruby/2.6.0/net/http.rb:500:in `post'
	        17: from lib/ruby/2.6.0/net/http.rb:605:in `start'
	        16: from lib/ruby/2.6.0/net/http.rb:920:in `start'
	        15: from lib/ruby/2.6.0/net/http.rb:502:in `block in post'
	        14: from lib/ruby/2.6.0/net/http.rb:1281:in `post'
	        13: from lib/ruby/2.6.0/net/http.rb:1493:in `send_entity'
	        12: from lib/ruby/2.6.0/net/http.rb:1479:in `request'
	        11: from lib/ruby/2.6.0/net/http.rb:1506:in `transport_request'
	        10: from lib/ruby/2.6.0/net/http.rb:1506:in `catch'
	         9: from lib/ruby/2.6.0/net/http.rb:1507:in `block in transport_request'
	         8: from lib/ruby/2.6.0/net/http/generic_request.rb:123:in `exec'
	         7: from lib/ruby/2.6.0/net/http/generic_request.rb:189:in `send_request_with_body'
	         6: from lib/ruby/2.6.0/net/protocol.rb:247:in `write'
	         5: from lib/ruby/2.6.0/net/protocol.rb:265:in `writing'
	         4: from lib/ruby/2.6.0/net/protocol.rb:248:in `block in write'
	         3: from lib/ruby/2.6.0/net/protocol.rb:275:in `write0'
	         2: from lib/ruby/2.6.0/net/protocol.rb:275:in `each_with_index'
	         1: from lib/ruby/2.6.0/net/protocol.rb:275:in `each'
	lib/ruby/2.6.0/net/protocol.rb:280:in `block in write0': undefined method `bytesize' for nil:NilClass (NoMethodError)
	```

	[Fix GH-2058]

	From: Eito Katagiri <eitoball@gmail.com>

------------------------------------------------------------------------
r66729 | naruse | 2019-01-06 06:33:26 +0900 (Sun, 06 Jan 2019) | 7 lines

merge revision(s) 66699: [Backport #15494]

	Fix Random.urandom in a chroot on OpenBSD

	[ruby-core:90850] [Bug #15494]

	From: jeremyevans0 (Jeremy Evans) <merch-redmine@jeremyevans.net>
------------------------------------------------------------------------
r66728 | naruse | 2019-01-06 06:25:49 +0900 (Sun, 06 Jan 2019) | 5 lines

merge revision(s) 66685,66686: [Backport #15502]

	Try to update cert

	Try to update cert (2nd try)
------------------------------------------------------------------------
r66563 | naruse | 2018-12-26 02:05:20 +0900 (Wed, 26 Dec 2018) | 3 lines

merge revision(s) 66533:

	Add ruby_2_6 branch to .travis.yml
------------------------------------------------------------------------
r66562 | naruse | 2018-12-26 02:03:10 +0900 (Wed, 26 Dec 2018) | 3 lines

merge revision(s) 66553:

	Set typeflag [Bug #15461]
------------------------------------------------------------------------
r66549 | naruse | 2018-12-25 17:50:27 +0900 (Tue, 25 Dec 2018) | 7 lines

merge revision(s) 66548:

	fix a test by restoring value checking.

	* test/ruby/test_literal.rb (test_hash_literal_frozen): restore value
	  checking code which is removed accidentaly at r66466.

------------------------------------------------------------------------
r66546 | naruse | 2018-12-25 15:17:00 +0900 (Tue, 25 Dec 2018) | 2 lines

v2.6.0p0

------------------------------------------------------------------------
r66545 | naruse | 2018-12-25 15:00:37 +0900 (Tue, 25 Dec 2018) | 3 lines

merge revision(s) 66539:

	io-console: bump to 0.4.7
------------------------------------------------------------------------
r66544 | naruse | 2018-12-25 15:00:14 +0900 (Tue, 25 Dec 2018) | 7 lines

merge revision(s) 66538:

	vm_insnhelper.c: use COLDFUNC

	COLDFUNC is introduced in r66228.  Use it for pre-existing
	__attribute__((__cold__)) usages.

------------------------------------------------------------------------
r66543 | naruse | 2018-12-25 14:58:52 +0900 (Tue, 25 Dec 2018) | 3 lines

merge revision(s) 66537:

	[DOC] Fix typos [ci skip]
------------------------------------------------------------------------
r66542 | naruse | 2018-12-25 14:57:55 +0900 (Tue, 25 Dec 2018) | 7 lines

merge revision(s) 66536:

	Import REXML 3.1.9

	It restores removed REXML::Parsers::BaseParser::UNQME_STR.
	Because it's used by kramdown.

------------------------------------------------------------------------
r66541 | naruse | 2018-12-25 14:57:13 +0900 (Tue, 25 Dec 2018) | 5 lines

merge revision(s) 66535:

	Import bigdecimal 1.4.1

	* https://github.com/ruby/bigdecimal/compare/v1.4.0..v1.4.1
------------------------------------------------------------------------
r66540 | naruse | 2018-12-25 14:56:17 +0900 (Tue, 25 Dec 2018) | 5 lines

merge revision(s) 66534:

	Mention rb_gc_register_mark_object [ci skip]

	[Feature #9894]
------------------------------------------------------------------------
r66532 | naruse | 2018-12-25 07:13:36 +0900 (Tue, 25 Dec 2018) | 1 line

Release branch of Ruby 2.6
------------------------------------------------------------------------
r66531 | naruse | 2018-12-25 07:09:40 +0900 (Tue, 25 Dec 2018) | 1 line

exception bactrace in reverse order is Ruby 2.5 feature
------------------------------------------------------------------------
r66530 | stomar | 2018-12-25 06:14:38 +0900 (Tue, 25 Dec 2018) | 4 lines

Small improvement in refinements docs

Move general statement about refinements of modules
from example to the top of the document.
------------------------------------------------------------------------
r66529 | svn | 2018-12-25 05:41:19 +0900 (Tue, 25 Dec 2018) | 1 line

* 2018-12-25
------------------------------------------------------------------------
r66528 | stomar | 2018-12-25 05:41:15 +0900 (Tue, 25 Dec 2018) | 1 line

complex.c, object.c: [DOC] improve "exception: false" docs
------------------------------------------------------------------------
r66527 | hsbt | 2018-12-24 20:03:52 +0900 (Mon, 24 Dec 2018) | 1 line

Added entry for RubyGems 3.0.1 to NEWS.
------------------------------------------------------------------------
r66526 | stomar | 2018-12-24 19:52:44 +0900 (Mon, 24 Dec 2018) | 1 line

NEWS: various improvements
------------------------------------------------------------------------
r66525 | knu | 2018-12-24 17:11:49 +0900 (Mon, 24 Dec 2018) | 1 line

Document the "cause" keyword argument for raise
------------------------------------------------------------------------
r66524 | k0kubun | 2018-12-24 12:50:39 +0900 (Mon, 24 Dec 2018) | 5 lines

test_win32ole_event.rb: use better retry strategy

because
https://ci.appveyor.com/project/ruby/ruby/builds/21208728/job/lm5k0lxnn51pcljl
seems to fail with just sleeping
------------------------------------------------------------------------
r66523 | k0kubun | 2018-12-24 12:48:32 +0900 (Mon, 24 Dec 2018) | 1 line

test_win32ole_event.rb: avoid unlimited retries
------------------------------------------------------------------------
r66522 | ko1 | 2018-12-24 11:02:47 +0900 (Mon, 24 Dec 2018) | 9 lines

remove "deprecated" for rb_frame_method_id_and_class [Bug #15300]

* include/ruby/backward.h (rb_frame_method_id_and_class): we had labeled
  `rb_frame_method_id_and_class()` as deprecated because MRI internal
  doesn't use it, but we found there are user of this API in external
  C-extensions. Now we don't have proper alternative API and no time
  to make alternative API, so I remove "deprecated" label.
  [Bug #15300]

------------------------------------------------------------------------
r66521 | nobu | 2018-12-24 10:56:21 +0900 (Mon, 24 Dec 2018) | 1 line

Compact AST::Node#inspect
------------------------------------------------------------------------
r66520 | nobu | 2018-12-24 10:46:48 +0900 (Mon, 24 Dec 2018) | 6 lines

time.c: zone in fixoff mode

* time.c (time_set_utc_offset): reset zone when setting to fixoff
  mode.  while previously TZMODE_SET_FIXOFF has reset it always,
  the zone is kept for loaded zone since r65025.
  [ruby-core:90627] [Bug #15439]
------------------------------------------------------------------------
r66519 | nobu | 2018-12-24 09:48:15 +0900 (Mon, 24 Dec 2018) | 3 lines

enumerator.c: fix inspect with the last empty hash

[ruby-core:90685] [Bug #15455]
------------------------------------------------------------------------
r66518 | mrkn | 2018-12-24 03:54:51 +0900 (Mon, 24 Dec 2018) | 1 line

Add test case of ArithmeticSequence#sum
------------------------------------------------------------------------
r66517 | mrkn | 2018-12-24 03:32:03 +0900 (Mon, 24 Dec 2018) | 3 lines

NEWS: Update for bigdecimal future plan

[ci skip]
------------------------------------------------------------------------
r66516 | mrkn | 2018-12-24 03:32:01 +0900 (Mon, 24 Dec 2018) | 3 lines

Import bigdecimal-1.4.0

* https://github.com/ruby/bigdecimal/compare/v1.4.0.pre.20181220a..v1.4.0
------------------------------------------------------------------------
r66515 | svn | 2018-12-24 00:02:23 +0900 (Mon, 24 Dec 2018) | 1 line

* 2018-12-24
------------------------------------------------------------------------
r66514 | ko1 | 2018-12-24 00:02:17 +0900 (Mon, 24 Dec 2018) | 9 lines

move checking code.

* gc.c (gc_mark_ptr): this check was introduced by accidentaly
  (this is why message is "...", crazy simple) for debugging.
  However, this check is useful because if there is T_NONE
  object here, we can't know which object points to it.
  For debugging reason, I remain this checking code and
  set reasonable error message.

------------------------------------------------------------------------
r66513 | ko1 | 2018-12-23 23:58:41 +0900 (Sun, 23 Dec 2018) | 8 lines

fix marking T_NONE object bug.

* array.c (rb_ary_splice): do not use RARRAY_PTR() here because it can cause
  GC because of rb_ary_detransient(). Here ary can contain T_NONE object
  because of increasing capacity and not initialized yet.

  error log: http://ci.rvm.jp/results/trunk-test@ruby-sky1/1557174

------------------------------------------------------------------------
r66512 | aycabta | 2018-12-23 22:15:17 +0900 (Sun, 23 Dec 2018) | 1 line

Add RDoc section to NEWS
------------------------------------------------------------------------
r66511 | aycabta | 2018-12-23 22:14:28 +0900 (Sun, 23 Dec 2018) | 1 line

Merge RDoc 6.1.0 from upstream
------------------------------------------------------------------------
r66510 | nobu | 2018-12-23 20:11:36 +0900 (Sun, 23 Dec 2018) | 1 line

Prohibit circular causes [Bug #15447]
------------------------------------------------------------------------
r66509 | nobu | 2018-12-23 20:11:35 +0900 (Sun, 23 Dec 2018) | 1 line

remove trailing spaces [ci skip]
------------------------------------------------------------------------
r66508 | normal | 2018-12-23 17:42:44 +0900 (Sun, 23 Dec 2018) | 6 lines

test/ruby/test_thread.rb (test_fork_while_parent_locked): rewrite to avoid OOM

Instead of using a torture test, trigger the condition for the old
segfault in [Bug #15383] exactly.

[ruby-core:90676] [Bug #15430]
------------------------------------------------------------------------
r66507 | kou | 2018-12-23 16:00:35 +0900 (Sun, 23 Dec 2018) | 5 lines

Import CSV 3.0.2

This includes performance improvement especially writing. Writing is
about 2 times faster.

------------------------------------------------------------------------
r66506 | nobu | 2018-12-23 14:49:43 +0900 (Sun, 23 Dec 2018) | 1 line

Restrict cause to an exception object [Bug #15447]
------------------------------------------------------------------------
r66505 | marcandre | 2018-12-23 12:43:45 +0900 (Sun, 23 Dec 2018) | 3 lines

Struct#to_h: Add doc for block form.

Patch by Shuji Kobayashi [doc] [ci skip] [#15454]
------------------------------------------------------------------------
r66504 | k0kubun | 2018-12-23 10:58:33 +0900 (Sun, 23 Dec 2018) | 4 lines

.travis.yml: refine explanation of no -j3 on osx [ci skip]

With travis_wait, we may not need -j3 for test-all anymore, but still we
need to avoid hanging on building Ruby somehow.
------------------------------------------------------------------------
r66503 | k0kubun | 2018-12-23 10:40:33 +0900 (Sun, 23 Dec 2018) | 5 lines

test/fiddle/test_function.rb: loosen timeout

We're hitting `Expected |200 - 351| (151) to be <= 150.` in several places:
https://rubyci.org/logs/rubyci.s3.amazonaws.com/osx1012/ruby-trunk/log/20181215T094505Z.fail.html.gz
https://travis-ci.org/ruby/ruby/jobs/471483171
------------------------------------------------------------------------
r66502 | k0kubun | 2018-12-23 10:35:14 +0900 (Sun, 23 Dec 2018) | 3 lines

.travis.yml: wrap setarch with travis_wait

because travis_wait is not found via setarch
------------------------------------------------------------------------
r66501 | k0kubun | 2018-12-23 10:10:06 +0900 (Sun, 23 Dec 2018) | 4 lines

.travis.yml: try travis_wait instead of -v

Using -v somehow makes test-all on osx stable. Let me check if travis_wait
solves the issue or not.
------------------------------------------------------------------------
r66500 | k0kubun | 2018-12-23 09:45:11 +0900 (Sun, 23 Dec 2018) | 3 lines

iseq.c: avoid Null pointer dereference

detected by coverity scan
------------------------------------------------------------------------
r66499 | hsbt | 2018-12-23 09:20:49 +0900 (Sun, 23 Dec 2018) | 4 lines

Merge RubyGems 3.0.1 from rubygems/rubygems.

  It fixed the issues of RubyGems 3.0.0.
  https://blog.rubygems.org/2018/12/23/3.0.1-released.html
------------------------------------------------------------------------
r66498 | normal | 2018-12-23 07:39:31 +0900 (Sun, 23 Dec 2018) | 5 lines

{complex,object,rational}.c: document exception: false

From: Victor Shepelev <zverok.offline@gmail.com>

[ruby-core:90673] [Bug #15452]
------------------------------------------------------------------------
r66497 | svn | 2018-12-23 02:05:05 +0900 (Sun, 23 Dec 2018) | 1 line

* 2018-12-23
------------------------------------------------------------------------
r66496 | marcandre | 2018-12-23 02:05:03 +0900 (Sun, 23 Dec 2018) | 3 lines

ostruct.rb: Accept block for to_h [#15451].

Patch by Shuji Kobayashi.
------------------------------------------------------------------------
r66495 | nobu | 2018-12-22 19:23:06 +0900 (Sat, 22 Dec 2018) | 1 line

Use idException
------------------------------------------------------------------------
r66494 | normal | 2018-12-22 17:08:03 +0900 (Sat, 22 Dec 2018) | 7 lines

test/ruby/test_thread.rb (test_fork_while_parent_locked): reduce threads

Reduce thread counts unconditionally for some CI systems with
low limits..  And Solaris apparently lacks RLIMIT_NPROC, so we
can't detect resource limits and scale the test appropriately.

[ruby-core:90670] [Bug #15430]
------------------------------------------------------------------------
r66493 | nobu | 2018-12-22 16:14:14 +0900 (Sat, 22 Dec 2018) | 4 lines

Fix for circular causes

* eval_error.c (show_cause): get rid of infinite recursion on
  circular causes.  [Bug #15447]
------------------------------------------------------------------------
r66492 | nobu | 2018-12-22 16:14:13 +0900 (Sat, 22 Dec 2018) | 1 line

Removed garbage output
------------------------------------------------------------------------
r66491 | nobu | 2018-12-22 16:14:12 +0900 (Sat, 22 Dec 2018) | 1 line

Moved regexps not to confuse ruby-mode.el
------------------------------------------------------------------------
r66490 | k0kubun | 2018-12-22 10:43:45 +0900 (Sat, 22 Dec 2018) | 3 lines

benchmark/app_erb.yml: remove unused variable

https://github.com/ruby/ruby/commit/3efcb74036af32cbcc889d06d8c6c546289e89f4#r31762996
------------------------------------------------------------------------
r66489 | normal | 2018-12-22 10:41:18 +0900 (Sat, 22 Dec 2018) | 15 lines

thread_sync.c (rb_mutex_t): eliminate fork_gen

The true bug fork_gen was hiding was rb_mutex_abandon_locking_mutex
failing to unconditionally clear the waitq of mutexes it was
waiting on.  So we fix rb_mutex_abandon_locking_mutex, instead,
and eliminate rb_mutex_cleanup_keeping_mutexes.

This commit was tested heavily on a single-core Pentium-M which
was my most reliable reproducer of the "crash.rb" script from
[Bug #15383]

[Bug #14578] [Bug #15383]

Note: [Bug #15430] turned out to be an entirely different
problem: RLIMIT_NPROC limit was hit on the CI VMs.
------------------------------------------------------------------------
r66488 | normal | 2018-12-22 08:32:36 +0900 (Sat, 22 Dec 2018) | 7 lines

test/ruby/test_thread.rb: reduce thread count to avoid SIGKILL

Perhaps this error report is down to resource limits on a VM:

http://rubyci.s3.amazonaws.com/centos7/ruby-trunk/log/20181221T230003Z.fail.html.gz

But rb_mutex_t.fork_gen is still redundant, I think.
------------------------------------------------------------------------
r66487 | normal | 2018-12-22 06:44:09 +0900 (Sat, 22 Dec 2018) | 6 lines

test/ruby/test_thread.rb: add diagnosis code for [Bug #15430]

I can't find stderr in the test-all output of the CI machine,
so maybe the assertion will show what's going on.

http://rubyci.s3.amazonaws.com/centos7/ruby-trunk/log/20181221T170003Z.log.html.gz#test-all
------------------------------------------------------------------------
r66486 | k0kubun | 2018-12-22 01:36:37 +0900 (Sat, 22 Dec 2018) | 1 line

.travis.yml: use -v for osx to find a blocking test
------------------------------------------------------------------------
r66485 | k0kubun | 2018-12-22 01:19:31 +0900 (Sat, 22 Dec 2018) | 1 line

../arith_seq/../extract.c: remove unused variable
------------------------------------------------------------------------
r66484 | k0kubun | 2018-12-22 01:07:41 +0900 (Sat, 22 Dec 2018) | 6 lines

.travis.yml: give up parallel build for osx

Even building ruby seems to hang for unknown reasons.
https://travis-ci.org/ruby/ruby/jobs/471021727

Travis's osx environment is too fragile. Avoid anything dangerous.
------------------------------------------------------------------------
r66483 | svn | 2018-12-22 00:07:19 +0900 (Sat, 22 Dec 2018) | 1 line

* 2018-12-22
------------------------------------------------------------------------
r66482 | k0kubun | 2018-12-22 00:07:18 +0900 (Sat, 22 Dec 2018) | 14 lines

.travis.yml: avoid using -j3 for osx

osx build has failed too often. we don't know why.

To know which test hangs forever, we might want to have hard timeout for
all test case (like 9min, slightly less than no-output timeout) in test-all.
But it's a little hard to implement and I would workaround an unknown
cause somehow.

It's known that -j is harmful for some tests in test-all. Let's try to
remove it first, and if it doesn't work, I'll resurrect -v option to
easily know which test is the culprit.

Slow correctness is much better than fast false-positive.
------------------------------------------------------------------------
r66481 | svn | 2018-12-21 23:33:26 +0900 (Fri, 21 Dec 2018) | 1 line

* properties.
------------------------------------------------------------------------
r66480 | k0kubun | 2018-12-21 23:33:25 +0900 (Fri, 21 Dec 2018) | 4 lines

test/excludes/_wercker: give up testing TestGemRemoteFetcher

The tests are really fragile with --jit-wait and it doesn't have interface
to modify this timeout at all.
------------------------------------------------------------------------
r66479 | k0kubun | 2018-12-21 23:01:49 +0900 (Fri, 21 Dec 2018) | 4 lines

test_jit.rb: show debug info for success_count test

to investigate
https://rubyci.org/logs/rubyci.s3.amazonaws.com/unstable11s/ruby-trunk/log/20181221T092505Z.fail.html.gz
------------------------------------------------------------------------
r66478 | mrkn | 2018-12-21 22:05:16 +0900 (Fri, 21 Dec 2018) | 4 lines

range.c: reject ArithmeticSequence in rb_range_values

Reject ArithmeticSequence in rb_range_values so that methods like
Array#[] raises TypeError for ArithmeticSequence as an index.
------------------------------------------------------------------------
r66477 | normal | 2018-12-21 21:32:52 +0900 (Fri, 21 Dec 2018) | 8 lines

thread_sync.c (rb_mutex_cleanup_keeping_mutexes): update fork_gen

... when clearing waitq. Otherwise, we risk redundantly clearing
valid waiters in future calls to `mutex_ptr`.

Note: I am not sure if this fixes [Bug #15430], and even if it
did, fork_gen is a belt-and-suspenders redundancy for [Bug #15383]
which wastes one word for every Mutex object.
------------------------------------------------------------------------
r66476 | normal | 2018-12-21 21:32:48 +0900 (Fri, 21 Dec 2018) | 5 lines

thread_sync.c (rb_mutex_abandon_keeping_mutexes): remove unnecessary check

rb_mutex_abandon_all functions fine when passed a NULL value,
so let the compiler deal with the complexity of the branch
instead of the person reading the code.
------------------------------------------------------------------------
r66475 | mame | 2018-12-21 20:44:21 +0900 (Fri, 21 Dec 2018) | 3 lines

eval_error.c (show_cause): check if cause is an Exception or not

Fixes [Bug #15447]
------------------------------------------------------------------------
r66474 | mrkn | 2018-12-21 09:03:39 +0900 (Fri, 21 Dec 2018) | 5 lines

enumerator.c: Fix airth_seq_each for Rational

Fix the wrong uses of rb_int_ge in arith_seq_each.

[ruby-core:90648] [Bug #15444]
------------------------------------------------------------------------
r66473 | mrkn | 2018-12-21 08:29:49 +0900 (Fri, 21 Dec 2018) | 3 lines

Import bigdecimal-1.4.0.pre.20181220a

* https://github.com/ruby/bigdecimal/compare/v1.4.0.pre.20181214a..v1.4.0.pre.20181220a
------------------------------------------------------------------------
r66472 | nobu | 2018-12-21 08:21:50 +0900 (Fri, 21 Dec 2018) | 1 line

iseq.c: resurrect literal hash operands
------------------------------------------------------------------------
r66471 | stomar | 2018-12-21 07:54:36 +0900 (Fri, 21 Dec 2018) | 1 line

NEWS: small improvements
------------------------------------------------------------------------
r66470 | svn | 2018-12-21 06:17:15 +0900 (Fri, 21 Dec 2018) | 1 line

* 2018-12-21
------------------------------------------------------------------------
r66469 | nobu | 2018-12-21 06:17:11 +0900 (Fri, 21 Dec 2018) | 5 lines

A couple of small English fixes [ci skip]

[Fix GH-2052]

From: Jon Burgess <jkburges@gmail.com>
------------------------------------------------------------------------
r66468 | mame | 2018-12-20 19:17:37 +0900 (Thu, 20 Dec 2018) | 5 lines

ext/coverage/lib/coverage.rb (Coverage.line_stub): use only line events

It wrongly used all linenos of ISeq#trace_points which includes not only
line events but also call, return, and other events.  So, the result
included some linenos that can not be covered at all by line coverage.
------------------------------------------------------------------------
r66467 | kazu | 2018-12-20 18:55:05 +0900 (Thu, 20 Dec 2018) | 3 lines

[DOC] Update CI build status badges [ci skip]

copy from README.md
------------------------------------------------------------------------
r66466 | ko1 | 2018-12-20 16:17:55 +0900 (Thu, 20 Dec 2018) | 7 lines

hide iseq operand object for duphash. [Bug #15440]

* compile.c (compile_array): hide source Hash object.

* hash.c (rb_hash_resurrect): introduced to dup Hash object
  using rb_cHash.

------------------------------------------------------------------------
r66465 | nobu | 2018-12-20 15:59:27 +0900 (Thu, 20 Dec 2018) | 1 line

Test separately to get rid of risk to modify unrelated hash
------------------------------------------------------------------------
r66464 | nobu | 2018-12-20 15:44:50 +0900 (Thu, 20 Dec 2018) | 23 lines

Freeze hash literals embedded in duphash instructions

Previously, these hash literals were not frozen, and thus could be
modified by ObjectSpace, resulting in undesired behavior.  Example:

```ruby
require 'objspace'

def a(b={0=>1,1=>4,2=>17})
  b
end

p a
ObjectSpace.each_object(Hash) do |a|
  a[3] = 8 if a.class == Hash && a[0] == 1 && a[1] == 4 && a[2] == 17
end
p a
```

It may be desirable to hide such hashes from ObjectSpace, since
they are internal, but I'm not sure how to do that.

From: Jeremy Evans <code@jeremyevans.net>
------------------------------------------------------------------------
r66463 | nobu | 2018-12-20 14:43:15 +0900 (Thu, 20 Dec 2018) | 5 lines

parse.y: ignore constant name captures

* parse.y (reg_named_capture_assign_iter): ignore non-local name
  captures, including non-ASCII constant names.
  [ruby-dev:50719] [Bug #15437]
------------------------------------------------------------------------
r66462 | kou | 2018-12-20 13:03:10 +0900 (Thu, 20 Dec 2018) | 2 lines

Really ensure loading REXML in tests

------------------------------------------------------------------------
r66461 | nobu | 2018-12-20 13:03:07 +0900 (Thu, 20 Dec 2018) | 3 lines

rbinstall.rb: purge %x[git ls-files] too

[Bug #13423]
------------------------------------------------------------------------
r66460 | nobu | 2018-12-20 12:51:15 +0900 (Thu, 20 Dec 2018) | 4 lines

rbinstall.rb: syntax error in gemspec

* tool/rbinstall.rb (load_gemspec): do not hide syntax errors in
  a gemspec file.  check if the result instead.
------------------------------------------------------------------------
r66459 | kou | 2018-12-20 12:08:57 +0900 (Thu, 20 Dec 2018) | 3 lines

Ensure loading REXML


------------------------------------------------------------------------
r66458 | kou | 2018-12-20 11:49:10 +0900 (Thu, 20 Dec 2018) | 6 lines

rexml: upgrade to 3.1.8

See https://github.com/ruby/rexml/blob/master/NEWS.md for change summary.

Changes for spec/ has been reported: https://github.com/ruby/spec/pull/639

------------------------------------------------------------------------
r66457 | normal | 2018-12-20 09:07:19 +0900 (Thu, 20 Dec 2018) | 18 lines

thread_pthread.c (ubf_timer_disarm): ignore EINVAL iff timer is dead

The following race may happen if ubf_timer_destroy calls
timer_delete before ubf_timer_disarm gets called from
a different thread.  Consider the following timelines:

  ubf_timer_destroy                    | ubf_timer_disarm
  -------------------------------------+-----------------------------
                                       | CAS(ARM => DISARM)
  CAS(DISARM => DEAD)                  |
  timer_delete                         |
                                       | timer_settime(disarm)

Another option may be to add an intermediate "RTIMER_DISARMING"
state to the transition, but I figure the EINVAL check is
simpler and less intrusive code-wise.

cf. http://ci.rvm.jp/results/trunk-iseq_binary@silicon-docker/1545794
------------------------------------------------------------------------
r66456 | svn | 2018-12-20 04:01:04 +0900 (Thu, 20 Dec 2018) | 1 line

* 2018-12-20
------------------------------------------------------------------------
r66455 | yuki | 2018-12-20 04:01:02 +0900 (Thu, 20 Dec 2018) | 1 line

* gems/bundled_gems: Upgrade the did_you_mean gem to 1.3.0
------------------------------------------------------------------------
r66454 | hsbt | 2018-12-19 21:57:19 +0900 (Wed, 19 Dec 2018) | 1 line

Update entry of Psych on NEWS file.
------------------------------------------------------------------------
r66453 | hsbt | 2018-12-19 21:46:29 +0900 (Wed, 19 Dec 2018) | 1 line

Update entry of RubyGems on NEWS file.
------------------------------------------------------------------------
r66452 | normal | 2018-12-19 20:08:05 +0900 (Wed, 19 Dec 2018) | 22 lines

webrick: add the ability to override res, req creation

So that a customized HTTPServer subclass can use it's own
Request/Response classes.

To apply the override, make a subclass of WEBrick::HTTPServer
and override the
`create_request_and_response(with_webrick_config)` method. The
method should return an Array of [request, response].

To check whether the Server supports this method (i.e. when
using older versions of WEBrick when needing this
functionality), you can ask the server if it responds to the
method

    server.respond_to?(:create_request_and_response)

This is backportable.

[ruby-core:69604] [Feature #11266]

From: Julik Tarkhanov <me@julik.nl>
------------------------------------------------------------------------
r66451 | hsbt | 2018-12-19 16:20:17 +0900 (Wed, 19 Dec 2018) | 3 lines

Merge RubyGems 3.0.0 from upstream.

  https://blog.rubygems.org/2018/12/19/3.0.0-released.html
------------------------------------------------------------------------
r66450 | hsbt | 2018-12-19 16:02:57 +0900 (Wed, 19 Dec 2018) | 1 line

Update metadata of Bundler 1.17.2
------------------------------------------------------------------------
r66449 | duerst | 2018-12-19 13:08:46 +0900 (Wed, 19 Dec 2018) | 6 lines

avoid passing unnecessary options to download method

The option --unicode-beta for tool/downloader.rb introduced in
r66448 must not be passed as an option to actual download machinery.
Thanks to MSP-Greg (Greg L.) for bug report and patch.
This closes issue #15434.
------------------------------------------------------------------------
r66448 | duerst | 2018-12-19 09:26:31 +0900 (Wed, 19 Dec 2018) | 16 lines

add option to deal with Unicode beta data files

Unicode uses file names with explicit versions for beta publication.
This commit introduces a variable on the makefile level to distinguish
between beta and regular versions of file names.
 
common.mk: Define new variable UNICODE_BETA, usually set to NO,
but would be YES during tests with beta data files. Pass the value
of this variable to tool/downloader.rb with option --unicode-beta.

tool/downloader.rb: Receive and store value of --unicode-beta.
Raise an exception if value is YES, because we don't yet actually
deal with this case. Continue as usual if value is not YES.

This completes the changes needed in the makefile. Upcomming changes
will only affect tool/downloader.rb.
------------------------------------------------------------------------
r66447 | kazu | 2018-12-19 08:36:47 +0900 (Wed, 19 Dec 2018) | 1 line

sample/fib.py: Fix syntax error in Python 3 [ci skip]
------------------------------------------------------------------------
r66446 | normal | 2018-12-19 03:25:54 +0900 (Wed, 19 Dec 2018) | 6 lines

thread_pthread.c (ubf_timer_destroy): more careful state transition

We must not call timer_destroy while another thread is
calling timer_settime to arm the timer.

cf. http://ci.rvm.jp/results/trunk-iseq_binary@silicon-docker/1541578
------------------------------------------------------------------------
r66445 | nobu | 2018-12-19 01:11:07 +0900 (Wed, 19 Dec 2018) | 1 line

Constified to fix warning at r66442
------------------------------------------------------------------------
r66444 | nobu | 2018-12-19 01:01:58 +0900 (Wed, 19 Dec 2018) | 1 line

CHDIR to follow symlink [ci skip]
------------------------------------------------------------------------
r66443 | svn | 2018-12-19 00:11:18 +0900 (Wed, 19 Dec 2018) | 1 line

* expand tabs.
------------------------------------------------------------------------
r66442 | nobu | 2018-12-19 00:11:17 +0900 (Wed, 19 Dec 2018) | 1 line

Expand cross-recursion to a loop
------------------------------------------------------------------------
r66441 | svn | 2018-12-19 00:06:21 +0900 (Wed, 19 Dec 2018) | 1 line

* 2018-12-19
------------------------------------------------------------------------
r66440 | nobu | 2018-12-19 00:06:20 +0900 (Wed, 19 Dec 2018) | 1 line

Freeze and hide callback arguments holder
------------------------------------------------------------------------
r66439 | nobu | 2018-12-18 22:59:46 +0900 (Tue, 18 Dec 2018) | 11 lines

Enable refinements on symbol-proc in ruby-level methods

* vm_args.c (refine_sym_proc_call): resolve refinements when the
  proc is invoked, instead of resolving at making the proc, to
  enable refinements on symbol-proc in ruby-level methods

* vm.c (vm_cref_dup): clear cached symbol-procs when duplicating.

[Bug #15114] [Fix GH-2039]

From: manga_osyo <manga.osyo@gmail.com>
------------------------------------------------------------------------
r66438 | normal | 2018-12-18 18:21:05 +0900 (Tue, 18 Dec 2018) | 12 lines

thread_sync.c (mutex_ptr): only reinitalize waitqueue at fork

Mutexes need to remain locked after forking.

This fixes "[BUG] invalid keeping_mutexes: Attempt to unlock a
mutex which is locked by another thread" and should
fix test_fork_while_parent_locked failures in CI

[ruby-core:90581] [Bug #15424]
[ruby-core:90595] [Bug #15430]

Fixes: r66230 ("handle mutexes held by parent threads in children")
------------------------------------------------------------------------
r66437 | svn | 2018-12-18 17:33:23 +0900 (Tue, 18 Dec 2018) | 1 line

* expand tabs.
------------------------------------------------------------------------
r66436 | ko1 | 2018-12-18 17:33:20 +0900 (Tue, 18 Dec 2018) | 6 lines

should use defined_class.

* vm_insnhelper.c (vm_call_method_each_type): we should use me->defined_class
  instead of me->owner because me->owner doesn't has correct ancestors list.
  [Bug #15427]

------------------------------------------------------------------------
r66435 | svn | 2018-12-18 17:11:57 +0900 (Tue, 18 Dec 2018) | 1 line

* expand tabs.
------------------------------------------------------------------------
r66434 | ko1 | 2018-12-18 17:11:52 +0900 (Tue, 18 Dec 2018) | 2 lines

rb_raw_obj_info() support T_MODULE and T_ICLASS.

------------------------------------------------------------------------
r66433 | hsbt | 2018-12-18 15:49:12 +0900 (Tue, 18 Dec 2018) | 1 line

Bump version to 1.0.0.
------------------------------------------------------------------------
r66432 | knu | 2018-12-18 14:09:08 +0900 (Tue, 18 Dec 2018) | 4 lines

Import ipaddr 1.2.2

- Enable frozen_string_literal and do a bit of code cleanup

------------------------------------------------------------------------
r66431 | akr | 2018-12-18 12:09:54 +0900 (Tue, 18 Dec 2018) | 4 lines

Pathname#relative_path_from uses is_a?

I reconsidered because simpler code would have better maintainablity.

------------------------------------------------------------------------
r66430 | hsbt | 2018-12-18 11:01:39 +0900 (Tue, 18 Dec 2018) | 1 line

Bump version to psych 3.1.0.
------------------------------------------------------------------------
r66429 | svn | 2018-12-18 07:49:01 +0900 (Tue, 18 Dec 2018) | 1 line

* 2018-12-18
------------------------------------------------------------------------
r66428 | normal | 2018-12-18 07:48:57 +0900 (Tue, 18 Dec 2018) | 7 lines

Fix test failure if ENV["USER"] doesn't match Process.euid

When dropping privileges to run tests, ENV["USER"] could be set
to a user that doesn't match Process.euid, which causes this
test to fail with Errno::EPERM.  Try to get the name for the
current euid, and only fallback to ENV["USER"] if that doesn't
work.
------------------------------------------------------------------------
r66427 | nobu | 2018-12-17 14:57:15 +0900 (Mon, 17 Dec 2018) | 1 line

Split test_fnmatch
------------------------------------------------------------------------
r66426 | nobu | 2018-12-17 13:58:50 +0900 (Mon, 17 Dec 2018) | 1 line

Already nlink is properly set on Windows
------------------------------------------------------------------------
r66425 | nobu | 2018-12-17 13:58:49 +0900 (Mon, 17 Dec 2018) | 1 line

Split test_expand_path, test_basename, test_dirname
------------------------------------------------------------------------
r66424 | mrkn | 2018-12-17 12:08:46 +0900 (Mon, 17 Dec 2018) | 5 lines

NEWS: Note for the bigdecimal versions

The differences between bigdecimal 1.3.5, 1.4.0, and 1.5.0 are explained.

[ci skip]
------------------------------------------------------------------------
r66423 | nobu | 2018-12-17 10:36:34 +0900 (Mon, 17 Dec 2018) | 6 lines

Workaround for OpenBSD make

* common.mk: read from node.h in the source directly, without
  VPATH.  [ruby-core:89151] [Bug #15154]

From: kernigh (George Koehler) <xkernigh@netscape.net>
------------------------------------------------------------------------
r66422 | svn | 2018-12-17 09:43:45 +0900 (Mon, 17 Dec 2018) | 1 line

* 2018-12-17
------------------------------------------------------------------------
r66421 | nobu | 2018-12-17 09:43:40 +0900 (Mon, 17 Dec 2018) | 4 lines

Range check is only for interaval

* time.c (time_timespec): range check is only for time interval
  value if time_t is signed.
------------------------------------------------------------------------
r66420 | kazu | 2018-12-16 23:54:05 +0900 (Sun, 16 Dec 2018) | 3 lines

[DOC] Update Object#=~ [ci skip]

see r65989
------------------------------------------------------------------------
r66419 | k0kubun | 2018-12-16 23:24:20 +0900 (Sun, 16 Dec 2018) | 5 lines

bin/erb: improve documentation of -P flag

man/erb.1: ditto

[Bug #15421]
------------------------------------------------------------------------
r66418 | nobu | 2018-12-16 21:55:59 +0900 (Sun, 16 Dec 2018) | 6 lines

Refine error message for time interval

* time.c (time_timespec): Time interval value can be zero, not
  only positive.  [ruby-dev:50709] [Bug #15420]

From: shuujii (Shuji KOBAYASHI) <shuujii@gmail.com>
------------------------------------------------------------------------
r66417 | normal | 2018-12-16 21:33:44 +0900 (Sun, 16 Dec 2018) | 3 lines

thread_pthread (ubf_timer_destroy): use VM_ASSERT

Don't need the overhead at runtime
------------------------------------------------------------------------
r66416 | akr | 2018-12-16 21:26:52 +0900 (Sun, 16 Dec 2018) | 4 lines

Pathname#relative_path_from compatible with mock.

[Fix GH-2049]

------------------------------------------------------------------------
r66415 | nobu | 2018-12-16 21:09:08 +0900 (Sun, 16 Dec 2018) | 5 lines

Enhance Tempfile docs [ci skip]

[ruby-core:90525] [Bug #15411]

From: zverok (Victor Shepelev) <zverok.offline@gmail.com>
------------------------------------------------------------------------
r66414 | svn | 2018-12-16 16:51:11 +0900 (Sun, 16 Dec 2018) | 1 line

* expand tabs.
------------------------------------------------------------------------
r66413 | normal | 2018-12-16 16:51:09 +0900 (Sun, 16 Dec 2018) | 15 lines

thread_pthread.c: fix memory leak from fork loop leapfrog (v3)

Constantly forking a single-threaded process in a loop leads to
a memory leak when using POSIX timers.  This fixes the leak for
GNU/Linux systems running glibc.

v2: disarm before timer_delete
v3: ubf_timer_arm prevents double-arming

This unreverts r66291 / commit ab73ef6b7037039a05edcbf2a0c1b1108197e036
Example Linux-only reproduction may be found in:

  r66290 / commit 043047a8fd5315d98eac38ddbd04ebe8db361817

Note: FreeBSD 11.2 still leaks, I'm not sure why, yet.
------------------------------------------------------------------------
r66412 | k0kubun | 2018-12-16 09:55:56 +0900 (Sun, 16 Dec 2018) | 3 lines

spec/../initialize_spec.rb: skip fd-specific spec

https://gist.github.com/ko1/72c03695e81a54d40649f29d0c421f26
------------------------------------------------------------------------
r66411 | svn | 2018-12-16 06:28:37 +0900 (Sun, 16 Dec 2018) | 1 line

* 2018-12-16
------------------------------------------------------------------------
r66410 | stomar | 2018-12-16 06:28:34 +0900 (Sun, 16 Dec 2018) | 1 line

time.c: [DOC] improve docs for tz argument of Time.new
------------------------------------------------------------------------
r66409 | k0kubun | 2018-12-15 23:45:36 +0900 (Sat, 15 Dec 2018) | 6 lines

Revert "* expand tabs."

This reverts commit 298180f0450df6e975057cc7e90b3ae3248586fc.

It looks like we should not expand ext/nkf:
https://git.ruby-lang.org/ruby-commit-hook.git/commit/?id=91fd9708b7cf04a4dcddd9614c24e27ddef5d43b
------------------------------------------------------------------------
r66407 | svn | 2018-12-15 18:55:26 +0900 (Sat, 15 Dec 2018) | 1 line

* expand tabs.
------------------------------------------------------------------------
r66406 | naruse | 2018-12-15 18:55:24 +0900 (Sat, 15 Dec 2018) | 1 line

Merge nkf v2.1.5
------------------------------------------------------------------------
r66405 | suke | 2018-12-15 14:04:40 +0900 (Sat, 15 Dec 2018) | 4 lines

use System Monitor Control for spec of Win32OLE.

* spec/ruby/library/win32ole/win32ole_method/event_interface_spec.rb:
  use System Monitor Control instead of Microsoft Internet Control
------------------------------------------------------------------------
r66404 | normal | 2018-12-15 13:40:14 +0900 (Sat, 15 Dec 2018) | 12 lines

test/lib/test/unit.rb: do not propagate MAKEFLAGS to children

Propagating MAKEFLAGS to children running test/unit caused stuck
tests with GNU make when "-jN" is passed in both the make(1)
command-line and the "TESTS=" variable; because the forked child
process would see MAKEFLAGS and try to use jobserver on its own.

This is regression caused by r64399
(commit b53fadfd5f200dbd6fe9f4b2a91ebb68618e59bb,
"process.c: defaults to close_others false");
but that change also fixed a regression when close-on-exec
became the default in 2.0 :<
------------------------------------------------------------------------
r66403 | svn | 2018-12-15 00:18:16 +0900 (Sat, 15 Dec 2018) | 1 line

* 2018-12-15
------------------------------------------------------------------------
r66402 | stomar | 2018-12-15 00:18:14 +0900 (Sat, 15 Dec 2018) | 1 line

proc.c: [DOC] fix typos
------------------------------------------------------------------------
r66401 | naruse | 2018-12-14 18:44:20 +0900 (Fri, 14 Dec 2018) | 4 lines

Move autoload to toplevel

So that classes which uses Net::HTTP with https can use OpenSSL
namespace for example exception classes like OpenSSL::SSL::SSLError.
------------------------------------------------------------------------
r66400 | naruse | 2018-12-14 17:01:40 +0900 (Fri, 14 Dec 2018) | 3 lines

fix r66163

OpenSSL maybe aren't loaded in rubygems.
------------------------------------------------------------------------
r66399 | svn | 2018-12-14 14:44:43 +0900 (Fri, 14 Dec 2018) | 1 line

* remove trailing spaces. [ci skip]
------------------------------------------------------------------------
r66398 | duerst | 2018-12-14 14:44:41 +0900 (Fri, 14 Dec 2018) | 1 line

tweak syntax of Proc documentation [ci skip]
------------------------------------------------------------------------
r66397 | nobu | 2018-12-14 13:10:42 +0900 (Fri, 14 Dec 2018) | 1 line

Suppress deprecation warnings
------------------------------------------------------------------------
r66396 | mrkn | 2018-12-14 12:45:32 +0900 (Fri, 14 Dec 2018) | 3 lines

NEWS: Fix description of BigDecimal.new [ci skip]

BigDecimal.new is restored, and will be removed on bigdecimal 1.5
------------------------------------------------------------------------
r66395 | nobu | 2018-12-14 12:36:13 +0900 (Fri, 14 Dec 2018) | 1 line

No document of Tempfile::Remover [ci skip]
------------------------------------------------------------------------
r66394 | svn | 2018-12-14 12:33:54 +0900 (Fri, 14 Dec 2018) | 1 line

* properties.
------------------------------------------------------------------------
r66393 | mrkn | 2018-12-14 12:33:53 +0900 (Fri, 14 Dec 2018) | 3 lines

Import bigdecimal-1.4.0.pre.20181214a

* https://github.com/ruby/bigdecimal/compare/v1.4.0.pre.20181205a..v1.4.0.pre.20181214a
------------------------------------------------------------------------
r66392 | ko1 | 2018-12-14 11:27:23 +0900 (Fri, 14 Dec 2018) | 9 lines

separte NULL and EMPTY check.

* hash.c: separate NULL and EMPTY check functions.
  `RHASH_TABLE_EMPTY` function checks NULL table or not,
  but it should be named "NULL_P".
  Introduce `RHASH_TABLE_EMPTY_P` function to check size == 0.
  There are cases that hash has table data even if data is not NULL
  (in case removed after inserted elements).

------------------------------------------------------------------------
r66391 | nobu | 2018-12-14 10:29:23 +0900 (Fri, 14 Dec 2018) | 1 line

Suppress uninitialized instance variable warnings
------------------------------------------------------------------------
r66390 | ko1 | 2018-12-14 10:10:15 +0900 (Fri, 14 Dec 2018) | 16 lines

rename li_table->ar_table (and related names).

* internal.h: rename the following names:
  * li_table -> ar_table. "li" means linear (from linear search),
    but we use the word "array" (from data layout).
  * RHASH_ARRAY -> RHASH_AR_TABLE. AR_TABLE is more clear.
  * rb_hash_array_* -> rb_hash_ar_table_*.
  * RHASH_TABLE_P() -> RHASH_ST_TABLE_P(). more clear.
  * RHASH_CLEAR() -> RHASH_ST_CLEAR().

* hash.c: rename "linear_" prefix functions to "ar_" prefix.

* hash.c (linear_init_table): rename to ar_alloc_table.

* debug_counter.h: rename obj_hash_array to obj_hash_ar.

------------------------------------------------------------------------
r66389 | stomar | 2018-12-14 07:41:44 +0900 (Fri, 14 Dec 2018) | 4 lines

time.c: improve docs for Time

* time.c: [DOC] fix typos, drop unnecessary `p' from code examples,
  add missing `#' for return values, other small improvements.
------------------------------------------------------------------------
r66388 | stomar | 2018-12-14 05:35:02 +0900 (Fri, 14 Dec 2018) | 4 lines

NEWS: various fixes

Fix some typos; fix syntax in a code example; fix unintentional
description list for ticket numbers; other fixes.
------------------------------------------------------------------------
r66387 | stomar | 2018-12-14 05:25:36 +0900 (Fri, 14 Dec 2018) | 1 line

re.c: [DOC] fix typos
------------------------------------------------------------------------
r66386 | svn | 2018-12-14 05:24:25 +0900 (Fri, 14 Dec 2018) | 1 line

* 2018-12-14
------------------------------------------------------------------------
r66385 | stomar | 2018-12-14 05:24:23 +0900 (Fri, 14 Dec 2018) | 1 line

proc.c: [DOC] fix typos
------------------------------------------------------------------------
r66384 | usa | 2018-12-13 19:51:59 +0900 (Thu, 13 Dec 2018) | 2 lines

Install script of default gems as is to its libexec dir

------------------------------------------------------------------------
r66383 | kazu | 2018-12-13 18:51:05 +0900 (Thu, 13 Dec 2018) | 1 line

[DOC] Fix typos [ci skip]
------------------------------------------------------------------------
r66382 | normal | 2018-12-13 18:41:17 +0900 (Thu, 13 Dec 2018) | 5 lines

thread_pthread.c (native_ppoll_sleep): drop ubf_select references

We don't use ubf_select after r65495 / 5de7b3b4f27df747899c243adbb10c9799ad1399
("thread_pthread.c (native_ppoll_sleep): new eventfd (or pipe) for ubf"),
so we don't need to unregister the thread from the ubf list.
------------------------------------------------------------------------
r66381 | normal | 2018-12-13 18:25:46 +0900 (Thu, 13 Dec 2018) | 12 lines

thread_pthread.c (native_sleep): sched_yield if GVL uncontended

Uncontended GVL waitqueue could mean a single CPU setup where
threads are starved and can't even insert themselves into our
waitqueue.  So we force other threads to run upon releasing
the GVL in an uncontended state, in the hope that we can
avoid entering the slow path of ppoll and similar syscalls.

This should prevent test/ruby/test_thread.rb::test_signal_at_join
timeout problems on our single CPU FreeBSD CI machine.

[ruby-core:90417] [Bug #15398]
------------------------------------------------------------------------
r66380 | akr | 2018-12-13 17:53:15 +0900 (Thu, 13 Dec 2018) | 2 lines

use :chdir option to avoid fd 3 to work with Windows.

------------------------------------------------------------------------
r66379 | normal | 2018-12-13 17:44:15 +0900 (Thu, 13 Dec 2018) | 3 lines

thread_pthread.c (gvl_release_common): constify return value

No need for it to be mutable
------------------------------------------------------------------------
r66378 | k0kubun | 2018-12-13 14:59:14 +0900 (Thu, 13 Dec 2018) | 1 line

test_win32ole_event.rb: retry random failure
------------------------------------------------------------------------
r66377 | nobu | 2018-12-13 14:09:58 +0900 (Thu, 13 Dec 2018) | 4 lines

Separate RSTRING_PTR from a function call

Do not apply RSTRING_PTR, a macro which evaluats its argument
multiple times, on a function call.
------------------------------------------------------------------------
r66376 | tenderlove | 2018-12-13 12:01:18 +0900 (Thu, 13 Dec 2018) | 6 lines

Don't increment `code_index`

`code_index` doesn't need to be incremented since the mark array has
been removed.  Thanks for the patch ko1!

[ruby-core:90456] [Bug #15406]
------------------------------------------------------------------------
r66375 | stomar | 2018-12-13 07:04:48 +0900 (Thu, 13 Dec 2018) | 1 line

string.c: [DOC] fix typos
------------------------------------------------------------------------
r66374 | stomar | 2018-12-13 07:03:11 +0900 (Thu, 13 Dec 2018) | 1 line

range.c: [DOC] fix typo
------------------------------------------------------------------------
r66373 | marcandre | 2018-12-13 06:45:17 +0900 (Thu, 13 Dec 2018) | 1 line

range.c: Typo fix [DOC] [ci skip] [#15405]
------------------------------------------------------------------------
r66372 | svn | 2018-12-13 06:17:05 +0900 (Thu, 13 Dec 2018) | 1 line

* properties.
------------------------------------------------------------------------
r66371 | mrkn | 2018-12-13 06:17:04 +0900 (Thu, 13 Dec 2018) | 1 line

Add test cases of rb_arithmetic_sequence_extract
------------------------------------------------------------------------
r66370 | marcandre | 2018-12-13 04:51:50 +0900 (Thu, 13 Dec 2018) | 1 line

NEWS: Mention (1...) in addition to (1..) [DOC]
------------------------------------------------------------------------
r66369 | marcandre | 2018-12-13 04:49:22 +0900 (Thu, 13 Dec 2018) | 3 lines

range.c: Documentation on endless ranges.

Based on patch by Victor Shepelev [DOC] [#7552]
------------------------------------------------------------------------
r66368 | ko1 | 2018-12-13 02:16:02 +0900 (Thu, 13 Dec 2018) | 6 lines

skip a test.

* test/ruby/test_literal.rb (test_debug_frozen_string_in_array_literal):
  skip last test if `RUBY_ISEQ_DUMP_DEBUG` is specified because round-trip
  (iseq <-> binary/array) doesn't support this feature.

------------------------------------------------------------------------
r66367 | ko1 | 2018-12-13 02:12:08 +0900 (Thu, 13 Dec 2018) | 7 lines

param.flags.has_kw flag should be FALSE before setting param.keyword.

* compile.c (ibf_load_iseq_each): iseq_mark assumes that if
  param.flags.has_kw is TRUE, then param.keyword is not NULL.
  To confirm this assumption, make it FALSE before param.keyword
  is initialized.

------------------------------------------------------------------------
r66366 | ko1 | 2018-12-13 00:59:49 +0900 (Thu, 13 Dec 2018) | 5 lines

restore `catch_except_p` flag.

* compile.c: we need to restore `catch_except_p` flag at
  `load_from_binary`. [Bug #15395]

------------------------------------------------------------------------
r66365 | svn | 2018-12-13 00:45:09 +0900 (Thu, 13 Dec 2018) | 1 line

* 2018-12-13
------------------------------------------------------------------------
r66364 | ko1 | 2018-12-13 00:45:06 +0900 (Thu, 13 Dec 2018) | 7 lines

remove `compiled_` prefix. [Feature #15287]

* vm_trace.c: remove `compiled_` prefix from the following methods:
  * `compiled_eval_script`
  * `compiled_instruction_sequence`
  [Feature #15287]

------------------------------------------------------------------------
r66363 | hsbt | 2018-12-12 22:25:29 +0900 (Wed, 12 Dec 2018) | 1 line

Added entry of Psych.
------------------------------------------------------------------------
r66362 | nobu | 2018-12-12 20:43:14 +0900 (Wed, 12 Dec 2018) | 3 lines

Revise Date#hour, #min, #sec

For ActiveSupport.  [ruby-core:90443] [Bug #15403]
------------------------------------------------------------------------
r66361 | mame | 2018-12-12 20:24:15 +0900 (Wed, 12 Dec 2018) | 1 line

test/test_open3.rb: skip a fd redirection test on windows
------------------------------------------------------------------------
r66360 | nobu | 2018-12-12 20:06:48 +0900 (Wed, 12 Dec 2018) | 3 lines

complex.c: new APIs for Complex

[Feature #15066]
------------------------------------------------------------------------
r66359 | nobu | 2018-12-12 20:06:47 +0900 (Wed, 12 Dec 2018) | 6 lines

complex.c: rb_complex_new_polar

* complex.c (rb_complex_new_polar): renamed with _new to clarify
  that it creates a new instance, but is not an instance method.

* complex.c (rb_complex_polar): deprecated.
------------------------------------------------------------------------
r66358 | hsbt | 2018-12-12 18:40:06 +0900 (Wed, 12 Dec 2018) | 1 line

Bump version to 1.3.0 same as the latest version of rubygems.org.
------------------------------------------------------------------------
r66357 | hsbt | 2018-12-12 16:57:42 +0900 (Wed, 12 Dec 2018) | 1 line

Bump library version same as released version of rubygems.org
------------------------------------------------------------------------
r66356 | hsbt | 2018-12-12 16:41:10 +0900 (Wed, 12 Dec 2018) | 3 lines

Backport https://github.com/ruby/irb/pull/2

  Fix and improve version string by @stomar
------------------------------------------------------------------------
r66355 | duerst | 2018-12-12 16:37:16 +0900 (Wed, 12 Dec 2018) | 4 lines

Enhance Proc docs [Misc #14610]

From: Victor Shepelev <zverok.offline@gmail.com>

------------------------------------------------------------------------
r66354 | hsbt | 2018-12-12 16:34:16 +0900 (Wed, 12 Dec 2018) | 1 line

Backport https://github.com/ruby/shell/pull/1
------------------------------------------------------------------------
r66353 | mrkn | 2018-12-12 16:16:07 +0900 (Wed, 12 Dec 2018) | 4 lines

enumerator.c: Add rb_arithmetic_sequence_components_t

Add rb_arithmetic_sequence_components_t struct for encapsulating
the components of ArithmeticSequence.
------------------------------------------------------------------------
r66352 | akr | 2018-12-12 15:48:46 +0900 (Wed, 12 Dec 2018) | 14 lines

open3.rb don't use keyword splat (**).

revert r43582, r49173 and r49177.

open3 arguments uses spawn-like keyword arguments.
Both symbol and integer keys are used.
```
Open3.capture2(*command, :in => IO::NULL, 3 => IO::NULL)
``

This style cannot be supported with keyword splat (**) since Ruby 2.6.
Because Ruby 2.6 prohibits symbol/non-symbol key hash separation.


------------------------------------------------------------------------
r66351 | mrkn | 2018-12-12 15:39:58 +0900 (Wed, 12 Dec 2018) | 4 lines

enumerator.c: rb_arithmetic_sequence_extract

New public C-API for extracting components of Enumerator::ArithmeticSequence
or Range.
------------------------------------------------------------------------
r66350 | naruse | 2018-12-12 15:10:29 +0900 (Wed, 12 Dec 2018) | 3 lines

Enchance MatchData docs [Bug #14450]

From: Victor Shepelev <zverok.offline@gmail.com>
------------------------------------------------------------------------
r66349 | nobu | 2018-12-12 14:46:13 +0900 (Wed, 12 Dec 2018) | 1 line

Disable tailcall optimization [Bug #15303]
------------------------------------------------------------------------
r66348 | akr | 2018-12-12 14:38:59 +0900 (Wed, 12 Dec 2018) | 2 lines

mention Pathname change.

------------------------------------------------------------------------
r66347 | hsbt | 2018-12-12 14:07:50 +0900 (Wed, 12 Dec 2018) | 4 lines

Merge rubygems@21f12a8 from upstream.

  * [BudlerVersionFinder] set .filter! and .compatible? to match only on major versions https://github.com/rubygems/rubygems/pull/2515
  * Fix broken symlink that points to ../* https://github.com/rubygems/rubygems/pull/2516
------------------------------------------------------------------------
r66346 | akr | 2018-12-12 14:07:49 +0900 (Wed, 12 Dec 2018) | 18 lines

Use File class methods to avoid pipe execution


Following methods use corresponding File class methods
instead of IO class methods.

- Pathname#each_line
- Pathname#read
- Pathname#binread
- Pathname#write
- Pathname#binwrite
- Pathname#readlines

Reported by ooooooo_q.




------------------------------------------------------------------------
r66345 | samuel | 2018-12-12 11:31:26 +0900 (Wed, 12 Dec 2018) | 1 line

Fix location of NEWS for native coroutine.
------------------------------------------------------------------------
r66344 | k0kubun | 2018-12-12 09:38:49 +0900 (Wed, 12 Dec 2018) | 7 lines

bootstraptest/runner.rb: increase timeout for --jit-wait

because test_io.rb:33 randomly fails
http://ci.rvm.jp/results/trunk-mjit-wait@silicon-docker/1519055

checking MJIT.enabled? on driver might not make sense for target, but as
long as the CI is -DMJIT_FORCE_ENABLE, I believe it works for now.
------------------------------------------------------------------------
r66343 | hsbt | 2018-12-12 09:17:59 +0900 (Wed, 12 Dec 2018) | 1 line

Update version number on Bundler section.
------------------------------------------------------------------------
r66342 | samuel | 2018-12-12 08:56:26 +0900 (Wed, 12 Dec 2018) | 1 line

Explain which architectures are supported in NEWS.
------------------------------------------------------------------------
r66341 | samuel | 2018-12-12 08:49:33 +0900 (Wed, 12 Dec 2018) | 1 line

Ensure x86 stack is fortified, fixed #15335.
------------------------------------------------------------------------
r66340 | svn | 2018-12-12 08:49:32 +0900 (Wed, 12 Dec 2018) | 1 line

* 2018-12-12
------------------------------------------------------------------------
r66339 | samuel | 2018-12-12 08:49:29 +0900 (Wed, 12 Dec 2018) | 1 line

Add NEWS about coroutine implementation.
------------------------------------------------------------------------
r66338 | hsbt | 2018-12-11 20:02:41 +0900 (Tue, 11 Dec 2018) | 1 line

Merge Bundler 1.17.2 from upstream.
------------------------------------------------------------------------
r66337 | naruse | 2018-12-11 19:55:07 +0900 (Tue, 11 Dec 2018) | 1 line

Same as r66334 add Errno::EISDIR
------------------------------------------------------------------------
r66336 | normal | 2018-12-11 18:49:31 +0900 (Tue, 11 Dec 2018) | 6 lines

test/dtrace: use TracePoint.__enable

"TracePoint.enable" is implemented in prelude.rb since
r66003 / commit 96990203b71184003cf8a9bad5cc177645820fd4
and not available in miniruby.  I tried using regular "ruby"
for testing, but it proved noisy and caused test failures.
------------------------------------------------------------------------
r66335 | normal | 2018-12-11 18:49:26 +0900 (Tue, 11 Dec 2018) | 4 lines

test/dtrace: improve diagnostics

These will help us track down test failures more easily
(on FreeBSD 11.2)
------------------------------------------------------------------------
r66334 | naruse | 2018-12-11 17:44:00 +0900 (Tue, 11 Dec 2018) | 3 lines

CentOS-7 (1810)'s header has O_TMPFILE but kernel doesn't support it

http://rubyci.s3.amazonaws.com/centos7/ruby-trunk/log/20181206T080003Z.diff.html.gz
------------------------------------------------------------------------
r66333 | ko1 | 2018-12-11 16:31:23 +0900 (Tue, 11 Dec 2018) | 1 line

remove unused (redundant) chapter names
------------------------------------------------------------------------
r66332 | mame | 2018-12-11 15:35:40 +0900 (Tue, 11 Dec 2018) | 3 lines

doc/contributing.rdoc: remove IA-64 from active platform list

Now takano32-san has no IA-64 machine for test.
------------------------------------------------------------------------
r66331 | nobu | 2018-12-11 14:09:35 +0900 (Tue, 11 Dec 2018) | 1 line

test/date: removed unnecessaruy `__send__`
------------------------------------------------------------------------
r66330 | nobu | 2018-12-11 14:09:34 +0900 (Tue, 11 Dec 2018) | 1 line

ext/date: Fix !NDEBUG code
------------------------------------------------------------------------
r66329 | nobu | 2018-12-11 13:35:13 +0900 (Tue, 11 Dec 2018) | 5 lines

date_core.c: moved some methods to DateTime

* ext/date/date_core.c (Init_date_core): moved methods which make
  sense only for DateTime to that class, instead of defining
  private methods in Date and making them public in DateTime.
------------------------------------------------------------------------
r66328 | nobu | 2018-12-11 13:30:31 +0900 (Tue, 11 Dec 2018) | 4 lines

date_core.c: reorder ComplexDateData

* ext/date/date_core.c (ComplexDateData): reordered to adjust
  common part with SimpleDateData.
------------------------------------------------------------------------
r66327 | mame | 2018-12-11 13:26:04 +0900 (Tue, 11 Dec 2018) | 1 line

NEWS: add a ticket number
------------------------------------------------------------------------
r66326 | nobu | 2018-12-11 13:14:31 +0900 (Tue, 11 Dec 2018) | 5 lines

Fix infinite loop by ensure

* compile.c (iseq_insert_nop_between_end_and_cont): insert nop so
  that the end of rescue and continuing points are not same, to
  get rid of infinite loop.  [Bug #15385]
------------------------------------------------------------------------
r66325 | svn | 2018-12-11 13:13:13 +0900 (Tue, 11 Dec 2018) | 1 line

* expand tabs.
------------------------------------------------------------------------
r66324 | nobu | 2018-12-11 13:13:09 +0900 (Tue, 11 Dec 2018) | 1 line

Modify insn list only when compiling
------------------------------------------------------------------------
r66323 | hsbt | 2018-12-11 12:07:37 +0900 (Tue, 11 Dec 2018) | 5 lines

Downgrade Bundler 1.17.x from 2.0.0.

  We have the platform issue on heroku:
    * https://gist.github.com/schneems/26452540f6e2bbbcf2ea144f45f6b305
    * https://github.com/heroku/heroku-buildpack-ruby/issues/833
------------------------------------------------------------------------
r66322 | duerst | 2018-12-11 09:44:24 +0900 (Tue, 11 Dec 2018) | 1 line

add clarification about details of update to Unicode 11.0.0 [ci skip]
------------------------------------------------------------------------
r66321 | nobu | 2018-12-11 09:36:46 +0900 (Tue, 11 Dec 2018) | 4 lines

ReFix r663197

Stringify after downcase, to restrict arguments.
[Bug#15394]
------------------------------------------------------------------------
r66320 | nobu | 2018-12-11 09:05:53 +0900 (Tue, 11 Dec 2018) | 1 line

Fix r663197
------------------------------------------------------------------------
r66319 | naruse | 2018-12-11 08:54:14 +0900 (Tue, 11 Dec 2018) | 5 lines

Preserve HTTP header key as string [Bug #15394]

to prevent send Host header twice accidentally.

From: Sangyong Sim <sangyong-sim@cookpad.com>
------------------------------------------------------------------------
r66318 | kazu | 2018-12-11 08:52:59 +0900 (Tue, 11 Dec 2018) | 1 line

Sort [ci skip]
------------------------------------------------------------------------
r66317 | nobu | 2018-12-11 08:40:14 +0900 (Tue, 11 Dec 2018) | 5 lines

Add the deprecation of flip-flops to NEWS page [ci skip]

[Fix GH-2047]

From: Junichi Ito <jit@sonicgarden.jp>
------------------------------------------------------------------------
r66316 | svn | 2018-12-11 08:23:00 +0900 (Tue, 11 Dec 2018) | 1 line

* properties.
------------------------------------------------------------------------
r66315 | odaira | 2018-12-11 08:22:56 +0900 (Tue, 11 Dec 2018) | 7 lines

Native coroutine implementation for ppc64le Linux

* configure.ac: enable fiber coroutine for powerpc64le-linux

* coroutine/ppc64le/Context.S: coroutine_transfer implementation

* coroutine/ppc64le/Context.h: coroutine implementation
------------------------------------------------------------------------
r66314 | duerst | 2018-12-11 08:12:12 +0900 (Tue, 11 Dec 2018) | 9 lines

add a test to make sure some unassigned codepoints do not get converted

In test/ruby/enc/test_case_mapping.rb, add a test to make sure the
unassigned codepoints in the Georgian MTAVRULI range (U+1CBB, U+1CBC)
do not get converted to unrelated codepoints by String#capitalize.
(It turns out that this test was not strictly necessary, because
unassigned codepoints are already excluded by the fact that they are
not found in the onigenc_unicode_fold_lookup table. So this test only
serves to check against future regressions.)
------------------------------------------------------------------------
r66313 | svn | 2018-12-11 00:48:49 +0900 (Tue, 11 Dec 2018) | 1 line

* 2018-12-11
------------------------------------------------------------------------
r66312 | naruse | 2018-12-11 00:48:45 +0900 (Tue, 11 Dec 2018) | 1 line

fix r66311
------------------------------------------------------------------------
r66311 | naruse | 2018-12-10 22:58:36 +0900 (Mon, 10 Dec 2018) | 1 line

Define HAVE_STMT_AND_DECL_IN_EXPR and use it [Bug #15293]
------------------------------------------------------------------------
r66310 | nobu | 2018-12-10 21:43:16 +0900 (Mon, 10 Dec 2018) | 1 line

LEGAL: gathered util.c [ci skip]
------------------------------------------------------------------------
r66308 | usa | 2018-12-10 16:11:18 +0900 (Mon, 10 Dec 2018) | 5 lines

Net::ReadTimeout and Net::WriteTimeout should tell the cause socket

* lib/net/protocol.rb (ReadTimeout, WriteTimeout): Net::ReadTimeout and Net::WriteTimeout should tell the cause socket
  [Feature #14832] [ruby-core:87440]

------------------------------------------------------------------------
r66307 | nobu | 2018-12-10 11:58:01 +0900 (Mon, 10 Dec 2018) | 1 line

win32/Makefile.sub: missing dependency of mjit_config.h
------------------------------------------------------------------------
r66306 | nobu | 2018-12-10 11:01:21 +0900 (Mon, 10 Dec 2018) | 4 lines

Initialize bin

* hash.c (linear_update): initialize `bin` just to silence false
  warnings by old gcc 4.8.  [Bug #15299]
------------------------------------------------------------------------
r66305 | nobu | 2018-12-10 10:58:28 +0900 (Mon, 10 Dec 2018) | 5 lines

Limit uplevel travarsing

* tool/vcs.rb (VCS.detect): limit level of travarsing parent
  directories, 0 by the default.  curretly always detecting at the
  source directory itself.
------------------------------------------------------------------------
r66304 | nobu | 2018-12-10 10:58:27 +0900 (Mon, 10 Dec 2018) | 4 lines

Detection order

* tool/vcs.rb (VCS.detect): detect each VCS while travarsing
  parent directories.
------------------------------------------------------------------------
r66303 | nobu | 2018-12-10 10:57:48 +0900 (Mon, 10 Dec 2018) | 1 line

Updated dates in man pages
------------------------------------------------------------------------
r66302 | svn | 2018-12-10 09:05:44 +0900 (Mon, 10 Dec 2018) | 1 line

* 2018-12-10
------------------------------------------------------------------------
r66301 | nobu | 2018-12-10 09:05:43 +0900 (Mon, 10 Dec 2018) | 32 lines

Remove unnecessary require of fileutils

Today I updated my ruby core clone, and I run the usual steps to compile
ruby. When running "make", I run into the following error:

```
(... stuff ...)
encdb.h unchanged
Traceback (most recent call last):
	5: from ./tool/mkconfig.rb:19:in `<main>'
	4: from ./tool/mkconfig.rb:19:in `require'
	3: from /home/deivid/Code/ruby/lib/fileutils.rb:4:in `<top (required)>'
	2: from /home/deivid/Code/ruby/lib/fileutils.rb:4:in `require'
	1: from /home/deivid/Code/ruby/rbconfig.rb:11:in `<top (required)>'
/home/deivid/Code/ruby/rbconfig.rb:13:in `<module:RbConfig>': ruby lib version (2.5.0) doesn't match executable version (2.6.0) (RuntimeError)
uncommon.mk:780: recipe for target '.rbconfig.time' failed
make: *** [.rbconfig.time] Error 1
```

Apparently, the script that generates the root `rbconfig.rb` file requires
`fileutils`, which in turn requires 'rbconfig' (for mjit-headers it says in a
comment), which uses the `rbconfig.rb` config file in the root folder if it
exists. In my case, this file existed but had been generated on 2.5.0, thus
causing the error.

I think we can avoid this sort of circular dependency by not requiring
`fileutils`, since it does not seem to be used anywhere in the
`tool/mkconfig.rb` script since r55338.

[Fix GH-2045]

From: David Rodriguez <deivid.rodriguez@riseup.net>
------------------------------------------------------------------------
r66300 | duerst | 2018-12-10 08:14:29 +0900 (Mon, 10 Dec 2018) | 31 lines

implement special behavior for Georgian for String#capitalize

The modern Georgian script is special in that it has an 'uppercase'
variant called MTAVRULI which can be used for emphasis of whole words,
for screamy headlines, and so on. However, in contrast to all other
bicameral scripts, there is no usage of capitalizing the first letter
in a word or a sentence. Words with mixed capitalization are not used
at all.

We therefore implement special behavior for String#capitalize. Formally,
we define String#capitalize as first applying String#downcase for the
whole string, then using titlecase on the first letter. Because Georgian
defines titlecase as the identity function both for MTAVRULI ('uppercase')
and Mkhedruli (lowercase), this results in String#capitalize being
equivalent to String#downcase for Georgian. This avoids undesirable
mixed case.

* enc/unicode.c: Actual implementation

* string.c: Add mention of this special case for documentation

* test/ruby/enc/test_case_mapping.rb: Add two tests, a general one
  that uses String#capitalize on some (including nonsensical)
  combinations of MTAVRULI and Mkhedruli, and a canary test to
  detect the potential assignment of characters to the currently
  open slots (holes) at U+1CBB and U+1CBC.

* test/ruby/enc/test_case_comprehensive.rb: Tweak generation of
  expectation data.

Together with r65933, this closes issue #14839.
------------------------------------------------------------------------
r66299 | k0kubun | 2018-12-09 21:35:13 +0900 (Sun, 09 Dec 2018) | 3 lines

test/rdoc/minitest_helper.rb: partially revert r66286

to resurrect r65613
------------------------------------------------------------------------
r66296 | nobu | 2018-12-09 11:08:56 +0900 (Sun, 09 Dec 2018) | 1 line

Break lines in LEGAL texts [ci skip]
------------------------------------------------------------------------
r66295 | duerst | 2018-12-09 11:02:45 +0900 (Sun, 09 Dec 2018) | 5 lines

delete Unicode 10.0.0 related files, no longer needed [#14802]
This line, and those below, will be ignored--

D    enc/unicode/10.0.0

------------------------------------------------------------------------
r66294 | nobu | 2018-12-09 10:53:14 +0900 (Sun, 09 Dec 2018) | 1 line

Blockquote LEGAL [ci skip]
------------------------------------------------------------------------
r66293 | nobu | 2018-12-09 10:34:23 +0900 (Sun, 09 Dec 2018) | 1 line

raise instead of rb_bug
------------------------------------------------------------------------
r66292 | nobu | 2018-12-09 10:22:16 +0900 (Sun, 09 Dec 2018) | 4 lines

Removed never-happening case

get_uniq_filename never returns NULL but raises an exception on
failure.
------------------------------------------------------------------------
r66291 | normal | 2018-12-09 07:04:43 +0900 (Sun, 09 Dec 2018) | 6 lines

Revert "thread_pthread.c: fix memory leak from fork loop leapfrog (v2)"

This reverts r66290 / commit 043047a8fd5315d98eac38ddbd04ebe8db361817.

Still fails on CI, and I'm not able to reproduce the failure, either :<
http://ci.rvm.jp/results/trunk-test@ruby-sky1/1508228
------------------------------------------------------------------------
r66290 | normal | 2018-12-09 06:45:50 +0900 (Sun, 09 Dec 2018) | 26 lines

thread_pthread.c: fix memory leak from fork loop leapfrog (v2)

Constantly forking a single-threaded process in a loop leads to
a memory leak when using POSIX timers.

v2: disarm before timer_delete

==> fork_leapfrog.rb <==
require 'io/wait'
Dir.chdir '/proc'
prev = 0
loop do
  pid = fork
  exit!(0) if pid

  # show the number of 4K pages used (Linux-only)
  n = File.read("#$$/statm").split(-' ')[1].to_i
  if n > prev
    puts "#{prev} => #{n}"
    prev = n
  end

  # since Ctrl-C from a terminal can't stop this loop,
  # allow the user to just hit any key to stop
  break if STDIN.wait(0)
end
------------------------------------------------------------------------
r66289 | normal | 2018-12-09 05:36:32 +0900 (Sun, 09 Dec 2018) | 5 lines

Revert "thread_pthread.c: fix memory leak from fork loop leapfrog"

Oops, CI failures...

This reverts r66288 / commit 2b1dcc1dd1eb260fd20ff1e6e0dfb0e5624a3cc6.
------------------------------------------------------------------------
r66288 | normal | 2018-12-09 04:25:37 +0900 (Sun, 09 Dec 2018) | 24 lines

thread_pthread.c: fix memory leak from fork loop leapfrog

Constantly forking a single-threaded process in a loop leads to
a memory leak when using POSIX timers.

==> fork_leapfrog.rb <==
require 'io/wait'
Dir.chdir '/proc'
prev = 0
loop do
  pid = fork
  exit!(0) if pid

  # show the number of 4K pages used (Linux-only)
  n = File.read("#$$/statm").split(-' ')[1].to_i
  if n > prev
    puts "#{prev} => #{n}"
    prev = n
  end

  # since Ctrl-C from a terminal can't stop this loop,
  # allow the user to just hit any key to stop
  break if STDIN.wait(0)
end
------------------------------------------------------------------------
r66287 | svn | 2018-12-09 02:39:54 +0900 (Sun, 09 Dec 2018) | 1 line

* 2018-12-09
------------------------------------------------------------------------
r66286 | aycabta | 2018-12-09 02:39:52 +0900 (Sun, 09 Dec 2018) | 1 line

Merge RDoc 6.1.0.beta3 from upstream
------------------------------------------------------------------------
r66284 | nobu | 2018-12-08 15:52:21 +0900 (Sat, 08 Dec 2018) | 1 line

Duplicate header name only if found
------------------------------------------------------------------------
r66283 | nobu | 2018-12-08 12:32:39 +0900 (Sat, 08 Dec 2018) | 1 line

Fix compile error at r66280
------------------------------------------------------------------------
r66282 | nobu | 2018-12-08 11:20:14 +0900 (Sat, 08 Dec 2018) | 3 lines

Honor configured ruby header locations as the MJIT header path

[Bug #15391]
------------------------------------------------------------------------
r66281 | nobu | 2018-12-08 11:05:06 +0900 (Sat, 08 Dec 2018) | 4 lines

Removed unnecessary dependency on mjit_config.h

MJIT_MIN_HEADER is passed via a command line option for
mjit_build_dir.so.
------------------------------------------------------------------------
r66280 | nobu | 2018-12-08 10:50:39 +0900 (Sat, 08 Dec 2018) | 5 lines

Give the MJIT header path name

Give the whole MJIT header path name by preloaded shared library
mjit_build_dir.so, than building the path from a given directory
name and the embedded base name.
------------------------------------------------------------------------
r66279 | nobu | 2018-12-08 10:49:02 +0900 (Sat, 08 Dec 2018) | 1 line

Use BUILDDIR in ruby-runner.h from config.status
------------------------------------------------------------------------
r66278 | svn | 2018-12-08 01:48:23 +0900 (Sat, 08 Dec 2018) | 1 line

* 2018-12-08
------------------------------------------------------------------------
r66277 | nobu | 2018-12-08 01:48:21 +0900 (Sat, 08 Dec 2018) | 1 line

Fix memory leak when failed to build pch path
------------------------------------------------------------------------
r66276 | nobu | 2018-12-07 23:37:28 +0900 (Fri, 07 Dec 2018) | 1 line

Array#any? just returns true/false
------------------------------------------------------------------------
r66275 | suke | 2018-12-07 21:12:45 +0900 (Fri, 07 Dec 2018) | 8 lines

should not use Internet Explorer

* spec/ruby/library/win32ole/fixtures/classes.rb: add
  SYSTEM_MONITOR_CONTROL_AVAILABLE.

* spec/ruby/library/win32ole/win32ole_method/event_spec.rb: Internet
  Explorer is not available in some environment. Instead, try to use
  System Monitor Control.
------------------------------------------------------------------------
r66274 | nobu | 2018-12-07 21:03:16 +0900 (Fri, 07 Dec 2018) | 4 lines

Adjust reserved hash values

The reserved hash values in hash.c must be consistend with st.c.
[ruby-core:90356] [Bug #15389]
------------------------------------------------------------------------
r66273 | nobu | 2018-12-07 20:45:03 +0900 (Fri, 07 Dec 2018) | 1 line

Should use the proper constant
------------------------------------------------------------------------
r66272 | hsbt | 2018-12-07 19:00:21 +0900 (Fri, 07 Dec 2018) | 1 line

Bump rake-12.3.2 on bundled gems.
------------------------------------------------------------------------
r66271 | duerst | 2018-12-07 18:01:13 +0900 (Fri, 07 Dec 2018) | 1 line

replace hardcoded emoji version by RbConfig::CONFIG['UNICODE_EMOJI_VERSION']
------------------------------------------------------------------------
r66270 | nobu | 2018-12-07 17:51:26 +0900 (Fri, 07 Dec 2018) | 1 line

Add UNICODE_EMOJI_VERSION to RbConfig [Feature #15341]
------------------------------------------------------------------------
r66269 | duerst | 2018-12-07 16:20:26 +0900 (Fri, 07 Dec 2018) | 7 lines

convert check for array length to assertion and comment out

In regparse.c, in function node_extended_grapheme_cluster,
we used a raw if() with exit(1) as a cross-check for our
length calculations for the common node array. Convert this
to an assertion and comment it out because it is not needed
for active code.
------------------------------------------------------------------------
r66268 | normal | 2018-12-07 16:09:31 +0900 (Fri, 07 Dec 2018) | 19 lines

zlib (gzfile_write_raw): do not resize string after .write call

Apparently, a component of Rails implements a buffering .write
method which keeps the String buffer around and makes it unsafe
for us to clear it after calling .write.

This caused Rack::Deflater to give empty results when enabled.

Fortunately, per r61631 / a55abcc0ca6f628fc05304f81e5a044d65ab4a68,
this misguided optimization was only worth a small (0.5MB) savings
and we still benefit from the majority of the memory savings in
that change.

Thanks to zunda for the bug report.

[ruby-core:90133] [Bug #15356]

Fixes: r61631 (commit a55abcc0ca6f628fc05304f81e5a044d65ab4a68)
       ("zlib: reduce garbage on gzip writes (deflate)")
------------------------------------------------------------------------
r66267 | duerst | 2018-12-07 16:04:00 +0900 (Fri, 07 Dec 2018) | 9 lines

remove code duplication and put everything into forward order

In file regparse.c, in function node_extended_grapheme_cluster(),
eliminate code duplication of CRLF and '.' (any character). This
uses the fact that both for Unicode encodings and for non-Unicode
encodings, the first alternative is CRLF, and the last alternative
is '.' (any character). This puts all of the pieces into forward
order (the order of the code follows the order of the syntax
definition).
------------------------------------------------------------------------
r66266 | nobu | 2018-12-07 10:42:03 +0900 (Fri, 07 Dec 2018) | 1 line

Dump the tested timestamp itself
------------------------------------------------------------------------
r66265 | nobu | 2018-12-07 08:51:45 +0900 (Fri, 07 Dec 2018) | 1 line

Dump more timestamps
------------------------------------------------------------------------
r66264 | k0kubun | 2018-12-07 08:26:53 +0900 (Fri, 07 Dec 2018) | 1 line

accept_loop_spec.rb: avoid random hang
------------------------------------------------------------------------
r66263 | k0kubun | 2018-12-07 08:16:01 +0900 (Fri, 07 Dec 2018) | 5 lines

test_gem_package_task.rb: suppress random failure

by Bundler.

http://ci.rvm.jp/results/trunk-vm-asserts@silicon-docker/1500762
------------------------------------------------------------------------
r66262 | nobu | 2018-12-07 08:06:13 +0900 (Fri, 07 Dec 2018) | 3 lines

Warn redefinitions of some methods on Object

[Bug #5473] [Bug #14670] [Bug #15382]
------------------------------------------------------------------------
r66261 | nobu | 2018-12-07 08:03:54 +0900 (Fri, 07 Dec 2018) | 1 line

Show the class of the receiver [Feature #15231]
------------------------------------------------------------------------
r66260 | suke | 2018-12-07 06:56:55 +0900 (Fri, 07 Dec 2018) | 5 lines

should not use Microsoft Internet Controller

* spec/ruby/library/win32ole/win32ole_method/helpcontext_spec.rb:
  Use FileSystemObject. Microsoft Internet Explorer is not available
  in some environment.
------------------------------------------------------------------------
r66259 | svn | 2018-12-07 03:28:26 +0900 (Fri, 07 Dec 2018) | 1 line

* expand tabs.
------------------------------------------------------------------------
r66258 | tenderlove | 2018-12-07 03:28:21 +0900 (Fri, 07 Dec 2018) | 111 lines

Speed up hash literals by duping

This commit replaces the `newhashfromarray` instruction with a `duphash`
instruction.  Instead of allocating a new hash from an array stored in
the Instruction Sequences, store a hash directly in the instruction
sequences and dup it on execution.

== Instruction sequence changes ==

```ruby
code = <<-eorby
  { "foo" => "bar", "baz" => "lol" }
eorby

insns = RubyVM::InstructionSequence.compile(code, __FILE__, nil, 0, frozen_string_literal: true)
puts insns.disasm
```

On Ruby 2.5:

```
== disasm: #<ISeq:<compiled>@test.rb:0 (0,0)-(0,36)>====================
0000 putobject        "foo"
0002 putobject        "bar"
0004 putobject        "baz"
0006 putobject        "lol"
0008 newhash          4
0010 leave
```

Ruby 2.6@r66174 3b6321083a2e3525da3b34d08a0b68bac094bd7f:

```
$ ./ruby test.rb
== disasm: #<ISeq:<compiled>@test.rb:0 (0,0)-(0,36)> (catch: FALSE)
0000 newhashfromarray             2, ["foo", "bar", "baz", "lol"]
0003 leave
```

Ruby 2.6 + This commit:

```
$ ./ruby test.rb
== disasm: #<ISeq:<compiled>@test.rb:0 (0,0)-(0,36)> (catch: FALSE)
0000 duphash                      {"foo"=>"bar", "baz"=>"lol"}
0002 leave
```

== Benchmark Results ==

Compared to 2.5.3:

```
$ make benchmark ITEM=hash_literal_small COMPARE_RUBY=/Users/aaron/.rbenv/versions/2.5.3/bin/ruby
generating known_errors.inc
known_errors.inc unchanged
./revision.h unchanged
/Users/aaron/.rbenv/shims/ruby --disable=gems -rrubygems -I./benchmark/lib ./benchmark/benchmark-driver/exe/benchmark-driver \
	            --executables="compare-ruby::/Users/aaron/.rbenv/versions/2.5.3/bin/ruby -I.ext/common --disable-gem" \
	            --executables="built-ruby::./miniruby -I./lib -I. -I.ext/common  -r./prelude --disable-gem" \
	            $(find ./benchmark -maxdepth 1 -name '*hash_literal_small*.yml' -o -name '*hash_literal_small*.rb' | sort)
Calculating -------------------------------------
                     compare-ruby  built-ruby
 hash_literal_small2        1.498       1.877 i/s -       1.000 times in 0.667581s 0.532656s
 hash_literal_small4        1.197       1.642 i/s -       1.000 times in 0.835375s 0.609160s
 hash_literal_small8        0.620       1.215 i/s -       1.000 times in 1.611638s 0.823090s

Comparison:
              hash_literal_small2
          built-ruby:         1.9 i/s
        compare-ruby:         1.5 i/s - 1.25x  slower

              hash_literal_small4
          built-ruby:         1.6 i/s
        compare-ruby:         1.2 i/s - 1.37x  slower

              hash_literal_small8
          built-ruby:         1.2 i/s
        compare-ruby:         0.6 i/s - 1.96x  slower
```

Compared to r66255

```
$ make benchmark ITEM=hash_literal_small COMPARE_RUBY=/Users/aaron/.rbenv/versions/ruby-trunk/bin/ruby
generating known_errors.inc
known_errors.inc unchanged
./revision.h unchanged
/Users/aaron/.rbenv/shims/ruby --disable=gems -rrubygems -I./benchmark/lib ./benchmark/benchmark-driver/exe/benchmark-driver \
	            --executables="compare-ruby::/Users/aaron/.rbenv/versions/ruby-trunk/bin/ruby -I.ext/common --disable-gem" \
	            --executables="built-ruby::./miniruby -I./lib -I. -I.ext/common  -r./prelude --disable-gem" \
	            $(find ./benchmark -maxdepth 1 -name '*hash_literal_small*.yml' -o -name '*hash_literal_small*.rb' | sort)
Calculating -------------------------------------
                     compare-ruby  built-ruby
 hash_literal_small2        1.567       1.831 i/s -       1.000 times in 0.638056s 0.546039s
 hash_literal_small4        1.298       1.652 i/s -       1.000 times in 0.770214s 0.605182s
 hash_literal_small8        0.873       1.216 i/s -       1.000 times in 1.145304s 0.822047s

Comparison:
              hash_literal_small2
          built-ruby:         1.8 i/s
        compare-ruby:         1.6 i/s - 1.17x  slower

              hash_literal_small4
          built-ruby:         1.7 i/s
        compare-ruby:         1.3 i/s - 1.27x  slower

              hash_literal_small8
          built-ruby:         1.2 i/s
        compare-ruby:         0.9 i/s - 1.39x  slower
```
------------------------------------------------------------------------
r66257 | svn | 2018-12-07 03:20:12 +0900 (Fri, 07 Dec 2018) | 1 line

* properties.
------------------------------------------------------------------------
r66256 | tenderlove | 2018-12-07 03:20:11 +0900 (Fri, 07 Dec 2018) | 3 lines

Add benchmark for hash small literals

Co-Authored-By: Krzysztof Rybka <krzysztof.rybka@gmail.com>
------------------------------------------------------------------------
r66255 | svn | 2018-12-07 00:33:56 +0900 (Fri, 07 Dec 2018) | 1 line

* 2018-12-07
------------------------------------------------------------------------
r66254 | naruse | 2018-12-07 00:33:54 +0900 (Fri, 07 Dec 2018) | 4 lines

Add missing declaration to export

Additional fix for r66200:
https://rubyci.org/logs/rubyci.s3.amazonaws.com/icc-x64/ruby-trunk/log/20181206T130002Z.fail.html.gz
------------------------------------------------------------------------
r66252 | ko1 | 2018-12-06 22:56:36 +0900 (Thu, 06 Dec 2018) | 1 line

add NEWS entries about script_compiled event
------------------------------------------------------------------------
r66251 | ko1 | 2018-12-06 22:53:48 +0900 (Thu, 06 Dec 2018) | 1 line

add tests for script_compiled TP event.
------------------------------------------------------------------------
r66250 | svn | 2018-12-06 22:42:35 +0900 (Thu, 06 Dec 2018) | 1 line

* expand tabs.
------------------------------------------------------------------------
r66249 | ko1 | 2018-12-06 22:42:32 +0900 (Thu, 06 Dec 2018) | 14 lines

`script_compiled` TracePoint event [Feature #15287]

* vm_trace.c: add `script_compiled` event. This event invoked
  after script compiling and before evaluating compiled script.
  Also the following methods are added:

  `TracePoint#compiled_instruction_sequence` method to get compiled
  `RubyVM::InstructionSequence` instance.

  `TracePoint#compiled_eval_script` method to get compiled script (String)
  by *eval methods (return nil if compiling by file).

* vm_trace.c (tracepoint_attr_raised_exception):

------------------------------------------------------------------------
r66248 | hsbt | 2018-12-06 22:19:06 +0900 (Thu, 06 Dec 2018) | 1 line

Added News entries about RubyGems and Bundler.
------------------------------------------------------------------------
r66247 | naruse | 2018-12-06 21:35:00 +0900 (Thu, 06 Dec 2018) | 1 line

Should be true fix for r66200
------------------------------------------------------------------------
r66246 | ko1 | 2018-12-06 19:52:27 +0900 (Thu, 06 Dec 2018) | 18 lines

Return same ISeq object for one src.

* iseq.c: before this patch, RubyVM::InstructionSequence.of(src) (ISeq in
  short) returns different ISeq (wrapper) objects point to one ISeq internal
  object. This patch changes this behavior to cache created ISeq (wrapper)
  objects and return same ISeq object for an internal ISeq object.

* iseq.h (ISEQ_EXECUTABLE_P): introduced to check executable ISeq objects.

* iseq.h (ISEQ_COMPILE_DATA_ALLOC): reordr setting flag line to avoid
  ISEQ_USE_COMPILE_DATA but compiled_data == NULL case.

* vm_core.h (rb_iseq_t): introduce `rb_iseq_t::wrapper` and
  `rb_iseq_t::aux::exec`.  Move `rb_iseq_t::local_hooks` to
  `rb_iseq_t::aux::exec::local_hooks`.

* test/ruby/test_iseq.rb: add ISeq.of() tests.

------------------------------------------------------------------------
r66245 | naruse | 2018-12-06 19:42:35 +0900 (Thu, 06 Dec 2018) | 1 line

suppress warning: unused variable 'vbits'
------------------------------------------------------------------------
r66244 | normal | 2018-12-06 19:41:07 +0900 (Thu, 06 Dec 2018) | 4 lines

io.c (io_fflush): eliminate redundant rb_io_check_closed

There is no need to call this function twice in a row since
thread switching won't happen in-between calls to it.
------------------------------------------------------------------------
r66243 | normal | 2018-12-06 19:09:35 +0900 (Thu, 06 Dec 2018) | 1 line

NEWS: fix typo (maesured => measured) [ci skip]
------------------------------------------------------------------------
r66242 | normal | 2018-12-06 19:09:30 +0900 (Thu, 06 Dec 2018) | 5 lines

io.c (io_write_nonblock): add RB_GC_GUARD, io_fflush may switch threads

Since io_fflush may block on mutex or rb_io_wait_readable and
switch threads, we need to ensure the `str' VALUE returned by
`rb_obj_as_string` is visible to GC.
------------------------------------------------------------------------
r66241 | naruse | 2018-12-06 19:02:04 +0900 (Thu, 06 Dec 2018) | 4 lines

refix of r66200

Though internal.h has the prototype, it still shows symbol lookup error...
https://rubyci.org/logs/rubyci.s3.amazonaws.com/icc-x64/ruby-trunk/log/20181206T050002Z.fail.html.gz
------------------------------------------------------------------------
r66240 | duerst | 2018-12-06 18:54:09 +0900 (Thu, 06 Dec 2018) | 1 line

remove an unused variable
------------------------------------------------------------------------
r66239 | duerst | 2018-12-06 18:16:43 +0900 (Thu, 06 Dec 2018) | 6 lines

make sure all nodes are freed on error in node_extended_grapheme_cluster()

regparse.c: In function node_extended_grapheme_cluster(), use function-global
array node_common and use it for list and alternate construction. This is done
so that in case of error, all nodes that have already been constructed can be
correctly freed in a single for loop. Document the layout structure.
------------------------------------------------------------------------
r66238 | nobu | 2018-12-06 16:49:24 +0900 (Thu, 06 Dec 2018) | 4 lines

Prefer rb_check_arity when 0 or 1 arguments

Especially over checking argc then calling rb_scan_args just to
raise an ArgumentError.
------------------------------------------------------------------------
r66237 | mame | 2018-12-06 15:40:54 +0900 (Thu, 06 Dec 2018) | 1 line

load.c (RubyVM.resolve_feature_path): New method.  [Feature #15230]
------------------------------------------------------------------------
r66236 | nobu | 2018-12-06 14:29:07 +0900 (Thu, 06 Dec 2018) | 1 line

Show diff in failure messages
------------------------------------------------------------------------
r66235 | nobu | 2018-12-06 14:29:04 +0900 (Thu, 06 Dec 2018) | 1 line

Add separator for test/-ext-
------------------------------------------------------------------------
r66234 | duerst | 2018-12-06 13:46:57 +0900 (Thu, 06 Dec 2018) | 13 lines

remove code duplication and streamline identifiers

In regparse.c:

* Reduce coode duplication by merging the almost identical functions
  create_sequence_node and create_alternate_node into a new function
  create_node_from_array, adding a parameter that distinguishes  between
  creating a list and creating an alternative.

* Streamline variable/function naming. Unicode UAX #29 uses 'sequence', but
  the regular expression library uses 'list' for the same concept. Keep
  'sequence' in the ccmments that are taken from UAX #29, but use 'list'
  in variable names.
------------------------------------------------------------------------
r66233 | naruse | 2018-12-06 11:57:04 +0900 (Thu, 06 Dec 2018) | 1 line

fix r66200 again
------------------------------------------------------------------------
r66232 | duerst | 2018-12-06 09:05:08 +0900 (Thu, 06 Dec 2018) | 7 lines

remove obsolete data from unicode.c

* unicode.c: Remove the arrays onigenc_unicode_GCB_ranges_GAZ,
  onigenc_unicode_GCB_ranges_E_Base, and onigenc_unicode_GCB_ranges_Emoji,
  because they are not needed anymore for Unicode 11.0.0.

* regparse.c: Remove external declarations for above arrays.
------------------------------------------------------------------------
r66231 | normal | 2018-12-06 04:01:29 +0900 (Thu, 06 Dec 2018) | 6 lines

Revert "fix typoe of r66200"

This reverts r66229 (commit e941daa6dd114b52356a63d3c3db5684e6c66717)

Many CI failures on this:
http://ci.rvm.jp/results/trunk-jemalloc@silicon-docker/1497858
------------------------------------------------------------------------
r66230 | normal | 2018-12-06 03:58:45 +0900 (Thu, 06 Dec 2018) | 9 lines

thread_sync.c (mutex_ptr): handle mutexes held by parent threads in children

Mutexes may be held by threads which only exist in the parent
process, so their waitqueues may be populated with references
to other dead threads.  We must reset them at fork.

I am a moron for introducing this bug :<

[ruby-core:90312] [Bug #15383]
------------------------------------------------------------------------
r66229 | naruse | 2018-12-06 03:37:47 +0900 (Thu, 06 Dec 2018) | 1 line

fix typoe of r66200
------------------------------------------------------------------------
r66228 | ko1 | 2018-12-06 02:23:32 +0900 (Thu, 06 Dec 2018) | 8 lines

Introduce "COLDFUNC" function attribute.

* include/ruby/defines.h: introduce "COLDFUNC" function attribute
  on several compilers for called unlikely functions.
  Apply to rb_memerror, rb_warn and rb_bug.

  A patch form  methodmissing <lourens@bearmetal.eu>.

------------------------------------------------------------------------
r66227 | svn | 2018-12-06 01:15:13 +0900 (Thu, 06 Dec 2018) | 1 line

* 2018-12-06
------------------------------------------------------------------------
r66226 | ko1 | 2018-12-06 01:15:09 +0900 (Thu, 06 Dec 2018) | 5 lines

fix C90 error.

* configure.ac (check broken_backtrace code): fix decl. position
  error because of `-Werror=declaration-after-statement`.

------------------------------------------------------------------------
r66224 | mrkn | 2018-12-05 20:30:26 +0900 (Wed, 05 Dec 2018) | 1 line

NEWS: update about bigdecimal [ci skip]
------------------------------------------------------------------------
r66223 | svn | 2018-12-05 20:30:26 +0900 (Wed, 05 Dec 2018) | 1 line

* properties.
------------------------------------------------------------------------
r66222 | mrkn | 2018-12-05 20:30:24 +0900 (Wed, 05 Dec 2018) | 3 lines

Import bigdecimal 1.4.0.pre.20181205a

* https://github.com/ruby/bigdecimal/compare/74d25ef..v1.4.0.pre.20181205a
------------------------------------------------------------------------
r66221 | svn | 2018-12-05 20:29:57 +0900 (Wed, 05 Dec 2018) | 1 line

* properties.
------------------------------------------------------------------------
r66220 | hsbt | 2018-12-05 20:29:56 +0900 (Wed, 05 Dec 2018) | 3 lines

Revert "Remove `libexec/bundle_ruby`"

This reverts commit 3f708604920f2fd7a105d5f092240737add15ef1.
------------------------------------------------------------------------
r66219 | kazu | 2018-12-05 20:20:29 +0900 (Wed, 05 Dec 2018) | 4 lines

Remove `libexec/bundle_ruby`

see r65979
[Bug #15291][ruby-dev:50663]
------------------------------------------------------------------------
r66218 | duerst | 2018-12-05 19:40:17 +0900 (Wed, 05 Dec 2018) | 1 line

remove unused variables in node_extended_grapheme_cluster()
------------------------------------------------------------------------
r66217 | duerst | 2018-12-05 19:11:57 +0900 (Wed, 05 Dec 2018) | 1 line

tweak/remove comments [ci skip]
------------------------------------------------------------------------
r66216 | duerst | 2018-12-05 19:06:47 +0900 (Wed, 05 Dec 2018) | 1 line

add update to Unicode 11.0.0 to NEWS [ci skip]
------------------------------------------------------------------------
r66215 | kazu | 2018-12-05 18:07:54 +0900 (Wed, 05 Dec 2018) | 5 lines

lib/monitor.rb: prevent to initialize MonitorMixin twice

and allow to initialize again when obj.dup.

Suggested by Benoit Daloze.  [ruby-core:88504] [Feature #15000]
------------------------------------------------------------------------
r66214 | duerst | 2018-12-05 18:00:40 +0900 (Wed, 05 Dec 2018) | 1 line

adjust some comments in node_extended_grapheme_cluster() [ci skip]
------------------------------------------------------------------------
r66213 | duerst | 2018-12-05 17:10:24 +0900 (Wed, 05 Dec 2018) | 11 lines

update to Unicode 11.0.0 (main step, not complete yet)

- common.mk: Change Unicode version to 11.0.0, and Emoji version to 11.0
- test/ruby/enc/test_emoji_breaks.rb: update hard-coded Emoji version
- enc/unicode/11.0.0, enc/unicode/11.0.0/casefold.h, enc/unicode/name2ctype.h:
  Add generated files. Files for Unicode 10.0.0 will be removed once we are
  sure 11.0.0 works.
- lib/unicode_normalize/tables.rb: Updated table.
- regparse.c: Almost completely reimplement grapheme cluster detection in
  function node_extended_grapheme_cluster().

------------------------------------------------------------------------
r66212 | nobu | 2018-12-05 13:25:44 +0900 (Wed, 05 Dec 2018) | 12 lines

implement Array-specific #all?, #none?, #one?

Before this patch Array#all? was not implemented in Array class
and alternatively Enumerable#all? was used, while #any? has its
own method entry in Array class.  Similarly, Array#none? and #one?
also lacks its own implementation.
This patch provides Array-specific implementations for above three
methods to enable faster method lookup.

[Fix GH-2041]

From: Koji Onishi <fursich0@gmail.com>
------------------------------------------------------------------------
r66211 | svn | 2018-12-05 13:01:55 +0900 (Wed, 05 Dec 2018) | 1 line

* properties.
------------------------------------------------------------------------
r66210 | mrkn | 2018-12-05 13:01:53 +0900 (Wed, 05 Dec 2018) | 45 lines

Revert bigdecimal 1.4.0 related commits

* Revert "Remove unnecessary linker flags"

  This reverts commit 49efa01579272d52d28bd361c498d96ca92e986e.

* Revert "Move dependency on gemspec"

  This reverts commit bfb64d476578eadd61a738149726da37840f068d.

* Revert "Remove unnecessary directory listing"

  This reverts commit 86661b5c60b8da6e5641c9c772b57857a1f988f4.

* Revert "* expand tabs."

  This reverts commit 35ada33f8386b56611f10b1a0a4e5667e9b08071.

* Revert "Import bigdecimal-1.4.0.pre-20181204a"

  This reverts commit 8891bb3bd602bdbabd24260cf1e431475dc027c8.

* Revert "ext/bigdecimal/bigdecimal.c: drop unused function"

  This reverts commit 5ceeea4da1179193c2c7ddcebfd67019128473e3.

* Revert "* expand tabs."

  This reverts commit e021386e905b6d6799a84dfbc2f0592e42626366.

* Revert "Import bigdecimal-1.4.0.pre-20181130a"

  This reverts commit a0e438cd3c28d2eaf4efa18243d5b6edafa14d88.

* Revert "NEWS: write about bigdecimal updates"

  This reverts commit 89455ff2ba973f2a9ee7b79657e0e6f1f31501f9.

* Revert "Fix rubyspec of bigdecimal for ruby <2.6"

  This reverts commit 4bcdeeb65e57de4da306d347652898c767162e74.

* Revert "Fix rubyspec against bigdecimal updates"

  This reverts commit c8fb30fc9e0ee14e87be1e231869a12aaef1eedf.
------------------------------------------------------------------------
r66209 | hsbt | 2018-12-05 10:41:53 +0900 (Wed, 05 Dec 2018) | 3 lines

Update the latest bundled gems.

  test-unit-3.2.8 to 3.2.9
------------------------------------------------------------------------
r66208 | nobu | 2018-12-05 10:19:23 +0900 (Wed, 05 Dec 2018) | 6 lines

Fix documentation for Warning.warn [ci skip]

Warning.warn does not add any newlines to the message argument.
[Bug #15379]

From: Olle Jonsson <olle.jonsson@gmail.com>
------------------------------------------------------------------------
r66207 | nobu | 2018-12-05 10:11:32 +0900 (Wed, 05 Dec 2018) | 3 lines

Build error method name at failure

So `struct nmin_data` size is reduced.
------------------------------------------------------------------------
r66206 | nobu | 2018-12-05 10:11:31 +0900 (Wed, 05 Dec 2018) | 1 line

Adjust indent [ci skip]
------------------------------------------------------------------------
r66205 | nobu | 2018-12-05 10:09:44 +0900 (Wed, 05 Dec 2018) | 1 line

Prefer rb_check_arity when 0 or 1 arguments
------------------------------------------------------------------------
r66204 | hsbt | 2018-12-05 08:33:29 +0900 (Wed, 05 Dec 2018) | 3 lines

Merge 2-0-stable branch from bundler/bundler.

  It's release version of Bundler 2
------------------------------------------------------------------------
r66203 | normal | 2018-12-05 08:10:17 +0900 (Wed, 05 Dec 2018) | 4 lines

mjit.c: remove init_list

It is not needed since we have LIST_HEAD_INIT initializer in
mjit_worker.c
------------------------------------------------------------------------
r66202 | odaira | 2018-12-05 07:19:09 +0900 (Wed, 05 Dec 2018) | 11 lines

Enable MJIT on AIX

* configure.ac: disable using __builtin_setjmp to avoid errors when execution
  globally jumps out of JITted code. Specify -std=gnu99 to JIT compilation
  to avoid errors regarding the "restrict" keyword in the precompiled header.
  Specify -shared in addition to -Wl,-G when building shared libraries
  to make mjit_build_dir.so expose the MJIT_BUILD_DIR symbol.  Use LDR_PRELOAD
  to load mjit_build_dir.so.

* mjit_worker.c: do not specify -nodefaultlibs or -nostdlibs because on AIX
  JITted code internally refers to the memcpy function.
------------------------------------------------------------------------
r66201 | svn | 2018-12-05 03:48:47 +0900 (Wed, 05 Dec 2018) | 1 line

* 2018-12-05
------------------------------------------------------------------------
r66200 | naruse | 2018-12-05 03:48:44 +0900 (Wed, 05 Dec 2018) | 4 lines

Add prototype of rb_ary_ptr_use_start()

Without this icc fails to run.
http://rubyci.s3.amazonaws.com/icc-x64/ruby-trunk/log/20181203T130002Z.diff.html.gz
------------------------------------------------------------------------
r66199 | k0kubun | 2018-12-04 22:15:24 +0900 (Tue, 04 Dec 2018) | 3 lines

.travis.yml: config_2nd may not exist in ~/

https://travis-ci.org/ruby/ruby/jobs/463317607
------------------------------------------------------------------------
r66198 | hsbt | 2018-12-04 21:24:12 +0900 (Tue, 04 Dec 2018) | 3 lines

Merge upstream from ruby/psych

  * https://github.com/ruby/psych/pull/379
------------------------------------------------------------------------
r66197 | k0kubun | 2018-12-04 20:45:05 +0900 (Tue, 04 Dec 2018) | 5 lines

Re-commit r65722

which was accidentally reverted by r65904

158562dabb197d6efc53cabe6662177c6ec3f43e
------------------------------------------------------------------------
r66196 | nobu | 2018-12-04 20:16:15 +0900 (Tue, 04 Dec 2018) | 4 lines

Remove unnecessary linker flags

Cygwin/mingw linker should be able to link against shared library
itself.  Mswin build sets -def:$(DEFFILE) option by the default.
------------------------------------------------------------------------
r66195 | nobu | 2018-12-04 20:16:14 +0900 (Tue, 04 Dec 2018) | 1 line

Move dependency on gemspec
------------------------------------------------------------------------
r66194 | nobu | 2018-12-04 20:16:11 +0900 (Tue, 04 Dec 2018) | 1 line

Remove unnecessary directory listing
------------------------------------------------------------------------
r66193 | duerst | 2018-12-04 19:51:57 +0900 (Tue, 04 Dec 2018) | 1 line

commit miss
------------------------------------------------------------------------
r66192 | duerst | 2018-12-04 19:49:55 +0900 (Tue, 04 Dec 2018) | 7 lines

change diaeresis from above to below for better visibility

In test/ruby/test_regexp.rb and test/ruby/test_string.rb, change
some instances of COMBINING DIAERESIS (U+0308, above) to
COMBINING DIAERESIS BELOW (U+0324) to make it more easily visible
in test output, particularly in the context of double quotes
surrounding strings.
------------------------------------------------------------------------
r66191 | k0kubun | 2018-12-04 18:37:23 +0900 (Tue, 04 Dec 2018) | 3 lines

test/excludes/_appveyor: exclude memory-inefficient

test which AppVeyor sometimes can't run.
------------------------------------------------------------------------
r66190 | nobu | 2018-12-04 18:16:49 +0900 (Tue, 04 Dec 2018) | 3 lines

Fix error message

* array.c (ary_take_first_or_last): expected optional argument.
------------------------------------------------------------------------
r66189 | kazu | 2018-12-04 17:22:10 +0900 (Tue, 04 Dec 2018) | 1 line

Use delete_prefix instead of `sub(/\Afixed-pattern/, '')`
------------------------------------------------------------------------
r66188 | hsbt | 2018-12-04 17:00:57 +0900 (Tue, 04 Dec 2018) | 3 lines

Merge rubygems master@221bdea

  * Fixed https://github.com/rubygems/rubygems/pull/2506
------------------------------------------------------------------------
r66187 | naruse | 2018-12-04 16:52:08 +0900 (Tue, 04 Dec 2018) | 1 line

fix typo of r66177
------------------------------------------------------------------------
r66186 | usa | 2018-12-04 15:53:05 +0900 (Tue, 04 Dec 2018) | 2 lines

unconstify cast to get rid of VC++ warnings

------------------------------------------------------------------------
r66185 | duerst | 2018-12-04 15:31:40 +0900 (Tue, 04 Dec 2018) | 1 line

exclude skin tones as second component in TestEmojiBreaks#test_mixed_emoji
------------------------------------------------------------------------
r66184 | svn | 2018-12-04 13:22:12 +0900 (Tue, 04 Dec 2018) | 1 line

* expand tabs.
------------------------------------------------------------------------
r66183 | mrkn | 2018-12-04 13:22:09 +0900 (Tue, 04 Dec 2018) | 3 lines

Import bigdecimal-1.4.0.pre-20181204a

* https://github.com/ruby/bigdecimal/compare/v1.4.0.pre.20181130a..v1.4.0.pre.20181204a
------------------------------------------------------------------------
r66182 | mrkn | 2018-12-04 13:22:08 +0900 (Tue, 04 Dec 2018) | 3 lines

Revert "Symbol refinements"

Due to assertion failures when VM_CHECK_MODE >= 2.
------------------------------------------------------------------------
r66181 | mrkn | 2018-12-04 13:22:06 +0900 (Tue, 04 Dec 2018) | 6 lines

Symbol refinements

* vm_args.c (refine_sym_proc_call): enalbe accidentally disabled
  refinements in Symbol#to_proc.   [Bug #15114]

From: osyo (manga osyo) <manga.osyo@gmail.com>
------------------------------------------------------------------------
r66180 | duerst | 2018-12-04 13:11:51 +0900 (Tue, 04 Dec 2018) | 5 lines

change embedding character in TestEmojiBreaks#test_embedded_emoji

In test/ruby/enc/test_emoji_breaks.rb, in method
TestEmojiBreaks#test_embedded_emoji, change the surrounding characters
from A/Z to the more neutral \t in preparation for upgrade to Unicode 11.0.0.
------------------------------------------------------------------------
r66179 | nobu | 2018-12-04 11:24:15 +0900 (Tue, 04 Dec 2018) | 1 line

Prefer rb_check_arity when 0 or 1 arguments
------------------------------------------------------------------------
r66178 | nobu | 2018-12-04 10:41:55 +0900 (Tue, 04 Dec 2018) | 1 line

process.c (retry_fork_async_signal_safe): fix -Wclobbered
------------------------------------------------------------------------
r66177 | naruse | 2018-12-04 09:40:49 +0900 (Tue, 04 Dec 2018) | 1 line

Use getent and cut on Solaris to get home directory
------------------------------------------------------------------------
r66176 | naruse | 2018-12-04 09:40:48 +0900 (Tue, 04 Dec 2018) | 3 lines

Use Dir.home to avoid platform dependency

On Solaris 10, `echo ~#{ENV['USER']}` As expected
------------------------------------------------------------------------
r66175 | svn | 2018-12-04 08:53:16 +0900 (Tue, 04 Dec 2018) | 1 line

* expand tabs.
------------------------------------------------------------------------
r66174 | tenderlove | 2018-12-04 08:53:11 +0900 (Tue, 04 Dec 2018) | 28 lines

Collapse putobject, putobject, newarray

This collapses:

```
== disasm: #<ISeq:bar@bench.rb:3 (3,0)-(5,3)> (catch: FALSE)
0000 putobject                    "a"                                 (   4)[LiCa]
0002 putobject                    "b"
0004 putobject                    "c"
0006 putobject                    "d"
0008 putobject                    "e"
0010 putobject                    "f"
0012 putobject                    "g"
0014 putobject                    "h"
0016 putobject                    "i"
0018 putobject                    "j"
0020 putobject                    "k"
0022 newarray                     11
0024 leave                                                            (   5)[Re]
```

In to this:

```
== disasm: #<ISeq:bar@bench.rb:3 (3,0)-(5,3)> (catch: FALSE)
0000 duparray                     ["a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k"](   4)[LiCa]
0002 leave                                                            (   5)[Re]
```
------------------------------------------------------------------------
r66173 | normal | 2018-12-04 06:00:32 +0900 (Tue, 04 Dec 2018) | 1 line

process.c (retry_fork_async_signal_safe): fix -Wclobbered on i686
------------------------------------------------------------------------
r66172 | svn | 2018-12-04 04:49:56 +0900 (Tue, 04 Dec 2018) | 1 line

* 2018-12-04
------------------------------------------------------------------------
r66171 | normal | 2018-12-04 04:49:54 +0900 (Tue, 04 Dec 2018) | 26 lines

process.c: fix ETXTBUSY from MJIT compiler process

This affects test/ruby/test_process.rb (test_execopt_env_path).

Since MJIT uses vfork+execve in a separate thread, there can be
small window in-between vfork and execve where tmp_script.cmd is
held open by the vforked child.  vfork only pauses the MJIT
thread, not any Ruby Threads, so our call to Process.spawn will
hit ETXTBUSY in that window unless we fork.

main thread                       | MJIT thread
----------------------------------------------------
fd = open(tmp)                    |                |
                                  | vfork for CC   |   CC running
write                             |                | ---------------
fchmod                            |                |  sees "fd" here
close(fd)                         |                |
    Process.spawn called          |                |
vfork  (spawn)|    (new process)  |                |
              | execve => TXTBUSY |                |
              |                   |                | execve (FD_CLOEXEC on fd)
              |                   | vfork returns  |

Holding the waitpid_lock whenever we intend to spawn a process
prevents the MJIT thread from spawning a process while we are
spawning in Ruby-land.
------------------------------------------------------------------------
r66170 | ko1 | 2018-12-03 22:39:42 +0900 (Mon, 03 Dec 2018) | 1 line

add a NEWS entry of TracePoint#enable
------------------------------------------------------------------------
r66169 | nobu | 2018-12-03 22:12:34 +0900 (Mon, 03 Dec 2018) | 1 line

update-deps: support coroutine dependencies
------------------------------------------------------------------------
r66168 | nobu | 2018-12-03 22:12:29 +0900 (Mon, 03 Dec 2018) | 1 line

Ignore goruby wrapper
------------------------------------------------------------------------
r66167 | k0kubun | 2018-12-03 21:39:11 +0900 (Mon, 03 Dec 2018) | 5 lines

ext/bigdecimal/bigdecimal.c: drop unused function

This has been unused since r66124.

cc: @mrkn
------------------------------------------------------------------------
r66166 | svn | 2018-12-03 21:36:47 +0900 (Mon, 03 Dec 2018) | 1 line

* expand tabs.
------------------------------------------------------------------------
r66165 | ko1 | 2018-12-03 21:36:39 +0900 (Mon, 03 Dec 2018) | 16 lines

make `RARRAY_PTR_USE` more conservertive.

* include/ruby/ruby.h: de-transient at
  `RARRAY_PTR_USE` and `RARRAY_PTR_USE_START`.
  Introduce `RARRAY_PTR_USE_TRANSIENT` and
  `RARRAY_PTR_USE_START_TRANSIENT` if you don't want to
  de-transient an array. Generally, it is difficult
  so C-extension writers should not use them.

* array.c: use `RARRAY_PTR_USE_TRANSIENT` if possible.

* hash.c: ditto.

* enum.c (enum_sort_by): remove `rb_ary_transient_heap_evacuate()`
  because `RARRAY_PTR_USE` do de-transient.

------------------------------------------------------------------------
r66164 | k0kubun | 2018-12-03 21:32:01 +0900 (Mon, 03 Dec 2018) | 11 lines

mjit.c: eliminate -save-temps flag

in a new variable cc_common_args.

`cflags=-save-temps=obj` makes MJIT fail like:
https://rubyci.org/logs/www.rubyist.net/~akr/chkbuild/debian/ruby-trunk/log/20181203T095000Z.log.html.gz

This rubyci specifies -save-temps=obj in CFLAGS to use update-deps, and
the flag is harmful when we want to use -pipe flag.

mjit_worker.c: prefer cc_common_args over CC_COMMON_ARGS
------------------------------------------------------------------------
r66163 | hsbt | 2018-12-03 21:01:26 +0900 (Mon, 03 Dec 2018) | 4 lines

Fixed test fails against OpenSSL 1.1.1.

  * https://rubyci.org/logs/rubyci.s3.amazonaws.com/ubuntu/ruby-trunk/log/20181203T093003Z.fail.html.gz
  * https://rubyci.org/logs/rubyci.s3.amazonaws.com/arch/ruby-trunk/log/20181203T090002Z.fail.html.gz
------------------------------------------------------------------------
r66162 | k0kubun | 2018-12-03 21:00:27 +0900 (Mon, 03 Dec 2018) | 6 lines

mjit_worker.c: undefine CC_PATH

because we mostly use cc_path now and the comment is obsolete (CC_PATH
is now absolute path and the TODO is already resolved).

mjit.c: use CC_COMMON_ARGS[0] directly
------------------------------------------------------------------------
r66161 | mame | 2018-12-03 19:35:13 +0900 (Mon, 03 Dec 2018) | 5 lines

Fix typo in trick2018/README [ci skip]

s/dimentional/dimensional

From: "yuuji.yaginuma" <yuuji.yaginuma@gmail.com>
------------------------------------------------------------------------
r66160 | naruse | 2018-12-03 18:55:05 +0900 (Mon, 03 Dec 2018) | 4 lines

Use /bin/echo instead of shell builtin echo

builtin echo of Solaris 10's sh doesn't expand `~`.
https://rubyci.org/logs/rubyci.s3.amazonaws.com/unstable10x/ruby-trunk/log/20181203T061807Z.fail.html.gz
------------------------------------------------------------------------
r66159 | normal | 2018-12-03 18:34:49 +0900 (Mon, 03 Dec 2018) | 10 lines

spec/ruby/core/io/*_spec.rb: explain MJIT failures

These random failures happen because FD number allocation
is not predictable when multiple threads are running (since
MJIT thread is opening/closing files all the time).

Real-world code practically never relies on predictable FD
number allocation (because much real-world code is
multi-threaded); so it's highly unlikely there'll be any
breakage to the user.
------------------------------------------------------------------------
r66158 | mrkn | 2018-12-03 18:21:39 +0900 (Mon, 03 Dec 2018) | 3 lines

NEWS: write about bigdecimal updates

[ci skip]
------------------------------------------------------------------------
r66157 | normal | 2018-12-03 18:15:16 +0900 (Mon, 03 Dec 2018) | 4 lines

process.c (rb_execarg_init): mark as static

io.c has not used it since r36229, and we can re-export
it if we need it at another time.
------------------------------------------------------------------------
r66156 | normal | 2018-12-03 17:57:15 +0900 (Mon, 03 Dec 2018) | 4 lines

process.c (rb_f_system): cleanup to use rb_execarg_get

TypedData_* macros hide assignments and are confusing and too
long for users of giant fonts.
------------------------------------------------------------------------
r66155 | nobu | 2018-12-03 17:51:29 +0900 (Mon, 03 Dec 2018) | 3 lines

Revert "Symbol refinements"

Due to assertion failures when VM_CHECK_MODE >= 2.
------------------------------------------------------------------------
r66154 | shyouhei | 2018-12-03 14:46:46 +0900 (Mon, 03 Dec 2018) | 2 lines

string.c: [DOC] deprecate String#crypt [ci skip] [Feature #14915]

------------------------------------------------------------------------
r66153 | normal | 2018-12-03 13:51:13 +0900 (Mon, 03 Dec 2018) | 4 lines

drb: fix tests on Debian sid/unstable with OpenSSL 1.1.1a

OpenSSL complains abour our keys being small and weak :<
Make them big and strong with 2048-bit RSA keys and SHA256 digests
------------------------------------------------------------------------
r66152 | normal | 2018-12-03 13:51:08 +0900 (Mon, 03 Dec 2018) | 4 lines

webrick: fix tests on Debian sid/unstable with OpenSSL 1.1.1a

OpenSSL complains abour our keys being small and weak :<
Make them big and strong with 2048-bit RSA keys and SHA256 digests
------------------------------------------------------------------------
r66151 | nobu | 2018-12-03 13:44:34 +0900 (Mon, 03 Dec 2018) | 6 lines

Symbol refinements

* vm_args.c (refine_sym_proc_call): enalbe accidentally disabled
  refinements in Symbol#to_proc.   [Bug #15114]

From: osyo (manga osyo) <manga.osyo@gmail.com>
------------------------------------------------------------------------
r66150 | nobu | 2018-12-03 13:44:33 +0900 (Mon, 03 Dec 2018) | 1 line

Revert "Symbol refinements [Bug #15114]"
------------------------------------------------------------------------
r66149 | nobu | 2018-12-03 13:34:27 +0900 (Mon, 03 Dec 2018) | 1 line

Symbol refinements [Bug #15114]
------------------------------------------------------------------------
r66148 | ko1 | 2018-12-03 12:51:55 +0900 (Mon, 03 Dec 2018) | 10 lines

use RARRAY_AREF instead of RARRAY_PTR_USE.

* enumerator.c (enum_chain_total_size): use RARRAY_AREF
  instead of RARRAY_PTR_USE because we don't need non-const
  ptr.

* enumerator.c (enum_chain_each): ditto.

* enumerator.c (enum_chain_rewind): ditto.

------------------------------------------------------------------------
r66147 | nobu | 2018-12-03 12:15:42 +0900 (Mon, 03 Dec 2018) | 3 lines

Cherry-picked spec/mspec/lib/mspec/helpers/fs.rb

From https://github.com/MSP-Greg/ruby/commit/316f60e3befa312320b2cc600d7b59ba64f12329
------------------------------------------------------------------------
r66146 | kazu | 2018-12-03 11:53:57 +0900 (Mon, 03 Dec 2018) | 3 lines

Remove `(nanosecond)` too [ci skip]

[Bug #15322]
------------------------------------------------------------------------
r66145 | okkez | 2018-12-03 11:34:23 +0900 (Mon, 03 Dec 2018) | 7 lines

time.rb: remove the unsupported formatting options from the document [ci skip]

Time.strptime does not support %3N, %6N, and %9N.

close [Bug #15322]


------------------------------------------------------------------------
r66144 | mame | 2018-12-03 10:59:29 +0900 (Mon, 03 Dec 2018) | 3 lines

sample/trick2013/mame/music-box.mp4: removed

The tarball will be reduced by about 568 kB.
------------------------------------------------------------------------
r66143 | mame | 2018-12-03 10:39:45 +0900 (Mon, 03 Dec 2018) | 3 lines

lib/pp.rb (Range#pretty_print): support endless range

`pp(1..)` should print `"(1..)"` instead of `"(1..nil)"`.
------------------------------------------------------------------------
r66142 | nobu | 2018-12-03 10:06:34 +0900 (Mon, 03 Dec 2018) | 4 lines

Refine RubyVM::AbstractSyntaxTree::Node#type

* ast.c (rb_ast_node_type): simplified to return a Symbol without
  "NODE_" prefix.
------------------------------------------------------------------------
r66141 | nobu | 2018-12-03 09:57:06 +0900 (Mon, 03 Dec 2018) | 1 line

test_pp.rb: show the node when failed
------------------------------------------------------------------------
r66140 | nobu | 2018-12-03 09:24:38 +0900 (Mon, 03 Dec 2018) | 1 line

Add RubyVM::AST#pretty_print
------------------------------------------------------------------------
r66139 | duerst | 2018-12-03 08:28:42 +0900 (Mon, 03 Dec 2018) | 9 lines

remove unnecessary settings with NULL_NODE in \X implementation

Remove unnecessary settings of node_array elements to NULL_NODE.
We can do this because we initialize the whole array to NULL_NODEs
and set everything again to NULL_NODEs when creating a sequence or
alternative node.

Also, fix an index error in the initialization of node_array.
(issue #15343)
------------------------------------------------------------------------
r66138 | duerst | 2018-12-03 07:05:36 +0900 (Mon, 03 Dec 2018) | 1 line

fix order of declarations and code at start of node_extended_grapheme_cluster()
------------------------------------------------------------------------
r66137 | ko1 | 2018-12-03 07:01:29 +0900 (Mon, 03 Dec 2018) | 1 line

fix last commit (r66135)
------------------------------------------------------------------------
r66136 | svn | 2018-12-03 06:41:51 +0900 (Mon, 03 Dec 2018) | 1 line

* 2018-12-03
------------------------------------------------------------------------
r66135 | duerst | 2018-12-03 06:41:50 +0900 (Mon, 03 Dec 2018) | 6 lines

make sure all nodes are freed on error in node_extended_grapheme_cluster()

regparse.c: In function node_extended_grapheme_cluster(), introduce function-global
array node_array and use it for sequence and alternate construction. This is done
so that in case of error, all nodes that have already been constructed can be
correctly freed. (issue #15343)
------------------------------------------------------------------------
r66134 | nobu | 2018-12-02 21:50:19 +0900 (Sun, 02 Dec 2018) | 3 lines

optarse.rb: mention multiple descriptions [ci skip]

[ruby-list:50718]
------------------------------------------------------------------------
r66133 | duerst | 2018-12-02 19:07:42 +0900 (Sun, 02 Dec 2018) | 7 lines

solve the genie/zombie/wrestlers bug

enc/unicode.c: - Add U+1F93C (WRESTLERS), U+1F9DE (GENIE), and U+1F9DF
                 to onigenc_unicode_GCB_ranges_E_Base.
               - Add comments with character names.
test/ruby/enc/test_emoji_breaks.rb: Activate tests for genie/zombie/wrestlers.
This closes issue #15343.
------------------------------------------------------------------------
r66132 | duerst | 2018-12-02 19:00:35 +0900 (Sun, 02 Dec 2018) | 1 line

expand a small comment [ci skip]
------------------------------------------------------------------------
r66129 | mrkn | 2018-12-02 15:43:15 +0900 (Sun, 02 Dec 2018) | 1 line

Fix rubyspec of bigdecimal for ruby <2.6
------------------------------------------------------------------------
r66128 | svn | 2018-12-02 14:21:57 +0900 (Sun, 02 Dec 2018) | 1 line

* properties.
------------------------------------------------------------------------
r66127 | mrkn | 2018-12-02 14:21:57 +0900 (Sun, 02 Dec 2018) | 1 line

Fix JSON::Parser against bigdecimal updates
------------------------------------------------------------------------
r66126 | svn | 2018-12-02 14:21:57 +0900 (Sun, 02 Dec 2018) | 1 line

* expand tabs.
------------------------------------------------------------------------
r66125 | mrkn | 2018-12-02 14:21:55 +0900 (Sun, 02 Dec 2018) | 1 line

Fix rubyspec against bigdecimal updates
------------------------------------------------------------------------
r66124 | mrkn | 2018-12-02 14:21:54 +0900 (Sun, 02 Dec 2018) | 3 lines

Import bigdecimal-1.4.0.pre-20181130a

* https://github.com/ruby/bigdecimal/compare/74d25ef..v1.4.0.pre.20181130a
------------------------------------------------------------------------
r66123 | duerst | 2018-12-02 10:33:24 +0900 (Sun, 02 Dec 2018) | 1 line

add/change some comments in node_extended_grapheme_cluster() [ci skip]
------------------------------------------------------------------------
r66122 | duerst | 2018-12-02 10:06:28 +0900 (Sun, 02 Dec 2018) | 1 line

reformat code [ci skip]
------------------------------------------------------------------------
r66121 | svn | 2018-12-02 08:28:17 +0900 (Sun, 02 Dec 2018) | 1 line

* 2018-12-02
------------------------------------------------------------------------
r66120 | nobu | 2018-12-02 08:28:16 +0900 (Sun, 02 Dec 2018) | 4 lines

LEGAL: update [ci skip]

* LEGAL: update configure, tool/config.guess, tool/config.sub and
  parse.c, to the latest versions.
------------------------------------------------------------------------
r66119 | nobu | 2018-12-01 21:05:37 +0900 (Sat, 01 Dec 2018) | 1 line

Include LEGAL in .document [ci skip]
------------------------------------------------------------------------
r66118 | hsbt | 2018-12-01 20:01:00 +0900 (Sat, 01 Dec 2018) | 3 lines

Merge rubygems-3.0.0.beta3.

  * [GSoC] Multi-factor feature for RubyGems https://github.com/rubygems/rubygems/pull/2369
------------------------------------------------------------------------
r66117 | mrkn | 2018-12-01 18:29:14 +0900 (Sat, 01 Dec 2018) | 5 lines

Let sub-directory exts depend on their parent ext

* ext/extmk.rb: Let sub-directory exts depend on their parent ext.

* template/exts.mk.tmpl: ditto.
------------------------------------------------------------------------
r66116 | duerst | 2018-12-01 17:26:39 +0900 (Sat, 01 Dec 2018) | 5 lines

remove unnecessary code removing CR/LF from range

Remove code that tries to remove CR and LF from Grapheme_Cluster_Break=Control.
This code is unnecessary because Grapheme_Cluster_Break=Control already excludes
CR and LF.
------------------------------------------------------------------------
r66115 | svn | 2018-12-01 16:31:35 +0900 (Sat, 01 Dec 2018) | 1 line

* remove trailing spaces.
------------------------------------------------------------------------
r66114 | duerst | 2018-12-01 16:31:34 +0900 (Sat, 01 Dec 2018) | 4 lines

introduce and use create_alternate_node()

Introduce new function create_alternate_node() to create an alternative node
from a list of nodes in one go. Use it once (two more uses expected).
------------------------------------------------------------------------
r66113 | duerst | 2018-12-01 15:07:53 +0900 (Sat, 01 Dec 2018) | 1 line

eliminate a list with only one element
------------------------------------------------------------------------
r66111 | samuel | 2018-12-01 12:49:52 +0900 (Sat, 01 Dec 2018) | 4 lines

Avoid GCing dead stack after switching away from a fiber

Fixes <https://bugs.ruby-lang.org/issues/14561> and discussed
<https://bugs.ruby-lang.org/issues/15362>.
------------------------------------------------------------------------
r66110 | k0kubun | 2018-12-01 09:37:54 +0900 (Sat, 01 Dec 2018) | 4 lines

tool/downloader.rb: retry Net::OpenTimeout

to prevent random failure
https://travis-ci.org/ruby/ruby/jobs/461667474
------------------------------------------------------------------------
r66109 | tenderlove | 2018-12-01 09:08:36 +0900 (Sat, 01 Dec 2018) | 3 lines

Revert "Collapse putobject, putobject, newarray"

This reverts commit cbdf5a1842cda89347a2c840d23c35f041aead68.
------------------------------------------------------------------------
r66108 | svn | 2018-12-01 08:58:17 +0900 (Sat, 01 Dec 2018) | 1 line

* 2018-12-01
------------------------------------------------------------------------
r66107 | svn | 2018-12-01 08:58:17 +0900 (Sat, 01 Dec 2018) | 1 line

* expand tabs.
------------------------------------------------------------------------
r66106 | tenderlove | 2018-12-01 08:58:13 +0900 (Sat, 01 Dec 2018) | 28 lines

Collapse putobject, putobject, newarray

This collapses:

```
== disasm: #<ISeq:bar@bench.rb:3 (3,0)-(5,3)> (catch: FALSE)
0000 putobject                    "a"                                 (   4)[LiCa]
0002 putobject                    "b"
0004 putobject                    "c"
0006 putobject                    "d"
0008 putobject                    "e"
0010 putobject                    "f"
0012 putobject                    "g"
0014 putobject                    "h"
0016 putobject                    "i"
0018 putobject                    "j"
0020 putobject                    "k"
0022 newarray                     11
0024 leave                                                            (   5)[Re]
```

In to this:

```
== disasm: #<ISeq:bar@bench.rb:3 (3,0)-(5,3)> (catch: FALSE)
0000 duparray                     ["a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k"](   4)[LiCa]
0002 leave                                                            (   5)[Re]
```
------------------------------------------------------------------------
r66104 | normal | 2018-11-30 20:44:21 +0900 (Fri, 30 Nov 2018) | 6 lines

test/ruby/test_io.rb (test_recycled_fd_close): remove hacks

I think I finally fixed the underlying bug in r65937
("io.c (fptr_finalize_flush): close race leading to EBADF")

I've run this test over 100000 times on a multicore system, now.
------------------------------------------------------------------------
r66103 | nobu | 2018-11-30 16:19:49 +0900 (Fri, 30 Nov 2018) | 1 line

Added words in the comment at r65088 [ci skip]
------------------------------------------------------------------------
r66102 | nobu | 2018-11-30 16:04:00 +0900 (Fri, 30 Nov 2018) | 1 line

Update source code URI in bundled_gems [ci skip]
------------------------------------------------------------------------
r66101 | normal | 2018-11-30 12:56:34 +0900 (Fri, 30 Nov 2018) | 3 lines

test/testunit/test_parallel.rb: respect subprocess timeout scale

MJIT tests take longer than 100s on my VM :<
------------------------------------------------------------------------
r66100 | normal | 2018-11-30 12:56:29 +0900 (Fri, 30 Nov 2018) | 7 lines

vm_trace.c: workqueue as thread-safe version of postponed_job

postponed_job is safe to use in signal handlers, but is not
thread-safe for MJIT.  Implement a workqueue for MJIT
thread-safety.

[Bug #15316]
------------------------------------------------------------------------
r66099 | normal | 2018-11-30 08:30:28 +0900 (Fri, 30 Nov 2018) | 1 line

io.c: fix clang -Werror,-Wshorten-64-to-32 on Linux sendfile
------------------------------------------------------------------------
r66098 | normal | 2018-11-30 08:28:15 +0900 (Fri, 30 Nov 2018) | 1 line

io.c: fix clang -Werror,-Wshorten-64-to-32 errors
------------------------------------------------------------------------
r66097 | svn | 2018-11-30 07:37:35 +0900 (Fri, 30 Nov 2018) | 1 line

* expand tabs.
------------------------------------------------------------------------
r66096 | normal | 2018-11-30 07:37:29 +0900 (Fri, 30 Nov 2018) | 7 lines

io.c: favor comparisons against zero rather than -1

On my 32-bit x86 userspace, I get the following .text savings:

    text	   data	    bss	    dec	    hex	filename
  152971	     56	    252	 153279	  256bf	io.o.before
  152863	     56	    252	 153171	  25653	io.o.after
------------------------------------------------------------------------
r66095 | tenderlove | 2018-11-30 05:39:51 +0900 (Fri, 30 Nov 2018) | 31 lines

Use a shared array for the `duparray` instruction

In this example code:

```ruby
def foo
  [1, 2, 3, 4]
end
```

The array literal uses a `duparray` instruction. Before this patch,
`rb_ary_resurrect` would malloc and memcpy a new array buffer.  This
patch changes `rb_ary_resurrect` to use `ary_make_partial` so that the
new array object shares the underlying buffer with the array stored in
the instruction sequences.

Before this patch, the new array object is not shared:

```
$ ruby -r objspace -e'p ObjectSpace.dump([1, 2, 3, 4])'
"{\"address\":\"0x7fa2718372d0\", \"type\":\"ARRAY\", \"class\":\"0x7fa26f8b0010\", \"length\":4, \"memsize\":72, \"flags\":{\"wb_protected\":true}}\n"
```

After this patch:

```
$ ./ruby -r objspace -e'p ObjectSpace.dump([1, 2, 3, 4])'
"{\"address\":\"0x7f9a76883638\", \"type\":\"ARRAY\", \"class\":\"0x7f9a758af900\", \"length\":4, \"shared\":true, \"references\":[\"0x7f9a768837c8\"], \"memsize\":40, \"flags\":{\"wb_protected\":true}}\n"
```

[Feature #15289] [ruby-core:90097]
------------------------------------------------------------------------
r66094 | svn | 2018-11-30 05:00:18 +0900 (Fri, 30 Nov 2018) | 1 line

* 2018-11-30
------------------------------------------------------------------------
r66093 | normal | 2018-11-30 05:00:00 +0900 (Fri, 30 Nov 2018) | 9 lines

disable non-blocking pipes and sockets by default

There seems to be a compatibility problems with Rails +
Rack::Deflater; so we revert this incompatibility.

This effectively reverts r65922; but keeps the bugfixes to
better support non-blocking sockets and pipes for future use.

[Bug #15356] [Bug #14968]
------------------------------------------------------------------------
r66092 | kazu | 2018-11-29 18:22:13 +0900 (Thu, 29 Nov 2018) | 1 line

Remove unused variable in example code [ci skip]
------------------------------------------------------------------------
r66091 | ko1 | 2018-11-29 17:03:55 +0900 (Thu, 29 Nov 2018) | 9 lines

clear dst Hash on Hash#replace. [Bug #15358]

* hash.c (linear_copy): solve two issues on `Hash#replace`.
  (1) fix memory leak
      (1-1) don't allocate memory if destination already
            has a memory area.
      (1-2) free destination memory if src is NULL.
  (2) clear transient heap flag if src is NULL. [Bug #15358]

------------------------------------------------------------------------
r66090 | nobu | 2018-11-29 16:45:54 +0900 (Thu, 29 Nov 2018) | 1 line

Create empty revision.h when srcdir is write-only [ci skip]
------------------------------------------------------------------------
r66089 | nobu | 2018-11-29 16:07:40 +0900 (Thu, 29 Nov 2018) | 1 line

Always try to update revision.h with GNU make
------------------------------------------------------------------------
r66088 | k0kubun | 2018-11-29 15:51:08 +0900 (Thu, 29 Nov 2018) | 5 lines

Revert "using_spec.rb: skip broken test for MinGW for now"

This reverts commit 110273c53461a9a7ecdcca705346be21f25f50c6.

Try this with r66087
------------------------------------------------------------------------
r66087 | ko1 | 2018-11-29 15:37:01 +0900 (Thu, 29 Nov 2018) | 2 lines

use __builtin_setjmp on mingw64 [Bug #15348].

------------------------------------------------------------------------
r66086 | shyouhei | 2018-11-29 15:16:31 +0900 (Thu, 29 Nov 2018) | 13 lines

Remove HEAP_ALIGN_LOG setting in configure.ac for OpenBSD/MirOS

The ruby setting was renamed to HEAP_PAGE_ALIGN_LOG, but the
configure.in (now configure.ac) file was not updated, so the
setting had no effect.  The configure setting is unnecessary
after OpenBSD 5.2 and MirOS has been discontinued (with the last
release being over 10 years ago), so it is better to just remove
the related configure setting.

Fix [Bug #13438]
From: Jeremy Evans <code@jeremyevans.net>


------------------------------------------------------------------------
r66085 | shyouhei | 2018-11-29 14:26:05 +0900 (Thu, 29 Nov 2018) | 10 lines

.travis.yml: cache unicode.org files

Before this changeset (since r58071) we did not download files
from unicode.org but just touch some files.  This is a kind of
hack that people normally don't do at home.

We are caching other files between builds now.  Why not also save
those files downloaded from elsewhere.  This covers more
realistic workload, I guess.

------------------------------------------------------------------------
r66084 | shyouhei | 2018-11-29 11:47:36 +0900 (Thu, 29 Nov 2018) | 5 lines

.travis.yml: fix YAML parse error

`[` is a meta character in YAML.  `- [` starts an array,
so it should end with `]`; but it was not.

------------------------------------------------------------------------
r66083 | svn | 2018-11-29 10:09:49 +0900 (Thu, 29 Nov 2018) | 1 line

* 2018-11-29
------------------------------------------------------------------------
r66082 | nobu | 2018-11-29 10:09:47 +0900 (Thu, 29 Nov 2018) | 6 lines

time.rb: Move documents and stop others

* lib/time.rb: Move method documents to each methods.  And stop
  documentation of the abstract and others, which were confusingly
  placed at the top of generated documents prior to the abstract
  in time.c.
------------------------------------------------------------------------
r66081 | nobu | 2018-11-28 23:56:19 +0900 (Wed, 28 Nov 2018) | 1 line

Executable scripts have been moved to libexec [ci skip]
------------------------------------------------------------------------
r66080 | nobu | 2018-11-28 23:08:35 +0900 (Wed, 28 Nov 2018) | 1 line

time.c: rescue find_timezone when loading
------------------------------------------------------------------------
r66079 | nobu | 2018-11-28 23:08:34 +0900 (Wed, 28 Nov 2018) | 1 line

Try with TZInfo and Timezone gems
------------------------------------------------------------------------
r66078 | nobu | 2018-11-28 23:08:33 +0900 (Wed, 28 Nov 2018) | 1 line

Time.at in: tz
------------------------------------------------------------------------
r66077 | nobu | 2018-11-28 23:08:32 +0900 (Wed, 28 Nov 2018) | 1 line

Timezone at Time.at
------------------------------------------------------------------------
r66076 | nobu | 2018-11-28 23:08:31 +0900 (Wed, 28 Nov 2018) | 1 line

Try Time.find_timezone to convert name to timezone
------------------------------------------------------------------------
r66075 | nobu | 2018-11-28 23:08:30 +0900 (Wed, 28 Nov 2018) | 1 line

Try Time.find_timezone to load
------------------------------------------------------------------------
r66072 | duerst | 2018-11-28 16:07:59 +0900 (Wed, 28 Nov 2018) | 1 line

remove two unnecessary variables (np2 and np3)
------------------------------------------------------------------------
r66071 | duerst | 2018-11-28 15:43:57 +0900 (Wed, 28 Nov 2018) | 1 line

eliminate intermediate variable in very short block (3 times)
------------------------------------------------------------------------
r66070 | duerst | 2018-11-28 15:21:52 +0900 (Wed, 28 Nov 2018) | 4 lines

use create_sequence_node() four more times

Four more use of create_sequence_node() in node_extended_grapheme_cluster
(a few more to come).
------------------------------------------------------------------------
r66069 | nobu | 2018-11-28 15:12:58 +0900 (Wed, 28 Nov 2018) | 4 lines

Get rid of block-less Proc.new

* lib/optparse.rb (OptionParser::Switch#initialize): get rid of
  `Proc.new` without a block, which may be deprecated in the future.
------------------------------------------------------------------------
r66068 | nobu | 2018-11-28 15:12:57 +0900 (Wed, 28 Nov 2018) | 4 lines

Remove useless backslash

* lib/optparse.rb (OptionParser::Switch#compsys): remove useless
  backslash which just confuse ruby-mode.el.
------------------------------------------------------------------------
r66067 | normal | 2018-11-28 13:31:42 +0900 (Wed, 28 Nov 2018) | 4 lines

test_settracefunc (test_tracepoint_enable_with_target_line): less fragile

Allow us to make other changes to the file and move the method
around without affecting this test.
------------------------------------------------------------------------
r66066 | hsbt | 2018-11-28 12:10:09 +0900 (Wed, 28 Nov 2018) | 1 line

Regenerated binstubs of bundler, rdoc and irb.
------------------------------------------------------------------------
r66065 | hsbt | 2018-11-28 12:08:14 +0900 (Wed, 28 Nov 2018) | 3 lines

Merge rubygems upstream from https://github.com/rubygems/rubygems/commit/2c499655f29070c809dfea9f5fda6fac6850e62e

  https://github.com/rubygems/rubygems/pull/2493
------------------------------------------------------------------------
r66064 | hsbt | 2018-11-28 11:38:29 +0900 (Wed, 28 Nov 2018) | 3 lines

Merge stringio.gemspec from github repository.

  Temporary ignored configuration of certificate sign.
------------------------------------------------------------------------
r66063 | duerst | 2018-11-28 10:58:35 +0900 (Wed, 28 Nov 2018) | 4 lines

use create_sequence_node() once more

One more use of create_sequence_node() in node_extended_grapheme_cluster
(several more to come).
------------------------------------------------------------------------
r66062 | k0kubun | 2018-11-28 10:53:46 +0900 (Wed, 28 Nov 2018) | 3 lines

using_spec.rb: skip broken test for MinGW for now

ko1 is fixing this and he suggested to skip it for now
------------------------------------------------------------------------
r66061 | shugo | 2018-11-28 10:51:44 +0900 (Wed, 28 Nov 2018) | 3 lines

lib/monitor.rb: avoid race conditions by Thread.handle_interrupt

Suggested by Benoit Daloze.  [ruby-core:88502] [Bug #14998]
------------------------------------------------------------------------
r66060 | normal | 2018-11-28 10:10:40 +0900 (Wed, 28 Nov 2018) | 9 lines

io.c (rb_update_max_fd): use F_GETFL if possible

On 64-bit Linux, fstat() needs to fill out a 144 byte struct
while F_GETFL only needs to return 8 bytes.

Fwiw, F_GETFD requires an additional rcu_read_lock and bitmap
check; so it's obviously more expensive than F_GETFL on Linux.

Reduce stack usage of rb_update_max_fd from 184 to 24 bytes.
------------------------------------------------------------------------
r66059 | nobu | 2018-11-28 10:04:39 +0900 (Wed, 28 Nov 2018) | 8 lines

Fix for coroutine/win32/Context.obj

* coroutine/win32/Context.asm: old ml version 9 needs CPU
  directive before `.model` directive.

* win32/Makefile.sub: specify object directories to separate Win32
  and Win64 targets.  Win32 rule was overridden by Win64 rule and
  just ignored.
------------------------------------------------------------------------
r66058 | nobu | 2018-11-28 10:04:38 +0900 (Wed, 28 Nov 2018) | 1 line

win32/Makefile.sub: add flags for AS
------------------------------------------------------------------------
r66057 | duerst | 2018-11-28 09:53:35 +0900 (Wed, 28 Nov 2018) | 5 lines

introduce macro R_ERR to reduce repetitive code

Introduce a new preprocessor macro R_ERR to visually reduce repetitive code
checking for return values and going to the err: label at the end of the
function node_extended_grapheme_cluster().
------------------------------------------------------------------------
r66056 | shyouhei | 2018-11-28 09:49:24 +0900 (Wed, 28 Nov 2018) | 9 lines

.travis.yaml: unquote

It was probably me, 7 years ago, in r33844, who started overly
quoting YAML strings.  But now, this file grown up 50+ times from
6 lines to more than 300.  It is more annoying than convenient to
quote everything to add backslashes here and there.

Just use quotes only when necessary.

------------------------------------------------------------------------
r66055 | hsbt | 2018-11-28 09:48:21 +0900 (Wed, 28 Nov 2018) | 1 line

Removed redundant empty line.
------------------------------------------------------------------------
r66054 | svn | 2018-11-28 09:35:27 +0900 (Wed, 28 Nov 2018) | 1 line

* expand tabs.
------------------------------------------------------------------------
r66053 | normal | 2018-11-28 09:35:22 +0900 (Wed, 28 Nov 2018) | 13 lines

io.c: reduce IO.copy_stream stack usage on Linux

nogvl_copy_file_range and nogvl_copy_stream_sendfile each
used 344 bytes of stack before this change.  Now, they are
inlined into nogvl_copy_stream_func which only uses 200 bytes
of stack.

"struct stat" is 144 bytes on my 64-bit Linux.

Note: this doesn't affect GC (yet) since GVL is released;
but increases safety if called from deep machine stacks.

It will affect GC if Thread::Light is merged.
------------------------------------------------------------------------
r66052 | duerst | 2018-11-28 09:28:52 +0900 (Wed, 28 Nov 2018) | 6 lines

reduce number of arguments on quantify_property_node()

There are only four patterns of the last two arguments to quantify_property_node().
By replacing the lower/upper arguments with a single char, we get more expressive
calls, the last argument directly corresponding to the quantifier that we want to
use (except for '2', which means exactly two).
------------------------------------------------------------------------
r66051 | kazu | 2018-11-28 08:57:55 +0900 (Wed, 28 Nov 2018) | 1 line

Add Float::INFINITY or nil to call-seq of Enumerator::Chain#size [ci skip]
------------------------------------------------------------------------
r66050 | normal | 2018-11-28 07:48:07 +0900 (Wed, 28 Nov 2018) | 3 lines

enumerator.c (enum_chain_yield_block): use predefined ID

No point in having rb_intern lookup and cache a predefined ID
------------------------------------------------------------------------
r66049 | normal | 2018-11-28 07:20:45 +0900 (Wed, 28 Nov 2018) | 4 lines

io.c (struct copy_stream_struct): packing

Reduce the struct to 80 bytes (from 88) on amd64 to reduce
stack use.
------------------------------------------------------------------------
r66048 | duerst | 2018-11-28 06:50:27 +0900 (Wed, 28 Nov 2018) | 1 line

fix order of subexpressions for Hangul
------------------------------------------------------------------------
r66047 | svn | 2018-11-28 06:38:55 +0900 (Wed, 28 Nov 2018) | 1 line

* remove trailing spaces.
------------------------------------------------------------------------
r66046 | duerst | 2018-11-28 06:38:53 +0900 (Wed, 28 Nov 2018) | 1 line

introduce two more uses of create_sequence_node in node_extended_grapheme_cluster
------------------------------------------------------------------------
r66045 | duerst | 2018-11-28 06:23:11 +0900 (Wed, 28 Nov 2018) | 4 lines

correctly handle return value from create_sequence_node()

In function node_extended_grapheme_cluster(), store and test
return value from create_sequence_node(). Never forget this!
------------------------------------------------------------------------
r66044 | svn | 2018-11-28 06:12:31 +0900 (Wed, 28 Nov 2018) | 1 line

* remove trailing spaces.
------------------------------------------------------------------------
r66043 | duerst | 2018-11-28 06:12:29 +0900 (Wed, 28 Nov 2018) | 7 lines

declare array for sequence at start of code creating sequence

In function node_extended_grapheme_cluster(),
move declaration up so that block encompasses all of the regular expression
creation that finally makes up the sequence. Having blocks like this will
be great because it directly shows the extent of code belonging to each
subexpression of the regular expression being created.
------------------------------------------------------------------------
r66042 | duerst | 2018-11-28 06:00:06 +0900 (Wed, 28 Nov 2018) | 4 lines

make sure all nodes are correctly freed in create_property_node()

We make sure that the newly created tree and all remaining nodes passed in
in the node_array are freed.
------------------------------------------------------------------------
r66041 | eregon | 2018-11-28 05:38:57 +0900 (Wed, 28 Nov 2018) | 1 line

Update to ruby/spec@cdd6ff7
------------------------------------------------------------------------
r66040 | svn | 2018-11-28 05:38:21 +0900 (Wed, 28 Nov 2018) | 1 line

* 2018-11-28
------------------------------------------------------------------------
r66039 | eregon | 2018-11-28 05:38:20 +0900 (Wed, 28 Nov 2018) | 1 line

Update to ruby/mspec@820486a
------------------------------------------------------------------------
r66038 | nobu | 2018-11-27 22:47:49 +0900 (Tue, 27 Nov 2018) | 4 lines

ruby-style.el: ruby-style-c-mode by VCS [ci skip]

* misc/ruby-style.el (ruby-style-c-mode): set ruby-style if the
  remote repository is ruby.
------------------------------------------------------------------------
r66037 | svn | 2018-11-27 21:08:21 +0900 (Tue, 27 Nov 2018) | 1 line

* properties.
------------------------------------------------------------------------
r66036 | hsbt | 2018-11-27 21:08:19 +0900 (Tue, 27 Nov 2018) | 1 line

Merge bundler-2.0.0.pre.2 from upstream.
------------------------------------------------------------------------
r66035 | k0kubun | 2018-11-27 21:00:51 +0900 (Tue, 27 Nov 2018) | 15 lines

mjit_worker.c: promote mjit_copy_job from function

-local variable to global variable.

Consider this case:
1. MJIT worker: dequeue ISeq (stop_worker_p was still FALSE)
2. Ruby thread: call Kernel#exec, which calls mjit_finish(FALSE),
                sets `stop_worker_p = TRUE`, and fires RUBY_VM_CHECK_INTS() once
3. MJIT worker: register copy job, but found stop_worker_p is TRUE.
                set `worker_stopped = TRUE` and the thread stops.
4. Function-local job variable expires by the thread stop (this is eliminated by this commit)
5. Ruby thread: find `worker_stopped` becamse TRUE, start Kernel#exec.
                Kernel#exec fails but exception is rescued.
6. Ruby thread: call RUBY_VM_CHECK_INTS. copy job is dispatched but job variable
                is already expired.
------------------------------------------------------------------------
r66034 | k0kubun | 2018-11-27 20:24:19 +0900 (Tue, 27 Nov 2018) | 7 lines

regparse.c: conform C90

../regparse.c:5908:28: error: initializer for aggregate is not a compile-time constant [-Werror,-Wc99-extensions]
      Node* sequence[] = { np1, np2, np3, ((Node* )0) };
                           ^~~

https://travis-ci.org/ruby/ruby/jobs/460197620
------------------------------------------------------------------------
r66033 | duerst | 2018-11-27 20:04:02 +0900 (Tue, 27 Nov 2018) | 5 lines

introduce helper function create_sequence_node()

The new function create_sequence_node() uses its second argument
(an array of Node*, from left to right, ending with NULL_NODE)
to create a sequence of expressions using node_new_list().
------------------------------------------------------------------------
r66032 | svn | 2018-11-27 19:15:46 +0900 (Tue, 27 Nov 2018) | 1 line

* remove trailing spaces.
------------------------------------------------------------------------
r66031 | duerst | 2018-11-27 19:15:45 +0900 (Tue, 27 Nov 2018) | 4 lines

introduce helper function quantify_property_node()

The new function quantify_property_node() combines the functions
create_property_node() and quantify_node(), which frequently appear together.
------------------------------------------------------------------------
r66030 | duerst | 2018-11-27 18:44:35 +0900 (Tue, 27 Nov 2018) | 1 line

introduce helper function quantify_node() to wrap function node_new_quantifier
------------------------------------------------------------------------
r66029 | nobu | 2018-11-27 17:39:40 +0900 (Tue, 27 Nov 2018) | 5 lines

.travis.yml: avoid bashism

GCC_FLAGS is not an array and CC is finally passed to configure as
single string.  Pass CC via the environment variable, so it does
not need to be quoted anymore.
------------------------------------------------------------------------
r66028 | nobu | 2018-11-27 17:39:39 +0900 (Tue, 27 Nov 2018) | 1 line

.travis.yml: discard config.cache if CC changed
------------------------------------------------------------------------
r66027 | nobu | 2018-11-27 17:39:38 +0900 (Tue, 27 Nov 2018) | 1 line

.travis.yml: split commands
------------------------------------------------------------------------
r66026 | svn | 2018-11-27 16:34:25 +0900 (Tue, 27 Nov 2018) | 1 line

* expand tabs.
------------------------------------------------------------------------
r66025 | mame | 2018-11-27 16:34:21 +0900 (Tue, 27 Nov 2018) | 5 lines

compile.c: prevent out-of-bound initialization of coverage counters

The coverage counters is initialized with `counter[lineno - 1] = 0`,
but lineno may be 0, which led to write access for index -1.
[ruby-core:90085] [Bug#15346]
------------------------------------------------------------------------
r66024 | aycabta | 2018-11-27 16:02:36 +0900 (Tue, 27 Nov 2018) | 1 line

Merge rdoc-6.1.0.bata2
------------------------------------------------------------------------
r66023 | nobu | 2018-11-27 15:44:02 +0900 (Tue, 27 Nov 2018) | 1 line

Embed the Emoji version
------------------------------------------------------------------------
r66022 | ko1 | 2018-11-27 14:42:33 +0900 (Tue, 27 Nov 2018) | 1 line

restore using_spec.rb
------------------------------------------------------------------------
r66021 | duerst | 2018-11-27 13:13:21 +0900 (Tue, 27 Nov 2018) | 1 line

use explicit property name when creating nodes for "Grapheme_Cluster_Break=Extend"
------------------------------------------------------------------------
r66020 | duerst | 2018-11-27 12:56:19 +0900 (Tue, 27 Nov 2018) | 1 line

use 'Regional_Indicator' script property instead of fixed constants
------------------------------------------------------------------------
r66019 | nobu | 2018-11-27 12:19:06 +0900 (Tue, 27 Nov 2018) | 4 lines

Add rb_typeddata_is_instance_of

Similar to rb_typeddata_is_kind_of, except for that inherited type
is not an instance.
------------------------------------------------------------------------
r66018 | ko1 | 2018-11-27 12:12:58 +0900 (Tue, 27 Nov 2018) | 1 line

enable another assertion
------------------------------------------------------------------------
r66017 | ko1 | 2018-11-27 12:02:41 +0900 (Tue, 27 Nov 2018) | 4 lines

fix for ISeq.of(method).

* iseq.c (iseqw_s_of): `rb_method_iseq(method)` can return NULL.

------------------------------------------------------------------------
r66016 | svn | 2018-11-27 11:45:26 +0900 (Tue, 27 Nov 2018) | 1 line

* expand tabs.
------------------------------------------------------------------------
r66015 | ko1 | 2018-11-27 11:45:25 +0900 (Tue, 27 Nov 2018) | 6 lines

`RubyVM::ISeq.of` accept ISeq.

* iseq.c (iseqw_s_of): return given object if the given object is
  a `RubyVM::InstructionSequence`. We can specify ISeq for
  `TracePoint#enable(target:)`.

------------------------------------------------------------------------
r66014 | duerst | 2018-11-27 11:18:29 +0900 (Tue, 27 Nov 2018) | 1 line

add some comments in function node_extended_grapheme_cluster() [ci skip]
------------------------------------------------------------------------
r66013 | nobu | 2018-11-27 10:25:16 +0900 (Tue, 27 Nov 2018) | 1 line

ALWAYS_INLINE implies inline always
------------------------------------------------------------------------
r66012 | ko1 | 2018-11-27 09:44:14 +0900 (Tue, 27 Nov 2018) | 1 line

enable at least one behavior
------------------------------------------------------------------------
r66011 | ko1 | 2018-11-27 09:39:46 +0900 (Tue, 27 Nov 2018) | 1 line

to debug https://ci.appveyor.com/project/ruby/ruby/builds/20566898/job/hda29416yal9h6hn use binary search
------------------------------------------------------------------------
r66010 | duerst | 2018-11-27 08:30:43 +0900 (Tue, 27 Nov 2018) | 1 line

improve messages for test failures
------------------------------------------------------------------------
r66009 | svn | 2018-11-27 05:16:16 +0900 (Tue, 27 Nov 2018) | 1 line

* remove trailing spaces.
------------------------------------------------------------------------
r66008 | ko1 | 2018-11-27 05:16:14 +0900 (Tue, 27 Nov 2018) | 6 lines

`TracePoint#enable(target_line:)` is supported. [Feature #15289]

* vm_trace.c: `TracePoint#enable(target_line:)` is supported.
  This option enables a hook only at specified target_line.
  target_line should be combination with target and :line event.

------------------------------------------------------------------------
r66007 | ko1 | 2018-11-27 04:59:08 +0900 (Tue, 27 Nov 2018) | 4 lines

Give up support for cross-callcc set_trace_func.

* cont.c (cont_restore_thread): cause error if trace-status is changed.

------------------------------------------------------------------------
r66006 | ko1 | 2018-11-27 03:48:48 +0900 (Tue, 27 Nov 2018) | 7 lines

fix for ansi-pedantic compile option.

* iseq.c (iseq_add_local_tracepoint_i): extract aggregate initialization.
  See https://travis-ci.org/ruby/ruby/jobs/459881277

* iseq.c (iseq_remove_local_tracepoint_i): ditto.

------------------------------------------------------------------------
r66005 | ko1 | 2018-11-27 03:27:02 +0900 (Tue, 27 Nov 2018) | 4 lines

fix type error.

* iseq.c (iseq_iterate_children): should use cast to `int`.

------------------------------------------------------------------------
r66004 | svn | 2018-11-27 03:16:54 +0900 (Tue, 27 Nov 2018) | 1 line

* expand tabs.
------------------------------------------------------------------------
r66003 | ko1 | 2018-11-27 03:16:39 +0900 (Tue, 27 Nov 2018) | 57 lines

Support targetting TracePoint [Feature #15289]

* vm_trace.c (rb_tracepoint_enable_for_target): support targetting
  TracePoint. [Feature #15289]

  Tragetting TracePoint is only enabled on specified method, proc
  and so on, example: `tp.enable(target: code)`.

  `code` should be consisted of InstructionSeuqnece (iseq)
  (RubyVM::InstructionSeuqnece.of(code) should not return nil)
  If code is a tree of iseq, TracePoint is enabled on all of
  iseqs in a tree.

  Enabled tragetting TracePoints can not enabled again with
  and without target.

* vm_core.h (rb_iseq_t): introduce `rb_iseq_t::local_hooks`
  to store local hooks.
  `rb_iseq_t::aux::trace_events` is renamed to
  `global_trace_events` to contrast with `local_hooks`.

* vm_core.h (rb_hook_list_t): add `rb_hook_list_t::running`
  to represent how many Threads/Fibers are used this list.
  If this field is 0, nobody using this hooks and we can
  delete it.

  This is why we can remove code from cont.c.

* vm_core.h (rb_vm_t): because of above change, we can eliminate
  `rb_vm_t::trace_running` field.
  Also renamed from `rb_vm_t::event_hooks` to `global_hooks`.

* vm_core.h, vm.c (ruby_vm_event_enabled_global_flags): renamed
  from `ruby_vm_event_enabled_flags.

* vm_core.h, vm.c (ruby_vm_event_local_num): added to count
  enabled targetting TracePoints.

* vm_core.h, vm_trace.c (rb_exec_event_hooks): accepts
  hook list.

* vm_core.h (rb_vm_global_hooks): added for convinience.

* method.h (rb_method_bmethod_t): added to maintain Proc
  and `rb_hook_list_t` for bmethod (defined by define_method).

* prelude.rb (TracePoint#enable): extracet a keyword parameter
  (because it is easy than writing in C).
  It calls `TracePoint#__enable` internal method written in C.

* vm_insnhelper.c (vm_trace): check also iseq->local_hooks.

* vm.c (invoke_bmethod): check def->body.bmethod.hooks.

* vm.c (hook_before_rewind): check iseq->local_hooks
  and def->body.bmethod.hooks before rewind by exception.

------------------------------------------------------------------------
r66002 | k0kubun | 2018-11-27 01:13:56 +0900 (Tue, 27 Nov 2018) | 5 lines

test_jit.rb: skip a test for Windows for now

https://ci.appveyor.com/project/ruby/ruby/builds/20558412

removing CloseHandle disallows us to remove the DLL.
------------------------------------------------------------------------
r66001 | k0kubun | 2018-11-27 00:47:20 +0900 (Tue, 27 Nov 2018) | 3 lines

vm_trace.c: MJIT-limited thread-safety for postponed_job

[Bug #15316]
------------------------------------------------------------------------
r66000 | svn | 2018-11-27 00:12:34 +0900 (Tue, 27 Nov 2018) | 1 line

* 2018-11-27
------------------------------------------------------------------------
r65999 | k0kubun | 2018-11-27 00:12:31 +0900 (Tue, 27 Nov 2018) | 7 lines

process.c: avoid dlclose before exec

because JIT-ed code may still be on stack at this time, unlike
in ruby_cleanup().

This hopes to fix: (take 2)
http://ci.rvm.jp/results/trunk-mjit-wait@silicon-docker/1480207
------------------------------------------------------------------------
r65998 | k0kubun | 2018-11-27 00:12:30 +0900 (Tue, 27 Nov 2018) | 6 lines

Revert "process.c: try to workaroun SEGV by r65994"

This reverts commit 0e6aba22c6b876a36adc39cac5314ce6e626954c.

because it didn't help, at all.
http://ci.rvm.jp/results/trunk-mjit-wait@silicon-docker/1480207
------------------------------------------------------------------------
r65997 | k0kubun | 2018-11-26 23:45:39 +0900 (Mon, 26 Nov 2018) | 12 lines

process.c: try to workaroun SEGV by r65994

http://ci.rvm.jp/results/trunk-mjit-wait@silicon-docker/1480173

It tries to print C backtrace but fails. And core file on the server
seems to be stopping on the irrelevant place due to its own signal
handler for the dump.

And I failed to reproduce this SEGV on my machine.

I don't know why it's broken, so let me try this change to investigate
the reason of SEGV.
------------------------------------------------------------------------
r65996 | svn | 2018-11-26 23:03:00 +0900 (Mon, 26 Nov 2018) | 1 line

* properties.
------------------------------------------------------------------------
r65995 | nobu | 2018-11-26 23:02:59 +0900 (Mon, 26 Nov 2018) | 1 line

Do not load rubygems when disabled
------------------------------------------------------------------------
r65994 | k0kubun | 2018-11-26 22:39:53 +0900 (Mon, 26 Nov 2018) | 5 lines

process.c: finish MJIT prior to #exec

to prevent ruby from leaving MJIT-related files.

test_jit.rb: add a test to prevent that
------------------------------------------------------------------------
r65993 | k0kubun | 2018-11-26 21:50:42 +0900 (Mon, 26 Nov 2018) | 6 lines

mjit_worker.c: disable running copy job

after MJIT worker stop.

r65928 didn't fix the SEGV. This commit hopes to fix
http://ci.rvm.jp/results/trunk-mjit-wait@silicon-docker/1478576
------------------------------------------------------------------------
r65992 | k0kubun | 2018-11-26 21:36:45 +0900 (Mon, 26 Nov 2018) | 6 lines

lib/rubygems/indexer.rb: suppress random test-all error

by Bundler integration, like:
http://ci.rvm.jp/results/trunk-no-mjit@silicon-docker/1479769

This resurrects r65629 which was accidentally reverted by r65904.
------------------------------------------------------------------------
r65991 | hsbt | 2018-11-26 21:23:45 +0900 (Mon, 26 Nov 2018) | 1 line

Sync the executables of rdoc from upstream repository.
------------------------------------------------------------------------
r65990 | duerst | 2018-11-26 18:03:11 +0900 (Mon, 26 Nov 2018) | 7 lines

add tests for grapheme clusters using Unicode Emoji test data

Add file test/ruby/enc/test_emoji_breaks.rb to test String#each_grapheme_cluster
test data provided by Unicode (at https://www.unicode.org/Public/emoji/#{EMOJI_VERSION}/).

Lines containing emoji for genies, zombies, and wrestling are ignored
because there seems to be a bug (#15343) in the implementation.
------------------------------------------------------------------------
r65989 | mame | 2018-11-26 16:55:07 +0900 (Mon, 26 Nov 2018) | 7 lines

object.c: Deprecate Object#=~ and add NilClass#=~`

Object#=~ always returns nil.  This behavior is not only unuseful but
also troublesome because it may hide a type error.

This change deprecates Object#=~.  For compatibility, NilClass#=~ is
newly introduced.  [Feature #15231]
------------------------------------------------------------------------
r65988 | mame | 2018-11-26 16:13:53 +0900 (Mon, 26 Nov 2018) | 4 lines

lib/rubygems: explicitly clarify the type for =~ matching

RubyGems is very indifferent for type.
This change is needed for removal of `Object#=~`.  [Feature #15231]
------------------------------------------------------------------------
r65987 | mame | 2018-11-26 14:46:24 +0900 (Mon, 26 Nov 2018) | 1 line

lib/rubygems/command.rb: remove meaningless code
------------------------------------------------------------------------
r65986 | mame | 2018-11-26 14:46:02 +0900 (Mon, 26 Nov 2018) | 9 lines

test/rdoc/test_rdoc_rdoc.rb: add dummy finish

RDoc::Options#@exclude is initialized as an empty array.
Then, #finish converts it to a regexp or nil and reassign it to @exclude.
Some methods of RDoc assumes that #finish has been already called.
So, this change forces to assign nil to @exclude.

This type confusion was found during work for removal of `Object#=~`.
[Feature #15231]
------------------------------------------------------------------------
r65985 | mame | 2018-11-26 14:32:50 +0900 (Mon, 26 Nov 2018) | 9 lines

lib/rdoc/markup/: Remove wrong call to `=~` against Array

`@res` is an Array, so `@res =~ /\n\z/` calls `Object#=~` which always
returns nil.
I guess it should be `@res.last =~ /\n\z/`, but the change causes test
failures.

This bug was found during work for removal of `Object#=~`.
[Feature #15231]
------------------------------------------------------------------------
r65984 | mame | 2018-11-26 14:29:45 +0900 (Mon, 26 Nov 2018) | 11 lines

lib/webrick: explicitly convert header values to a string

The values of @header are expected to be all strings;
WEBrick::HTTPResponse::[]=(key, val) explicitly converts the second
argument to a string and assigns it to @header hash.
However, there were some points in WEBrick internal code that assigns
non-String to @header.  This change fixes the issues.

The values are checked by `header_value =~ /\r\n/` in check_header.
The type confusion caused conflict with removal of `Object#=~`
[Feature #15231].
------------------------------------------------------------------------
r65983 | nobu | 2018-11-26 12:47:47 +0900 (Mon, 26 Nov 2018) | 5 lines

common.mk: simplify for ruby.imp

* common.mk (ruby.imp): extract the first word on the next lines
  of MJIT_FUNC_EXPORTED, regardless the prefix.  duplicate symbols
  will be removed by `sort -u`.
------------------------------------------------------------------------
r65982 | shyouhei | 2018-11-26 11:46:50 +0900 (Mon, 26 Nov 2018) | 4 lines

.travis.yml: avoid bashism

We can set environment variables to avoid before_script.

------------------------------------------------------------------------
r65981 | kazu | 2018-11-26 11:31:46 +0900 (Mon, 26 Nov 2018) | 3 lines

un.rb: add more options for httpd to help message [ci skip]

see r65965
------------------------------------------------------------------------
r65980 | shyouhei | 2018-11-26 11:21:25 +0900 (Mon, 26 Nov 2018) | 5 lines

.travis.yml: update MSAN setups [ci skip]

Exclude OpenSSL because we don't plan to debug libssl,
also track origins of uninitialized bits.

------------------------------------------------------------------------
r65979 | hsbt | 2018-11-26 10:54:53 +0900 (Mon, 26 Nov 2018) | 3 lines

Removed `bundle_ruby` command. Because It's no longer shipped from Bundler 1.0.2.

  [Bug #15291][ruby-dev:50663]
------------------------------------------------------------------------
r65978 | hsbt | 2018-11-26 10:43:02 +0900 (Mon, 26 Nov 2018) | 1 line

Use libexec for distination directory.
------------------------------------------------------------------------
r65977 | hsbt | 2018-11-26 10:23:06 +0900 (Mon, 26 Nov 2018) | 1 line

Followed up r65963. Use libexec directory with sync tool.
------------------------------------------------------------------------
r65976 | duerst | 2018-11-26 08:16:18 +0900 (Mon, 26 Nov 2018) | 6 lines

add several emoji data files to UNICODE_EMOJI_DOWNLOAD for download

In common.mk, add the files emoji-sequences.txt, emoji-test.txt,
emoji-variation-sequences.txt, and emoji-zwj-sequences.txt to
UNICODE_EMOJI_DOWNLOAD for download with `make update-unicode-property-files`.
These files will be used for automated tests for /\X/.
------------------------------------------------------------------------
r65975 | svn | 2018-11-26 01:23:20 +0900 (Mon, 26 Nov 2018) | 1 line

* 2018-11-26
------------------------------------------------------------------------
r65974 | naruse | 2018-11-26 01:23:18 +0900 (Mon, 26 Nov 2018) | 4 lines

Normalize month-mday before finding epoch

Especially over the year 2038, 30 Feb and so on may cause odd behavior
on validating found epoch with given year-month-day [Bug #15340]
------------------------------------------------------------------------
r65973 | yui-knk | 2018-11-25 21:31:35 +0900 (Sun, 25 Nov 2018) | 21 lines

Fix locations of NODE_UNDEF in undef with multiple args

* parse.y: Fix the beginning position of trailing NODE_UNDEF.

  e.g. The location of the NODE_UNDEF for `b` is fixed:

  ```
  undef a, b
  ```

  * Before

  ```
  NODE_UNDEF (line: 1, location: (1,6)-(1,10))
  ```

  * After

  ```
  NODE_UNDEF (line: 1, location: (1,9)-(1,10))
  ```
------------------------------------------------------------------------
r65972 | duerst | 2018-11-25 20:02:41 +0900 (Sun, 25 Nov 2018) | 5 lines

create function create_property_node to extract recurring functionality

Refactoring: In regparse.c, extract creation of a new CClass node and
initialization using a property into a new function create_property_node().

------------------------------------------------------------------------
r65971 | duerst | 2018-11-25 19:12:45 +0900 (Sun, 25 Nov 2018) | 6 lines

deal with ONIGENC_CASE_IS_TITLECASE flag on lowercase characters

In the function onigenc_unicode_case_map() in enc/unicode.c, deal
with the case that the ONIGENC_CASE_IS_TITLECASE flag is set on
lowercase characters. This is in preparation for Georgian Mtavruli,
which are uppercase but not titlecase, in Unicode 11.0.0.
------------------------------------------------------------------------
r65970 | nobu | 2018-11-25 17:32:52 +0900 (Sun, 25 Nov 2018) | 22 lines

ChangeLog compatibility [ci skip]

* tool/vcs.rb (VCS::GIT#export_changelog): improve the
  compatibility with svn-log.
  remained differences are:

  - in svn-log

    - accented characters, left/right single quotation marks, and
      non-break spaces are translated to ASCII characters

    - other non-ASCII characters are excoded as `{U+XXXX}`

  - in git-log

    - tabs are expanded

  - in git-log (intentional)

    - lines looking too indented are unindented

    - empty lines between headers and bodies are squeezed
------------------------------------------------------------------------
r65969 | nobu | 2018-11-25 17:31:40 +0900 (Sun, 25 Nov 2018) | 5 lines

parser: improve error messages

[Fix GH-2011]

From: Akim Demaille <akim.demaille@gmail.com>
------------------------------------------------------------------------
r65968 | nobu | 2018-11-25 15:07:28 +0900 (Sun, 25 Nov 2018) | 1 line

NEWS: fix markup [ci skip]
------------------------------------------------------------------------
r65967 | nobu | 2018-11-25 13:05:09 +0900 (Sun, 25 Nov 2018) | 1 line

No new entry when getting undefined global variable
------------------------------------------------------------------------
r65966 | nobu | 2018-11-25 12:36:10 +0900 (Sun, 25 Nov 2018) | 1 line

Prefer ALLOCV over ALLOCA
------------------------------------------------------------------------
r65965 | nobu | 2018-11-25 12:36:09 +0900 (Sun, 25 Nov 2018) | 1 line

un.rb: more options for httpd
------------------------------------------------------------------------
r65964 | svn | 2018-11-25 10:20:06 +0900 (Sun, 25 Nov 2018) | 1 line

* properties.
------------------------------------------------------------------------
r65963 | hsbt | 2018-11-25 10:20:00 +0900 (Sun, 25 Nov 2018) | 8 lines

Use stub executables generated by RubyGems istead of original executables.
It resolved the conflict issues when invoking `gem i rdoc` and the binstub
issues with Bundler and Rails.

  [Bug #5060][ruby-core:38257][Fix GH-2023]

  * https://github.com/rubygems/rubygems/pull/2338
  * https://github.com/heroku/heroku-buildpack-ruby/issues/829
------------------------------------------------------------------------
r65962 | normal | 2018-11-25 04:59:51 +0900 (Sun, 25 Nov 2018) | 6 lines

io.c: disable nonblocking-by-default on win32 pipes

Lets admit Windows will always be too different from POSIX-like
platforms and non-blocking may never work as well or consistently.

[ruby-core:90042] [ruby-core:90044] [Bug #14968]
------------------------------------------------------------------------
r65961 | svn | 2018-11-25 04:54:35 +0900 (Sun, 25 Nov 2018) | 1 line

* 2018-11-25
------------------------------------------------------------------------
r65960 | odaira | 2018-11-25 04:54:32 +0900 (Sun, 25 Nov 2018) | 1 line

* common.mk: revise r65767 because AIX's grep does not support -A
------------------------------------------------------------------------
r65959 | nobu | 2018-11-24 21:48:56 +0900 (Sat, 24 Nov 2018) | 1 line

assertions for r65956
------------------------------------------------------------------------
r65958 | duerst | 2018-11-24 21:33:10 +0900 (Sat, 24 Nov 2018) | 1 line

remove guard against bug #15337, because it is fixed
------------------------------------------------------------------------
r65957 | svn | 2018-11-24 21:26:11 +0900 (Sat, 24 Nov 2018) | 1 line

* expand tabs.
------------------------------------------------------------------------
r65956 | naruse | 2018-11-24 21:26:07 +0900 (Sat, 24 Nov 2018) | 1 line

fix r65954; Keep tainty
------------------------------------------------------------------------
r65955 | duerst | 2018-11-24 21:10:25 +0900 (Sat, 24 Nov 2018) | 9 lines

add tests using Unicode test data for grapheme clusters

Add file test/ruby/enc/test_grapheme_breaks.rb to test String#each_grapheme_cluster
and \X extended grapheme cluster matcher in regular expressions against test data
provided by Unicode (ucd/auxiliary/GraphemeBreakTest.txt).

Some lines in the data file are ignored, as follows:
- Lines with a surrogate, because Ruby doesn't handle these
- The case of "\r\n", because there is a bug (#15337) in the implementation
------------------------------------------------------------------------
r65954 | naruse | 2018-11-24 20:53:19 +0900 (Sat, 24 Nov 2018) | 3 lines

Don't use single byte optimization on grapheme clusters

Unicode Text Segmentation considers CRLF as a character. [Bug #15337]
------------------------------------------------------------------------
r65953 | samuel | 2018-11-24 20:35:34 +0900 (Sat, 24 Nov 2018) | 3 lines

Ensure stack is correctly protected

See https://bugs.ruby-lang.org/issues/15335 for more details.
------------------------------------------------------------------------
r65952 | samuel | 2018-11-24 20:35:29 +0900 (Sat, 24 Nov 2018) | 4 lines

Change Makefile rule for assembly to use .S rather than .s

It is more conventional to use compiler to pre-process and
assemble the `.S` file rather than forcing Makefile to use `.s`.
------------------------------------------------------------------------
r65951 | nobu | 2018-11-24 19:29:23 +0900 (Sat, 24 Nov 2018) | 8 lines

Makefile.in: use ASMEXT in implicit rules

Use $(ASMEXT) instead of `.s` directly, as well as `.SUFFIXES:`
line.

Also, use the same suffix at compiling from `.c`.  These are
different things traditionally, but we won't mix same name files
with `.c` and `.s`.
------------------------------------------------------------------------
r65950 | knu | 2018-11-24 17:38:36 +0900 (Sat, 24 Nov 2018) | 1 line

Add entries regarding Enumerator::Chain to NEWS
------------------------------------------------------------------------
r65949 | knu | 2018-11-24 17:38:35 +0900 (Sat, 24 Nov 2018) | 13 lines

Implement Enumerator#+ and Enumerable#chain [Feature #15144]

They return an Enumerator::Chain object which is a subclass of
Enumerator, which represents a chain of enumerables that works as a
single enumerator.

```ruby
e = (1..3).chain([4, 5])
e.to_a #=> [1, 2, 3, 4, 5]

e = (1..3).each + [4, 5]
e.to_a #=> [1, 2, 3, 4, 5]
```
------------------------------------------------------------------------
r65948 | normal | 2018-11-24 17:23:26 +0900 (Sat, 24 Nov 2018) | 9 lines

io.c: wait on FD readability w/o GVL reacquisition

Since non-blocking I/O is the default after [Bug #14968],
we will hit it more often and cause more acquisition/release
of GVL to wait on single FD.

This also lets us avoid touching the temporal string locking
as much and lets us clean up some test changes made for
[Bug #14968]
------------------------------------------------------------------------
r65947 | nobu | 2018-11-24 13:34:00 +0900 (Sat, 24 Nov 2018) | 7 lines

Add clean-srcs

Add `clean-srcs` target to clean sources in the build directory,
and `realclean-srcs` target to clean autogenerated sources in the
source directory.  Also `realclean-srcs-extra` target to clean
sources which are generatable but need to install extra commands,
in addition.
------------------------------------------------------------------------
r65946 | nobu | 2018-11-24 13:33:59 +0900 (Sat, 24 Nov 2018) | 4 lines

Make ext/etc/constdefs.h by srcs-ext

Make platform independent header, ext/etc/constdefs.h, by `make
srcs-ext`.
------------------------------------------------------------------------
r65945 | samuel | 2018-11-24 11:31:11 +0900 (Sat, 24 Nov 2018) | 1 line

Fix argument order.
------------------------------------------------------------------------
r65944 | samuel | 2018-11-24 11:31:06 +0900 (Sat, 24 Nov 2018) | 1 line

Enable msys2 to check build status.
------------------------------------------------------------------------
r65943 | k0kubun | 2018-11-24 09:55:26 +0900 (Sat, 24 Nov 2018) | 5 lines

Fix r65926 test_dir.rb for windows (tilde)

[Fix GH-2022]

From: MSP-Greg <greg.mpls@gmail.com>
------------------------------------------------------------------------
r65942 | duerst | 2018-11-24 08:18:47 +0900 (Sat, 24 Nov 2018) | 5 lines

add GraphemeBreakeTests.txt file to UNICODE_PROPERTY_FILES for download

In common.mk, add the file GraphemeBreakeTests.txt to UNICODE_PROPERTY_FILES
to be downloaded. This will be used for automatic tests for /\X/ and
String#each_grapheme_cluster.
------------------------------------------------------------------------
r65941 | svn | 2018-11-24 07:01:38 +0900 (Sat, 24 Nov 2018) | 1 line

* expand tabs.
------------------------------------------------------------------------
r65940 | normal | 2018-11-24 07:01:35 +0900 (Sat, 24 Nov 2018) | 9 lines

thread.c (rb_wait_for_single_fd): do not miss IO#close notifications

RUBY_VM_CHECK_INTS_BLOCKING may switch threads and cause `fd'
to be closed.  So we must ensure we register the waiting_fd
before checking for interrupts.

This only affects the ppoll/poll-using implementation of
rb_wait_for_single_fd, as the select-based implementation
already register waiting_fd before checking for interrupts.
------------------------------------------------------------------------
r65939 | normal | 2018-11-24 06:38:41 +0900 (Sat, 24 Nov 2018) | 6 lines

io.c (io_fd_check_closed): prioritize cross-thread "stream closed"

This may fix failures from TestIO#test_recycled_fd_close because
interrupts may be missed due to TOCTOU in other places.

cf. http://ci.rvm.jp/results/trunk-nopara@silicon-docker/1475034
------------------------------------------------------------------------
r65938 | svn | 2018-11-24 03:19:13 +0900 (Sat, 24 Nov 2018) | 1 line

* 2018-11-24
------------------------------------------------------------------------
r65937 | normal | 2018-11-24 03:19:07 +0900 (Sat, 24 Nov 2018) | 22 lines

io.c (fptr_finalize_flush): close race leading to EBADF

The previous ordering was:

a) notify waiting_fd threads of impending close
b) waiting on busy list from a)
c) invalidate fptr->fd
d) calling close()

However, it was possible for a new thread to enter
the waiting_fd list while scheduling on b), leading
to EBADF from those threads when we hit d).

Instead, we now avoid triggering EBADF in other threads by
reordering b) and c)

a) notify waiting_fd threads of impending close
c) invalidate fptr->fd
b) waiting on busy list from a)
d) calling close()

cf. http://ci.rvm.jp/results/trunk-nopara@silicon-docker/1474526
------------------------------------------------------------------------
r65936 | nobu | 2018-11-23 21:12:10 +0900 (Fri, 23 Nov 2018) | 1 line

Ignore more DLEXT files [ci skip]
------------------------------------------------------------------------
r65935 | nobu | 2018-11-23 20:42:50 +0900 (Fri, 23 Nov 2018) | 4 lines

proc.c: [DOC] refine proc-compistion examples [ci skip]

* proc.c: [DOC] refine proc-compistion examples by using same
  Proc/Method and different composition orders.
------------------------------------------------------------------------
r65934 | kazu | 2018-11-23 19:59:59 +0900 (Fri, 23 Nov 2018) | 1 line

test/ruby/test_thread.rb: use safe navigation operator.
------------------------------------------------------------------------
r65933 | duerst | 2018-11-23 15:45:26 +0900 (Fri, 23 Nov 2018) | 6 lines

prepare for Unicode 11.0.0 update

- enc/unicode/case-folding.rb:
  - Convert unpredicted case to actual flag setting
  - Eliminate an unused variable
  - Change a variable name to avoid a warning
------------------------------------------------------------------------
r65932 | nobu | 2018-11-23 10:57:26 +0900 (Fri, 23 Nov 2018) | 1 line

split each assert_nothing_raised
------------------------------------------------------------------------
r65931 | normal | 2018-11-23 07:44:06 +0900 (Fri, 23 Nov 2018) | 10 lines

io.c: revalidate fptr->fd after rb_io_wait_readable

fptr->fd may become -1 while GVL is released in
rb_wait_for_single_fd, so we must check it after reacquiring
GVL.  This should avoid EBADF errors exposed by making pipes
non-blocking by default:

http://ci.rvm.jp/results/trunk-test@ruby-sky3/1473710

[Bug #14968]
------------------------------------------------------------------------
r65930 | svn | 2018-11-23 05:02:39 +0900 (Fri, 23 Nov 2018) | 1 line

* 2018-11-23
------------------------------------------------------------------------
r65929 | normal | 2018-11-23 05:02:36 +0900 (Fri, 23 Nov 2018) | 9 lines

socket: disable nonblocking-by-default on win32

Perhaps this fixes test failures reported by Greg and k0kubun.

However, the failure of certain tests to handle non-blocking I/O
seems to indicate pre-existing problems on win32 platforms.
Somebody knowledgeable about win32 should be able to fix it.

[ruby-core:89973] [ruby-core:89976] [ruby-core:89977] [Bug #14968]
------------------------------------------------------------------------
r65928 | k0kubun | 2018-11-22 22:29:44 +0900 (Thu, 22 Nov 2018) | 3 lines

mjit.c: avoid running copy job handler after ISeq GC

like this http://ci.rvm.jp/results/trunk-mjit@silicon-docker/1471633
------------------------------------------------------------------------
r65927 | naruse | 2018-11-22 20:03:19 +0900 (Thu, 22 Nov 2018) | 3 lines

Wait accept is ready also on Solaris

https://rubyci.org/logs/rubyci.s3.amazonaws.com/unstable11x/ruby-trunk/log/20181121T212405Z.diff.html.gz
------------------------------------------------------------------------
r65926 | naruse | 2018-11-22 19:43:42 +0900 (Thu, 22 Nov 2018) | 6 lines

Use File.expand_path("~username") instead of ENV["HOME"]

File.expand_path("~username") uses getpwnam() independently from
Dir.home. [Bug #15324]

From: Chris Seaton <chris@chrisseaton.com>
------------------------------------------------------------------------
r65925 | normal | 2018-11-22 19:13:21 +0900 (Thu, 22 Nov 2018) | 6 lines

ext/socket/init.c (rsock_socket0): non-blocking for non-SOCK_NONBLOCK

We need to make sockets non-blocking for systems without
SOCK_CLOEXEC/SOCK_NONBLOCK macros at all.

[ruby-core:89965] [Bug #14968]
------------------------------------------------------------------------
r65924 | svn | 2018-11-22 18:18:43 +0900 (Thu, 22 Nov 2018) | 1 line

* expand tabs.
------------------------------------------------------------------------
r65923 | nobu | 2018-11-22 18:18:40 +0900 (Thu, 22 Nov 2018) | 4 lines

Revert r63030

* array.c (rb_ary_collect): no longer splat sole array for lambda.
  [ruby-core:89734] [Bug #15285]
------------------------------------------------------------------------
r65922 | normal | 2018-11-22 17:46:51 +0900 (Thu, 22 Nov 2018) | 26 lines

io + socket: make pipes and sockets nonblocking by default

All normal Ruby IO methods (IO#read, IO#gets, IO#write, ...) are
all capable of appearing to be "blocking" when presented with a
file description with the O_NONBLOCK flag set; so there is
little risk of incompatibility within Ruby-using programs.

The biggest compatibility risk is when spawning external
programs.  As a result, stdin, stdout, and stderr are now always
made blocking before exec-family calls.

This change will make an event-oriented MJIT usable if it is
waiting on pipes on POSIX_like platforms.

It is ALSO necessary to take advantage of (proposed lightweight
concurrency (aka "auto-Fiber") or any similar proposal for
network concurrency: https://bugs.ruby-lang.org/issues/13618

Named-pipe (FIFO) are NOT yet non-blocking by default since
they are rarely-used and may introduce compatibility problems
and extra syscall overhead for a common path.

Please revert this commit if there are problems and if I am afk
since I am afk a lot, lately.

[ruby-core:89950] [Bug #14968]
------------------------------------------------------------------------
r65921 | normal | 2018-11-22 17:46:44 +0900 (Thu, 22 Nov 2018) | 3 lines

configure.ac: support 32-bit builds on x86-64 systems

Because RAM is still expensive :<
------------------------------------------------------------------------
r65920 | nobu | 2018-11-22 17:29:02 +0900 (Thu, 22 Nov 2018) | 5 lines

Enable refinements at Object#respond_to?

[Feature #15327] [Fix GH-2020]

From: osyo-manga <manga.osyo@gmail.com>
------------------------------------------------------------------------
r65919 | nobu | 2018-11-22 16:53:07 +0900 (Thu, 22 Nov 2018) | 5 lines

Enable refinements to public_send.

[Feature #15326] [Fix GH-2019]

From: manga_osyo <manga.osyo@gmail.com>
------------------------------------------------------------------------
r65918 | nobu | 2018-11-22 15:09:07 +0900 (Thu, 22 Nov 2018) | 3 lines

mjit_archflag.sh: fix bare word in the header

[ruby-dev:50674] [Bug #15319]
------------------------------------------------------------------------
r65917 | kazu | 2018-11-22 15:08:50 +0900 (Thu, 22 Nov 2018) | 1 line

.gitignore: add mjit_build_dir.c [ci skip]
------------------------------------------------------------------------
r65916 | kazu | 2018-11-22 15:08:49 +0900 (Thu, 22 Nov 2018) | 1 line

.gitignore: add .time under coroutine [ci skip]
------------------------------------------------------------------------
r65915 | kazu | 2018-11-22 15:08:47 +0900 (Thu, 22 Nov 2018) | 3 lines

.gitignore: revert r65834 partially [ci skip]

and exclude under coroutine only.
------------------------------------------------------------------------
r65914 | nobu | 2018-11-22 14:51:43 +0900 (Thu, 22 Nov 2018) | 3 lines

Proc#<< and Proc#>>

[Feature #6284]
------------------------------------------------------------------------
r65913 | nobu | 2018-11-22 14:51:42 +0900 (Thu, 22 Nov 2018) | 15 lines

proc.c: Support any callable when composing Procs

* proc.c (proc_compose): support any object with a call method rather
  than supporting only procs. [Feature #6284]

* proc.c (compose): use the function call on the given object rather
  than rb_proc_call_with_block in order to support any object.

* test/ruby/test_proc.rb: Add test cases for composing Procs with
  callable objects.

* test/ruby/test_method.rb: Add test cases for composing Methods with
  callable objects.

From: Paul Mucur <paul@altmetric.com>
------------------------------------------------------------------------
r65912 | nobu | 2018-11-22 14:51:41 +0900 (Thu, 22 Nov 2018) | 8 lines

proc.c: Implement Method#* for Method composition

* proc.c (rb_method_compose): Implement Method#* for Method composition,
  which delegates to Proc#*.

* test/ruby/test_method.rb: Add test cases for Method composition.

From: Paul Mucur <mudge@mudge.name>
------------------------------------------------------------------------
r65911 | nobu | 2018-11-22 14:51:40 +0900 (Thu, 22 Nov 2018) | 8 lines

proc.c: Implement Proc#* for Proc composition

* proc.c (proc_compose): Implement Proc#* for Proc composition, enabling
  composition of Procs and Methods. [Feature #6284]

* test/ruby/test_proc.rb: Add test cases for Proc composition.

From: Paul Mucur <mudge@mudge.name>
------------------------------------------------------------------------
r65910 | k0kubun | 2018-11-22 12:39:07 +0900 (Thu, 22 Nov 2018) | 5 lines

Revert "test_gem_remote_fetcher.rb: give up testing MJIT here"

This reverts commit d12bcfc186f2aea5e83f2f59716958ea12b5c937.

pause on --jit-wait looks not working... I'll fix that first.
------------------------------------------------------------------------
r65909 | samuel | 2018-11-22 11:17:44 +0900 (Thu, 22 Nov 2018) | 1 line

Use VirtualAlloc/VirtualProtect/VirtualFree for windows stack allocation.
------------------------------------------------------------------------
r65908 | odaira | 2018-11-22 07:44:24 +0900 (Thu, 22 Nov 2018) | 3 lines

* configure.ac: On AIX, LDFLAGS must be after -L../.. in TRY_LINK,
  not to refer to a system-installed libruby-static.a
  when configuring the ext libraries
------------------------------------------------------------------------
r65907 | svn | 2018-11-22 05:39:12 +0900 (Thu, 22 Nov 2018) | 1 line

* 2018-11-22
------------------------------------------------------------------------
r65906 | odaira | 2018-11-22 05:39:09 +0900 (Thu, 22 Nov 2018) | 7 lines

errno.h must be included after config.h because config.h might define
_REENTRANT, _THREAD_SAFE, etc., which affect how errno is defined
on some architectures

* ext/openssl/ossl.h: include errno.h after ruby.h

* include/ruby/io.h: include errno.h after ruby/config.h
------------------------------------------------------------------------
r65905 | k0kubun | 2018-11-21 20:33:25 +0900 (Wed, 21 Nov 2018) | 7 lines

test_gem_remote_fetcher.rb: give up testing MJIT here

because we can't configure timeout for remote fetcher.

We've sometimes hit timeout.
https://app.wercker.com/ruby/ruby/runs/mjit-test2/5bf5213c183106002857d355?step=5bf530de63e94600071b0785
https://app.wercker.com/ruby/ruby/runs/mjit-test2/5be3d719567ae90007681ed6?step=5be43b3887436a0006d00d21
------------------------------------------------------------------------
r65904 | hsbt | 2018-11-21 19:20:47 +0900 (Wed, 21 Nov 2018) | 10 lines

Merge master branch from rubygems/rubygems upstream.

  * Enable Style/MethodDefParentheses in Rubocop
    https://github.com/rubygems/rubygems/pull/2478
  * Enable Style/MultilineIfThen in Rubocop
    https://github.com/rubygems/rubygems/pull/2479
  * Fix required_ruby_version with prereleases and improve error message
    https://github.com/rubygems/rubygems/pull/2344
  * Fix bundler rubygems binstub not properly looking for bundler
    https://github.com/rubygems/rubygems/pull/2426
------------------------------------------------------------------------
r65903 | nobu | 2018-11-21 19:09:21 +0900 (Wed, 21 Nov 2018) | 1 line

Get rid of variable modifiers of BSD make
------------------------------------------------------------------------
r65902 | nobu | 2018-11-21 18:27:47 +0900 (Wed, 21 Nov 2018) | 3 lines

Makefile.in: get rid of `local` for Solaris sh

[ruby-dev:50673] [Bug #15319]
------------------------------------------------------------------------
r65901 | nobu | 2018-11-21 18:11:06 +0900 (Wed, 21 Nov 2018) | 1 line

configure.ac: silence `command -v` outpout
------------------------------------------------------------------------
r65900 | shyouhei | 2018-11-21 17:51:39 +0900 (Wed, 21 Nov 2018) | 7 lines

char is not unsigned

It seems that decades ago, ruby was written under assumption that
char is unsigned.  Which is of course a false assumption.  We
need to explicitly store a numeric value into an unsigned char
variable to tell we expect 0..255 value.

------------------------------------------------------------------------
r65899 | nobu | 2018-11-21 12:26:59 +0900 (Wed, 21 Nov 2018) | 4 lines

configure.ac: add --disable-fiber-coroutine option

* configure.ac: add --disable-fiber-coroutine option, and disable
  it on x86-mingw32 for now.
------------------------------------------------------------------------
r65898 | nobu | 2018-11-21 12:26:58 +0900 (Wed, 21 Nov 2018) | 1 line

configure.ac: gather preset variables on mingw
------------------------------------------------------------------------
r65897 | naruse | 2018-11-21 07:40:21 +0900 (Wed, 21 Nov 2018) | 4 lines

Show function name based on dladdr

If there's no dwarf and symbol table, this will be a last resort.
(mainly on macOS)
------------------------------------------------------------------------
r65896 | naruse | 2018-11-21 07:40:20 +0900 (Wed, 21 Nov 2018) | 1 line

Support Universal Binary for macOS
------------------------------------------------------------------------
r65895 | samuel | 2018-11-21 05:09:38 +0900 (Wed, 21 Nov 2018) | 1 line

Fix indentation.
------------------------------------------------------------------------
r65894 | svn | 2018-11-21 00:46:11 +0900 (Wed, 21 Nov 2018) | 1 line

* 2018-11-21
------------------------------------------------------------------------
r65893 | k0kubun | 2018-11-21 00:46:09 +0900 (Wed, 21 Nov 2018) | 4 lines

Skip known MJIT random test failures

Let me silence this until I have time to work on them, and make the CI
usable for testing other features.
------------------------------------------------------------------------
r65892 | k0kubun | 2018-11-20 23:40:55 +0900 (Tue, 20 Nov 2018) | 13 lines

configure.ac: disable native-fiber for MinGW

because it had already been SEGV-ed in pull request'S CI
https://ci.appveyor.com/project/ruby/ruby/builds/20427065/job/32oahrcd58b8ubb1
and has never worked on trunk either.

Please make sure it does not SEGVs on your MinGW environment or pull
request before enabling native fiber on MinGW.

appveyor.yml: reverted commits to make CI green with native fiber
test/excludes/_appveyor/msys2/TestArray.rb: ditto
test/excludes/_appveyor/msys2/TestEnumerable.rb: ditto
test/excludes/_appveyor/vs/TestArray.rb: ditto
------------------------------------------------------------------------
r65891 | k0kubun | 2018-11-20 23:13:12 +0900 (Tue, 20 Nov 2018) | 5 lines

appveyor.yml: do not undefine everything [ci skip]

https://ci.appveyor.com/project/ruby/ruby/builds/20432223/job/yhwbku8dg2s40e9e
C:/projects/ruby/test/lib/test/unit.rb:1004: warning: undefining `object_id' may cause serious problems
C:/projects/ruby/test/lib/test/unit.rb:1004: warning: undefining `__send__' may cause serious problems
------------------------------------------------------------------------
r65890 | svn | 2018-11-20 22:39:51 +0900 (Tue, 20 Nov 2018) | 1 line

* properties.
------------------------------------------------------------------------
r65889 | k0kubun | 2018-11-20 22:39:50 +0900 (Tue, 20 Nov 2018) | 4 lines

appveyor.yml: exclude TestEnumerable.rb on msys2

because it SEGVs on setup like:
https://ci.appveyor.com/project/ruby/ruby/builds/20431217/job/97no5h1gqv50k1vf
------------------------------------------------------------------------
r65888 | k0kubun | 2018-11-20 21:59:32 +0900 (Tue, 20 Nov 2018) | 7 lines

appveyor.yml: native-fiber crashes Enumerator

test on MinGW.
https://ci.appveyor.com/project/ruby/ruby/builds/20427662/job/tnnw50opqtj6x0xq
https://ci.appveyor.com/project/ruby/ruby/builds/20429129/job/dpgbx5atkxjiwh7q

To investigate issues, let's try running this without -j.
------------------------------------------------------------------------
r65887 | nobu | 2018-11-20 21:02:29 +0900 (Tue, 20 Nov 2018) | 1 line

Make coroutine object directory for each arch
------------------------------------------------------------------------
r65886 | k0kubun | 2018-11-20 21:01:18 +0900 (Tue, 20 Nov 2018) | 1 line

test/excludes/_appveyor: exclude AppVeyor killer
------------------------------------------------------------------------
r65885 | nobu | 2018-11-20 20:45:13 +0900 (Tue, 20 Nov 2018) | 4 lines

Change ASMEXT to s

By the default of GNU make, .S is used to be compiled with CC, but
we have already used .s as ia64.s, and now coroutine/*/Context.s.
------------------------------------------------------------------------
r65884 | k0kubun | 2018-11-20 20:24:30 +0900 (Tue, 20 Nov 2018) | 5 lines

Makefile.in: fix Travis i686 build

by r65880

https://travis-ci.org/ruby/ruby/jobs/457384539
------------------------------------------------------------------------
r65883 | k0kubun | 2018-11-20 20:18:59 +0900 (Tue, 20 Nov 2018) | 4 lines

mjit_worker.c: avoid GC when modifying ISeq

This is hoped to fix the SEGV:
https://app.wercker.com/ruby/ruby/runs/mjit-test1/5bf392cf183106002856c1f0?step=5bf3bddc87436a0006292535
------------------------------------------------------------------------
r65882 | nobu | 2018-11-20 19:51:27 +0900 (Tue, 20 Nov 2018) | 4 lines

Fix condition

FIBER_USE_NATIVE is always defined as 0 or 1, use `#if` instead of
`#ifdef`.
------------------------------------------------------------------------
r65881 | nobu | 2018-11-20 19:43:41 +0900 (Tue, 20 Nov 2018) | 1 line

Make fiber_entry static
------------------------------------------------------------------------
r65880 | nobu | 2018-11-20 19:29:03 +0900 (Tue, 20 Nov 2018) | 6 lines

Fix typo and make directory

* common.mk (coroutine/amd64/Context.$(OBJEXT)): fix a typo,
  $(OBJECT).

* common.mk (coroutine/amd64): recipe to make object directory.
------------------------------------------------------------------------
r65879 | samuel | 2018-11-20 19:18:25 +0900 (Tue, 20 Nov 2018) | 1 line

Support Visual C++ (mswin)
------------------------------------------------------------------------
r65878 | samuel | 2018-11-20 19:18:21 +0900 (Tue, 20 Nov 2018) | 1 line

Fix windows builds.
------------------------------------------------------------------------
r65877 | svn | 2018-11-20 19:18:17 +0900 (Tue, 20 Nov 2018) | 1 line

* properties.
------------------------------------------------------------------------
r65876 | samuel | 2018-11-20 19:18:16 +0900 (Tue, 20 Nov 2018) | 1 line

GAS style assembly for win64 (mingw).
------------------------------------------------------------------------
r65875 | samuel | 2018-11-20 19:18:12 +0900 (Tue, 20 Nov 2018) | 1 line

Expose stack functions to coroutine and non-windows implementations.
------------------------------------------------------------------------
r65874 | samuel | 2018-11-20 19:18:08 +0900 (Tue, 20 Nov 2018) | 1 line

Fix exposure of stack allocations.
------------------------------------------------------------------------
r65873 | samuel | 2018-11-20 19:18:04 +0900 (Tue, 20 Nov 2018) | 1 line

Use malloc/free for windows stack allocation.
------------------------------------------------------------------------
r65872 | samuel | 2018-11-20 19:18:01 +0900 (Tue, 20 Nov 2018) | 1 line

Fix struct usage.
------------------------------------------------------------------------
r65871 | samuel | 2018-11-20 19:17:56 +0900 (Tue, 20 Nov 2018) | 1 line

Fix message result.
------------------------------------------------------------------------
r65870 | samuel | 2018-11-20 19:17:52 +0900 (Tue, 20 Nov 2018) | 1 line

Fix configure.ac typo.
------------------------------------------------------------------------
r65869 | samuel | 2018-11-20 19:17:49 +0900 (Tue, 20 Nov 2018) | 1 line

Fix line endings.
------------------------------------------------------------------------
r65868 | samuel | 2018-11-20 19:17:44 +0900 (Tue, 20 Nov 2018) | 1 line

Initial support for x64-mingw32
------------------------------------------------------------------------
r65867 | samuel | 2018-11-20 19:17:39 +0900 (Tue, 20 Nov 2018) | 1 line

Better (?) support for Windows TIB.
------------------------------------------------------------------------
r65866 | samuel | 2018-11-20 19:17:35 +0900 (Tue, 20 Nov 2018) | 1 line

Be even more specific, for some reason it was selecting amd64 on x64-mingw32.
------------------------------------------------------------------------
r65865 | samuel | 2018-11-20 19:17:31 +0900 (Tue, 20 Nov 2018) | 1 line

Limit coroutine implementations to Linux.
------------------------------------------------------------------------
r65864 | samuel | 2018-11-20 19:17:27 +0900 (Tue, 20 Nov 2018) | 1 line

Tidy up assembly make rule.
------------------------------------------------------------------------
r65863 | samuel | 2018-11-20 19:17:24 +0900 (Tue, 20 Nov 2018) | 1 line

Expose dependency between cont.c and coroutine implementation.
------------------------------------------------------------------------
r65862 | svn | 2018-11-20 19:17:19 +0900 (Tue, 20 Nov 2018) | 1 line

* expand tabs.
------------------------------------------------------------------------
r65861 | samuel | 2018-11-20 19:17:17 +0900 (Tue, 20 Nov 2018) | 1 line

Prefer "static inline" to avoid duplicate symbols.
------------------------------------------------------------------------
r65860 | samuel | 2018-11-20 19:17:12 +0900 (Tue, 20 Nov 2018) | 1 line

Remove trailing whitespace.
------------------------------------------------------------------------
r65859 | samuel | 2018-11-20 19:17:08 +0900 (Tue, 20 Nov 2018) | 1 line

Rename fiber chain benchmark.
------------------------------------------------------------------------
r65858 | samuel | 2018-11-20 19:17:04 +0900 (Tue, 20 Nov 2018) | 1 line

Restore native non-coroutine code path.
------------------------------------------------------------------------
r65857 | samuel | 2018-11-20 19:17:00 +0900 (Tue, 20 Nov 2018) | 1 line

Formatting changes.
------------------------------------------------------------------------
r65856 | samuel | 2018-11-20 19:16:54 +0900 (Tue, 20 Nov 2018) | 1 line

Ensure start function has correct declaration.
------------------------------------------------------------------------
r65855 | samuel | 2018-11-20 19:16:49 +0900 (Tue, 20 Nov 2018) | 1 line

Try using compiler for assembling.
------------------------------------------------------------------------
r65854 | samuel | 2018-11-20 19:16:45 +0900 (Tue, 20 Nov 2018) | 1 line

Print out what the assembler is doing to figure out why it's not working.
------------------------------------------------------------------------
r65853 | samuel | 2018-11-20 19:16:41 +0900 (Tue, 20 Nov 2018) | 1 line

Mark COROUTINE as noreturn.
------------------------------------------------------------------------
r65852 | svn | 2018-11-20 19:16:35 +0900 (Tue, 20 Nov 2018) | 1 line

* remove trailing spaces.
------------------------------------------------------------------------
r65851 | samuel | 2018-11-20 19:16:34 +0900 (Tue, 20 Nov 2018) | 1 line

Remove `Benchmark` times.
------------------------------------------------------------------------
r65850 | samuel | 2018-11-20 19:16:29 +0900 (Tue, 20 Nov 2018) | 1 line

Tidy up comments.
------------------------------------------------------------------------
r65849 | svn | 2018-11-20 19:14:03 +0900 (Tue, 20 Nov 2018) | 1 line

* properties.
------------------------------------------------------------------------
r65848 | svn | 2018-11-20 19:14:03 +0900 (Tue, 20 Nov 2018) | 1 line

* expand tabs.
------------------------------------------------------------------------
r65847 | samuel | 2018-11-20 19:13:59 +0900 (Tue, 20 Nov 2018) | 1 line

Initial effort to support 32-bit Linux.
------------------------------------------------------------------------
r65846 | samuel | 2018-11-20 19:13:55 +0900 (Tue, 20 Nov 2018) | 1 line

It cannot be const because it is being passed to destructive operation (destroy).
------------------------------------------------------------------------
r65845 | samuel | 2018-11-20 19:13:51 +0900 (Tue, 20 Nov 2018) | 1 line

Better benchmark name.
------------------------------------------------------------------------
r65844 | svn | 2018-11-20 19:09:55 +0900 (Tue, 20 Nov 2018) | 1 line

* remove trailing spaces.
------------------------------------------------------------------------
r65843 | samuel | 2018-11-20 19:09:53 +0900 (Tue, 20 Nov 2018) | 1 line

Fix broken benchmark
------------------------------------------------------------------------
r65842 | svn | 2018-11-20 19:06:59 +0900 (Tue, 20 Nov 2018) | 1 line

* remove trailing spaces.
------------------------------------------------------------------------
r65841 | samuel | 2018-11-20 19:06:58 +0900 (Tue, 20 Nov 2018) | 1 line

Fix code climate cognitive complexity issue
------------------------------------------------------------------------
r65840 | samuel | 2018-11-20 19:06:54 +0900 (Tue, 20 Nov 2018) | 1 line

Create output directory when assembling file
------------------------------------------------------------------------
r65839 | samuel | 2018-11-20 18:59:23 +0900 (Tue, 20 Nov 2018) | 1 line

Restore return value assignment
------------------------------------------------------------------------
r65838 | svn | 2018-11-20 18:59:20 +0900 (Tue, 20 Nov 2018) | 1 line

* properties.
------------------------------------------------------------------------
r65837 | svn | 2018-11-20 18:59:19 +0900 (Tue, 20 Nov 2018) | 1 line

* remove trailing spaces.
------------------------------------------------------------------------
r65836 | samuel | 2018-11-20 18:59:18 +0900 (Tue, 20 Nov 2018) | 1 line

Rewrite fiber benchmark
------------------------------------------------------------------------
r65835 | samuel | 2018-11-20 18:59:14 +0900 (Tue, 20 Nov 2018) | 1 line

Better support for amd64 platforms
------------------------------------------------------------------------
r65834 | samuel | 2018-11-20 18:59:10 +0900 (Tue, 20 Nov 2018) | 1 line

Native implementation of coroutines to improve performance of fibers
------------------------------------------------------------------------
r65833 | nobu | 2018-11-20 18:29:37 +0900 (Tue, 20 Nov 2018) | 1 line

common.mk: BTESTS to direct tests by btest
------------------------------------------------------------------------
r65832 | normal | 2018-11-20 16:27:28 +0900 (Tue, 20 Nov 2018) | 6 lines

thread_pthread.c (rb_reserved_fd_p): false-positive on negative FD

Negative-numbered FDs are never valid FDs on POSIX-like
platforms, and we initialize our self-pipes/eventfd values
to "-1", so stop treating -1 as a reserved FD if our system
is too low on resources to allocate FDs at startup.
------------------------------------------------------------------------
r65831 | nobu | 2018-11-20 15:13:42 +0900 (Tue, 20 Nov 2018) | 1 line

run single test [ci skip]
------------------------------------------------------------------------
r65830 | shyouhei | 2018-11-20 14:58:12 +0900 (Tue, 20 Nov 2018) | 2 lines

vm_insnhelper.c: fix indent [ci skip]

------------------------------------------------------------------------
r65829 | usa | 2018-11-20 14:18:28 +0900 (Tue, 20 Nov 2018) | 2 lines

Simply treat IO::WaitReadable just like Errno::EAGAIN

------------------------------------------------------------------------
r65828 | shyouhei | 2018-11-20 13:51:09 +0900 (Tue, 20 Nov 2018) | 14 lines

vm_insnhelper.c: recv -1 + 3 overflows

Here, recv can be INT2FIX(-1), which is 0xFFFF_FFFFul.
INT2FIX(1) is 3ul.  So `recv - 1 + INT2FIX(1)` is:

recv              0xFFFF_FFFFul
recv-1            0xFFFF_FFFEul (note: unsigned)
recv-1+INT2FIX(1) 0x0000_0001ul Here is the overflow.

Given recv is a Fixnum, it can never be 0xFFFF_FFFD.  0xFFFF_FFFF is
the only value that can overflow this way, so special-casing this
value should just suffice.


------------------------------------------------------------------------
r65827 | shugo | 2018-11-20 12:56:51 +0900 (Tue, 20 Nov 2018) | 15 lines

revert r65822

Because mon_initialized may be used to re-initialize copied objects intentionally.

mon_initialize_spec.rb fails:

1)
MonitorMixin#mon_initialize can be called in initialize_copy to get a new Mutex and used with synchronize ERROR
ThreadError: already initialized
/home/shugo/src/ruby/lib/monitor.rb:255:in `mon_initialize'
/home/shugo/src/ruby/spec/ruby/library/monitor/mon_initialize_spec.rb:19:in `initialize_copy'
/home/shugo/src/ruby/spec/ruby/library/monitor/mon_initialize_spec.rb:28:in `initialize_dup'
/home/shugo/src/ruby/spec/ruby/library/monitor/mon_initialize_spec.rb:28:in `dup'
/home/shugo/src/ruby/spec/ruby/library/monitor/mon_initialize_spec.rb:28:in `block (2 levels) in <top (required)>'
/home/shugo/src/ruby/spec/ruby/library/monitor/mon_initialize_spec.rb:4:in `<top (required)>'
------------------------------------------------------------------------
r65826 | nobu | 2018-11-20 12:07:46 +0900 (Tue, 20 Nov 2018) | 1 line

rdoc query
------------------------------------------------------------------------
r65825 | kazu | 2018-11-20 12:03:02 +0900 (Tue, 20 Nov 2018) | 1 line

mjit.c: fix typos [ci skip]
------------------------------------------------------------------------
r65824 | kazu | 2018-11-20 12:03:01 +0900 (Tue, 20 Nov 2018) | 1 line

Remove unnecessary space
------------------------------------------------------------------------
r65823 | svn | 2018-11-20 12:01:57 +0900 (Tue, 20 Nov 2018) | 1 line

* properties.
------------------------------------------------------------------------
r65822 | shugo | 2018-11-20 12:01:55 +0900 (Tue, 20 Nov 2018) | 3 lines

lib/monitor.rb: prevent to initialize MonitorMixin twice

Suggested by Benoit Daloze.  [ruby-core:88504] [Feature #15000]
------------------------------------------------------------------------
r65821 | k0kubun | 2018-11-20 11:16:30 +0900 (Tue, 20 Nov 2018) | 5 lines

revert r65820 and retry assert_finish

From: MSP-Greg <greg.mpls@gmail.com>

https://github.com/ruby/ruby/commit/5187ea768f57315e61486122d688f1992d4cb21f
------------------------------------------------------------------------
r65820 | k0kubun | 2018-11-20 10:28:43 +0900 (Tue, 20 Nov 2018) | 7 lines

test_thread.rb: skip test_thread.rb broken for Windows

msys2.

https://ci.appveyor.com/project/ruby/ruby/builds/20419607/job/fuvrfcmrhxr1r1cr
https://ci.appveyor.com/project/ruby/ruby/builds/20395349/job/2nqewb06b5eanwea
https://ci.appveyor.com/project/ruby/ruby/builds/20382452/job/658pvl1cqolyrixm
------------------------------------------------------------------------
r65819 | nobu | 2018-11-20 09:39:07 +0900 (Tue, 20 Nov 2018) | 4 lines

Check -fcf-protection

* configure.ac: Check if CFLAGS actually includes -fcf-protection
  instead of checking if the flag is valid by RUBY_TRY_CFLAGS.
------------------------------------------------------------------------
r65818 | k0kubun | 2018-11-20 09:07:36 +0900 (Tue, 20 Nov 2018) | 1 line

thread.c: fix obsoleted comment [ci skip]
------------------------------------------------------------------------
r65817 | k0kubun | 2018-11-20 09:04:19 +0900 (Tue, 20 Nov 2018) | 5 lines

process.c: do not try to pause MJIT

while child handler is disabled.

trying to fix [Bug #15320]
------------------------------------------------------------------------
r65816 | k0kubun | 2018-11-20 08:28:30 +0900 (Tue, 20 Nov 2018) | 4 lines

test_process.rb: Process.daemon seems irrelevant [ci skip]

in the backtrace:
http://ci.rvm.jp/results/trunk-mjit@silicon-docker/1468677
------------------------------------------------------------------------
r65815 | k0kubun | 2018-11-20 08:05:11 +0900 (Tue, 20 Nov 2018) | 5 lines

configure.ac: avoid crashing MJIT with -fcf-protection

by avoiding using __builtin_longjmp, like r64983.

[Bug #15307]
------------------------------------------------------------------------
r65814 | k0kubun | 2018-11-20 07:10:12 +0900 (Tue, 20 Nov 2018) | 6 lines

revert r65807

it didn't work.
http://ci.rvm.jp/results/trunk-mjit@silicon-docker/1468677

and skips broken tests for now. But this issue should be fixed soon.
------------------------------------------------------------------------
r65813 | svn | 2018-11-20 00:00:37 +0900 (Tue, 20 Nov 2018) | 1 line

* 2018-11-20
------------------------------------------------------------------------
r65812 | nobu | 2018-11-20 00:00:35 +0900 (Tue, 20 Nov 2018) | 4 lines

ruby/ruby.h: void rb_scan_args_verify

* include/ruby/ruby.h (rb_scan_args_verify): void the never used
  result.
------------------------------------------------------------------------
r65811 | k0kubun | 2018-11-19 23:21:55 +0900 (Mon, 19 Nov 2018) | 4 lines

appveyor.yml: separately execute test_bignum

because that may crash worker with -j.
https://ci.appveyor.com/project/ruby/ruby/builds/20403179/job/mkdcb6uy8qn2djgl
------------------------------------------------------------------------
r65810 | k0kubun | 2018-11-19 23:00:49 +0900 (Mon, 19 Nov 2018) | 8 lines

ruby.c: do not surface MJIT to user

In some places, both JIT and MJIT are being used, but it could be
confusing for new comers. We're not explaining MJIT on NEWS file or release
notes as well. So we consider MJIT as an internal term of implementation
like YARV.

configure.ac: ditto
------------------------------------------------------------------------
r65809 | k0kubun | 2018-11-19 22:48:07 +0900 (Mon, 19 Nov 2018) | 1 line

internal.h: resurrect --disable-mjit-support
------------------------------------------------------------------------
r65808 | nobu | 2018-11-19 22:43:44 +0900 (Mon, 19 Nov 2018) | 6 lines

fix for Solaris sh

* Makefile.in (mjit_config.h): removed unnecessary assignment.

* tool/mjit_archflag.sh (define_arch_flags): need to quote on
  Solaris.  [ruby-dev:50669] [Bug #15319]
------------------------------------------------------------------------
r65807 | k0kubun | 2018-11-19 22:33:07 +0900 (Mon, 19 Nov 2018) | 7 lines

process.c: do not run signal handler before fork

to prevent from proceeding one for MJIT while it's not safe yet.
By that situation, MJIT worker could be waiting for compiler process forever
http://ci.rvm.jp/results/trunk-mjit@silicon-docker/1468033

[Bug #15320]
------------------------------------------------------------------------
r65806 | nobu | 2018-11-19 22:21:48 +0900 (Mon, 19 Nov 2018) | 4 lines

configure.ac: rename extra_warning as extra_warnflags

Adjusted to warnflags variable.  This variable will have flags for
warnings, but not a warning itself.
------------------------------------------------------------------------
r65805 | nobu | 2018-11-19 19:15:20 +0900 (Mon, 19 Nov 2018) | 1 line

configure.ac: respect extra_warnflags if given
------------------------------------------------------------------------
r65804 | shyouhei | 2018-11-19 18:52:46 +0900 (Mon, 19 Nov 2018) | 5 lines

string.c: setbyte silently ignores upper bits

The behaviour of String#setbyte has been depending on the width
of int, which is not portable.  Must check explicitly.

------------------------------------------------------------------------
r65803 | nobu | 2018-11-19 18:42:10 +0900 (Mon, 19 Nov 2018) | 1 line

.travis.yml: do not pass unnecessary warnflags
------------------------------------------------------------------------
r65802 | shyouhei | 2018-11-19 17:10:48 +0900 (Mon, 19 Nov 2018) | 6 lines

io.c: ungetbyte silently ignores upper bits

The behaviour of IO#ungetbyte has been depending on the width of
Fixnums.  Fixnums should be invisible nowadays.  It must be a
bug. Fix [Bug #14359]

------------------------------------------------------------------------
r65801 | nobu | 2018-11-19 16:00:12 +0900 (Mon, 19 Nov 2018) | 5 lines

_colorize_result_prepare.m4: do not save CONFIGURE_TTY

redirection to a tty, file or pipe is not a permanent status.
`rb_cv_` prefix means that it should be saved/restored across
re-configurations.
------------------------------------------------------------------------
r65800 | nobu | 2018-11-19 15:52:55 +0900 (Mon, 19 Nov 2018) | 1 line

Makefile.in: reconfig with the original warnflags
------------------------------------------------------------------------
r65799 | nobu | 2018-11-19 15:52:54 +0900 (Mon, 19 Nov 2018) | 4 lines

.travis.yml: use dedicated flags

* .travis.yml: use dedicated flags, cflags and others, not to
  override optflags, warnflags and debugflags.
------------------------------------------------------------------------
r65798 | shyouhei | 2018-11-19 15:48:09 +0900 (Mon, 19 Nov 2018) | 7 lines

array.c: avoid (VALUE)--

This args[1]-- overflows when it is zero.  Should do that only
when we can say it is nonzero.



------------------------------------------------------------------------
r65797 | shyouhei | 2018-11-19 14:04:02 +0900 (Mon, 19 Nov 2018) | 2 lines

.travis.yml: -Wno-unknown-warning-option is needed, too.

------------------------------------------------------------------------
r65796 | shyouhei | 2018-11-19 12:08:32 +0900 (Mon, 19 Nov 2018) | 5 lines

.travis.yml: extra CFLAGS to suppress warnings

When CFLAGS is passed on travis, warnflags seems not working.
Let's add them directly to prevent clang form messing up the logs.

------------------------------------------------------------------------
r65795 | shyouhei | 2018-11-19 12:01:55 +0900 (Mon, 19 Nov 2018) | 5 lines

-Wno-unused-value [ci skip]

Without this option clang outputs tons of warnings, which
are annoying. See https://travis-ci.org/ruby/ruby/jobs/456553420#L1817

------------------------------------------------------------------------
r65794 | shyouhei | 2018-11-19 11:58:51 +0900 (Mon, 19 Nov 2018) | 4 lines

sort lines [ci skip]

... for aethetic reasons.

------------------------------------------------------------------------
r65793 | svn | 2018-11-19 08:29:42 +0900 (Mon, 19 Nov 2018) | 1 line

* 2018-11-19
------------------------------------------------------------------------
r65792 | nobu | 2018-11-19 08:29:41 +0900 (Mon, 19 Nov 2018) | 1 line

Also clean ruby-runner.o and ruby.imp [ci skip]
------------------------------------------------------------------------
r65791 | nobu | 2018-11-19 08:29:40 +0900 (Mon, 19 Nov 2018) | 3 lines

update-deps: fix runtime error [ci skip]

* tool/update-deps (init_global): environment strings are frozen.
------------------------------------------------------------------------
r65790 | k0kubun | 2018-11-18 22:32:49 +0900 (Sun, 18 Nov 2018) | 14 lines

mjit.c: fix deadlock introduced by r65785

in mjit_pause() fired by before_fork_ruby(). When calling
RUBY_VM_CHECK_INTS() in mjit_pause()'s loop, other threads may call
start_worker() which sets `stop_worker_p = FALSE` and it could wait for
MJIT worker stop forever even while `stop_worker_p` is FALSE.

http://ci.rvm.jp/results/trunk-mjit@silicon-docker/1466333
https://gist.github.com/ko1/a57ef1a03e1c7cfd22f1495e0864b63d

http://ci.rvm.jp/results/trunk-mjit-wait@silicon-docker/1466335
https://gist.github.com/ko1/96e867e36e6b75559b3d926f8c0bdaeb

https://app.wercker.com/ruby/ruby/runs/mjit-test1/5bf1221c183106002855989c?step=5bf1225987436a0006192c31
------------------------------------------------------------------------
r65789 | k0kubun | 2018-11-18 18:32:29 +0900 (Sun, 18 Nov 2018) | 4 lines

wercker.yml: debug problematic test on test-all

Some test seems to hang
https://app.wercker.com/ruby/ruby/runs/mjit-test1/5bf1221c183106002855989c?step=5bf1225987436a0006192c31
------------------------------------------------------------------------
r65788 | k0kubun | 2018-11-18 18:22:48 +0900 (Sun, 18 Nov 2018) | 4 lines

test_jit.rb: loosen output check

for interleaving between processes
https://gist.github.com/ko1/ace0374825377b41628d4590b7377601
------------------------------------------------------------------------
r65787 | k0kubun | 2018-11-18 17:44:16 +0900 (Sun, 18 Nov 2018) | 4 lines

test_jit.rb: dump information to debug test failure

debugging
http://ci.rvm.jp/results/trunk-vm-asserts@silicon-docker/1466123
------------------------------------------------------------------------
r65786 | svn | 2018-11-18 17:25:54 +0900 (Sun, 18 Nov 2018) | 1 line

* expand tabs.
------------------------------------------------------------------------
r65785 | k0kubun | 2018-11-18 17:25:48 +0900 (Sun, 18 Nov 2018) | 5 lines

mjit_worker.c: support MJIT in forked Ruby process

by launching MJIT worker thread in child Ruby process.

See the comment before `mjit_child_after_fork` for details.
------------------------------------------------------------------------
r65784 | k0kubun | 2018-11-18 17:23:05 +0900 (Sun, 18 Nov 2018) | 1 line

thread.c: rb_fiber_atfork has nothing to do with mjit.c [ci skip]
------------------------------------------------------------------------
r65783 | k0kubun | 2018-11-18 17:22:46 +0900 (Sun, 18 Nov 2018) | 1 line

mjit_worker.c: fix typo [ci skip]
------------------------------------------------------------------------
r65782 | k0kubun | 2018-11-18 17:22:30 +0900 (Sun, 18 Nov 2018) | 3 lines

test_jit.rb: fix typo [ci skip]

we don't have such VM register
------------------------------------------------------------------------
r65781 | normal | 2018-11-18 13:34:52 +0900 (Sun, 18 Nov 2018) | 5 lines

vm_trace.c (rb_postponed_job_flush): use rb_atomic_t for mask

ec->interrupt_mask will remain rb_atomic_t and is 32-bit on some
64-bit systems while "unsigned long" is 64-bits.  So avoid
mismatching lengths and stick to rb_atomic_t.
------------------------------------------------------------------------
r65780 | nobu | 2018-11-18 13:21:52 +0900 (Sun, 18 Nov 2018) | 1 line

common.mk: dependency of io.c for r65779
------------------------------------------------------------------------
r65779 | normal | 2018-11-18 12:37:04 +0900 (Sun, 18 Nov 2018) | 3 lines

io.c: include vm_core.h for VM_UNREACHABLE

Thanks to Greg L <greg.mpls@gmail.com> for the report
------------------------------------------------------------------------
r65778 | svn | 2018-11-18 10:37:46 +0900 (Sun, 18 Nov 2018) | 1 line

* 2018-11-18
------------------------------------------------------------------------
r65777 | normal | 2018-11-18 10:37:46 +0900 (Sun, 18 Nov 2018) | 4 lines

io.c (novl_wait_for_single_fd): VM_UNREACHABLE instead of assert

This respects VM_CHECK_MODE and is more consistent with
the rest of our code.
------------------------------------------------------------------------
r65776 | svn | 2018-11-18 10:37:45 +0900 (Sun, 18 Nov 2018) | 1 line

* expand tabs.
------------------------------------------------------------------------
r65775 | normal | 2018-11-18 10:37:41 +0900 (Sun, 18 Nov 2018) | 6 lines

vm_core.h (rb_thread_set_current*): convert to static inline

We already use "static inline" heavily and there should be no
penalty for modern compilers; this adds type-checking, too.

This will make future changes easier-to-review.
------------------------------------------------------------------------
r65774 | nobu | 2018-11-17 10:42:30 +0900 (Sat, 17 Nov 2018) | 1 line

test/mkmf/base.rb: use CC_WRAPPER same as the toplevel
------------------------------------------------------------------------
r65773 | nobu | 2018-11-17 10:21:18 +0900 (Sat, 17 Nov 2018) | 1 line

[DOC] rational and imaginary literals [ci skip]
------------------------------------------------------------------------
r65772 | svn | 2018-11-17 08:27:38 +0900 (Sat, 17 Nov 2018) | 1 line

* 2018-11-17
------------------------------------------------------------------------
r65771 | svn | 2018-11-17 08:27:38 +0900 (Sat, 17 Nov 2018) | 1 line

* properties.
------------------------------------------------------------------------
r65770 | hsbt | 2018-11-17 08:27:37 +0900 (Sat, 17 Nov 2018) | 3 lines

Switch to 2-0-stable branch of bundler/bundler repository from our fork repository.

  https://github.com/bundler/bundler/tree/2-0-stable
------------------------------------------------------------------------
r65769 | nobu | 2018-11-16 21:11:23 +0900 (Fri, 16 Nov 2018) | 3 lines

Makefile.in: test-almost also needs mjit_build_dir.so

[ruby-core:89830] [Bug #15311]
------------------------------------------------------------------------
r65768 | shyouhei | 2018-11-16 18:04:34 +0900 (Fri, 16 Nov 2018) | 13 lines

pack.c: cast from double to float can be undefined

Generally speaking, a value of double is not always representable
when demoted to a float. ISO C defines what to do when such
conversion loses precision, but leaves it undefined when the
value is completely out of range. (cf: ISO/IEC 9899:1990 section
6.2.1.4).

Because ruby do not have half-precision floating-point types this
is not a frequent headache but for pack / unpack, there are
specifiers that has something to do with C float types.  We have
to explicitly care these situations.

------------------------------------------------------------------------
r65767 | nobu | 2018-11-16 16:08:58 +0900 (Fri, 16 Nov 2018) | 1 line

common.mk: hack to export symbols for MJIT in ruby.imp
------------------------------------------------------------------------
r65766 | k0kubun | 2018-11-16 15:52:12 +0900 (Fri, 16 Nov 2018) | 6 lines

test/excludes/_wercker: remove obsoleted pipeline name

from excludes directory names. test-mjit-wait / test-mjit are combined
and distributed as mjit-test1 and mjit-test2 now.

So the subdirectory names are changed to option names, --jit and --jit-wait.
------------------------------------------------------------------------
r65765 | nobu | 2018-11-16 15:52:01 +0900 (Fri, 16 Nov 2018) | 4 lines

common.mk: fix the pattern to be hidden

* common.mk (ruby.imp): consider symbol prefix, remove InitVM, and
  fix internal symbols start with a dot.
------------------------------------------------------------------------
r65764 | nobu | 2018-11-16 15:52:00 +0900 (Fri, 16 Nov 2018) | 1 line

Make some internal functions static
------------------------------------------------------------------------
r65763 | nobu | 2018-11-16 15:51:57 +0900 (Fri, 16 Nov 2018) | 1 line

Prefix rb_ec_set_vm_stack
------------------------------------------------------------------------
r65762 | k0kubun | 2018-11-16 15:47:37 +0900 (Fri, 16 Nov 2018) | 3 lines

appveyor.yml: skip reverting comment improvement [ci skip]

This part was not intended in r65760
------------------------------------------------------------------------
r65761 | svn | 2018-11-16 15:45:17 +0900 (Fri, 16 Nov 2018) | 1 line

* properties.
------------------------------------------------------------------------
r65760 | k0kubun | 2018-11-16 15:45:16 +0900 (Fri, 16 Nov 2018) | 6 lines

appveyor.yml: give up running test_push_over_ary_max

because separately running it without -j didn't work.

Revert "appveyor.yml: run memory-exchausting test separately"
This reverts commit r65703.
------------------------------------------------------------------------
r65759 | nobu | 2018-11-16 13:32:48 +0900 (Fri, 16 Nov 2018) | 4 lines

[DOC] mention class method `new` [ci skip]

* NEWS: mention `new` class methods, instead of `initialize`
  insetance methods whic are not called by users directly.
------------------------------------------------------------------------
r65758 | k0kubun | 2018-11-16 13:25:07 +0900 (Fri, 16 Nov 2018) | 5 lines

[doc] Fix grammar typo in Pty_init() docstring [ci skip]

[Fix GH-2014]

From: Olle Jonsson <olle.jonsson@gmail.com>
------------------------------------------------------------------------
r65757 | k0kubun | 2018-11-16 13:21:57 +0900 (Fri, 16 Nov 2018) | 6 lines

Test for undef'ed method in class hierachy

This probably should have been `#bar` on the instance of class `Undef2` all along
[Fix GH-2015]

From: Alex Snaps <alex.snaps@gmail.com>
------------------------------------------------------------------------
r65756 | shyouhei | 2018-11-16 13:05:53 +0900 (Fri, 16 Nov 2018) | 4 lines

numeric.c: avoid division by zero

Forgot to add in r65751.

------------------------------------------------------------------------
r65755 | shyouhei | 2018-11-16 12:34:53 +0900 (Fri, 16 Nov 2018) | 4 lines

bignum.c: fix bug in big2dbl()

I was wrong at r65753.

------------------------------------------------------------------------
r65754 | shyouhei | 2018-11-16 12:09:00 +0900 (Fri, 16 Nov 2018) | 2 lines

bignum.c: avoid (size_t)--

------------------------------------------------------------------------
r65753 | shyouhei | 2018-11-16 11:59:30 +0900 (Fri, 16 Nov 2018) | 7 lines

bignum.c: BDIGIT might or might not integer-promote

BDIGIT can be unsigned int or unsigned short, depending on BDIGIT_DBL.
Given that, unsigned int and unsigned short are different in how
integer promotion works.  BOGLO assumes its argument is wider than
BDIGIT, which is not always true.  We have to force that explicitly.

------------------------------------------------------------------------
r65752 | shyouhei | 2018-11-16 11:34:00 +0900 (Fri, 16 Nov 2018) | 18 lines

enc/unicode.c: 'a' is bigger than 'A'

In ASCII, 'a' is bigger than 'A'. Which means 'A' - 'a' is a negative
number (-32, to be precise). In C, the type of 'a' and 'A' are signed
int (cf: ISO/IEC 9899:1990 section 6.1.3.4). So 'A' - 'a' is also a
signed int. It is `(signed int)-32`.

The problem is, OnigCodePoint is unsigned int. Adding a negative
number to a variable of OnigCodepoint (`code` here) introduces an
unintentional cast of `(unsigned)(signed)-32`, which is
4,294,967,264. Adding this value to code then overflows, and the
result eventually becomes normal codepoint.

The series of operations are not a serious problem but because
`code >= 'a'` holds, we can `(code - 'a') + 'A'` to reroute this.

See also: https://github.com/k-takata/Onigmo/pull/107

------------------------------------------------------------------------
r65751 | shyouhei | 2018-11-16 10:52:39 +0900 (Fri, 16 Nov 2018) | 11 lines

avoid division by zero

* cvt(): use signbit() instead of 1/d < 0
* w_float(): ditto
* ruby_float_step_size(): unit==0 check shall be prior to divisions
* arith_seq_float_step_size(): ditto
* rb_big_divide(): same as r65642
* fix_divide(): ditto
* rb_big_fdiv_double(): ditto
* fix_fdiv_double(): ditto

------------------------------------------------------------------------
r65750 | nobu | 2018-11-16 09:37:48 +0900 (Fri, 16 Nov 2018) | 1 line

rbinstall.rb: do not install rdoc flag files [ci skip]
------------------------------------------------------------------------
r65749 | nobu | 2018-11-16 09:28:43 +0900 (Fri, 16 Nov 2018) | 1 line

bignum.c: suppress unused variable warning
------------------------------------------------------------------------
r65748 | nobu | 2018-11-16 09:25:54 +0900 (Fri, 16 Nov 2018) | 4 lines

pack.c: refine warning

* pack.c (unknown_directive): refine warning message at unknown
  directive in unpack too, and quote unprintable characters.
------------------------------------------------------------------------
r65747 | nobu | 2018-11-16 09:25:53 +0900 (Fri, 16 Nov 2018) | 1 line

pack.c: adjust indent [ci skip]
------------------------------------------------------------------------
r65746 | svn | 2018-11-16 07:28:07 +0900 (Fri, 16 Nov 2018) | 1 line

* 2018-11-16
------------------------------------------------------------------------
r65745 | svn | 2018-11-16 07:28:06 +0900 (Fri, 16 Nov 2018) | 1 line

* expand tabs.
------------------------------------------------------------------------
r65744 | normal | 2018-11-16 07:28:03 +0900 (Fri, 16 Nov 2018) | 5 lines

include/ruby/ruby.h (RB_ALLOCV*): remove unnecessary GC guard

    text	   data	    bss	    dec	    hex	filename
 3535061	  21232	  72944	3629237	 3760b5	ruby.before
 3534141	  21232	  72944	3628317	 375d1d	ruby.after
------------------------------------------------------------------------
r65743 | shyouhei | 2018-11-15 18:03:03 +0900 (Thu, 15 Nov 2018) | 7 lines

eval_error.c: log10(0) is ERANGE

By definition, the logarithm of 0 is negative infinity.  This is a
pole error (cf: cf: ISO/IEC 9899:1999 section 7.12.1 paragraph 3) and
of course, cannot fit into an `int` value.  We have to resort to
INT_MIN.

------------------------------------------------------------------------
r65742 | shyouhei | 2018-11-15 17:33:38 +0900 (Thu, 15 Nov 2018) | 6 lines

.travis.yml: give up mac universal binary [ci skip]

OK, nobody is actively willing to maintain this configuration.  Just
stop annoying people by build failures.  See:
https://travis-ci.org/ruby/ruby/jobs/455377387

------------------------------------------------------------------------
r65741 | shyouhei | 2018-11-15 16:37:05 +0900 (Thu, 15 Nov 2018) | 10 lines

.travis.yml: -j3 [ci skip]

Now that ccache is enabled.  Compilations are made IO heavy, not CPU
bound.  This means parallel jobs beyond CPU count could gain more
speed.  From my experiment, I can conclude the good old "number of
cores plus one" tactics works the best.

The experiment: https://travis-ci.org/shyouhei/ruby/builds/454891855


------------------------------------------------------------------------
r65740 | svn | 2018-11-15 16:34:06 +0900 (Thu, 15 Nov 2018) | 1 line

* expand tabs.
------------------------------------------------------------------------
r65739 | shyouhei | 2018-11-15 16:34:01 +0900 (Thu, 15 Nov 2018) | 6 lines

suppress integer overflow warnings

* util.c: annotate as NO_SANITIZE
* bignum.c: avoid (size_t)--
* marshal.c: ditto.

------------------------------------------------------------------------
r65738 | nobu | 2018-11-15 15:22:17 +0900 (Thu, 15 Nov 2018) | 1 line

. command in some sh cannot take arguments
------------------------------------------------------------------------
r65737 | shyouhei | 2018-11-15 15:17:53 +0900 (Thu, 15 Nov 2018) | 17 lines

hash.c: cast from double to unsigned is undefined

When a negative double is casted into an unsigned type, that operation
is undefined (cf: ISO/IEC 9899:1990 section 6.2.9.3).  Recent versions
of C kindly footnotes that "The remaindering operation performed when
a value of integer type is converted to unsigned type need not be
performed when a value of real floating type is converted to unsigned
type" (cf: ISO/IEC 9899:1999 section 6.3.1.4 footnote 50).

So it is a wrong idea to just cast a double to st_data_t.

The intention of the code is commented as "mix the actual float value
in".  It seems we should do a reinterpret_cast and rule out
static_cast.

Confirmed this changeset does not affect `make benchmark`.

------------------------------------------------------------------------
r65736 | svn | 2018-11-15 14:22:45 +0900 (Thu, 15 Nov 2018) | 1 line

* properties.
------------------------------------------------------------------------
r65735 | nobu | 2018-11-15 14:22:44 +0900 (Thu, 15 Nov 2018) | 1 line

tool/mjit_archflag.sh: separated, too many escapes
------------------------------------------------------------------------
r65734 | shyouhei | 2018-11-15 14:10:40 +0900 (Thu, 15 Nov 2018) | 6 lines

bignum.c: ee should be signed

In C, signed + unsigned of the same size results in unsigned (cf:
ISO/IEC 9899:1990 section 6.2.1.5). However `num` is signed here.
Which means the addition must be done in signed.

------------------------------------------------------------------------
r65733 | kazu | 2018-11-15 12:45:34 +0900 (Thu, 15 Nov 2018) | 3 lines

Revert "Use CC without ccache as MJIT_CC"

because CI failed: https://travis-ci.org/ruby/ruby/builds/455313917
------------------------------------------------------------------------
r65732 | kazu | 2018-11-15 12:01:20 +0900 (Thu, 15 Nov 2018) | 1 line

Use CC without ccache as MJIT_CC
------------------------------------------------------------------------
r65731 | shyouhei | 2018-11-15 11:25:25 +0900 (Thu, 15 Nov 2018) | 22 lines

.travis.yml: enable ccache

Travis has `cache: ccache` feature so let us enable it.  Also, because
`config.cache` is generated during the compilation why not cache that
file for a later use.  [fix GH-2013]

Caveats:

- When something went wrong, cache entries can be deleted from
  https://travis-ci.org/ruby/ruby/caches (requires login).

- See `ccache(1)` manual page for the new environment variables.

- `ccache` thinks two compilations are not identical if they produce
  different diagnostics.  The -fno-diagnostics-color option is to
  prevent such cache missihts only because TTY is present / absent at
  the compilation time.

- In this changeset two "ccache --show-stats" invocations are inserted
  before and after the compilation to measure cache hit rates etc.
  Will revisit their outputs once the cache is warmed up.

------------------------------------------------------------------------
r65730 | svn | 2018-11-15 06:04:59 +0900 (Thu, 15 Nov 2018) | 1 line

* 2018-11-15
------------------------------------------------------------------------
r65729 | k0kubun | 2018-11-15 06:04:57 +0900 (Thu, 15 Nov 2018) | 8 lines

Fix syntax on Binding.irb documentation [ci skip]

There was incorrect backticks (`) instead of plus signs to denote method
references, and a typo.

[Fix GH-2016]

From: Olivier Lacan <hi@olivierlacan.com>
------------------------------------------------------------------------
r65727 | nobu | 2018-11-14 23:12:30 +0900 (Wed, 14 Nov 2018) | 1 line

rational.c (nurat_div): use the dedicated function nurat_to_f
------------------------------------------------------------------------
r65726 | svn | 2018-11-14 18:53:13 +0900 (Wed, 14 Nov 2018) | 1 line

* expand tabs.
------------------------------------------------------------------------
r65725 | shyouhei | 2018-11-14 18:53:11 +0900 (Wed, 14 Nov 2018) | 4 lines

numeric.c: avoid division by zero

same as r65642.

------------------------------------------------------------------------
r65724 | k0kubun | 2018-11-14 17:21:05 +0900 (Wed, 14 Nov 2018) | 4 lines

test_ftp.rb: loosen another timeout requirement

for Travis osx.
https://travis-ci.org/ruby/ruby/jobs/454864155
------------------------------------------------------------------------
r65723 | k0kubun | 2018-11-14 16:44:30 +0900 (Wed, 14 Nov 2018) | 3 lines

test_ftp.rb: loosen timeout for Travis osx

https://travis-ci.org/ruby/ruby/jobs/454798071
------------------------------------------------------------------------
r65722 | k0kubun | 2018-11-14 16:38:05 +0900 (Wed, 14 Nov 2018) | 3 lines

test_gem_stream_ui.rb: loosen timeout for --jit-wait

https://app.wercker.com/ruby/ruby/runs/mjit-test2/5beba9be183106002852f8a6?step=5bebc1a087436a0006f94a22
------------------------------------------------------------------------
r65721 | shyouhei | 2018-11-14 13:50:59 +0900 (Wed, 14 Nov 2018) | 4 lines

.travis.yml: specify git -q

We are not interested in git(1) output.

------------------------------------------------------------------------
r65720 | nobu | 2018-11-14 13:42:14 +0900 (Wed, 14 Nov 2018) | 1 line

Add RbConfig.fire_update!
------------------------------------------------------------------------
r65719 | svn | 2018-11-14 12:52:31 +0900 (Wed, 14 Nov 2018) | 1 line

* expand tabs.
------------------------------------------------------------------------
r65718 | normal | 2018-11-14 12:52:28 +0900 (Wed, 14 Nov 2018) | 4 lines

thread.c (rb_thread_fd_select): favor rb_thread_* when no FDs

select() is a crap API for even sleeping on sigwait_fd, so favor
the native_sleep-based functions when there are no FDs, instead.
------------------------------------------------------------------------
r65717 | nobu | 2018-11-14 11:27:17 +0900 (Wed, 14 Nov 2018) | 1 line

defs/known_errors.def: update on macOS Mojave Xcode 10.1
------------------------------------------------------------------------
r65716 | nobu | 2018-11-14 11:27:16 +0900 (Wed, 14 Nov 2018) | 6 lines

Makefile.in: update-known-errors

* Makefile.in (update-known-errors): update defs/known_errors.def
  by using errno(1).

* defs/known_errors.def: sort alphabetically for merger.
------------------------------------------------------------------------
r65715 | shyouhei | 2018-11-14 09:43:45 +0900 (Wed, 14 Nov 2018) | 2 lines

.travis.yml: add empty lines for readability [ci skip]

------------------------------------------------------------------------
r65714 | svn | 2018-11-14 08:06:51 +0900 (Wed, 14 Nov 2018) | 1 line

* properties.
------------------------------------------------------------------------
r65713 | k0kubun | 2018-11-14 08:06:49 +0900 (Wed, 14 Nov 2018) | 6 lines

test/excludes/../TestWEBrickUtils.rb: exclude unstable test

for now. This seems to get unstable after r65691.

test/excludes/_travis/osx: renamed from test/excludes/_travis because
it's only for osx builds.
------------------------------------------------------------------------
r65712 | svn | 2018-11-14 06:36:59 +0900 (Wed, 14 Nov 2018) | 1 line

* 2018-11-14
------------------------------------------------------------------------
r65711 | k0kubun | 2018-11-14 06:36:58 +0900 (Wed, 14 Nov 2018) | 3 lines

.travis.yml: stop allowing osx failure

it seems to be more stable than the timing we upgraded travis image.
------------------------------------------------------------------------
r65710 | nobu | 2018-11-13 23:56:49 +0900 (Tue, 13 Nov 2018) | 1 line

Makefile.in: `$` for shell needs to be escaped in Makefile
------------------------------------------------------------------------
r65709 | kazu | 2018-11-13 23:35:19 +0900 (Tue, 13 Nov 2018) | 1 line

Remove duplicated assignment
------------------------------------------------------------------------
r65708 | shyouhei | 2018-11-13 16:19:12 +0900 (Tue, 13 Nov 2018) | 7 lines

.travis.tml: reintroduce exclusions for osx

Sorry, seen the failures again.  Was a wrong idea to delete
the --exclude.

See https://travis-ci.org/ruby/ruby/jobs/454329443#L2233

------------------------------------------------------------------------
r65707 | shyouhei | 2018-11-13 16:17:02 +0900 (Tue, 13 Nov 2018) | 2 lines

.travis.yml: eliminate remaining --color=never [ci skip]

------------------------------------------------------------------------
r65706 | marcandre | 2018-11-13 15:20:06 +0900 (Tue, 13 Nov 2018) | 3 lines

Pathname: Have #relative_path_from accept String argument.

[Fix GH-1975]
------------------------------------------------------------------------
r65705 | k0kubun | 2018-11-13 15:17:57 +0900 (Tue, 13 Nov 2018) | 15 lines

test_function.rb: loosen delta boundary

On osx build https://travis-ci.org/ruby/ruby/jobs/454309945,

```
1) Failure:
Fiddle::TestFunction#test_nogvl_poll [/Users/travis/build/ruby/ruby/test/fiddle/test_function.rb:95]:
slept amount of time.
Expected |200 - 322| (122) to be <= 100.
```

but it succeeds on my macOS machine as is. So it seems that the boundary is
just too strict and prone to random failure by overload.

To make osx Travis build usable, let me loosen the delta requirement.
------------------------------------------------------------------------
r65704 | nobu | 2018-11-13 15:16:56 +0900 (Tue, 13 Nov 2018) | 1 line

Moved REVISION_FORCE before uncommon.mk
------------------------------------------------------------------------
r65703 | k0kubun | 2018-11-13 14:46:41 +0900 (Tue, 13 Nov 2018) | 5 lines

appveyor.yml: run memory-exchausting test separately

r65690 had no impact
https://ci.appveyor.com/project/ruby/ruby/builds/20253561/job/p5u235m8xx85t9o5.
Gave up to solve the issue inside the test.
------------------------------------------------------------------------
r65702 | shyouhei | 2018-11-13 13:55:43 +0900 (Tue, 13 Nov 2018) | 8 lines

.travis.yml: specify --tty=no

To reduce the amount of output, prefer --tty=no instead of
--color=never.  This option not only disables color output but also
kill some tty-related features, like spinners.  Travis limits its
output by the physical size of the log, not by the number of lines.
This change should make more room for new logs.

------------------------------------------------------------------------
r65701 | nobu | 2018-11-13 13:51:46 +0900 (Tue, 13 Nov 2018) | 1 line

date_core.c: use static ID variables
------------------------------------------------------------------------
r65700 | shyouhei | 2018-11-13 13:33:10 +0900 (Tue, 13 Nov 2018) | 6 lines

.travis.yml: delete test-all options for osx

While we are experiencing build failures, no hangs had been
seen for a while.  Also it seems the excluded tests now pass.
I think it's time to delete this line.

------------------------------------------------------------------------
r65699 | nobu | 2018-11-13 13:29:32 +0900 (Tue, 13 Nov 2018) | 6 lines

date_core.c: obey to the allocation framework

* ext/date/date_core.c (date_initialize): separate from
  date_s_civil and obey the allocation framework.

* ext/date/date_core.c (datetime_initialize): ditto.
------------------------------------------------------------------------
r65698 | nobu | 2018-11-13 13:29:31 +0900 (Tue, 13 Nov 2018) | 4 lines

date_core.c: respect COMPLEX_DAT bit

* ext/date/date_core.c (d_lite_marshal_load): respect COMPLEX_DAT
  bit in the pre-allocated structure.
------------------------------------------------------------------------
r65697 | nobu | 2018-11-13 13:29:30 +0900 (Tue, 13 Nov 2018) | 5 lines

date_core.c: keep COMPLEX_DAT bit

* ext/date/date_core.c (d_lite_initialize_copy): do not change
  COMPLEX_DAT bit, as the structure does not change.  initialize
  member-wise instead.
------------------------------------------------------------------------
r65696 | nobu | 2018-11-13 13:29:29 +0900 (Tue, 13 Nov 2018) | 5 lines

date_core.c: set/reset COMPLEX_DAT

* ext/date/date_core.c (set_to_simple, set_to_complex): always
  set/reset COMPLEX_DAT bit, which is very tightly bound to the
  structure.
------------------------------------------------------------------------
r65695 | nobu | 2018-11-13 12:24:18 +0900 (Tue, 13 Nov 2018) | 8 lines

gmake.mk: force updating revision.h

Since `.revision.time` recipe needs `$(BASERUBY)`, it should not
try to get updated unconditionally, or tarballs fail to build on
environments where BASERUBY is not available.

All developers who build frequently use GNU make anyway, don't
you?
------------------------------------------------------------------------
r65694 | shyouhei | 2018-11-13 11:58:41 +0900 (Tue, 13 Nov 2018) | 4 lines

.travis.yml: allow osx failures [experimental]

Tests are failing due to network timeouts.  Temporary allow failrues for them.

------------------------------------------------------------------------
r65693 | shyouhei | 2018-11-13 11:19:49 +0900 (Tue, 13 Nov 2018) | 4 lines

addr2line.c: more on suppressing warnings

See also: https://travis-ci.org/ruby/ruby/jobs/454269559#L1898

------------------------------------------------------------------------
r65692 | k0kubun | 2018-11-13 11:06:51 +0900 (Tue, 13 Nov 2018) | 10 lines

common.mk: force updating revision.h on each commit

by making .revision.time PHONY. Prior to this commit, RUBY_DESCRIPTION
has been updated only when version.h (or tool/file2lastrev.rb) is updated.

.revision.time (REVISION_H) target internally has IFCHANGE to update
revision.h. So it doesn't touch revision.h when it's not updated,
and thus it's safe to run every time.

defs/gmake.mk: drop obsoleted reference to REVISION_FORCE
------------------------------------------------------------------------
r65691 | shyouhei | 2018-11-13 11:03:33 +0900 (Tue, 13 Nov 2018) | 5 lines

.travis.yml: update VM images

xeinal for Linux and xcode 10.1 for osx.  Also deleted few outdated
lines that are no longer necessary.

------------------------------------------------------------------------
r65690 | k0kubun | 2018-11-13 10:35:09 +0900 (Tue, 13 Nov 2018) | 7 lines

test_array.rb: try to avoid NoMemoryError on AppVeyor

We somehow hit NoMemoryError twice on that place.
https://ci.appveyor.com/project/ruby/ruby/builds/20224556/job/hlgt963e0cgjbj3c
https://ci.appveyor.com/project/ruby/ruby/builds/20250696/job/gm559bu2jbd6youm

Let me try firing GC here.
------------------------------------------------------------------------
r65689 | svn | 2018-11-13 09:40:57 +0900 (Tue, 13 Nov 2018) | 1 line

* 2018-11-13
------------------------------------------------------------------------
r65688 | shyouhei | 2018-11-13 09:40:52 +0900 (Tue, 13 Nov 2018) | 10 lines

suppress integer overflow warnings

* random.c: annotate rb_hash_start with NO_SANITIZE (seed.key.hash + h
  overflows and that seems intentional)
* bignum.c: avoid (size_t)--
* cont.c: ditto
* util.c: ditto
* vm_insnhelper.c: ditto


------------------------------------------------------------------------
r65687 | nobu | 2018-11-12 19:19:04 +0900 (Mon, 12 Nov 2018) | 1 line

Revert r65681 which had a race condition issue
------------------------------------------------------------------------
r65686 | shyouhei | 2018-11-12 17:18:35 +0900 (Mon, 12 Nov 2018) | 5 lines

.travis.yml: resurrect -j on mac

The "osx build randomly fails with `-j`" happens on make -j test-all.
Should be safe to do make -j all.

------------------------------------------------------------------------
r65685 | shyouhei | 2018-11-12 17:14:09 +0900 (Mon, 12 Nov 2018) | 12 lines

vm_insnhelper.c: avoid nevative sp

space_size can be zero here, under the following script.  We would
better bail out before bptr calculation.

% ./miniruby --dump=i -e '* = nil'
== disasm: #<ISeq:<main>@-e:1 (1,0)-(1,7)> (catch: FALSE)
0000 putnil                                                           (   1)[Li]
0001 dup
0002 expandarray                  0, 0
0005 leave

------------------------------------------------------------------------
r65684 | k0kubun | 2018-11-12 16:58:29 +0900 (Mon, 12 Nov 2018) | 1 line

erb/new_spec.rb: fix spec failure by other specs
------------------------------------------------------------------------
r65683 | nobu | 2018-11-12 16:32:21 +0900 (Mon, 12 Nov 2018) | 1 line

Adopt [Misc #15294]
------------------------------------------------------------------------
r65682 | nobu | 2018-11-12 16:14:43 +0900 (Mon, 12 Nov 2018) | 1 line

Export rb_flo_div_flo for MJIT
------------------------------------------------------------------------
r65681 | nobu | 2018-11-12 15:56:52 +0900 (Mon, 12 Nov 2018) | 1 line

srcs-ext should update ext/ripper/eventids2table.c
------------------------------------------------------------------------
r65680 | shyouhei | 2018-11-12 13:09:24 +0900 (Mon, 12 Nov 2018) | 2 lines

numeric.c: fix typo

------------------------------------------------------------------------
r65679 | svn | 2018-11-12 12:26:44 +0900 (Mon, 12 Nov 2018) | 1 line

* expand tabs.
------------------------------------------------------------------------
r65678 | shyouhei | 2018-11-12 12:26:39 +0900 (Mon, 12 Nov 2018) | 4 lines

vm_insnhelper.c: avoid division by zero

same as r65642.

------------------------------------------------------------------------
r65677 | shyouhei | 2018-11-12 11:39:24 +0900 (Mon, 12 Nov 2018) | 7 lines

char is neither signed nor unsigned

read_escaped_byte() returns values of range -1...256. -1 indicates
error.  So the function basically expects char to be 0..255 range.
There is no such guarantee. `char` is not always unsigned.  We
need to explicitly declare chbuf to be unsigned char.

------------------------------------------------------------------------
r65676 | kazu | 2018-11-12 11:00:08 +0900 (Mon, 12 Nov 2018) | 1 line

lib/irb.rb: fix up r65674
------------------------------------------------------------------------
r65675 | shyouhei | 2018-11-12 10:08:35 +0900 (Mon, 12 Nov 2018) | 21 lines

~(unsigned char) is not unsigned char

The unary ~ operator excercises integer promotion of the operand
_before_ actually applying bitwise complement (cf: ISO/IEC 9899:1990
section 6.3.3.3).  Which means `~buf[i]` is in fact
`(int)~(int)buf[i]`.

The problem is, when buf[i] is 0xFF:

      buf[i]        0xFF
 (int)buf[i] 0x0000_00FF
~(int)buf[i] 0xFFFF_FF00 This is -256, out of unsigned char range.

The proposed fix is to change the char signed.  By doing so,

                   buf[i]        0xFF
      (signed char)buf[i]        0xFF
 (int)(signed char)buf[i] 0xFFFF_FFFF
~(int)(signed char)buf[i] 0x0000_0000 This is 0, does not overflow.


------------------------------------------------------------------------
r65674 | k0kubun | 2018-11-12 09:55:34 +0900 (Mon, 12 Nov 2018) | 13 lines

Document binding.irb on Binding [ci skip]

For some reason this very useful method was undocumented since it was added in
493e48897421d176a8faf0f0820323d79ecdf94a which makes finding it in the docs
impossible before this change.

I've added a detailed example with sample code because it's one of the most
powerful tools to debug Ruby code and I believe very few people are aware of it
due to the lack of documentation.

[Fix GH-2010]

From: Olivier Lacan <hi@olivierlacan.com>
------------------------------------------------------------------------
r65673 | svn | 2018-11-12 09:53:17 +0900 (Mon, 12 Nov 2018) | 1 line

* properties.
------------------------------------------------------------------------
r65672 | hsbt | 2018-11-12 09:53:15 +0900 (Mon, 12 Nov 2018) | 1 line

Merge Bundler-2.0.0.pre1 from upstream.
------------------------------------------------------------------------
r65671 | k0kubun | 2018-11-12 09:37:15 +0900 (Mon, 12 Nov 2018) | 3 lines

erb.rb: warn invalid trim_mode [Misc #15294]

From: Justin Collins <justin@presidentbeef.com>
------------------------------------------------------------------------
r65670 | svn | 2018-11-12 08:22:55 +0900 (Mon, 12 Nov 2018) | 1 line

* 2018-11-12
------------------------------------------------------------------------
r65669 | nobu | 2018-11-12 08:22:54 +0900 (Mon, 12 Nov 2018) | 1 line

win32/setup.mak: Substitute slashes in `MJIT_CC`
------------------------------------------------------------------------
r65668 | nobu | 2018-11-12 08:22:53 +0900 (Mon, 12 Nov 2018) | 3 lines

`MJIT_BUILD_DIR` is not used on Windows

Because `LOAD_RELATIVE` is always enabled on Windows.
------------------------------------------------------------------------
r65667 | nobu | 2018-11-11 21:40:40 +0900 (Sun, 11 Nov 2018) | 1 line

Fix for bison 3.2 [Bug #15284]
------------------------------------------------------------------------
r65666 | yui-knk | 2018-11-11 21:15:15 +0900 (Sun, 11 Nov 2018) | 1 line

Add docs to RubyVM::AbstractSyntaxTree.of
------------------------------------------------------------------------
r65665 | nobu | 2018-11-11 20:58:38 +0900 (Sun, 11 Nov 2018) | 1 line

Fix a typo [ci skip]
------------------------------------------------------------------------
r65664 | nobu | 2018-11-11 10:25:33 +0900 (Sun, 11 Nov 2018) | 5 lines

Use friendlier terminology in leaf helpers

[Fix GH-2009]

From: Juanito Fatas <juanito.fatas@shopify.com>
------------------------------------------------------------------------
r65663 | yui-knk | 2018-11-11 09:55:19 +0900 (Sun, 11 Nov 2018) | 3 lines

Make some functions to be static

These functions are used only in ast.c.
------------------------------------------------------------------------
r65662 | nobu | 2018-11-11 09:46:31 +0900 (Sun, 11 Nov 2018) | 5 lines

Use friendlier terminology in rubysocket.h comment

[Fix GH-2008]

From: Juanito Fatas <juanito.fatas@shopify.com>
------------------------------------------------------------------------
r65661 | nobu | 2018-11-11 09:46:30 +0900 (Sun, 11 Nov 2018) | 3 lines

Revert "Use friendlier terminology in rubysocket.h comment"

This reverts commit dcd41bbbdb021b5e0e74f8a33c2c58cecf595f29.
------------------------------------------------------------------------
r65660 | nobu | 2018-11-11 09:40:25 +0900 (Sun, 11 Nov 2018) | 1 line

Use friendlier terminology in rubysocket.h comment
------------------------------------------------------------------------
r65659 | nobu | 2018-11-11 09:20:27 +0900 (Sun, 11 Nov 2018) | 3 lines

Make rubygems follow the upstream of psych

And merge psych again.
------------------------------------------------------------------------
r65658 | mame | 2018-11-11 07:26:37 +0900 (Sun, 11 Nov 2018) | 5 lines

Revert "Merge psych from upstream."

This reverts commit db3101ff301b8e6f52170df0891f4fc35579354f.

This caused build error: http://ci.rvm.jp/results/trunk-test@ruby-sky3/1452708
------------------------------------------------------------------------
r65657 | svn | 2018-11-11 03:06:54 +0900 (Sun, 11 Nov 2018) | 1 line

* 2018-11-11
------------------------------------------------------------------------
r65656 | hsbt | 2018-11-11 03:06:51 +0900 (Sun, 11 Nov 2018) | 3 lines

Merge psych from upstream.

  * https://github.com/ruby/psych/pull/378
------------------------------------------------------------------------
r65655 | nobu | 2018-11-10 21:04:18 +0900 (Sat, 10 Nov 2018) | 4 lines

Constified ruby_sourcefile

which usually refers ruby_sourcefile_string and is not freed
directly.
------------------------------------------------------------------------
r65654 | nobu | 2018-11-10 20:43:02 +0900 (Sat, 10 Nov 2018) | 1 line

AST.of -e script
------------------------------------------------------------------------
r65653 | nobu | 2018-11-10 20:40:33 +0900 (Sat, 10 Nov 2018) | 1 line

Parse the source in SCRIPT_LINES__ as array
------------------------------------------------------------------------
r65652 | nobu | 2018-11-10 20:16:36 +0900 (Sat, 10 Nov 2018) | 1 line

Check the argument before creating a parser
------------------------------------------------------------------------
r65651 | nobu | 2018-11-10 19:39:58 +0900 (Sat, 10 Nov 2018) | 1 line

Parse the source in SCRIPT_LINES__ if possible
------------------------------------------------------------------------
r65650 | nobu | 2018-11-10 18:29:00 +0900 (Sat, 10 Nov 2018) | 1 line

Fix potential NULL pointer access [ci skip]
------------------------------------------------------------------------
r65649 | svn | 2018-11-10 08:24:17 +0900 (Sat, 10 Nov 2018) | 1 line

* 2018-11-10
------------------------------------------------------------------------
r65648 | normal | 2018-11-10 08:24:14 +0900 (Sat, 10 Nov 2018) | 4 lines

thread_pthread.c (rb_sigwait_sleep): add note about spurious wakeup

I already forgot why we needed to jump through such hoops :x
[ruby-core:88102]
------------------------------------------------------------------------
r65647 | nobu | 2018-11-09 22:39:36 +0900 (Fri, 09 Nov 2018) | 1 line

Get rid of setting SCRIPT_LINES__ by AST.parse
------------------------------------------------------------------------
r65646 | nobu | 2018-11-09 22:39:35 +0900 (Fri, 09 Nov 2018) | 1 line

Hoisted out rb_ast_parse_str and rb_ast_parse_file
------------------------------------------------------------------------
r65645 | kazu | 2018-11-09 22:00:03 +0900 (Fri, 09 Nov 2018) | 3 lines

Remove unused default value of MJIT_CC [ci skip]

because always set `MJIT_CC` at `: ${MJIT_CC=$CC}`
------------------------------------------------------------------------
r65644 | nobu | 2018-11-09 20:19:23 +0900 (Fri, 09 Nov 2018) | 1 line

addr2line.c: fix compilation for i386-darwin
------------------------------------------------------------------------
r65643 | shyouhei | 2018-11-09 18:44:49 +0900 (Fri, 09 Nov 2018) | 5 lines

util.c: suppress warnings

These functions handle overflows correctly.


------------------------------------------------------------------------
r65642 | shyouhei | 2018-11-09 18:14:23 +0900 (Fri, 09 Nov 2018) | 16 lines

numeric.c: avoid division by zero

In C, division by zero is undefined, even if the expression is double
(cf: ISO/IEC 9899:1990 section 6.3.5).  OTOH we have tests about such
operations and results, means we expect no exceptional situation shall
occur.  We need to carefully reroute the situation, and generate what
is needed.

See also: https://travis-ci.org/ruby/ruby/jobs/452680646#L2943

PS: Recently (last two decades), C have Annex. F document. It
normatively specifies that the division operator is IEEE 754's
division operator (cf: ISO/IEC 9899:1999 section F.3).  If we could
move to such newer version this could be no problem.  But that is not
possible today.

------------------------------------------------------------------------
r65641 | yui-knk | 2018-11-09 10:37:41 +0900 (Fri, 09 Nov 2018) | 3 lines

Rename `AST` module to `AbstractSyntaxTree`

Follow the same naming convention of `InstructionSequence` class.
------------------------------------------------------------------------
r65640 | svn | 2018-11-09 10:13:22 +0900 (Fri, 09 Nov 2018) | 1 line

* expand tabs.
------------------------------------------------------------------------
r65639 | ko1 | 2018-11-09 10:13:20 +0900 (Fri, 09 Nov 2018) | 5 lines

There is a path to use bmethod with ifunc.

* vm_insnhelper.c (vm_yield_with_cfunc): use passed me as bmethod.
  We also need to set `VM_FRAME_FLAG_BMETHOD` if needed.

------------------------------------------------------------------------
r65638 | svn | 2018-11-09 10:02:20 +0900 (Fri, 09 Nov 2018) | 1 line

* 2018-11-09
------------------------------------------------------------------------
r65637 | svn | 2018-11-09 10:02:20 +0900 (Fri, 09 Nov 2018) | 1 line

* expand tabs.
------------------------------------------------------------------------
r65636 | ko1 | 2018-11-09 10:02:13 +0900 (Fri, 09 Nov 2018) | 31 lines

fix passing wrong `passed_bmethod_me`.

* vm_core.h: remove `rb_execution_context_t::passed_bmethod_me`
  and fix functions to pass the `me` directly.
  `passed_bmethod_me` was used to make bmethod (methods defined by
  `defined_method`). `rb_vm_invoke_bmethod` invoke `Proc` with `me`
  information as method frame (`lambda` frame, actually).
  If the proc call is not bmethod call, `passed_bmethod_me` should
  be NULL. However, there is a bug which passes wrong `me` for
  normal block call.

  http://ci.rvm.jp/results/trunk-asserts@silicon-docker/1449470

  This is because wrong `me` was remained in `passed_bmethod_me`
  (and used incorrectly it after collected by GC).

  We need to clear `passed_bmethod_me` just after bmethod call,
  but clearing is not enough.

  To solve this issue, I removed `passed_bmethod_me` and pass `me`
  information as a function parameter of `rb_vm_invoke_bmethod`,
  `invoke_block_from_c_proc` and `invoke_iseq_block_from_c` in vm.c.

* vm.c (invoke_iseq_block_from_c): the number of parameters is too
  long so that I try to specify `ALWAYS_INLINE`.

* vm.c (invoke_block_from_c_proc): ditto.

* vm_insnhelper.c (vm_yield_with_cfunc): now there are no pathes
  to use bmethod here.

------------------------------------------------------------------------
r65635 | shyouhei | 2018-11-08 18:52:14 +0900 (Thu, 08 Nov 2018) | 6 lines

st.c: bin might be zero

When EMPTY_OR_DELETED_BIN_P(bin) is true, it is a wrong idea to
subtract ENTRY_BASE from it.  Delay doing so until we are sure to be
safe.

------------------------------------------------------------------------
r65634 | svn | 2018-11-08 18:46:15 +0900 (Thu, 08 Nov 2018) | 1 line

* expand tabs.
------------------------------------------------------------------------
r65633 | shyouhei | 2018-11-08 18:46:09 +0900 (Thu, 08 Nov 2018) | 34 lines

gc.c: avoid integer overflow at process exit

This is rather nitpicking but at the moment the process terminates,
heap_pages_final_slots overflows.

(lldb) bt
* thread #1: tid = 0xc0903, 0x00000001002b3bf7 miniruby`finalize_list(objspace=0x0000000101c09240, zombie=4329149840) + 999 at gc.c:2946, queue = 'com.apple.main-thread', stop reason = EXC_BAD_INSTRUCTION (code=EXC_I386_INVOP, subcode=0x0)
  * frame #0: 0x00000001002b3bf7 miniruby`finalize_list(objspace=0x0000000101c09240, zombie=4329149840) + 999 at gc.c:2946
    frame #1: 0x000000010026a69e miniruby`rb_objspace_call_finalizer(objspace=0x0000000101c09240) + 7118 at gc.c:3092
    frame #2: 0x0000000100268ac5 miniruby`rb_gc_call_finalizer_at_exit + 149 at gc.c:3015
    frame #3: 0x00000001002272bc miniruby`ruby_finalize_1 + 156 at eval.c:146
    frame #4: 0x00000001002282b6 miniruby`ruby_cleanup(ex=0) + 4070 at eval.c:238
    frame #5: 0x0000000100228785 miniruby`ruby_run_node(n=0x0000000102060ad8) + 85 at eval.c:317
    frame #6: 0x0000000100000b9c miniruby`main(argc=2, argv=0x00007fff5fbfdc38) + 124 at main.c:42
    frame #7: 0x00007fff9966a5ad libdyld.dylib`start + 1
    frame #8: 0x00007fff9966a5ad libdyld.dylib`start + 1
(lldb) p objspace->heap_pages
(rb_objspace::(anonymous struct)) $0 = {
  sorted = 0x0000000101c070b0
  allocated_pages = 24
  allocatable_pages = 0
  sorted_length = 24
  range = {
    [0] = 0x0000000102020028
    [1] = 0x00000001020dbfd0
  }
  freeable_pages = 0
  final_slots = 0
  deferred_final = 4329149840
}
(lldb)



------------------------------------------------------------------------
r65632 | shyouhei | 2018-11-08 16:41:24 +0900 (Thu, 08 Nov 2018) | 10 lines

hash.c: +(-1) is a wrong idea

Before this changeset RHASH_ARRAY_SIZE_DEC() was expaneded to include
an expression like `RHASH_ARRAY_SIZE+(-1)`.  RHASH_ARRAY_SIZE is by
definition unsigned int.  -1 is signed, of course.  Adding a signed
and an unsigned value requires the "usual arithmetic conversions" (cf:
ISO/IEC 9899:1990 section 6.2.1.5).  -1 is converted to 0xFFFF by that.

This patch prevents that conversion.

------------------------------------------------------------------------
r65631 | k0kubun | 2018-11-08 15:26:21 +0900 (Thu, 08 Nov 2018) | 3 lines

vm_core.h: conform C90

https://travis-ci.org/ruby/ruby/jobs/452230859
------------------------------------------------------------------------
r65630 | shyouhei | 2018-11-08 15:22:57 +0900 (Thu, 08 Nov 2018) | 8 lines

avoid (size_t)-- (2nd try)

The decrements overflow and these variables remain ~0 when leaving the
while loops.  They are not fatal by accident, but better replace with
ordinal for loops.

See also: https://travis-ci.org/ruby/ruby/jobs/452218871#L3246

------------------------------------------------------------------------
r65629 | k0kubun | 2018-11-08 15:19:36 +0900 (Thu, 08 Nov 2018) | 5 lines

lib/rubygems/indexer.rb: suppress random test-all error

by bundler. Similar to r65613, but fixing this more carefully
because here is not just inside tests but inside rubygems code.
http://ci.rvm.jp/results/trunk_gcc5@silicon-docker/1448239
------------------------------------------------------------------------
r65628 | ko1 | 2018-11-08 14:35:46 +0900 (Thu, 08 Nov 2018) | 5 lines

initialize VM postponed_job first. [Bug #15288]

* inits.c: call `Init_vm_postponed_job` first because
  postponed_job is used by transient heap.

------------------------------------------------------------------------
r65627 | shyouhei | 2018-11-08 14:34:58 +0900 (Thu, 08 Nov 2018) | 4 lines

svn merge -r 65625:65623 .

Was breaking make test-all

------------------------------------------------------------------------
r65626 | k0kubun | 2018-11-08 14:34:36 +0900 (Thu, 08 Nov 2018) | 1 line

.travis.yml: simplify travis matrix description
------------------------------------------------------------------------
r65625 | shyouhei | 2018-11-08 14:24:07 +0900 (Thu, 08 Nov 2018) | 2 lines

st.c: fix comparison between signed and unsigned

------------------------------------------------------------------------
r65624 | shyouhei | 2018-11-08 14:06:52 +0900 (Thu, 08 Nov 2018) | 8 lines

avoid (size_t)--

The decrements overflow and these variables remain ~0 when leaving the
while loops.  They are not fatal by accident, but better replace with
ordinal for loops.

See also: https://travis-ci.org/ruby/ruby/jobs/452218871#L3246

------------------------------------------------------------------------
r65623 | svn | 2018-11-08 14:01:30 +0900 (Thu, 08 Nov 2018) | 1 line

* expand tabs.
------------------------------------------------------------------------
r65622 | ko1 | 2018-11-08 14:01:23 +0900 (Thu, 08 Nov 2018) | 22 lines

separate Thread type (func or proc) explicitly.

* vm_core.h (rb_thread_struct): introduce new fields `invoke_type`
  and `invoke_arg`.
  There are two types threads: invoking proc (normal Ruby thread
  created by `Thread.new do ... end`) and invoking func, created
  by C-API. `invoke_type` shows the types.

* thread.c (thread_do_start): copy `invoke_arg.proc.args` contents
  from Array to ALLOCA stack memory if args length is enough small (<8).
  We don't need to keep Array and don't need to cancel using transient heap.

* vm.c (thread_mark): For func invoking threads, they can pass (void *)
  parameter (rb_thread_t::invoke_arg::func::arg). However, a rubyspec test
  (thread_spec.c) passes an Array object and it expect to mark it.
  Clealy it is out of scope (misuse of `rb_thread_create` C-API). However,
  I'm not sure someone else has such kind of misunderstanding.
  So now we mark conservatively this (void *) arg with rb_gc_mark_maybe.

  This misuse is found by this error log.
  http://ci.rvm.jp/results/trunk-theap-asserts@silicon-docker/1448164

------------------------------------------------------------------------
r65621 | shyouhei | 2018-11-08 13:24:26 +0900 (Thu, 08 Nov 2018) | 8 lines

st.c: straight-forward comparison of characters

These functions are used in strcasehash, which is used to store encoding
names.  Encoding names often include hyphens (e.g. "UTF-8"), and
` '-' - 'A' ` is negative (cannot express in unsigned int).

Don't be tricky, just do what to do.

------------------------------------------------------------------------
r65620 | k0kubun | 2018-11-08 13:06:15 +0900 (Thu, 08 Nov 2018) | 4 lines

test_ftp.rb: extend timeout for --jit-wait testing

to avoid random failures like
https://app.wercker.com/ruby/ruby/runs/mjit-test1/5be394b818310600284f2b50?step=5be394f1591ca800079b1329
------------------------------------------------------------------------
r65619 | normal | 2018-11-08 12:27:16 +0900 (Thu, 08 Nov 2018) | 5 lines

ext/socket/init.c (wait_connectable): bail out early on some errors

This becomes necesary if sockets become non-blocking by
default <https://bugs.ruby-lang.org/issues/14968>; but it's
always been possible to make sockets non-blocking anyways.
------------------------------------------------------------------------
r65618 | nobu | 2018-11-08 11:25:44 +0900 (Thu, 08 Nov 2018) | 7 lines

refine parse_rat

* rational.c (read_num): return the exponent instead of the
  divisor, to get rid of huge bignums.

* rational.c (parse_rat): subtract exponents instead of reduction
  of powers.
------------------------------------------------------------------------
r65617 | nobu | 2018-11-08 10:57:03 +0900 (Thu, 08 Nov 2018) | 7 lines

compile.c: compile error than rb_bug [ci skip]

* compile.c (get_local_var_idx, get_dyna_var_idx): raise a compile
  error which is useful than rb_bug, when ID is not found.

* compile.c (iseq_set_sequence): ditto when IC index overflow,
  with dumping generated code.
------------------------------------------------------------------------
r65616 | shyouhei | 2018-11-08 10:43:07 +0900 (Thu, 08 Nov 2018) | 5 lines

st.c: suppress integer overlow warnings

This `i += h;` overflows.  Don't know the intention of the
operation, so just suppress UBSAN.

------------------------------------------------------------------------
r65615 | yui-knk | 2018-11-08 09:36:35 +0900 (Thu, 08 Nov 2018) | 1 line

NEWS: Add `RubyVM::AST.of` to NEWS [ci skip]
------------------------------------------------------------------------
r65614 | nobu | 2018-11-08 09:12:53 +0900 (Thu, 08 Nov 2018) | 4 lines

compile.c: unreachable than rb_bug [ci skip]

* compile.c (iseq_calc_param_size): use UNREACHABLE than rb_bug,
  at where never reachable.
------------------------------------------------------------------------
r65613 | k0kubun | 2018-11-08 09:06:38 +0900 (Thu, 08 Nov 2018) | 8 lines

test/rdoc/minitest_helper.rb: suppress bundler error

maybe after bundler introduction to this repository, we randomly hit
errors like:
http://ci.rvm.jp/results/trunk-gc-asserts@silicon-docker/1447918

As we would require minitest in this repository anyway, it should be
fine to suppress the error there.
------------------------------------------------------------------------
r65612 | hsbt | 2018-11-08 02:18:14 +0900 (Thu, 08 Nov 2018) | 1 line

Following up r65583. Removed VCR files when retrieving code from upstream.
------------------------------------------------------------------------
r65611 | nobu | 2018-11-08 01:51:19 +0900 (Thu, 08 Nov 2018) | 1 line

Clear CC_WRAPPER in other than the toplevel
------------------------------------------------------------------------
r65610 | hsbt | 2018-11-08 00:55:14 +0900 (Thu, 08 Nov 2018) | 22 lines

Dir.children is available since Feature #11302. FileUtils uses
Dir.each on an internal method encapsulated on a private class
`Entry_#entry`, having no '.' neither '..' entries would make
now superfluous a chained reject filtering.

This change can improve the performance of these FileUtils
methods when the provided path covers thousands of files or
directories:

- chmod_R
- chown_R
- remove_entry
- remove_entry_secure
- rm_r
- remove_dir
- copy_entry

Related: Feature #13896 https://bugs.ruby-lang.org/issues/13896

[Feature #14109][Fix GH-1754]

Co-Authored-By: esparta <esparta@gmail.com>
------------------------------------------------------------------------
r65609 | svn | 2018-11-08 00:47:23 +0900 (Thu, 08 Nov 2018) | 1 line

* 2018-11-08
------------------------------------------------------------------------
r65608 | nobu | 2018-11-08 00:47:21 +0900 (Thu, 08 Nov 2018) | 1 line

Expand MJIT_CC on mswin too
------------------------------------------------------------------------
r65607 | nobu | 2018-11-07 23:27:27 +0900 (Wed, 07 Nov 2018) | 1 line

Convert MJIT_CC to Windows path on msys too
------------------------------------------------------------------------
r65606 | svn | 2018-11-07 21:48:39 +0900 (Wed, 07 Nov 2018) | 1 line

* expand tabs. [ci skip]
------------------------------------------------------------------------
r65605 | nobu | 2018-11-07 21:48:36 +0900 (Wed, 07 Nov 2018) | 1 line

Add cast to suppress warnings on Solaris [ci skip]
------------------------------------------------------------------------
r65604 | nobu | 2018-11-07 20:38:08 +0900 (Wed, 07 Nov 2018) | 1 line

`+` sign in the path of ruby needs to be escaped
------------------------------------------------------------------------
r65603 | nobu | 2018-11-07 19:55:24 +0900 (Wed, 07 Nov 2018) | 1 line

Generalize r65594
------------------------------------------------------------------------
r65602 | nobu | 2018-11-07 19:55:23 +0900 (Wed, 07 Nov 2018) | 1 line

clean mjit_build_dir.dylib.dSYM directory on macOS
------------------------------------------------------------------------
r65601 | svn | 2018-11-07 17:13:24 +0900 (Wed, 07 Nov 2018) | 1 line

* expand tabs.
------------------------------------------------------------------------
r65600 | mame | 2018-11-07 17:13:20 +0900 (Wed, 07 Nov 2018) | 4 lines

Rename get/setinlinecache to opt_get/opt_setinlinecache

The instructions are just for optimization.  To clarity the intention,
this change adds the prefix "opt_", like "opt_case_dispatch".
------------------------------------------------------------------------
r65599 | k0kubun | 2018-11-07 17:04:39 +0900 (Wed, 07 Nov 2018) | 7 lines

mjit_worker.c: stop expanding already-absolute MJIT_CC

r65577 seems to have made MJIT_CC (MJIT_CC_COMMONA) become an absolute
path. So start_process doesn't need to find that from PATH by dln_find_exe_r.

This commit is motivated by the msys2 AppVeyor CI failure:
https://ci.appveyor.com/project/ruby/ruby/builds/20084104/job/1pg15os4dtttyl0q
------------------------------------------------------------------------
r65598 | shyouhei | 2018-11-07 17:04:33 +0900 (Wed, 07 Nov 2018) | 28 lines

vm_backtrace.c: pos can be zero

(lldb) target create "./miniruby"
Current executable set to './miniruby' (x86_64).
(lldb) settings set -- target.run-args  "-e0"
(lldb) run
Process 97005 launched: './miniruby' (x86_64)
./miniruby(rb_print_backtrace+0x15) [0x10024f7d5] vm_dump.c:715
./miniruby(rb_vm_get_sourceline+0x85) [0x10024c4f5] vm_backtrace.c:43
./miniruby(rb_vm_make_binding+0x146) [0x100236976] vm.c:941
./miniruby(Init_VM+0x592) [0x100249f02] vm.c:3091
./miniruby(rb_call_inits+0xc2) [0x1000c5a72] inits.c:58
./miniruby(ruby_setup+0xcb) [0x100098c6b] eval.c:74
./miniruby(ruby_init+0x9) [0x100098c99] eval.c:91
./miniruby(main+0x4d) [0x10025ddbd] addr2line.c:246
Process 97005 stopped
* thread #1: tid = 0x639bb, 0x000000010024c4f5 miniruby`rb_vm_get_sourceline(cfp=<unavailable>) + 133 at vm_backtrace.c:44, queue = 'com.apple.main-thread', stop reason = EXC_BAD_INSTRUCTION (code=EXC_I386_INVOP, subcode=0x0)
    frame #0: 0x000000010024c4f5 miniruby`rb_vm_get_sourceline(cfp=<unavailable>) + 133 at vm_backtrace.c:44
   41       else {
   42           /* SDR() is not possible; that causes infinite loop. */
   43           rb_print_backtrace();
-> 44           __builtin_trap();
   45       }
   46   #endif
   47       return rb_iseq_line_no(iseq, pos);
(lldb)


------------------------------------------------------------------------
r65597 | shyouhei | 2018-11-07 17:03:10 +0900 (Wed, 07 Nov 2018) | 4 lines

insns.def: forgot add cast [ci skip]

See r65595

------------------------------------------------------------------------
r65596 | nobu | 2018-11-07 16:21:00 +0900 (Wed, 07 Nov 2018) | 1 line

ruby-runner.c: enable MJIT_SEARCH_BUILD_DIR only if no relative loading
------------------------------------------------------------------------
r65595 | shyouhei | 2018-11-07 16:16:50 +0900 (Wed, 07 Nov 2018) | 24 lines

insns.def: avoid integer overflow

In these expressions `1` is of type `signed int` (cf: ISO/IEC
9899:1990 section 6.1.3.2). The variable (e.g. `num`) is of type
`rb_num_t`, which is in fact `unsigned long`.  These two expressions
then exercises the "usual arithmetic conversions" (cf: ISO/IEC
9899:1990 section 6.2.1.5) and both eventually become `unsigned long`.
The two unsigned expressions are then subtracted to generate another
unsigned integer expression (cf: ISO/IEC 9899:1990 section 6.3.6).
This is where integer overflows can occur.  OTOH the left hand side of
the assignments are `rb_snum_t` which is `signed long`.  The
assignments exercise the "implicit conversion" of "an unsigned integer
is converted to its corresponding signed integer" case (cf: ISO/IEC
9899:1990 section 6.2.1.2), which is "implementation-defined" (read:
not portable).

Casts are the proper way to avoid this problem.  Because all
expressions are converted to some integer types before any binary
operations are performed, the assignments now have fully defined
behaviour.  These values can never exceed LONG_MAX so the casts must
not lose any information.

See also: https://travis-ci.org/ruby/ruby/jobs/451726874#L4357

------------------------------------------------------------------------
r65594 | k0kubun | 2018-11-07 16:15:33 +0900 (Wed, 07 Nov 2018) | 4 lines

test_process.rb: avoid test failure by r65588

on macOS.
https://travis-ci.org/ruby/ruby/jobs/451709313
------------------------------------------------------------------------
r65593 | shyouhei | 2018-11-07 14:26:11 +0900 (Wed, 07 Nov 2018) | 5 lines

.travis.yml: UNALIGNED_WORD_ACCESS=0 for UBSAN

Unaligned word access warnings generated by UBSAN are often
treated well already, depending on this macro.

------------------------------------------------------------------------
r65592 | shyouhei | 2018-11-07 14:23:03 +0900 (Wed, 07 Nov 2018) | 9 lines

string.c: this assumption is false [ci skip]

Looking at the lines right above, it is clear than a blue sky
that we cannot assume `p` to be aligned at all when
UNALIGNED_WORD_ACCESS is true.  It is a wrong idea to use
__builtin_assume_aligned for that situation.

See also: https://travis-ci.org/ruby/ruby/jobs/451710732#L2007

------------------------------------------------------------------------
r65591 | kazu | 2018-11-07 14:07:56 +0900 (Wed, 07 Nov 2018) | 1 line

Fix call-seq [ci skip]
------------------------------------------------------------------------
r65590 | shyouhei | 2018-11-07 13:56:24 +0900 (Wed, 07 Nov 2018) | 4 lines

suppress GCC warning about unknown sanitizers

See also: https://travis-ci.org/ruby/ruby/jobs/451710726#L1941

------------------------------------------------------------------------
r65589 | shyouhei | 2018-11-07 13:09:05 +0900 (Wed, 07 Nov 2018) | 9 lines

blacklist UBSAN's unsigned integer overflow

Integer overflow for unsigned types are fully defined in C. They
are not always problematic (but not always OK).  These functions
in this changeset intentionally utilizes that behaviour.
Blacklist from UBSAN checks for better output.

See also: https://travis-ci.org/ruby/ruby/jobs/451624829

------------------------------------------------------------------------
r65588 | nobu | 2018-11-07 13:02:14 +0900 (Wed, 07 Nov 2018) | 1 line

ruby-runner.c: enable MJIT_SEARCH_BUILD_DIR
------------------------------------------------------------------------
r65587 | nobu | 2018-11-07 11:49:26 +0900 (Wed, 07 Nov 2018) | 4 lines

mjit_build_dir: separate MJIT_BUILD_DIR

* Makefile.in (mjit_build_dir.so): separate MJIT_BUILD_DIR to
  eliminate the feature for test-all after installation.
------------------------------------------------------------------------
r65586 | nobu | 2018-11-07 08:50:50 +0900 (Wed, 07 Nov 2018) | 1 line

Fix build_os:host_os pair
------------------------------------------------------------------------
r65585 | svn | 2018-11-07 07:56:00 +0900 (Wed, 07 Nov 2018) | 1 line

* 2018-11-07
------------------------------------------------------------------------
r65584 | mame | 2018-11-07 07:55:57 +0900 (Wed, 07 Nov 2018) | 6 lines

Revert "thread.c (rb_wait_for_single_fd): no point initializing pollfd.revents"

It may cause an access to uninitialized variables.
The call to ppoll will set the `revents` field, but ppoll is not always
called because it is in the guard `!RUBY_VM_INTERRUPTED(th->ec)`.
This issue was found by Coverity Scan.
------------------------------------------------------------------------
r65583 | hsbt | 2018-11-07 05:47:09 +0900 (Wed, 07 Nov 2018) | 3 lines

Removed VCR cassettes files for reducing package size.

  [Bug #14219]
------------------------------------------------------------------------
r65577 | nobu | 2018-11-06 21:08:54 +0900 (Tue, 06 Nov 2018) | 1 line

Expand MJIT_CC in configure
------------------------------------------------------------------------
r65576 | shyouhei | 2018-11-06 20:53:01 +0900 (Tue, 06 Nov 2018) | 4 lines

workaround C++ism in ASAN header 

See also: https://travis-ci.org/ruby/ruby/jobs/451299690

------------------------------------------------------------------------
r65575 | svn | 2018-11-06 19:19:59 +0900 (Tue, 06 Nov 2018) | 1 line

* expand tabs.
------------------------------------------------------------------------
r65574 | shyouhei | 2018-11-06 19:19:55 +0900 (Tue, 06 Nov 2018) | 8 lines

cont.c: direct use of rb_thread_t

The only usage of rb_fiber_reset_root_local_storage() is from
ruby_vm_destruct(), where the object space is already terminated.
This `th->self` is not alive.  Why not just use `th` itself.

See also: https://travis-ci.org/ruby/ruby/jobs/451294954

------------------------------------------------------------------------
r65573 | shyouhei | 2018-11-06 19:06:07 +0900 (Tue, 06 Nov 2018) | 5 lines

adopt sanitizer API

These APIs are much like <valgrind/memcheck.h>. Use them to
fine-grain annotate the usage of our memory.

------------------------------------------------------------------------
r65572 | k0kubun | 2018-11-06 17:01:28 +0900 (Tue, 06 Nov 2018) | 1 line

mjit.c: don't use mutex before checking availability
------------------------------------------------------------------------
r65571 | k0kubun | 2018-11-06 16:30:37 +0900 (Tue, 06 Nov 2018) | 7 lines

mjit_worker.c: don't use _one for now

I'm planning to use _one later, but it may be doubly registered by
switching `stop_worker_p` now and so we should not use _one for now.

Otherwise stale job may reject new job registration and
copy_cache_from_main_thread may wait forever.
------------------------------------------------------------------------
r65570 | nobu | 2018-11-06 16:28:11 +0900 (Tue, 06 Nov 2018) | 4 lines

Makefile.in: do not expand MJIT_CC if cross compiling

* Makefile.in (mjit_config.h): expand MJIT_CC only if native
  build, the path on cross compiling host is useless.
------------------------------------------------------------------------
r65569 | k0kubun | 2018-11-06 16:22:25 +0900 (Tue, 06 Nov 2018) | 9 lines

mjit_worker.c: strictly control MJIT copy job

-available region. reducing risk of SEGV in mjit_copy_job_handler() like
http://ci.rvm.jp/results/trunk-mjit@silicon-docker/1446117

I'm not sure which exact part is causing "[BUG] Segmentation fault at 0x0000000000000008"
on `(mjit_copy_job_handler+0x12) [0x564a6c4ce632] /home/ko1/ruby/src/trunk-mjit/mjit.c:26`...

mjit.c: ditto
------------------------------------------------------------------------
r65568 | nobu | 2018-11-06 16:03:24 +0900 (Tue, 06 Nov 2018) | 4 lines

Makefile.in: convert MJIT_CC to Windows path

* Makefile.in (mjit_config.h): convert MJIT_CC to Windows path on
  mingw.
------------------------------------------------------------------------
r65567 | ko1 | 2018-11-06 15:36:51 +0900 (Tue, 06 Nov 2018) | 16 lines

Fix TracePoint for nested iseq loaded from binary [Bug#14702]

When loading iseq from binary while a TracePoint is on, we need to
recompile instructions to their "trace_" variant. Before this commit
we only recompiled instructions in the top level iseq, which meant
that TracePoint was malfunctioning for code inside module/class/method
definitions.

* compile.c: Move rb_iseq_init_trace to rb_ibf_load_iseq_complete.
  It is called on all iseqs during loading.

* test_iseq.rb: Test that tracepoints fire within children iseq when
  using load_from_binary.

This patch is from: Alan Wu <XrXr@users.noreply.github.com>

------------------------------------------------------------------------
r65566 | nobu | 2018-11-06 14:14:36 +0900 (Tue, 06 Nov 2018) | 1 line

Revert "mjit_build_dir: separate MJIT_BUILD_DIR"
------------------------------------------------------------------------
r65565 | shyouhei | 2018-11-06 14:07:54 +0900 (Tue, 06 Nov 2018) | 2 lines

do not delete function declarations in case of non-sanitizing builds

------------------------------------------------------------------------
r65564 | shyouhei | 2018-11-06 14:06:20 +0900 (Tue, 06 Nov 2018) | 9 lines

annotate functions to blacklist MSAN

In these functions we are intentionally reading memory address
not owned by us.  These reads should not be diagnosed.

See also [Bug #8680]
See also https://travis-ci.org/ruby/ruby/jobs/451202718


------------------------------------------------------------------------
r65563 | nobu | 2018-11-06 13:13:48 +0900 (Tue, 06 Nov 2018) | 4 lines

mjit_build_dir: separate MJIT_BUILD_DIR

* Makefile.in (mjit_build_dir.so): separate MJIT_BUILD_DIR to
  eliminate the feature for test-all after installation.
------------------------------------------------------------------------
r65562 | nobu | 2018-11-06 13:13:47 +0900 (Tue, 06 Nov 2018) | 4 lines

Makefile.in: make MJIT_CC_COMMON an absolute path

* Makefile.in (mjit_config.h): expand MJIT_CC_COMMON path to
  mitigate potential security risks.
------------------------------------------------------------------------
r65561 | nobu | 2018-11-06 12:32:57 +0900 (Tue, 06 Nov 2018) | 5 lines

configure.ac: insert DLDSHARED

* configure.ac (DLDSHARED): `.dylib` (created by `-dynamiclib`)
  and `.bundle` (created by `-dynamic -bundle`) on macOS are
  different.  `LIBRUBY_LDSHARED` should be the former always.
------------------------------------------------------------------------
r65560 | usa | 2018-11-06 12:18:23 +0900 (Tue, 06 Nov 2018) | 5 lines

Fixed compile error introduced at r65558

* internal.h (ATTRIBUTE_NO_ADDRESS_SAFETY_ANALYSIS): of course, parens around
  function signature in its definition is syntax error.

------------------------------------------------------------------------
r65559 | shyouhei | 2018-11-06 12:06:33 +0900 (Tue, 06 Nov 2018) | 5 lines

.travis.yml: FIBER_USE_NATIVE=0

I remember this configuration unveiled several bugs before.
Better check it occasionally.

------------------------------------------------------------------------
r65558 | shyouhei | 2018-11-06 11:57:28 +0900 (Tue, 06 Nov 2018) | 11 lines

gc.c: move ASAN check to configure

Availability of attributes are checked in configure these days,
rather than compiler macros.  Also
__attribute__((no_address_safety_analysis)) is considered
deprecated in both GCC and Clang.  Use the current best practice
if available.  See also:

https://gcc.gnu.org/onlinedocs/gcc/Common-Function-Attributes.html
https://clang.llvm.org/docs/AddressSanitizer.html

------------------------------------------------------------------------
r65557 | shyouhei | 2018-11-06 10:45:09 +0900 (Tue, 06 Nov 2018) | 4 lines

.travis.yml: allow UBSAN to fail

Forgot this line, sorry! 

------------------------------------------------------------------------
r65556 | shyouhei | 2018-11-06 10:36:20 +0900 (Tue, 06 Nov 2018) | 7 lines

.travis.yml: add cron-only builds

Inspired by [GH-1984], let us add some tests that run only
once a day.  These configurations are either slow to compile
or slow to run.  But I think they are worth done occasionally.


------------------------------------------------------------------------
r65555 | svn | 2018-11-06 08:06:58 +0900 (Tue, 06 Nov 2018) | 1 line

* expand tabs.
------------------------------------------------------------------------
r65554 | naruse | 2018-11-06 08:06:50 +0900 (Tue, 06 Nov 2018) | 1 line

Don't set throw data as cause [Bug #15282]
------------------------------------------------------------------------
r65553 | normal | 2018-11-06 07:56:57 +0900 (Tue, 06 Nov 2018) | 6 lines

thread.c (rb_wait_for_single_fd): no point initializing pollfd.revents

poll(2) and ppoll(2) implementations need to check and write to
.revents on the initial scan, anyways.  So any poll/ppoll call
which returns a positive result can be expected to have an
initialized .revents value.
------------------------------------------------------------------------
r65552 | svn | 2018-11-06 02:27:12 +0900 (Tue, 06 Nov 2018) | 1 line

* 2018-11-06
------------------------------------------------------------------------
r65551 | nobu | 2018-11-06 02:27:10 +0900 (Tue, 06 Nov 2018) | 4 lines

Relax MJIT_BUILD_DIR restriction

* mjit.c (init_header_filename): sticky-mode directory probably
  would be less unsafe even if it is not owned.
------------------------------------------------------------------------
r65550 | svn | 2018-11-05 17:02:31 +0900 (Mon, 05 Nov 2018) | 1 line

* expand tabs.
------------------------------------------------------------------------
r65549 | ko1 | 2018-11-05 17:02:29 +0900 (Mon, 05 Nov 2018) | 6 lines

use `RSTRUCT_CONST_PTR` carefully.

* struct.c: should not use `RSTRUCT_CONST_PTR` with method dispatch
  because pointers can be obsolete after method dispatch. `rb_equal()`
  and so on can dispatch Ruby's methods.

------------------------------------------------------------------------
r65548 | kazu | 2018-11-05 16:01:49 +0900 (Mon, 05 Nov 2018) | 1 line

Fix up r65505 [ci skip]
------------------------------------------------------------------------
r65547 | kazu | 2018-11-05 16:01:47 +0900 (Mon, 05 Nov 2018) | 1 line

Sort in alphabetical order [ci skip]
------------------------------------------------------------------------
r65546 | kazu | 2018-11-05 15:02:42 +0900 (Mon, 05 Nov 2018) | 1 line

Fix a typo [ci skip]
------------------------------------------------------------------------
r65545 | nobu | 2018-11-05 11:57:06 +0900 (Mon, 05 Nov 2018) | 1 line

Respect explicitly given MJIT_CC
------------------------------------------------------------------------
r65544 | nobu | 2018-11-05 11:25:46 +0900 (Mon, 05 Nov 2018) | 1 line

Create MJIT header with strict permission
------------------------------------------------------------------------
r65543 | svn | 2018-11-05 11:14:00 +0900 (Mon, 05 Nov 2018) | 1 line

* expand tabs.
------------------------------------------------------------------------
r65542 | yui-knk | 2018-11-05 11:13:45 +0900 (Mon, 05 Nov 2018) | 1 line

Implement `RubyVM::AST.of` [Feature #14836]
------------------------------------------------------------------------
r65541 | nobu | 2018-11-05 11:05:12 +0900 (Mon, 05 Nov 2018) | 1 line

More verbose message at unsafe header
------------------------------------------------------------------------
r65540 | naruse | 2018-11-05 07:36:05 +0900 (Mon, 05 Nov 2018) | 3 lines

addr2line.c uses c99ism

https://travis-ci.org/ruby/ruby/jobs/450505006
------------------------------------------------------------------------
r65539 | sorah | 2018-11-05 00:39:00 +0900 (Mon, 05 Nov 2018) | 6 lines

Fix RubyGems extension build failure after r65470

Port of upstream patch https://github.com/rubygems/rubygems/pull/2457

Since r65470 (Upstream: https://github.com/rubygems/rubygems/pull/2441),
builds of extension gem had always failed under really_verbose mode.
------------------------------------------------------------------------
r65538 | svn | 2018-11-05 00:14:44 +0900 (Mon, 05 Nov 2018) | 1 line

* 2018-11-05
------------------------------------------------------------------------
r65537 | naruse | 2018-11-05 00:14:42 +0900 (Mon, 05 Nov 2018) | 1 line

Use symtab if there's no .dSYM file
------------------------------------------------------------------------
r65536 | nobu | 2018-11-04 21:46:50 +0900 (Sun, 04 Nov 2018) | 1 line

Check MJIT_BUILD_DIR strictly
------------------------------------------------------------------------
r65535 | nobu | 2018-11-04 21:24:03 +0900 (Sun, 04 Nov 2018) | 1 line

MJIT_CC should not use CC_WRAPPER
------------------------------------------------------------------------
r65534 | stomar | 2018-11-04 20:46:49 +0900 (Sun, 04 Nov 2018) | 1 line

hash.c: [DOC] add docs for ENV.{filter,filter!}
------------------------------------------------------------------------
r65533 | stomar | 2018-11-04 20:45:59 +0900 (Sun, 04 Nov 2018) | 1 line

hash.c: [DOC] fix wrong cross-references
------------------------------------------------------------------------
r65532 | stomar | 2018-11-04 20:45:11 +0900 (Sun, 04 Nov 2018) | 1 line

hash.c: [DOC] add missing `block' in call-seq's
------------------------------------------------------------------------
r65531 | stomar | 2018-11-04 20:44:13 +0900 (Sun, 04 Nov 2018) | 1 line

struct.c: [DOC] add docs for Struct#filter
------------------------------------------------------------------------
r65530 | stomar | 2018-11-04 20:43:09 +0900 (Sun, 04 Nov 2018) | 1 line

hash.c: [DOC] add docs for Hash#{filter,filter!}
------------------------------------------------------------------------
r65529 | stomar | 2018-11-04 20:41:52 +0900 (Sun, 04 Nov 2018) | 1 line

hash.c: [DOC] improve Hash#{select!,keep_if} docs
------------------------------------------------------------------------
r65528 | stomar | 2018-11-04 20:40:32 +0900 (Sun, 04 Nov 2018) | 1 line

array.c: [DOC] add docs for Array#{filter,filter!}
------------------------------------------------------------------------
r65527 | stomar | 2018-11-04 20:39:28 +0900 (Sun, 04 Nov 2018) | 1 line

array.c: [DOC] improve Array#{select,select!,keep_if} docs
------------------------------------------------------------------------
r65526 | nobu | 2018-11-04 11:09:01 +0900 (Sun, 04 Nov 2018) | 1 line

Hide Time::TM as Time::tm
------------------------------------------------------------------------
r65525 | nobu | 2018-11-04 11:02:28 +0900 (Sun, 04 Nov 2018) | 1 line

Refine Timezone class in test-spec
------------------------------------------------------------------------
r65524 | svn | 2018-11-04 10:14:52 +0900 (Sun, 04 Nov 2018) | 1 line

* properties.
------------------------------------------------------------------------
r65523 | hsbt | 2018-11-04 10:14:48 +0900 (Sun, 04 Nov 2018) | 3 lines

Merge upstream changes from 2-0-stable branch of bundler/bundler.

  * It update bundler 2 mode to bundler 3.
------------------------------------------------------------------------
r65522 | nobu | 2018-11-04 09:22:13 +0900 (Sun, 04 Nov 2018) | 4 lines

complex.c: rb_dbl_complex_polar_pi

* complex.c (rb_dbl_complex_polar_pi): suffixed with _pi to
  clarify that `ang` is not radian, but multiplied by PI.
------------------------------------------------------------------------
r65521 | nobu | 2018-11-04 08:43:17 +0900 (Sun, 04 Nov 2018) | 7 lines

Makefile.in: use CC_WRAPPER

* Makefile.in (CC_WRAPPER): use the wrapper to suppress warnings
  by Apple's broken packages when linking in the toplevel
  directory.

* configure.ac (CC_WRAPPER): separate from CC.
------------------------------------------------------------------------
r65520 | nobu | 2018-11-04 08:10:57 +0900 (Sun, 04 Nov 2018) | 1 line

configure.ac: set CC_WRAPPER by checking message
------------------------------------------------------------------------
r65519 | svn | 2018-11-04 08:08:10 +0900 (Sun, 04 Nov 2018) | 1 line

* 2018-11-04
------------------------------------------------------------------------
r65518 | naruse | 2018-11-04 08:08:08 +0900 (Sun, 04 Nov 2018) | 4 lines

Just skip on armv7l-linux

it seems ssl.close doesn't cause EOFError on client side, but just skip
because it breaks test-all.
------------------------------------------------------------------------
r65517 | hsbt | 2018-11-03 21:31:51 +0900 (Sat, 03 Nov 2018) | 3 lines

Merge rubygems-3.0.0.beta2.

  * It enabled `USE_BUNDLER_FOR_GEMDEPS` for using gemdeps of rubygems.
------------------------------------------------------------------------
r65516 | k0kubun | 2018-11-03 21:24:49 +0900 (Sat, 03 Nov 2018) | 7 lines

Always inline rb_to_integer to prevent a method call penalty

for integer types

Close https://github.com/ruby/ruby/pull/2001

Co-Authored-By: methodmissing <lourens@methodmissing.com>
------------------------------------------------------------------------
r65515 | ko1 | 2018-11-03 20:20:54 +0900 (Sat, 03 Nov 2018) | 5 lines

expose `rb_ary_detransient`.

* internal.h: expose `rb_ary_detransient`. I'm not sure why there are
  no many troubles without this patch...

------------------------------------------------------------------------
r65514 | stomar | 2018-11-03 17:43:19 +0900 (Sat, 03 Nov 2018) | 5 lines

lib/racc/parser.rb: use require for racc/cparse

* lib/racc/parser.rb: reverted r65505.  require_relative does
  not work for racc/cparse.so, as extension libraries are placed
  in other directories than Ruby libraries.
------------------------------------------------------------------------
r65513 | nobu | 2018-11-03 16:58:56 +0900 (Sat, 03 Nov 2018) | 7 lines

hash.c: fix types

* hash.c (RHASH_ARRAY_BOUND_RAW): should be unsigned as well as
  RHASH_ARRAY_SIZE_RAW.

* hash.c (find_entry): return unsigned for the consistency with
  RHASH_ARRAY_SIZE and RHASH_ARRAY_BOUND.
------------------------------------------------------------------------
r65512 | nobu | 2018-11-03 15:55:57 +0900 (Sat, 03 Nov 2018) | 3 lines

internal.h: RHASH_ARRAY_SIZE_RAW value is unsigned

and get rid of warnings.  [ruby-core:89688] [Bug #15279]
------------------------------------------------------------------------
r65511 | nobu | 2018-11-03 14:29:02 +0900 (Sat, 03 Nov 2018) | 5 lines

lib/cgi/util.rb: use require

* lib/cgi/util.rb: reverted r65505.  require_relative does not
  work for cgi/escape.so, as extension libraries are placed in
  other directories than ruby libraries.  [Bug #15206]
------------------------------------------------------------------------
r65510 | k0kubun | 2018-11-03 09:44:04 +0900 (Sat, 03 Nov 2018) | 1 line

wercker.yml: use pipeline name for notification [ci skip]
------------------------------------------------------------------------
r65509 | hsbt | 2018-11-03 08:07:56 +0900 (Sat, 03 Nov 2018) | 8 lines

Added bundler as default gems. Revisit [Feature #12733]

  * bin/*, lib/bundler/*, lib/bundler.rb, spec/bundler, man/*:
    Merge from latest stable branch of bundler/bundler repository and
    added workaround patches. I will backport them into upstream.
  * common.mk, defs/gmake.mk: Added `test-bundler` task for test suite
    of bundler.
  * tool/sync_default_gems.rb: Added sync task for bundler.
------------------------------------------------------------------------
r65508 | ktsj | 2018-11-03 07:28:21 +0900 (Sat, 03 Nov 2018) | 1 line

common.mk: --no-ri and --no-rdoc options were removed
------------------------------------------------------------------------
r65507 | marcandre | 2018-11-03 02:52:51 +0900 (Sat, 03 Nov 2018) | 3 lines

lib/matrix.rb: Make Matrix & Vector mutable. Add #[]=, #map!.

Adapted from patch by Grzegorz Jakubiak. [#14151] [Fix GH-1769] [Fix GH-1905]
------------------------------------------------------------------------
r65506 | marcandre | 2018-11-03 02:52:43 +0900 (Sat, 03 Nov 2018) | 3 lines

lib/*: Prefer require_relative over require, remove explicit extension

[#15206] [Fix GH-1976]
------------------------------------------------------------------------
r65505 | marcandre | 2018-11-03 02:52:33 +0900 (Sat, 03 Nov 2018) | 3 lines

lib/*: Prefer require_relative over require.

[#15206] [Fix GH-1976]
------------------------------------------------------------------------
r65504 | marcandre | 2018-11-03 02:52:20 +0900 (Sat, 03 Nov 2018) | 1 line

lib/matrix: Use consistent style
------------------------------------------------------------------------
r65503 | marcandre | 2018-11-03 02:52:12 +0900 (Sat, 03 Nov 2018) | 1 line

lib/matrix: use consistent style
------------------------------------------------------------------------
r65502 | marcandre | 2018-11-03 02:52:05 +0900 (Sat, 03 Nov 2018) | 1 line

lib/matrix.rb: Alias antisymmetric? with skew_symmetric?
------------------------------------------------------------------------
r65501 | svn | 2018-11-03 02:51:57 +0900 (Sat, 03 Nov 2018) | 1 line

* 2018-11-03
------------------------------------------------------------------------
r65500 | marcandre | 2018-11-03 02:51:56 +0900 (Sat, 03 Nov 2018) | 3 lines

Revert "Matrix: Add #reflexive? method. [Fix GH-1730]"

This reverts commit 19fe6552c456e41c0b85816806399ca1609255c0.
------------------------------------------------------------------------
r65499 | naruse | 2018-11-02 22:30:48 +0900 (Fri, 02 Nov 2018) | 3 lines

Add timeout

it breaks armv7 CI.
------------------------------------------------------------------------
r65498 | k0kubun | 2018-11-02 21:21:59 +0900 (Fri, 02 Nov 2018) | 3 lines

README.md: add wercker status badge [ci skip]

and show trunk branch's build status for travis as well
------------------------------------------------------------------------
r65497 | svn | 2018-11-02 20:40:46 +0900 (Fri, 02 Nov 2018) | 1 line

* 2018-11-02
------------------------------------------------------------------------
r65496 | k0kubun | 2018-11-02 20:40:43 +0900 (Fri, 02 Nov 2018) | 4 lines

mjit_worker.c: do no access pointer after free

When we return there, `unit` is already freed.
This is detected by coverity scan.
------------------------------------------------------------------------
r65495 | normal | 2018-11-01 23:10:47 +0900 (Thu, 01 Nov 2018) | 17 lines

thread_pthread.c (native_ppoll_sleep): new eventfd (or pipe) for ubf

Relying on ubf_select + ubf_list for main thread is not
guaranteed to wake a process up as it does not acquire
sigwait_fd and all other threads may be sleeping.
native_cond_sleep and the sigwait_fd path are immune to TOCTOU
issues, but native_ppoll_sleep may have its wakeup stolen
by sigwait_fd sleeper and the RUBY_VM_INTERRUPTED check is
insufficient.

Note: for pthreads platforms without POSIX timers, this becomes
more expensive than Ruby 2.5, as six pipe FDs come into use.
Linux is best off with only two descriptors for eventfd.

[ruby-core:89655]
cf. http://ci.rvm.jp/results/trunk-mjit@silicon-docker/1437559
    http://ci.rvm.jp/results/trunk-mjit-wait@silicon-docker/1437673
------------------------------------------------------------------------
r65494 | k0kubun | 2018-11-01 22:49:33 +0900 (Thu, 01 Nov 2018) | 6 lines

wercker.yml: stop allowing webrick failure

Failure seems no longer reproductive recently...

Also I wrote a comment about this complicated test matrix and improved
parallelism a little more again.
------------------------------------------------------------------------
r65493 | svn | 2018-11-01 17:53:53 +0900 (Thu, 01 Nov 2018) | 1 line

* remove trailing spaces.
------------------------------------------------------------------------
r65492 | ko1 | 2018-11-01 17:53:44 +0900 (Thu, 01 Nov 2018) | 5 lines

introduce USE_TRANSIENT_HEAP to enable/disable theap.

* include/ruby/ruby.h: intrdocue `USE_TRANSIENT_HEAP` macro
  to enable/disable transient heap.

------------------------------------------------------------------------
r65491 | ko1 | 2018-11-01 17:15:42 +0900 (Thu, 01 Nov 2018) | 2 lines

add dependencies to transient_heap.h.

------------------------------------------------------------------------
r65490 | svn | 2018-11-01 16:49:07 +0900 (Thu, 01 Nov 2018) | 1 line

* properties.
------------------------------------------------------------------------
r65489 | k0kubun | 2018-11-01 16:49:06 +0900 (Thu, 01 Nov 2018) | 6 lines

TestDelegateClass.rb: skip test_frozen for --jit-wait

for now. Investigating.
https://app.wercker.com/ruby/ruby/runs/mjit-test2/5bda979a191eda000655a8d2?step=5bda9fe4591ca80007653f64

wercker.yml: improve parallelism again.
------------------------------------------------------------------------
r65488 | kazu | 2018-11-01 16:25:50 +0900 (Thu, 01 Nov 2018) | 1 line

Fix call-seq of OpenSSL.fips_mode and WIN32OLE_METHOD#name [ci skip]
------------------------------------------------------------------------
r65487 | kazu | 2018-11-01 15:36:04 +0900 (Thu, 01 Nov 2018) | 5 lines

Fix call-seq of Encoding::Converter#putback [ci skip]

[Fix GH-1999]

From: Takayuki Matsubara <takayuki.1229@gmail.com>
------------------------------------------------------------------------
r65486 | k0kubun | 2018-11-01 15:03:29 +0900 (Thu, 01 Nov 2018) | 3 lines

wercker.yml: improve parallelism more

mjit-test2 is taking more time now.
------------------------------------------------------------------------
r65485 | usa | 2018-11-01 14:19:16 +0900 (Thu, 01 Nov 2018) | 4 lines

Remove wrong spec.

[Bug#15067] [ruby-core:88828]

------------------------------------------------------------------------
r65484 | k0kubun | 2018-11-01 14:17:08 +0900 (Thu, 01 Nov 2018) | 1 line

wercker.yml: improve CI step message [ci skip]
------------------------------------------------------------------------
r65483 | k0kubun | 2018-11-01 14:03:59 +0900 (Thu, 01 Nov 2018) | 3 lines

wercker.yml: change pipeline names

because the name "-wait" is no longer distinguishing these pipelines
------------------------------------------------------------------------
r65482 | k0kubun | 2018-11-01 13:46:46 +0900 (Thu, 01 Nov 2018) | 1 line

wercker.yml: delete obsoleted test definition
------------------------------------------------------------------------
r65481 | k0kubun | 2018-11-01 13:43:40 +0900 (Thu, 01 Nov 2018) | 1 line

wercker.yml: improve parallelism of test-mjit and test-mjit-wait
------------------------------------------------------------------------
r65480 | k0kubun | 2018-11-01 13:20:26 +0900 (Thu, 01 Nov 2018) | 4 lines

test_win32ole_event.rb: retry #test_s_new_loop with sleep

It seems to fail randomly:
https://ci.appveyor.com/project/ruby/ruby/builds/19963142/job/8gaxepksa0i3b998
------------------------------------------------------------------------
r65479 | ko1 | 2018-11-01 11:50:35 +0900 (Thu, 01 Nov 2018) | 4 lines

fix WB miss.

* hash.c (linear_copy): remember a hash object to mark pointing objects.

------------------------------------------------------------------------
r65478 | k0kubun | 2018-11-01 11:50:10 +0900 (Thu, 01 Nov 2018) | 4 lines

wercker.yml: harder test-mjit-wait testing

Currently TracePoint enablement may cancel all JITs. So for now,
separating test executions would reveal more failures.
------------------------------------------------------------------------
r65477 | k0kubun | 2018-11-01 10:47:26 +0900 (Thu, 01 Nov 2018) | 4 lines

mjit_worker.c: emphasize free_list of compact_units [ci skip]

In https://bugs.ruby-lang.org/issues/14867#note-98, it's considered
useless at once. So I emphasized the necessity of it in the comment.
------------------------------------------------------------------------
r65476 | svn | 2018-11-01 08:55:24 +0900 (Thu, 01 Nov 2018) | 1 line

* 2018-11-01
------------------------------------------------------------------------
r65475 | normal | 2018-11-01 08:55:22 +0900 (Thu, 01 Nov 2018) | 10 lines

mjit: get rid of rb_mjit_unit_node and use ccan/list

rb_mjit_unit can either exist in unit_queue or active_units, but
not both.  This will make state transitions for event-based MJIT
process management easier.

v2: recheck unit->iseq after GC wakeup

The iseq may be GC-ed while we were waiting for it since we
delete the unit from unit_queue during get_from_list
------------------------------------------------------------------------
r65474 | k0kubun | 2018-10-31 22:12:39 +0900 (Wed, 31 Oct 2018) | 5 lines

Revert "revert r65471 and include Eric's patch as well"

This reverts commit ff5dc2cbbf9e7b67c8579ef166bf6a4755507304.

Deadlock: http://ci.rvm.jp/results/trunk-mjit@silicon-docker/1438883
------------------------------------------------------------------------
r65473 | k0kubun | 2018-10-31 21:21:55 +0900 (Wed, 31 Oct 2018) | 6 lines

revert r65471 and include Eric's patch as well

https://bugs.ruby-lang.org/issues/14867#note-112

I wanna touch similar places. To avoid our conflict, let me merge Eric's patch earlier.
Let's watch trunk-mjit / trunk-mjit-wait CIs.
------------------------------------------------------------------------
r65472 | naruse | 2018-10-31 20:08:07 +0900 (Wed, 31 Oct 2018) | 1 line

Use C90 comments
------------------------------------------------------------------------
r65471 | normal | 2018-10-31 15:44:42 +0900 (Wed, 31 Oct 2018) | 6 lines

Revert "mjit: get rid of rb_mjit_unit_node and use ccan/list"

This reverts commit c5177fa8464ac304547e384583f9c287e124d34a. r65468

Many CI failures like:
 http://ci.rvm.jp/results/trunk-mjit-wait@silicon-docker/1438415
------------------------------------------------------------------------
r65470 | hsbt | 2018-10-31 12:23:30 +0900 (Wed, 31 Oct 2018) | 1 line

Merge upstream from rubygems/rubygems master branch.
------------------------------------------------------------------------
r65469 | shyouhei | 2018-10-31 12:19:37 +0900 (Wed, 31 Oct 2018) | 6 lines

explicit cast to void* required for %p

No automatic type promotion is expected for variadic arguments.
You have to do it by hand.


------------------------------------------------------------------------
r65468 | normal | 2018-10-31 12:02:01 +0900 (Wed, 31 Oct 2018) | 7 lines

mjit: get rid of rb_mjit_unit_node and use ccan/list

rb_mjit_unit can either exist in unit_queue or active_units, but
not both.  This will make state transitions for event-based MJIT
process management easier.

[ruby-core:89654]
------------------------------------------------------------------------
r65467 | nobu | 2018-10-31 11:57:30 +0900 (Wed, 31 Oct 2018) | 5 lines

parse.y: last node of NODE_ARRAY

* parse.y (heredoc_dedent): manage the last node of NODE_ARRAY,
  when concatenating dedented literals.
  [ruby-core:89649] [Bug #15272]
------------------------------------------------------------------------
r65466 | ko1 | 2018-10-31 11:39:08 +0900 (Wed, 31 Oct 2018) | 5 lines

remove '//' style comments.

* variable.c (obj_ivar_set): remove '//' style comments pointed out by the
  following build log: https://travis-ci.org/ruby/ruby/jobs/448551951

------------------------------------------------------------------------
r65465 | normal | 2018-10-31 11:31:15 +0900 (Wed, 31 Oct 2018) | 8 lines

thread_pthread.c (ubf_select): avoid deadlock on contention

vm->gvl.lock can be held by another thread, we must not wait
on it when called by the MJIT worker thread when it migrates
work to another thread.  ubf_select is designed to do retrying
anyways, so it has no obligation to wake up a timer thread.

cf.  http://ci.rvm.jp/results/trunk-mjit-wait@silicon-docker/1437880
------------------------------------------------------------------------
r65464 | ko1 | 2018-10-31 11:06:33 +0900 (Wed, 31 Oct 2018) | 5 lines

remove '//' style comments.

* hash.c: remove '//' style comments pointed out by the following
  build log: https://travis-ci.org/ruby/ruby/jobs/448551951

------------------------------------------------------------------------
r65463 | ko1 | 2018-10-31 10:36:39 +0900 (Wed, 31 Oct 2018) | 5 lines

add casts.

* gc.c (rb_raw_obj_info): fix type mismatch specified by the following
  build log: https://travis-ci.org/ruby/ruby/jobs/448634481

------------------------------------------------------------------------
r65462 | shyouhei | 2018-10-31 09:53:43 +0900 (Wed, 31 Oct 2018) | 7 lines

.travis.yml: mandate -ansi check

Seems it is failing to compile right now; make it mandatory
so that other devs can be aware of it.

Will revert this change once the source code gets stable.

------------------------------------------------------------------------
r65461 | hsbt | 2018-10-31 09:13:56 +0900 (Wed, 31 Oct 2018) | 1 line

Removed control characters from gemspec.
------------------------------------------------------------------------
r65460 | nobu | 2018-10-31 08:43:13 +0900 (Wed, 31 Oct 2018) | 5 lines

parse.y: last location from bison

* parse.y (command): set the last location from the location
  managed by bison, so that other nodes are not needed.
  [ruby-core:89648] [Bug #15271]
------------------------------------------------------------------------
r65459 | k0kubun | 2018-10-31 08:16:16 +0900 (Wed, 31 Oct 2018) | 7 lines

revert r65441

I could collect 2 test failure information:
https://app.wercker.com/ruby/ruby/runs/test-mjit-wait/5bd8a253191eda0006545d47?step=5bd8a29387436a0006842ef0
https://app.wercker.com/ruby/ruby/runs/test-mjit-wait/5bd8c6e0191eda0006547273?step=5bd8c71a591ca8000756f4a3

I'll skip this again to make it functional as CI
------------------------------------------------------------------------
r65458 | ko1 | 2018-10-31 07:55:31 +0900 (Wed, 31 Oct 2018) | 13 lines

fix type.

* internal.h (RHASH_ARRAY_SIZE_RAW): should be `int` because
  it returns n<=8.

* hash.c (RHASH_ARRAY_BOUND_RAW): ditto.

* hash.c (RHASH_ARRAY_SIZE_RAW): remove a duplicated definition.

* hash.c (linear_keys, linear_values): return `long`.

* hash.c (linear_keys): fix initialize expression of `key_end`.

------------------------------------------------------------------------
r65457 | ko1 | 2018-10-31 07:24:35 +0900 (Wed, 31 Oct 2018) | 1 line

update NEWS about theap
------------------------------------------------------------------------
r65456 | ko1 | 2018-10-31 07:16:26 +0900 (Wed, 31 Oct 2018) | 4 lines

fix type.

* string.c (rb_str_format_m): should pass `int`.

------------------------------------------------------------------------
r65455 | svn | 2018-10-31 07:12:12 +0900 (Wed, 31 Oct 2018) | 1 line

* remove trailing spaces, expand tabs.
------------------------------------------------------------------------
r65454 | ko1 | 2018-10-31 07:11:51 +0900 (Wed, 31 Oct 2018) | 14 lines

support theap for T_HASH. [Feature #14989]

* hash.c, internal.h: support theap for small Hash.
  Introduce RHASH_ARRAY (li_table) besides st_table and small Hash
  (<=8 entries) are managed by an array data structure.
  This array data can be managed by theap.
  If st_table is needed, then converting array data to st_table data.

  For st_table using code, we prepare "stlike" APIs which accepts hash value
  and are very similar to st_ APIs.

  This work is based on the GSoC achievement
  by tacinight <tacingiht@gmail.com> and refined by ko1.

------------------------------------------------------------------------
r65453 | svn | 2018-10-31 07:03:48 +0900 (Wed, 31 Oct 2018) | 1 line

* expand tabs.
------------------------------------------------------------------------
r65452 | ko1 | 2018-10-31 07:03:42 +0900 (Wed, 31 Oct 2018) | 4 lines

support theap for T_STRUCT.

* struct.c: members memory can use theap.

------------------------------------------------------------------------
r65451 | ko1 | 2018-10-31 07:01:17 +0900 (Wed, 31 Oct 2018) | 7 lines

support theap for T_OBJECT.

* variable.c: now instance variable space has theap supports.
  obj_ivar_heap_alloc() tries to acquire memory from theap.

* debug_counter.h: add some counters for theap.

------------------------------------------------------------------------
r65450 | svn | 2018-10-31 06:54:13 +0900 (Wed, 31 Oct 2018) | 1 line

* expand tabs.
------------------------------------------------------------------------
r65449 | ko1 | 2018-10-31 06:53:56 +0900 (Wed, 31 Oct 2018) | 28 lines

introduce TransientHeap. [Bug #14858]

* transient_heap.c, transient_heap.h: implement TransientHeap (theap).
  theap is designed for Ruby's object system. theap is like Eden heap
  on generational GC terminology. theap allocation is very fast because
  it only needs to bump up pointer and deallocation is also fast because
  we don't do anything. However we need to evacuate (Copy GC terminology)
  if theap memory is long-lived. Evacuation logic is needed for each type.

  See [Bug #14858] for details.

* array.c: Now, theap for T_ARRAY is supported.

  ary_heap_alloc() tries to allocate memory area from theap. If this trial
  sccesses, this array has theap ptr and RARRAY_TRANSIENT_FLAG is turned on.
  We don't need to free theap ptr.

* ruby.h: RARRAY_CONST_PTR() returns malloc'ed memory area. It menas that
  if ary is allocated at theap, force evacuation to malloc'ed memory.
  It makes programs slow, but very compatible with current code because
  theap memory can be evacuated (theap memory will be recycled).

  If you want to get transient heap ptr, use RARRAY_CONST_PTR_TRANSIENT()
  instead of RARRAY_CONST_PTR(). If you can't understand when evacuation
  will occur, use RARRAY_CONST_PTR().

(re-commit of r65444)

------------------------------------------------------------------------
r65448 | svn | 2018-10-31 06:02:12 +0900 (Wed, 31 Oct 2018) | 1 line

* expand tabs.
------------------------------------------------------------------------
r65447 | ko1 | 2018-10-31 06:01:55 +0900 (Wed, 31 Oct 2018) | 1 line

revert r65444 and r65446 because of commit miss
------------------------------------------------------------------------
r65446 | ko1 | 2018-10-31 05:49:35 +0900 (Wed, 31 Oct 2018) | 7 lines

support theap for T_OBJECT.

* variable.c: now instance variable space has theap supports.
  obj_ivar_heap_alloc() tries to acquire memory from theap.

* debug_counter.h: add some counters for theap.

------------------------------------------------------------------------
r65445 | svn | 2018-10-31 05:46:47 +0900 (Wed, 31 Oct 2018) | 1 line

* expand tabs.
------------------------------------------------------------------------
r65444 | ko1 | 2018-10-31 05:46:24 +0900 (Wed, 31 Oct 2018) | 26 lines

introduce TransientHeap. [Bug #14858]

* transient_heap.c, transient_heap.h: implement TransientHeap (theap).
  theap is designed for Ruby's object system. theap is like Eden heap
  on generational GC terminology. theap allocation is very fast because
  it only needs to bump up pointer and deallocation is also fast because
  we don't do anything. However we need to evacuate (Copy GC terminology)
  if theap memory is long-lived. Evacuation logic is needed for each type.

  See [Bug #14858] for details.

* array.c: Now, theap for T_ARRAY is supported.

  ary_heap_alloc() tries to allocate memory area from theap. If this trial
  sccesses, this array has theap ptr and RARRAY_TRANSIENT_FLAG is turned on.
  We don't need to free theap ptr.

* ruby.h: RARRAY_CONST_PTR() returns malloc'ed memory area. It menas that
  if ary is allocated at theap, force evacuation to malloc'ed memory.
  It makes programs slow, but very compatible with current code because
  theap memory can be evacuated (theap memory will be recycled).

  If you want to get transient heap ptr, use RARRAY_CONST_PTR_TRANSIENT()
  instead of RARRAY_CONST_PTR(). If you can't understand when evacuation
  will occur, use RARRAY_CONST_PTR().

------------------------------------------------------------------------
r65443 | normal | 2018-10-31 03:26:12 +0900 (Wed, 31 Oct 2018) | 6 lines

mjit.c (free_list): clear .length

For robustness against future changes. There should be no impact
at the moment,here, but we may call mjit_finish more than once
in a process lifetime in the future (implementing "stop"
instead of just "pause")
------------------------------------------------------------------------
r65442 | svn | 2018-10-31 00:39:19 +0900 (Wed, 31 Oct 2018) | 1 line

* 2018-10-31
------------------------------------------------------------------------
r65441 | k0kubun | 2018-10-31 00:39:18 +0900 (Wed, 31 Oct 2018) | 5 lines

wercker.yml: try testing wercker again

I don't think we fixed that, but if so, I would like to see more test
failures. Previous failures didn't keep enough C-backtrace information
about the failure and it's hard to debug for now.
------------------------------------------------------------------------
r65440 | k0kubun | 2018-10-30 23:57:03 +0900 (Tue, 30 Oct 2018) | 8 lines

_mjit_compile_send.erb: do not inline tailcall ISeq

because it's not supported by this file. Also, shared `def_iseq_ptr`
instead of copying the main definition of it.

vm_core.h: moved `def_iseq_ptr` to this place. added `inline` to avoid
compiler warnings since it's not used in some files including vm_core.h.
vm_insnhelper.c: moved `def_iseq_ptr` to vm_core.h.
------------------------------------------------------------------------
r65439 | svn | 2018-10-30 12:22:09 +0900 (Tue, 30 Oct 2018) | 1 line

* expand tabs.
------------------------------------------------------------------------
r65438 | ko1 | 2018-10-30 12:21:56 +0900 (Tue, 30 Oct 2018) | 2 lines

use RARRAY_AREF() instead of RARRAY_CONST_PTR().

------------------------------------------------------------------------
r65437 | normal | 2018-10-30 10:34:48 +0900 (Tue, 30 Oct 2018) | 16 lines

process.c: implement rb_f_system without toggling ruby_nocldwait

Following how mjit_worker.c currently works, rb_f_system
now ensures the VM-wide waitpid lists is locked before
creating a new process via fork/vfork.

This ensures other rb_waitpid callers cannot steal work and
there are no possible race conditions from toggling
ruby_nocldwait without the use of atomics.

This sets us up for implementing MJIT process management
logic using normal Ruby APIs prepares us for VM-wide
asynchronous/event-base waitpid which can allow MJIT to
work without worker threads.

Take 2: set waitpid_state.pid on platforms w/o fork.
------------------------------------------------------------------------
r65436 | normal | 2018-10-30 10:12:38 +0900 (Tue, 30 Oct 2018) | 4 lines

revert r65434

http://mswinci.japaneast.cloudapp.azure.com/vc12-x64/ruby-trunk/log/20181030T003541Z.fail.html.gz
I have no chance of getting anything to work on proprietary platforms :<
------------------------------------------------------------------------
r65435 | svn | 2018-10-30 08:52:45 +0900 (Tue, 30 Oct 2018) | 1 line

* expand tabs.
------------------------------------------------------------------------
r65434 | normal | 2018-10-30 08:52:39 +0900 (Tue, 30 Oct 2018) | 14 lines

process.c: implement rb_f_system without toggling ruby_nocldwait

Following how mjit_worker.c currently works, rb_f_system
now ensures the VM-wide waitpid lists is locked before
creating a new process via fork/vfork.

This ensures other rb_waitpid callers cannot steal work and
there are no possible race conditions from toggling
ruby_nocldwait without the use of atomics.

This sets us up for implementing MJIT process management
logic using normal Ruby APIs prepares us for VM-wide
asynchronous/event-base waitpid which can allow MJIT to
work without worker threads.
------------------------------------------------------------------------
r65433 | ko1 | 2018-10-30 03:03:13 +0900 (Tue, 30 Oct 2018) | 5 lines

use `rb_hash_new_compare_by_id()`.

* vm_eval.c (local_var_list_init): use `rb_hash_new_compare_by_id()`
  directly instead of manipulating st_table.

------------------------------------------------------------------------
r65432 | svn | 2018-10-30 03:00:15 +0900 (Tue, 30 Oct 2018) | 1 line

* 2018-10-30
------------------------------------------------------------------------
r65431 | svn | 2018-10-30 03:00:14 +0900 (Tue, 30 Oct 2018) | 1 line

* expand tabs.
------------------------------------------------------------------------
r65430 | ko1 | 2018-10-30 03:00:02 +0900 (Tue, 30 Oct 2018) | 6 lines

use RARRAY_AREF() instead of RARRAY_CONST_PTR().

* class.c (rb_keyword_error_new): use RARRAY_AREF() because
  RARRAY_CONST_PTR() can introduce additional overhead in a futre.
  Same fixes for other files.

------------------------------------------------------------------------
r65429 | kazu | 2018-10-29 22:30:01 +0900 (Mon, 29 Oct 2018) | 1 line

compile.c: fix up r65411
------------------------------------------------------------------------
r65428 | nobu | 2018-10-29 17:11:25 +0900 (Mon, 29 Oct 2018) | 1 line

time.c: [DOC] fix method names to refer class methods [ci skip]
------------------------------------------------------------------------
r65427 | nobu | 2018-10-29 15:23:21 +0900 (Mon, 29 Oct 2018) | 3 lines

Mark up code inside link text as <code>

Merged https://github.com/ruby/rdoc/pull/660
------------------------------------------------------------------------
r65426 | shyouhei | 2018-10-29 12:21:22 +0900 (Mon, 29 Oct 2018) | 7 lines

less verbose code by sharing attribute definitions

The idea behind this commit is that handles_sp and leaf are two
concepts that are not mutually independent.  By making one explicitly
depend another, we can reduces the number of lines of codes written,
thus making things concise.

------------------------------------------------------------------------
r65425 | shyouhei | 2018-10-29 11:07:52 +0900 (Mon, 29 Oct 2018) | 6 lines

bare_instructions.rb: sort attributes [ci skip]

This enhances stability of the generated source code (namely
insns_info.inc) across attribute insertion / deletion.  It does
not change the compiled binary at all; just a bit of readability.

------------------------------------------------------------------------
r65424 | naruse | 2018-10-29 02:03:36 +0900 (Mon, 29 Oct 2018) | 3 lines

Revert "Add test for cause on pty"

This reverts commit r65422.
------------------------------------------------------------------------
r65423 | svn | 2018-10-29 01:06:57 +0900 (Mon, 29 Oct 2018) | 1 line

* 2018-10-29
------------------------------------------------------------------------
r65422 | naruse | 2018-10-29 01:06:56 +0900 (Mon, 29 Oct 2018) | 1 line

Add test for cause on pty
------------------------------------------------------------------------
r65421 | nobu | 2018-10-28 21:05:19 +0900 (Sun, 28 Oct 2018) | 1 line

time.c: added Time::TM#+ and Time::TM#-
------------------------------------------------------------------------
r65420 | nobu | 2018-10-28 21:05:18 +0900 (Sun, 28 Oct 2018) | 4 lines

time.c: ignore 7th arg

* time.c (tm_initialize): allow 7th argument as well as
  Time#initialize, but just ignore.
------------------------------------------------------------------------
r65419 | nobu | 2018-10-28 21:05:17 +0900 (Sun, 28 Oct 2018) | 1 line

time.c: [DOC] add description and fix markups [ci skip]
------------------------------------------------------------------------
r65418 | k0kubun | 2018-10-28 18:06:54 +0900 (Sun, 28 Oct 2018) | 1 line

appveyor.yml: fix wrong path to test directory
------------------------------------------------------------------------
r65417 | k0kubun | 2018-10-28 16:44:59 +0900 (Sun, 28 Oct 2018) | 4 lines

appveyor.yml: run test_open-uri separately

on msys2 because it sometimes crashes worker like
https://ci.appveyor.com/project/ruby/ruby/builds/19853558/job/8v1ehnv40bggiode
------------------------------------------------------------------------
r65416 | suke | 2018-10-28 15:37:33 +0900 (Sun, 28 Oct 2018) | 17 lines

require fixtures/classes only when platform is windows.

* spec/ruby/library/win32ole/fixtures/classes.rb: remove rescue block
  because this file is required when platform is Windows.
* spec/ruby/library/win32ole/win32ole/_getproperty_spec.rb:
  fixtures/classes is required when platform is Windows
* spec/ruby/library/win32ole/win32ole/_invoke_spec.rb: ditto.
* spec/ruby/library/win32ole/win32ole/codepage_spec.rb: ditto.
* spec/ruby/library/win32ole/win32ole/connect_spec.rb: ditto.
* spec/ruby/library/win32ole/win32ole/const_load_spec.rb: ditto.
* spec/ruby/library/win32ole/win32ole/constants_spec.rb: ditto.
* spec/ruby/library/win32ole/win32ole/create_guid_spec.rb: ditto.
* spec/ruby/library/win32ole/win32ole/invoke_spec.rb: ditto.
* spec/ruby/library/win32ole/win32ole/locale_spec.rb: ditto.
* spec/ruby/library/win32ole/win32ole/new_spec.rb: ditto.
* spec/ruby/library/win32ole/win32ole/ole_func_methods_spec.rb: ditto.
* spec/ruby/library/win32ole/win32ole/ole_get_methods_spec.rb: ditto.
------------------------------------------------------------------------
r65415 | suke | 2018-10-28 15:16:18 +0900 (Sun, 28 Oct 2018) | 4 lines

Refactoring. remove Internet Explorer.

* spec/ruby/library/win32ole/win32ole/ole_methods_spec.rb: refactoring.
  remove Internet Explorer.
------------------------------------------------------------------------
r65414 | suke | 2018-10-28 15:11:30 +0900 (Sun, 28 Oct 2018) | 6 lines

use MSXML.DOMDocument instead of InternetExplorer.Application

* spec/ruby/library/win32ole/fixtures/event.xml use MSXML.DOMDocument
  instead of InternetExplorer.Application. InternetExplorer.Application
  is not available on some environments. Thanks to MSP-Greg (Greg L).
* spec/ruby/library/win32ole/win32ole_event/on_event_spec.rb: ditto.
------------------------------------------------------------------------
r65413 | nobu | 2018-10-28 14:53:57 +0900 (Sun, 28 Oct 2018) | 1 line

time.c: [DOC] fix rdoc-ref [ci skip]
------------------------------------------------------------------------
r65412 | suke | 2018-10-28 14:40:41 +0900 (Sun, 28 Oct 2018) | 5 lines

use MSXML.DOMDocument instead of InternetExplorer.Application.

* spec/ruby/library/win32ole/win32ole_event/new_spec.rb: use
  MSXML.DOMDocument. InternetExplorer.Application is not available on
  some environments. Thanks to MSP-Greg (Greg L).
------------------------------------------------------------------------
r65411 | ko1 | 2018-10-28 14:09:58 +0900 (Sun, 28 Oct 2018) | 5 lines

use a rb_ function instead of st_ directly.

* compile.c (ibf_dump_object_hash): use `rb_hash_foreach()`
  instead of using `st_foreach()`.

------------------------------------------------------------------------
r65410 | suke | 2018-10-28 14:08:37 +0900 (Sun, 28 Oct 2018) | 5 lines

use Scripting.Dictionary instead of InternetExplorer.Application.

* spec/ruby/library/win32ole/win32ole/shared/setproperty.rb: use
  Scripting.Dictionary. InternetExplorer.Application is not available on
  some environments. Thanks to MSP-Greg (Greg L).
------------------------------------------------------------------------
r65409 | suke | 2018-10-28 13:38:49 +0900 (Sun, 28 Oct 2018) | 5 lines

use Scripting.Dictionary instead of InternetExplorer.Application.

* spec/ruby/library/win32ole/win32ole/ole_put_methods_spec.rb: use
  Scripting.Dictionary. InternetExplorer.Application is not available on
  some enviroments. Thanks to MSP-Greg (Greg L).
------------------------------------------------------------------------
r65408 | suke | 2018-10-28 13:25:55 +0900 (Sun, 28 Oct 2018) | 5 lines

use Scripting.Dictionary instead of InternetExplorer.Application.

* spec/ruby/library/win32ole/win32ole/ole_methods_spec.rb: use Scripting
  Dictionary. InternetExplorer.Application is not available on some
  environments. Thanks to MSP-Greg (Greg L).
------------------------------------------------------------------------
r65407 | suke | 2018-10-28 13:18:53 +0900 (Sun, 28 Oct 2018) | 5 lines

use Scripting.Dictionary instead of InternetExplorer.Application

* spec/ruby/library/win32ole/win32ole/ole_obj_help_spec.rb: use
  Scripting.Dictionary. InternetExplorer.Application is not available on
  some environments. Thanks to MSP-Greg (Greg L).
------------------------------------------------------------------------
r65406 | nobu | 2018-10-28 13:00:26 +0900 (Sun, 28 Oct 2018) | 1 line

time.c: [DOC] about timezone arguemnt [ci skip]
------------------------------------------------------------------------
r65405 | suke | 2018-10-28 12:48:17 +0900 (Sun, 28 Oct 2018) | 8 lines

use Scripting.Dictionary instead of InternetExplorer.Application

* spec/ruby/library/win32ole/win32ole/ole_method_spec.rb: recuire in
  platform_is block.
* spec/ruby/library/win32ole/win32ole/ole_func_methods_spec.rb: ditto.
* spec/ruby/library/win32ole/win32ole/shared/ole_method.rb: use
  Scripting.Dictionary. InternetExplorer.Application is not available on
  some environments. Thanks to MSP-Greg (Greg L).
------------------------------------------------------------------------
r65404 | nobu | 2018-10-28 10:58:27 +0900 (Sun, 28 Oct 2018) | 1 line

NEWS: codify keywords and callback methods [ci skip]
------------------------------------------------------------------------
r65403 | nobu | 2018-10-28 10:56:28 +0900 (Sun, 28 Oct 2018) | 6 lines

rdoc/parser/c.rb: ignore dynamically added methods

* lib/rdoc/parser/c.rb (RDoc::Parser::C#deduplicate_call_seq):
  skip dynamically added methods at runtime, because the class
  name is unknown and the defined methods are not accessible from
  that class.
------------------------------------------------------------------------
r65402 | k0kubun | 2018-10-28 10:19:30 +0900 (Sun, 28 Oct 2018) | 4 lines

revert r65401

Because it does break Linux CI like:
https://gist.github.com/ko1/2c561f9185492f339cf7a763ea219e79
------------------------------------------------------------------------
r65401 | suke | 2018-10-28 10:08:42 +0900 (Sun, 28 Oct 2018) | 4 lines

remove rescue block when win32ole is required

* spec/ruby/library/win32ole/fixtures/classes.rb: remove rescue block
  because this file is required on Windows only.
------------------------------------------------------------------------
r65400 | suke | 2018-10-28 10:03:49 +0900 (Sun, 28 Oct 2018) | 5 lines

use Scripting.Dictionary instead of InternetExplorer.Application

* spec/ruby/library/win32ole/win32ole/ole_func_methods_spec.rb: use
  Scripting.Dictionary. InternetExplorer.Application is not available on
  some environment. Thanks to MSP-Greg (Greg L).
------------------------------------------------------------------------
r65399 | suke | 2018-10-28 08:37:58 +0900 (Sun, 28 Oct 2018) | 5 lines

use Scripting.Dictionary instead of InternetExplorer.Application.

* spec/ruby/library/win32ole/invoke_spec.rb: use Scripting.Dictionary
  instead of InternetExplorer.Application. InternetExplorer.Application
  is not available on some environment. Thanks to MSP-Greg (Greg L).
------------------------------------------------------------------------
r65398 | suke | 2018-10-28 08:21:29 +0900 (Sun, 28 Oct 2018) | 6 lines

use Scripting.Dictionary instead of InternetExplorer.Application for
_getproperty spec.

* spec/ruby/library/win32ole/_getproperty_spec.rb: use
  Scripting.Dictionary. InternetExplorer.Application is not available on
  some environment. (Thanks to MSP-Greg (Greg L))
------------------------------------------------------------------------
r65397 | naruse | 2018-10-28 08:15:43 +0900 (Sun, 28 Oct 2018) | 1 line

fix test
------------------------------------------------------------------------
r65396 | naruse | 2018-10-28 08:13:34 +0900 (Sun, 28 Oct 2018) | 1 line

fix error message and backtrace order
------------------------------------------------------------------------
r65395 | suke | 2018-10-28 07:50:08 +0900 (Sun, 28 Oct 2018) | 4 lines

add WIN32OLESpecs::MSXML_AVAILABLE

* spec/ruby/library/win32ole/fixtures/classes.rb: add
WIN32OLESpecs::MSXML_AVAILABLE
------------------------------------------------------------------------
r65394 | svn | 2018-10-28 06:45:32 +0900 (Sun, 28 Oct 2018) | 1 line

* 2018-10-28
------------------------------------------------------------------------
r65393 | naruse | 2018-10-28 06:45:30 +0900 (Sun, 28 Oct 2018) | 4 lines

Print exception's cause like Java

Print `cause` of the exception if the exception is not caught and printed
its backtraces and error message [Feature #8257]
------------------------------------------------------------------------
r65392 | k0kubun | 2018-10-27 23:06:44 +0900 (Sat, 27 Oct 2018) | 6 lines

spec/../shared/exit.rb: move the mingw guard to here

from terminate_spec.rb, as suggested here:
https://github.com/ruby/ruby/commit/c7220bd3dea0a113b81f267cc3b656da7d7d7abb#commitcomment-31068714

to guard other inclusions.
------------------------------------------------------------------------
r65391 | k0kubun | 2018-10-27 22:57:23 +0900 (Sat, 27 Oct 2018) | 3 lines

revert r65389 and r64993

and move retry logic to internal method
------------------------------------------------------------------------
r65390 | eregon | 2018-10-27 20:42:21 +0900 (Sat, 27 Oct 2018) | 3 lines

Run specs on latest Ruby 2.3, which includes taint fixes

* The 2.3 alias in RVM seems to resolve to 2.3.7.
------------------------------------------------------------------------
r65389 | k0kubun | 2018-10-27 19:49:56 +0900 (Sat, 27 Oct 2018) | 4 lines

ole_func_methods_spec.rb: apply r64993 retry

to this spec as well, since the same issue was reproduced here
https://ci.appveyor.com/project/ruby/ruby/builds/19842006/job/y35ae6bquf4t3x30
------------------------------------------------------------------------
r65388 | eregon | 2018-10-27 19:48:40 +0900 (Sat, 27 Oct 2018) | 1 line

Update to ruby/spec@8b743a3
------------------------------------------------------------------------
r65387 | eregon | 2018-10-27 19:48:09 +0900 (Sat, 27 Oct 2018) | 1 line

Update to ruby/mspec@4729971
------------------------------------------------------------------------
r65386 | k0kubun | 2018-10-27 18:57:30 +0900 (Sat, 27 Oct 2018) | 6 lines

.travis.yml: investigate silent death of mspec

It looks like mspec worker may immediately die on Linux as well.
https://travis-ci.org/ruby/ruby/jobs/447018758

Dropping -j and add -fs to know which test dies.
------------------------------------------------------------------------
r65385 | kazu | 2018-10-27 17:17:01 +0900 (Sat, 27 Oct 2018) | 1 line

bootstraptest/test_insns.rb: test newhashfromarray
------------------------------------------------------------------------
r65384 | knu | 2018-10-27 16:22:38 +0900 (Sat, 27 Oct 2018) | 4 lines

Update the example of local variable shadowing

I came up with this snippet when we were trying to convince Matz.

------------------------------------------------------------------------
r65383 | k0kubun | 2018-10-27 14:14:46 +0900 (Sat, 27 Oct 2018) | 4 lines

test_io.rb: skip busy wait test again

which I tried to avoid skipping this in r65311, but the test seems not
working under some high load of ci.rvm.jp.
------------------------------------------------------------------------
r65382 | stomar | 2018-10-27 05:30:09 +0900 (Sat, 27 Oct 2018) | 6 lines

string.c: improve docs for String#strip and related

* string.c: [DOC] improve docs for String#{strip,lstrip,rstrip}{,!}:
  small clarification, avoid referring to the receiver as `str'
  (does not appear in the call-seq of the generated HTML docs),
  enable links for cross-references, simplify rdoc.
------------------------------------------------------------------------
r65381 | svn | 2018-10-27 02:08:33 +0900 (Sat, 27 Oct 2018) | 1 line

* 2018-10-27
------------------------------------------------------------------------
r65380 | nobu | 2018-10-27 02:08:30 +0900 (Sat, 27 Oct 2018) | 5 lines

Do not :stopdoc: entire classes/modules

It disables cross-references to the classes/modules, even if those
are defined in other places.  I suspect this is not an intentional
behavior, however make a workaround for the time being.
------------------------------------------------------------------------
r65379 | stomar | 2018-10-26 21:23:25 +0900 (Fri, 26 Oct 2018) | 1 line

proc.c: [DOC] improve docs for {Method,Proc}#===
------------------------------------------------------------------------
r65378 | stomar | 2018-10-26 21:21:22 +0900 (Fri, 26 Oct 2018) | 1 line

proc.c: [DOC] fix grammar in doc for Method#to_s
------------------------------------------------------------------------
r65377 | stomar | 2018-10-26 21:19:04 +0900 (Fri, 26 Oct 2018) | 1 line

object.c: [DOC] fix typos in doc for yield_self
------------------------------------------------------------------------
r65376 | stomar | 2018-10-26 21:16:25 +0900 (Fri, 26 Oct 2018) | 1 line

NEWS: fix typos
------------------------------------------------------------------------
r65375 | k0kubun | 2018-10-26 17:34:42 +0900 (Fri, 26 Oct 2018) | 5 lines

appveyor.yml: run second half of vs with -v

because it may silently die like
https://ci.appveyor.com/project/ruby/ruby/builds/19813015/job/a99c4hrs69g4iorg
and we can't know which test was bad.
------------------------------------------------------------------------
r65374 | nobu | 2018-10-26 15:41:34 +0900 (Fri, 26 Oct 2018) | 1 line

Fix a condition and just call rb_fstring [Feature #15251]
------------------------------------------------------------------------
r65373 | svn | 2018-10-26 15:18:30 +0900 (Fri, 26 Oct 2018) | 1 line

* expand tabs.
------------------------------------------------------------------------
r65372 | nobu | 2018-10-26 15:18:28 +0900 (Fri, 26 Oct 2018) | 1 line

Simplify conditions [Feature #15251]
------------------------------------------------------------------------
r65371 | normal | 2018-10-26 14:32:47 +0900 (Fri, 26 Oct 2018) | 9 lines

hash.c: aset deduplicates un-tainted string

We revisit [Bug #9188] since st.c is much improved since then,
and benchmarks against so_k_nucleotide seem to indicate little
or no performance change compared to before.

[ruby-core:89555] [Feature #15251]

From: Anmol Chopra <chopraanmol1@gmail.com>
------------------------------------------------------------------------
r65370 | nobu | 2018-10-26 13:46:24 +0900 (Fri, 26 Oct 2018) | 1 line

Indent as a code block [ci skip]
------------------------------------------------------------------------
r65369 | mame | 2018-10-26 12:10:02 +0900 (Fri, 26 Oct 2018) | 8 lines

parse.y: remove "shadowing outer local variable" warning

You can now write the following without warning.

    user = User.all.find {|user| cond(user) }

Fixes [Feature #12490].
A patch from Soutaro Matsumoto <matsumoto@soutaro.com>.
------------------------------------------------------------------------
r65368 | mame | 2018-10-26 12:08:10 +0900 (Fri, 26 Oct 2018) | 3 lines

Revert "parse.y: remove "shadowing outer local variable" warning"

I forgot to add the copyright of the patch...
------------------------------------------------------------------------
r65367 | mame | 2018-10-26 11:54:01 +0900 (Fri, 26 Oct 2018) | 7 lines

parse.y: remove "shadowing outer local variable" warning

You can now write the following without warning.

  user = User.all.find {|user| cond(user) }

Fixes [Feature #12490].
------------------------------------------------------------------------
r65366 | svn | 2018-10-26 10:47:14 +0900 (Fri, 26 Oct 2018) | 1 line

* 2018-10-26
------------------------------------------------------------------------
r65365 | nobu | 2018-10-26 10:47:09 +0900 (Fri, 26 Oct 2018) | 1 line

Update for tzdata-2018f
------------------------------------------------------------------------
r65364 | hsbt | 2018-10-25 19:16:28 +0900 (Thu, 25 Oct 2018) | 1 line

Added initialization task for default gems.
------------------------------------------------------------------------
r65363 | k0kubun | 2018-10-25 12:25:19 +0900 (Thu, 25 Oct 2018) | 5 lines

wercker.yml: skip webrick for test-mjit-wait for now

as failing
https://app.wercker.com/ruby/ruby/runs/test-mjit-wait/5bd092a89b1e440006d5780d?step=5bd092e3591ca80007258400
now and it needs some fix.
------------------------------------------------------------------------
r65362 | ko1 | 2018-10-25 11:23:58 +0900 (Thu, 25 Oct 2018) | 4 lines

add new counter about GC.

* debug_counter.h: add `gc_major_oldmalloc`.

------------------------------------------------------------------------
r65361 | kazu | 2018-10-25 11:07:47 +0900 (Thu, 25 Oct 2018) | 1 line

Fix a typo
------------------------------------------------------------------------
r65360 | nobu | 2018-10-25 09:36:23 +0900 (Thu, 25 Oct 2018) | 7 lines

time.c: benchmark recovery

* time.c (time_localtime): check if `vtm.zone` is a simple zone
  name string before trying to call the conversion method.  since
  r64952, `Time.getlocal` on UTC time has lost the performance
  about 45%, due to this call.  the performance is about 90% of
  r64951 by avoiding it.
------------------------------------------------------------------------
r65359 | ko1 | 2018-10-25 07:17:03 +0900 (Thu, 25 Oct 2018) | 4 lines

add new debug_counters for GC.

* debug_counter.h: add new debug counters to count GC.

------------------------------------------------------------------------
r65358 | k0kubun | 2018-10-25 00:49:03 +0900 (Thu, 25 Oct 2018) | 3 lines

wercker.yml: rearrange test split times

test-all2 is taking much longer time than test-all1 now.
------------------------------------------------------------------------
r65357 | svn | 2018-10-25 00:41:15 +0900 (Thu, 25 Oct 2018) | 1 line

* 2018-10-25
------------------------------------------------------------------------
r65356 | k0kubun | 2018-10-25 00:41:14 +0900 (Thu, 25 Oct 2018) | 24 lines

_mjit_compile_ivar.erb: cancel on undefined ivar

I assumed somehow this check was not needed, but it did need.
By canceling this instead of just warning here, we didn't lose the
current performance so much.

test_jit.rb: test the case that reproduces SEGV by that.

TestGemStreamUI.rb: delete. This test on --jit-wait is fixed.

=== Optcarrot Benchmark ===

$ benchmark-driver benchmark.yml --rbenv 'before::before --disable-gems --jit;after::after --disable-gems --jit' -v --repeat-count 24
before: ruby 2.6.0dev (2018-10-24 trunk 65355) +JIT [x86_64-linux]
after: ruby 2.6.0dev (2018-10-24 trunk 65355) +JIT [x86_64-linux]
last_commit=_mjit_compile_ivar.erb: cancel on undefined ivar
Calculating -------------------------------------
                             before       after
Optcarrot Lan_Master.nes     85.344      84.849 fps

Comparison:
             Optcarrot Lan_Master.nes
                  before:        85.3 fps
                   after:        84.8 fps - 1.01x  slower
------------------------------------------------------------------------
r65355 | k0kubun | 2018-10-24 23:24:34 +0900 (Wed, 24 Oct 2018) | 1 line

test_jit.rb: test newhashfromarray
------------------------------------------------------------------------
r65354 | k0kubun | 2018-10-24 21:19:39 +0900 (Wed, 24 Oct 2018) | 5 lines

revert r65353 [ci skip]

As Wercker is managing workflow by GUI, the commit had no impact for
behavior... I already fixed the workflow on GUI. Let revert that to
change it back to natural order.
------------------------------------------------------------------------
r65353 | k0kubun | 2018-10-24 21:14:26 +0900 (Wed, 24 Oct 2018) | 3 lines

wercker.yml: run slower job first

to reduce time taken for finishing all jobs.
------------------------------------------------------------------------
r65352 | svn | 2018-10-24 21:13:29 +0900 (Wed, 24 Oct 2018) | 1 line

* properties.
------------------------------------------------------------------------
r65351 | k0kubun | 2018-10-24 21:13:28 +0900 (Wed, 24 Oct 2018) | 4 lines

test/excludes/_wercker: skip tests

which are under investigation. I'm debugging it right now, but let's
make it green to stop bothering other development.
------------------------------------------------------------------------
r65350 | nobu | 2018-10-24 19:38:39 +0900 (Wed, 24 Oct 2018) | 5 lines

compile.c: fix peephole optimization

* compile.c (iseq_peephole_optimize): should `pop` before jump
  instruction which succeeds to `newarray` of a literal object,
  not after.  [ruby-core:89536] [Bug #15245]
------------------------------------------------------------------------
r65349 | svn | 2018-10-24 19:29:40 +0900 (Wed, 24 Oct 2018) | 1 line

* properties.
------------------------------------------------------------------------
r65348 | k0kubun | 2018-10-24 19:29:39 +0900 (Wed, 24 Oct 2018) | 3 lines

wercker.yml: skip TestParallel::TestParallel#test_separate

for now. It's randomly failing on test-mjit-wait.
------------------------------------------------------------------------
r65347 | k0kubun | 2018-10-24 18:52:01 +0900 (Wed, 24 Oct 2018) | 4 lines

wercker.yml: try to split test-all again

TestParallel in test/testunit/... seems to be slow. Let's see if this
contributes to loosen timeout or not.
------------------------------------------------------------------------
r65346 | k0kubun | 2018-10-24 12:05:43 +0900 (Wed, 24 Oct 2018) | 4 lines

wercker.yml: skip test_queue_with_trap on -wait as well

It randomly failed.
https://app.wercker.com/ruby/ruby/runs/test-mjit-wait/5bcfd19aa9806e000655c598?step=5bcfd1d5acc4510006e00f77
------------------------------------------------------------------------
r65345 | ko1 | 2018-10-24 11:40:13 +0900 (Wed, 24 Oct 2018) | 5 lines

newhashfromarray should be a leaf insn.

* insns.def (newhashfromarray): `rb_hash_bulk_insert()` can call
  Ruby methods like #hash so that it should not be a leaf insn.

------------------------------------------------------------------------
r65344 | ko1 | 2018-10-24 11:12:35 +0900 (Wed, 24 Oct 2018) | 1 line

need a cast
------------------------------------------------------------------------
r65343 | ko1 | 2018-10-24 10:57:27 +0900 (Wed, 24 Oct 2018) | 31 lines

introduce new YARV insn newhashfromarray.

* insns.def (newhashfromarray): added to replace `core_hash_from_ary`
  method to eliminate method call overhead.

  On my environment, I got the following benchmark results:

  x = {x: 1}

                    modified:   7864988.6 i/s
                       trunk:   6004098.1 i/s - 1.31x  slower


  x = {x: 1, y: 2}

                       trunk:   6127338.4 i/s
                    modified:   5232380.0 i/s - 1.17x  slower


  x = {x: 1, y: 2, z: 3}

                    modified:   6089553.1 i/s
                       trunk:   5249333.5 i/s - 1.16x  slower

  This trivial improvement should be reconsider because of usage of
  this instruction.

* compile.c: ditto.

* defs/id.def, vm.c: remove unused functions.

------------------------------------------------------------------------
r65341 | svn | 2018-10-24 07:51:30 +0900 (Wed, 24 Oct 2018) | 1 line

* properties.
------------------------------------------------------------------------
r65340 | k0kubun | 2018-10-24 07:51:28 +0900 (Wed, 24 Oct 2018) | 3 lines

wercker.yml: skip #test_queue_with_trap for now

only on --jit CI. This test doesn't work on AppVeyor mswin either.
------------------------------------------------------------------------
r65339 | k0kubun | 2018-10-24 01:49:55 +0900 (Wed, 24 Oct 2018) | 6 lines

wercker.yml: increase timeout scale

mainly for test-mjit.

TestThreadQueue#test_queue_with_trap timed out with 10s.
https://app.wercker.com/ruby/ruby/runs/test-mjit/5bcf4b5c9065740006f790ca?step=5bcf4b9787436a000648fbb7
------------------------------------------------------------------------
r65338 | k0kubun | 2018-10-24 01:23:55 +0900 (Wed, 24 Oct 2018) | 1 line

wercker.yml: run both --jit and --jit-wait
------------------------------------------------------------------------
r65337 | k0kubun | 2018-10-24 00:54:11 +0900 (Wed, 24 Oct 2018) | 1 line

wercker.yml: stop using my personal Docker container
------------------------------------------------------------------------
r65336 | nobu | 2018-10-24 00:29:01 +0900 (Wed, 24 Oct 2018) | 1 line

getifaddrs_spec.rb: `should` returned `nil` on success
------------------------------------------------------------------------
r65335 | k0kubun | 2018-10-24 00:09:49 +0900 (Wed, 24 Oct 2018) | 4 lines

wercker.yml: stop splitting test-all

since it actually doesn't contribute to CI build time so much, rather it
seems making it worse.
------------------------------------------------------------------------
r65334 | svn | 2018-10-24 00:05:10 +0900 (Wed, 24 Oct 2018) | 1 line

* 2018-10-24
------------------------------------------------------------------------
r65333 | kazu | 2018-10-24 00:05:09 +0900 (Wed, 24 Oct 2018) | 1 line

Skip BUGs on Solaris
------------------------------------------------------------------------
r65332 | nobu | 2018-10-23 23:58:08 +0900 (Tue, 23 Oct 2018) | 6 lines

getifaddrs_spec.rb: allow no address

* spec/ruby/library/socket/socket/getifaddrs_spec.rb: allow no
  address for platform dependent failures.

  https://travis-ci.org/ruby/ruby/jobs/445126982#L2234-L2244
------------------------------------------------------------------------
r65331 | k0kubun | 2018-10-23 23:43:19 +0900 (Tue, 23 Oct 2018) | 4 lines

appveyor.yml: give up using mspec -j

for all Windows environments. It also hanged on msys2 build
https://ci.appveyor.com/project/ruby/ruby/builds/19719943/job/cxg00jgvt1ifml97
------------------------------------------------------------------------
r65330 | nobu | 2018-10-23 23:26:23 +0900 (Tue, 23 Oct 2018) | 13 lines

test/unit.rb: glob w/o prefix/suffix

* test/lib/test/unit.rb (Test::Unit::GlobOption#non_options): glob
  the given pattern as-is under the TESTSDIR without the prefix
  nor the suffix, when it has separator(s) but does not end with a
  separator nor is not a directory.  e.g.:

      make test-all TESTS='ruby/test_time*'

  runs `ruby/test_time.rb` and `ruby/test_time_tz.rb` only, like
  as the following:

      make test-all TESTS='$(TESTSDIR)/ruby/test_time*'
------------------------------------------------------------------------
r65329 | nobu | 2018-10-23 23:17:16 +0900 (Tue, 23 Oct 2018) | 8 lines

test/unit.rb: fixed wrong method name

* test/lib/test/unit.rb (Test::Unit::Parallel#deal): fixed wrong
  method name at r36388.

* test/testunit/test_parallel.rb (TestParallel::TestParallel#test_separate):
  refine the pattern to process IDs but not backtrace lines, and
  add a better message.
------------------------------------------------------------------------
r65328 | k0kubun | 2018-10-23 23:10:12 +0900 (Tue, 23 Oct 2018) | 5 lines

.travis.yml: run the slowest jobs first

to shorten time taken for finishing overall builds.

appveyor.yml: comment the same intention in AppVeyor as well
------------------------------------------------------------------------
r65327 | k0kubun | 2018-10-23 23:06:36 +0900 (Tue, 23 Oct 2018) | 1 line

wercker.yml: profile slow tests
------------------------------------------------------------------------
r65326 | k0kubun | 2018-10-23 22:58:01 +0900 (Tue, 23 Oct 2018) | 4 lines

.travis.yml: let osx build print verbose output

because it may hang with no output like this:
https://travis-ci.org/ruby/ruby/jobs/445101860
------------------------------------------------------------------------
r65325 | k0kubun | 2018-10-23 22:34:50 +0900 (Tue, 23 Oct 2018) | 6 lines

wercker.yml: explain the usage of Wercker

at ruby repository. I also added a woraround to loosen timeout for
test-all. I resolved the issue that lets --jit-wait CI timeout, so this
workaround is not strictly needed, but this might make it easier to
debug when things go wrong.
------------------------------------------------------------------------
r65324 | k0kubun | 2018-10-23 22:22:07 +0900 (Tue, 23 Oct 2018) | 1 line

wercker.yml: setup MJIT wait CI
------------------------------------------------------------------------
r65323 | k0kubun | 2018-10-23 22:05:29 +0900 (Tue, 23 Oct 2018) | 4 lines

mjit_worker.c: don't ask MJIT copy job to main thread

when main thread is waiting for MJIT worker forever without executing
RUBY_VM_CHECK_INTS due to --jit-wait.
------------------------------------------------------------------------
r65322 | k0kubun | 2018-10-23 21:48:21 +0900 (Tue, 23 Oct 2018) | 4 lines

appveyor.yml: separately execute problematic test case

that may crash worker like:
https://ci.appveyor.com/project/ruby/ruby/builds/19706703/job/5dmi22mgua9r2qfu
------------------------------------------------------------------------
r65321 | nobu | 2018-10-23 21:43:07 +0900 (Tue, 23 Oct 2018) | 1 line

Let Time::TM share the implementation with Time
------------------------------------------------------------------------
r65320 | mame | 2018-10-23 21:38:48 +0900 (Tue, 23 Oct 2018) | 3 lines

addr2line.c: add explicit casts for clang on 32bit environment

Assigning uint64_t to size_t or uintptr_t caused a build error.
------------------------------------------------------------------------
r65319 | mame | 2018-10-23 21:23:04 +0900 (Tue, 23 Oct 2018) | 4 lines

file.c: use correct integer-conversion function

The return value of major() and minor() is unsigned int, not dev_t.
So, UINT2NUM() is a better choice than DEVT2NUM().
------------------------------------------------------------------------
r65318 | k0kubun | 2018-10-23 21:01:34 +0900 (Tue, 23 Oct 2018) | 1 line

_mjit_compile_send.erb: fix wrong cc usages
------------------------------------------------------------------------
r65317 | svn | 2018-10-23 12:47:48 +0900 (Tue, 23 Oct 2018) | 1 line

* expand tabs.
------------------------------------------------------------------------
r65316 | normal | 2018-10-23 12:47:45 +0900 (Tue, 23 Oct 2018) | 6 lines

Revert "vm_trace: implement postponed_jobs as st_table"

This reverts commit 5a1dfb04bc2b09fcf8f3427cac72d0ce52a45eb2 (r63451)

And mark the functions as async-signal-safe while we're at it to
prevent future developers from making the same mistake as I did :x
------------------------------------------------------------------------
r65315 | k0kubun | 2018-10-23 10:13:38 +0900 (Tue, 23 Oct 2018) | 7 lines

test/lib/test/unit/assertions.rb: skip memory leak check

for all test cases on MJIT. In addition to those 2 tests,
TestAutoload#test_no_leak newly failed and most of assert_no_memory_leak
usages are likely to randomly fail.

Let me just skip all of them but let's revisit this to check it properly later.
------------------------------------------------------------------------
r65314 | k0kubun | 2018-10-23 09:27:08 +0900 (Tue, 23 Oct 2018) | 6 lines

wercker.yml: pending for now

As the Wercker integration is already enabled, I added wercker.yml but
it's not working due to migration to this repository and I don't have
enough time to fix it immediately. I'll make it work in this evening.
Let me show green status on GitHub commit logs.
------------------------------------------------------------------------
r65313 | k0kubun | 2018-10-23 09:19:53 +0900 (Tue, 23 Oct 2018) | 3 lines

wercker.yml: run --jit-wait test on Wercker

New. This was formerly https://github.com/k0kubun/mjit-test.
------------------------------------------------------------------------
r65312 | k0kubun | 2018-10-23 09:09:10 +0900 (Tue, 23 Oct 2018) | 8 lines

mjit.c: prevent from accessing expired job

Given that `copy_cache_from_main_thread()` breaks the loop when `stop_worker_p`
is TRUE, memory of `job` allocated by `alloca` may be invalid if `stop_worker_p`
is already TRUE.

mjit_worker.c: explain why `copy_cache_from_main_thread()` should not
stop checking `stop_worker_p`.
------------------------------------------------------------------------
r65311 | k0kubun | 2018-10-23 00:49:22 +0900 (Tue, 23 Oct 2018) | 13 lines

revisit more MJIT test skips

r65308 passed both trunk-mjit and trunk-mjit-wait CIs. MJIT copy job
looks working fine. Then this commit skips 5 more tests. Some of them
were skipped in a very early stage and may still need to be skipped, but
I want to confirm them since they haven't been changed for a long time.

And this prefers having inline information on `RubyVM::MJIT.enabled?`.
This commit makes it easier to confirm whether there's suspicious test
skip by RubyVM::MJIT.enabled? or not.

After this commit, tentatively we're not skipping tests for MJIT other
than `assert_no_memory_leak` ones.
------------------------------------------------------------------------
r65310 | svn | 2018-10-23 00:19:36 +0900 (Tue, 23 Oct 2018) | 1 line

* 2018-10-23
------------------------------------------------------------------------
r65309 | k0kubun | 2018-10-23 00:19:34 +0900 (Tue, 23 Oct 2018) | 6 lines

test/ruby/test_string.rb: skip test_crypt for MJIT again

Partially reverting r65285. Actually this one is failing due to memory
consumption on MJIT, so this seems not catching the bug of MJIT.

test/ruby/test_io.rb: unify the skip message with it
------------------------------------------------------------------------
r65308 | k0kubun | 2018-10-22 23:26:47 +0900 (Mon, 22 Oct 2018) | 4 lines

revert r65292 and r65297

now mjit CIs are stable. Let me try this to confirm if it's fixed or
not.
------------------------------------------------------------------------
r65307 | nobu | 2018-10-22 23:02:59 +0900 (Mon, 22 Oct 2018) | 1 line

No longer subsec and isdst members
------------------------------------------------------------------------
r65306 | nobu | 2018-10-22 22:56:41 +0900 (Mon, 22 Oct 2018) | 1 line

Revert TM_IS_TIME to 1
------------------------------------------------------------------------
r65305 | nobu | 2018-10-22 22:53:20 +0900 (Mon, 22 Oct 2018) | 1 line

Return fixed values at subsec, utc_offset, and isdst
------------------------------------------------------------------------
r65304 | kazu | 2018-10-22 21:21:19 +0900 (Mon, 22 Oct 2018) | 8 lines

Add debug option to check ci failures on solaris

failed to start extserv?:
- https://rubyci.org/logs/rubyci.s3.amazonaws.com/unstable11s/ruby-trunk/log/20181020T132506Z.fail.html.gz

BUG in sysread of OpenSSL:
- https://rubyci.org/logs/rubyci.s3.amazonaws.com/unstable11x/ruby-trunk/log/20181020T132408Z.fail.html.gz
- https://rubyci.org/logs/rubyci.s3.amazonaws.com/unstable10x/ruby-trunk/log/20181020T131807Z.fail.html.gz
------------------------------------------------------------------------
r65303 | svn | 2018-10-22 20:23:57 +0900 (Mon, 22 Oct 2018) | 1 line

* expand tabs.
------------------------------------------------------------------------
r65302 | knu | 2018-10-22 20:23:56 +0900 (Mon, 22 Oct 2018) | 6 lines

Set the size of a new enumerator created by Enumerator#each with arguments to nil

When each() takes arguments, it is never safe to assume that the iteration
would repeat the same number of times as with each() without any
argument.  Actually, there is no way to get the exact number, so the
size should be set to nil to denote that.
------------------------------------------------------------------------
r65301 | k0kubun | 2018-10-22 18:53:00 +0900 (Mon, 22 Oct 2018) | 4 lines

mjit_worker.c: return more appropriate result

of copy job. When job is being stopped but job is actually finished,
returning FALSE could be a little confusing from the function name.
------------------------------------------------------------------------
r65300 | k0kubun | 2018-10-22 18:48:35 +0900 (Mon, 22 Oct 2018) | 3 lines

mjit_worker.c: check appropriate flag to stop

This was not intentional in r65299.
------------------------------------------------------------------------
r65299 | k0kubun | 2018-10-22 18:40:44 +0900 (Mon, 22 Oct 2018) | 4 lines

mjit_worker.c: make sure copy job wait is unblocked

by stop_worker(). Previously copy_cache_from_main_thread() might loop forever
even with stop_worker() is being called from ruby_cleanup().
------------------------------------------------------------------------
r65298 | shyouhei | 2018-10-22 12:59:48 +0900 (Mon, 22 Oct 2018) | 7 lines

.travis.yml: give up -O0

This configuration timed out.
https://travis-ci.org/ruby/ruby/jobs/444523912

Try speed things up.

------------------------------------------------------------------------
r65297 | k0kubun | 2018-10-22 12:31:13 +0900 (Mon, 22 Oct 2018) | 4 lines

test_thread.rb: another temporary skip for MJIT

to make trunk-mjit-wait CI green for now. I'll take a look at this
later.
------------------------------------------------------------------------
r65296 | nobu | 2018-10-22 10:25:29 +0900 (Mon, 22 Oct 2018) | 4 lines

time.c: optional arguments of Time::TM#initialize

* time.c (tm_initialize): arguments other than year are optional
  now as Time.new.
------------------------------------------------------------------------
r65295 | hsbt | 2018-10-22 09:32:16 +0900 (Mon, 22 Oct 2018) | 3 lines

Merge stringio.gemspec from github repository.

  It fixed the wrong paths of libraries.
------------------------------------------------------------------------
r65294 | hsbt | 2018-10-22 09:27:02 +0900 (Mon, 22 Oct 2018) | 1 line

Merge rubygems master branch from github.com/rubygems/rubygems.
------------------------------------------------------------------------
r65293 | nobu | 2018-10-22 08:53:39 +0900 (Mon, 22 Oct 2018) | 1 line

test_time_tz.rb: refactor dummy TZ tests and add another timezone
------------------------------------------------------------------------
r65292 | k0kubun | 2018-10-22 08:53:24 +0900 (Mon, 22 Oct 2018) | 4 lines

skip 2 tests for MJIT for now

These tests seem to be broken by r65275.
Let me skip this to confirm if other things are fine or not.
------------------------------------------------------------------------
r65291 | k0kubun | 2018-10-22 08:20:32 +0900 (Mon, 22 Oct 2018) | 3 lines

revert revert of r65285

because CI was actually hitting another one.
------------------------------------------------------------------------
r65290 | k0kubun | 2018-10-22 08:07:18 +0900 (Mon, 22 Oct 2018) | 3 lines

revert r65285

because it didn't work. Partially leaving "sometimes fail" tests.
------------------------------------------------------------------------
r65289 | naruse | 2018-10-22 05:01:22 +0900 (Mon, 22 Oct 2018) | 4 lines

check VLIW case

If maximum_operations_per_instruction != 1, it is VLIW.
But there seems no need to support such architecture now.
------------------------------------------------------------------------
r65288 | stomar | 2018-10-22 05:00:46 +0900 (Mon, 22 Oct 2018) | 1 line

lib/net/http.rb: [DOC] fix typos
------------------------------------------------------------------------
r65287 | naruse | 2018-10-22 01:42:23 +0900 (Mon, 22 Oct 2018) | 1 line

initialize is_stmt with default_is_stmt
------------------------------------------------------------------------
r65286 | naruse | 2018-10-22 01:37:24 +0900 (Mon, 22 Oct 2018) | 1 line

Use inline function with stable code instead of macro
------------------------------------------------------------------------
r65285 | k0kubun | 2018-10-22 00:54:50 +0900 (Mon, 22 Oct 2018) | 6 lines

try to remove some test skips for MJIT

Eric Wong made some effort to keep compatibility around fd with MJIT.
Also I'm hoping r65279 (and r65280) eliminates major MJIT bugs, so I
want to start solely testing MJIT. Other test skips branched by MJIT
enablement seemed reasonable to me.
------------------------------------------------------------------------
r65284 | k0kubun | 2018-10-22 00:41:00 +0900 (Mon, 22 Oct 2018) | 1 line

NEWS: note about --disable-mjit-support [ci skip]
------------------------------------------------------------------------
r65283 | aycabta | 2018-10-22 00:33:30 +0900 (Mon, 22 Oct 2018) | 5 lines

Improve docs of Proc / Method

* proc.c: Add descriptions and code examples.

[ruby-core:85600] [Bug #14483]
------------------------------------------------------------------------
r65282 | svn | 2018-10-22 00:29:02 +0900 (Mon, 22 Oct 2018) | 1 line

* 2018-10-22
------------------------------------------------------------------------
r65281 | k0kubun | 2018-10-22 00:29:01 +0900 (Mon, 22 Oct 2018) | 15 lines

NEWS: prefer advertising --jit option [ci skip]

In addition to `--enable=jit` and `--enable-jit`, we're going to ship
`--jit` as a short hand of it in Ruby 2.6.0.

That's because both --enable=jit and --enable-jit are super hard to
type everytime on command line, and I want make it easier to use so
that many people use it. First of all, `--enable=jit` is accidentally
added for consistency with `--disable=jit` and it's not added for human.

As it's a short hand, once JIT became enabled by default, the `--jit`
option would be removed after some deprecation warning period and only
`--enable=jit`/`--disable=jit` will survive. That being said, I still
think having `--jit` as a temporary short hand is valuable for the above
reasons.
------------------------------------------------------------------------
r65280 | k0kubun | 2018-10-21 23:30:18 +0900 (Sun, 21 Oct 2018) | 17 lines

mjit.c: remove wrongly-committed debug code

mistake in r65279.

=== Optcarrot Benchmark ===
$ benchmark-driver benchmark.yml --rbenv 'before::before --disable-gems --jit;after::after --disable-gems --jit' -v --repeat-count 24
before: ruby 2.6.0dev (2018-10-21 trunk 65277) +JIT [x86_64-linux]
after: ruby 2.6.0dev (2018-10-21 trunk 65279) +JIT [x86_64-linux]
last_commit=mjit.c: remove wrongly-committed debug code
Calculating -------------------------------------
                             before       after
Optcarrot Lan_Master.nes     85.008      86.078 fps

Comparison:
             Optcarrot Lan_Master.nes
                   after:        86.1 fps
                  before:        85.0 fps - 1.01x  slower
------------------------------------------------------------------------
r65279 | k0kubun | 2018-10-21 23:23:24 +0900 (Sun, 21 Oct 2018) | 17 lines

mjit.c: copy call cache values to MJIT worker

same as r65275 but for call cache.

=== Optcarrot Benchmark ===
$ benchmark-driver benchmark.yml --rbenv 'before::before --disable-gems --jit;after::after --disable-gems --jit' -v --repeat-count 24
before: ruby 2.6.0dev (2018-10-21 trunk 65277) +JIT [x86_64-linux]
after: ruby 2.6.0dev (2018-10-21 trunk 65277) +JIT [x86_64-linux]
last_commit=mjit.c: copy call cache values to MJIT worker
Calculating -------------------------------------
                             before       after
Optcarrot Lan_Master.nes     85.372      85.359 fps

Comparison:
             Optcarrot Lan_Master.nes
                  before:        85.4 fps
                   after:        85.4 fps - 1.00x  slower
------------------------------------------------------------------------
r65278 | stomar | 2018-10-21 23:02:00 +0900 (Sun, 21 Oct 2018) | 4 lines

lib/mutex_m.rb: fix example code in documentation

* lib/mutex_m.rb: [DOC] fix invalid example code to make it
  syntax highlighted.
------------------------------------------------------------------------
r65277 | k0kubun | 2018-10-21 22:45:36 +0900 (Sun, 21 Oct 2018) | 5 lines

vm_core.h: fix typo [ci skip]

The comment didn't make sense. As it's allocated with
`ZALLOC_N(struct rb_call_cache, body->ci_size + body->ci_kw_size)`,
it's very likely to be forgotten to press shift key on US keyboard.
------------------------------------------------------------------------
r65276 | k0kubun | 2018-10-21 22:37:13 +0900 (Sun, 21 Oct 2018) | 6 lines

_mjit_compile_send.erb: don't split send_guard

to another file, because it's no longer shared. It was created when
attr_reader was inlined but it's no longer included.

common.mk: ditto
------------------------------------------------------------------------
r65275 | k0kubun | 2018-10-21 22:21:28 +0900 (Sun, 21 Oct 2018) | 28 lines

mjit.c: copy inline cache values to MJIT worker

on VM_CHECK_INTS. Letting MJIT worker directly see inline cache which
may be being updated could result in inconsistent IC index and serial.

mjit_worker.c: request the copy job after dequeue, and receive the
result synchronously.

tool/ruby_vm/views/_mjit_compile_ivar.erb: use the copied IC

mjit_compile.c: change the interface to pass is_entries
mjit.h: ditto

=== Optcarrot Benchmark ===
Thankfully this didn't have major performance regression.

$ benchmark-driver benchmark.yml --rbenv 'before::before --disable-gems --jit;after::after --disable-gems --jit' -v --repeat-count 24
before: ruby 2.6.0dev (2018-10-21 trunk 65263) +JIT [x86_64-linux]
after: ruby 2.6.0dev (2018-10-21 trunk 65263) +JIT [x86_64-linux]
last_commit=mjit.c: copy inline cache values to MJIT worker
Calculating -------------------------------------
                             before       after
Optcarrot Lan_Master.nes     85.421      85.454 fps

Comparison:
             Optcarrot Lan_Master.nes
                   after:        85.5 fps
                  before:        85.4 fps - 1.00x  slower
------------------------------------------------------------------------
r65272 | naruse | 2018-10-21 19:46:56 +0900 (Sun, 21 Oct 2018) | 1 line

fix sign of integer variable
------------------------------------------------------------------------
r65271 | aycabta | 2018-10-21 16:15:44 +0900 (Sun, 21 Oct 2018) | 3 lines

Improve doc of yield_self

* object.c: Add code samples for yield_self.
------------------------------------------------------------------------
r65270 | aycabta | 2018-10-21 16:04:20 +0900 (Sun, 21 Oct 2018) | 4 lines

Add missing info for Mutex_m to the doc [Bug #13598]

* lib/mutex_m.rb: The #initialize method in a class that includes
  Mutex_m needs calling #super.
------------------------------------------------------------------------
r65269 | aycabta | 2018-10-21 15:42:53 +0900 (Sun, 21 Oct 2018) | 3 lines

Improve doc of Regexp about "ignore case" behavior [Misc #10836]

* doc/regexp.rdoc: RDoc for "ignore case" behavior
------------------------------------------------------------------------
r65268 | nobu | 2018-10-21 12:52:20 +0900 (Sun, 21 Oct 2018) | 1 line

`--excludes` option must be in TEST_ALL_TESTOPTS
------------------------------------------------------------------------
r65267 | nobu | 2018-10-21 12:42:46 +0900 (Sun, 21 Oct 2018) | 1 line

Quote `$(TESTSDIR)`
------------------------------------------------------------------------
r65266 | svn | 2018-10-21 12:38:53 +0900 (Sun, 21 Oct 2018) | 1 line

* properties.
------------------------------------------------------------------------
r65265 | nobu | 2018-10-21 12:38:52 +0900 (Sun, 21 Oct 2018) | 1 line

Exclude CI platform specific failures by --excludes option
------------------------------------------------------------------------
r65264 | ko1 | 2018-10-21 11:38:26 +0900 (Sun, 21 Oct 2018) | 2 lines

fix a warning message.

------------------------------------------------------------------------
r65263 | k0kubun | 2018-10-21 11:28:43 +0900 (Sun, 21 Oct 2018) | 1 line

skip tests broken with OpenSSL 1.1.1 on Travis osx
------------------------------------------------------------------------
r65262 | k0kubun | 2018-10-21 11:18:39 +0900 (Sun, 21 Oct 2018) | 7 lines

appveyor.yml: workaround wrong command line escape

backslash in %APPVEYOR_BUILD_FOLDER% is somehow dropped somewhere
when being passed to test runner via mingw32-make.

Anyway we know the relative path to the project directory, so we can
specify that with slash.
------------------------------------------------------------------------
r65261 | k0kubun | 2018-10-21 10:27:43 +0900 (Sun, 21 Oct 2018) | 5 lines

.travis.yml: mspec -j is unstable

https://travis-ci.org/ruby/ruby/jobs/444232677

Instead of that, add -fs to know problematic test case when failed.
------------------------------------------------------------------------
r65260 | k0kubun | 2018-10-21 10:25:20 +0900 (Sun, 21 Oct 2018) | 4 lines

.travis.yml: use --job-status=replace

-v is too long, and "--color=never --job-status=normal" is too verbose.
Trying --job-status=replace to make Travis log easier to read.
------------------------------------------------------------------------
r65259 | k0kubun | 2018-10-21 09:31:46 +0900 (Sun, 21 Oct 2018) | 1 line

appveyor.yml: fix wrong spec directory
------------------------------------------------------------------------
r65258 | k0kubun | 2018-10-21 09:18:32 +0900 (Sun, 21 Oct 2018) | 4 lines

.travis.yml: debug problematic test case on osx

osx build is stucking somewhere. We want to debug that.
https://travis-ci.org/ruby/ruby/jobs/444059226
------------------------------------------------------------------------
r65257 | naruse | 2018-10-21 09:08:02 +0900 (Sun, 21 Oct 2018) | 3 lines

check version of .debug_info

and refactor related code.
------------------------------------------------------------------------
r65256 | naruse | 2018-10-21 09:07:53 +0900 (Sun, 21 Oct 2018) | 1 line

Skip dwarf if its version is not supported
------------------------------------------------------------------------
r65255 | k0kubun | 2018-10-21 08:58:02 +0900 (Sun, 21 Oct 2018) | 4 lines

appveyor.yml: don't run win32ole with -j

since it lets worker crash
https://ci.appveyor.com/project/ruby/ruby/builds/19659321/job/swnu2b5yj960t9gr
------------------------------------------------------------------------
r65254 | nobu | 2018-10-21 02:19:37 +0900 (Sun, 21 Oct 2018) | 1 line

lldb_cruby.py: T_COMPLEX support [ci skip]
------------------------------------------------------------------------
r65253 | kazu | 2018-10-21 00:00:02 +0900 (Sun, 21 Oct 2018) | 1 line

NEWS: Fix keywords [ci skip]
------------------------------------------------------------------------
r65252 | svn | 2018-10-21 00:00:01 +0900 (Sun, 21 Oct 2018) | 1 line

* 2018-10-21
------------------------------------------------------------------------
r65251 | kazu | 2018-10-21 00:00:00 +0900 (Sun, 21 Oct 2018) | 1 line

NEWS: Fix `,`s [ci skip]
------------------------------------------------------------------------
r65250 | suke | 2018-10-20 23:34:30 +0900 (Sat, 20 Oct 2018) | 1 line

Merge branch 'modify_test_win32ole' into trunk
------------------------------------------------------------------------
r65249 | ko1 | 2018-10-20 23:07:59 +0900 (Sat, 20 Oct 2018) | 11 lines

support --disable-mjit-support on mswin32/64.

* win32/configure.bat: add --enable/disable-mjit-support
  configure.bat options.

* win32/setup.mak: ditto.

* win32/Makefile.sub: ditto.

* win32/Makefile.sub: fix typo for congig.status file.

------------------------------------------------------------------------
r65248 | suke | 2018-10-20 22:16:25 +0900 (Sat, 20 Oct 2018) | 3 lines

refactoring. suppress warning.

* test/win32ole/test_win32ole_record.rb: refactoring. suppress warning.
------------------------------------------------------------------------
r65247 | kazu | 2018-10-20 22:14:02 +0900 (Sat, 20 Oct 2018) | 4 lines

Run background threads while testing drb

Do not start background thread on load test/drb/drbtest.rb,
and stop threads on each test.
------------------------------------------------------------------------
r65246 | kazu | 2018-10-20 22:14:00 +0900 (Sat, 20 Oct 2018) | 5 lines

Revert "Revert "Reset primary_server when remove_server"" [ci skip]

This reverts commit d2671c96f32e6fbbd39162a2c9042dcaf3bf2d68.

previous reverting is commit miss
------------------------------------------------------------------------
r65245 | stomar | 2018-10-20 22:02:02 +0900 (Sat, 20 Oct 2018) | 1 line

NEWS: fix language
------------------------------------------------------------------------
r65244 | nobu | 2018-10-20 21:48:07 +0900 (Sat, 20 Oct 2018) | 1 line

lldb_cruby.py: T_RATIONAL support [ci skip]
------------------------------------------------------------------------
r65243 | kazu | 2018-10-20 21:28:52 +0900 (Sat, 20 Oct 2018) | 1 line

Allow to stop by push(nil) for test
------------------------------------------------------------------------
r65242 | kazu | 2018-10-20 21:28:45 +0900 (Sat, 20 Oct 2018) | 3 lines

Revert "Reset primary_server when remove_server"

This reverts commit 2948d3bd2e78b5b9110454a7135a81c3fecb2575.
------------------------------------------------------------------------
r65241 | suke | 2018-10-20 21:21:30 +0900 (Sat, 20 Oct 2018) | 4 lines

use System Monitor Control to test win32ole

* test/win32ole/test_win32ole_method_event.rb: use System Monitor
  Control to test.
------------------------------------------------------------------------
r65240 | hsbt | 2018-10-20 21:17:18 +0900 (Sat, 20 Oct 2018) | 1 line

Added entry about new default gems.
------------------------------------------------------------------------
r65239 | k0kubun | 2018-10-20 21:08:48 +0900 (Sat, 20 Oct 2018) | 6 lines

NEWS: update about MJIT [ci skip]

Rails performance is somewhat improved by compaction. Still not great
though.

MinGW support is much stable now, and mswin support is added.
------------------------------------------------------------------------
r65238 | mame | 2018-10-20 21:01:41 +0900 (Sat, 20 Oct 2018) | 1 line

Add the oneshot coverage feature to NEWS
------------------------------------------------------------------------
r65237 | svn | 2018-10-20 20:54:10 +0900 (Sat, 20 Oct 2018) | 1 line

* properties.
------------------------------------------------------------------------
r65236 | suke | 2018-10-20 20:54:09 +0900 (Sat, 20 Oct 2018) | 6 lines

refactoring define AvailableOLE.sysmon_available?

* test/win32ole/test_win32ole_type_event.rb: refactoring. use
  AvailableOLE.sysmon_available?

* test/win32ole/available_ole.rb: define AvailableOLE.sysmon_available?
------------------------------------------------------------------------
r65235 | aycabta | 2018-10-20 20:47:45 +0900 (Sat, 20 Oct 2018) | 8 lines

Document File.{setuid?,setgid?,sticky?} support for IO objects [Bug #13972]

* file.c (rb_file_setuid_p): rdoc for IO object support
  (rb_file_sgid_p): ditto (rb_file_sticky_p): ditto
* NEWS: inform users of new feature
* test/file/test_file_exhaustive.rb (io_open): wrapper for bare IO
  object (test_suid): test for bare IO support (test_sgid): ditto
  (test_sticky): ditto
------------------------------------------------------------------------
r65234 | ko1 | 2018-10-20 20:35:11 +0900 (Sat, 20 Oct 2018) | 4 lines

fix macro-name.

* win32/Makefile.sub: Not MJIT_SUPPORT, but USE_MJIT.

------------------------------------------------------------------------
r65233 | naruse | 2018-10-20 20:29:38 +0900 (Sat, 20 Oct 2018) | 4 lines

Add negotiated SSL protocol and cipher to Net::HTTP debug output

From: Bart de Water <bartdewater@gmail.com>
https://github.com/ruby/ruby/pull/1877 [Feature #15009]
------------------------------------------------------------------------
r65232 | ko1 | 2018-10-20 20:27:48 +0900 (Sat, 20 Oct 2018) | 5 lines

fix MJIT_SUPPORT on win32.

* win32/Makefile.sub: add MJIT_SUPPORT macro for C codes
  and variable for Makefile.

------------------------------------------------------------------------
r65231 | k0kubun | 2018-10-20 20:21:07 +0900 (Sat, 20 Oct 2018) | 3 lines

mjit_worker.c: don't refer to freed value

remove_from_list() frees node, but after that node->next could be used
------------------------------------------------------------------------
r65230 | aycabta | 2018-10-20 20:09:34 +0900 (Sat, 20 Oct 2018) | 5 lines

Improve doc of multipart/form-data [Bug #15019]

* lib/net/http.rb: Documentation for Net::HTTP claims that
  multipart/form-data is not supported, but Net::HTTPHeader#set_form
  supports it since 1.9.3.
------------------------------------------------------------------------
r65229 | yui-knk | 2018-10-20 20:06:05 +0900 (Sat, 20 Oct 2018) | 3 lines

parse.y: Fix the compile error

* parse.y: Fix "error: ISO C90 forbids mixed declarations and code [-Werror=declaration-after-statement]"
------------------------------------------------------------------------
r65228 | aycabta | 2018-10-20 19:57:33 +0900 (Sat, 20 Oct 2018) | 3 lines

Improve safe navigation operator's docs [Misc #15109]

* doc/syntax/calling_methods.rdoc: Add Safe navigation operator section.
------------------------------------------------------------------------
r65227 | yui-knk | 2018-10-20 19:53:31 +0900 (Sat, 20 Oct 2018) | 21 lines

Fix locations of NODE_SCOPE in lambda.

* parse.y: Fix to start with the argument.

  e.g. The locations of the NODE_SCOPE is fixed:

  ```
  -> x { 1 + 2 }
  ```

  * Before

  ```
  NODE_SCOPE (line: 1, location: (1,2)-(1,14))
  ```

  * After

  ```
  NODE_SCOPE (line: 1, location: (1,3)-(1,14))
  ```
------------------------------------------------------------------------
r65226 | svn | 2018-10-20 19:45:55 +0900 (Sat, 20 Oct 2018) | 1 line

* expand tabs.
------------------------------------------------------------------------
r65225 | mame | 2018-10-20 19:45:48 +0900 (Sat, 20 Oct 2018) | 4 lines

Remove tracecoverage instructions

The instructions were used only for branch coverage.
Instead, it now uses a trace framework [Feature #14104].
------------------------------------------------------------------------
r65224 | hsbt | 2018-10-20 19:30:42 +0900 (Sat, 20 Oct 2018) | 3 lines

Retry r65211.

  * Maybe, RbConfig.ruby only provides after Ruby installation.
------------------------------------------------------------------------
r65223 | svn | 2018-10-20 19:20:53 +0900 (Sat, 20 Oct 2018) | 1 line

* expand tabs.
------------------------------------------------------------------------
r65222 | k0kubun | 2018-10-20 19:20:49 +0900 (Sat, 20 Oct 2018) | 3 lines

revert r65213 and r65215

as we didn't agree on the actual implementation yet
------------------------------------------------------------------------
r65221 | yui-knk | 2018-10-20 19:10:46 +0900 (Sat, 20 Oct 2018) | 23 lines

Fix locations of NODE_LAMBDA.

* node.h: Add `nd_first_loc` and `nd_set_first_loc`

* parse.y: Fix to start with the beginning of `->` .

  e.g. The locations of the NODE_LAMBDA is fixed:

  ```
  -> x { 1 + 2 }
  ```

  * Before

  ```
  NODE_LAMBDA (line: 1, location: (1,2)-(1,14))
  ```

  * After

  ```
  NODE_LAMBDA (line: 1, location: (1,0)-(1,14))
  ```
------------------------------------------------------------------------
r65220 | hsbt | 2018-10-20 19:05:05 +0900 (Sat, 20 Oct 2018) | 3 lines

Revert "Mergr etc from github repository."

This reverts commit a85200277921dbefc1dfc9edd9ed26e9cea009f8.
------------------------------------------------------------------------
r65219 | ko1 | 2018-10-20 17:47:26 +0900 (Sat, 20 Oct 2018) | 6 lines

require 'rbconifg' earlier.

* test/lib/jit_support.rb: require rbconfig here.

* test/ruby/test_jit.rb: rbconfig should be required before.

------------------------------------------------------------------------
r65218 | ko1 | 2018-10-20 17:06:50 +0900 (Sat, 20 Oct 2018) | 7 lines

skip tests if --disable-mjit-support.

* test/ruby/test_rubyoptions.rb: skip MJIT related test
  if an interpreter is built with --disable-mjit-support.

* test/ruby/test_rubyvm_mjit.rb: ditto.

------------------------------------------------------------------------
r65217 | ko1 | 2018-10-20 17:00:42 +0900 (Sat, 20 Oct 2018) | 17 lines

rename configure option `--disable-mjit` to `--disable-mjit-support`

* configure.ac: rename configure option `--disable-mjit` to
  `--disable-mjit-support` because `--disable-mjit` is ambiguous that
  runtime MJIT default enable option or supporting MJIT features.
  `ENABLE_MJIT` is also renamed to `MJIT_SUPPORT`

* Makefile.in: catch up this fix.

* common.mk: ditto.

* test/ruby/test_jit.rb: ditto.

* win32/Makefile.sub: catch up this fix on mswin.

* tool/mkconfig.rb: fix to pass `MJIT_SUPPORT` key.

------------------------------------------------------------------------
r65216 | hsbt | 2018-10-20 16:54:58 +0900 (Sat, 20 Oct 2018) | 3 lines

Merge irb from github repository.

  * IRB::VERSION is available on irb session.
------------------------------------------------------------------------
r65215 | k0kubun | 2018-10-20 16:54:34 +0900 (Sat, 20 Oct 2018) | 3 lines

vm_insnhelper.c: never cache setinstancevariable twice

same as r65213
------------------------------------------------------------------------
r65214 | kazu | 2018-10-20 16:49:34 +0900 (Sat, 20 Oct 2018) | 1 line

Reset primary_server when remove_server
------------------------------------------------------------------------
r65213 | k0kubun | 2018-10-20 16:43:50 +0900 (Sat, 20 Oct 2018) | 14 lines

vm_insnhelper.c: never cache getinstancevariable twice

We have several options to ensure there's no race condition between main
thread and MJIT thead about IC reference:

1) Give up caching ivar for multiple classes (or multiple versions of the
   same class) in the same getinstancevariable (This commit's approach)
2) Allocate new inline cache every time

Other ideas we could think of couldn't eliminate possibilities of race
condition.
In 2, it's memory allocation would be slow and it may trigger JIT
cancellation frequently. So 1 would be fast for both VM and JIT
situations.
------------------------------------------------------------------------
r65212 | tadd | 2018-10-20 16:40:45 +0900 (Sat, 20 Oct 2018) | 1 line

fix typo.
------------------------------------------------------------------------
r65211 | hsbt | 2018-10-20 16:38:19 +0900 (Sat, 20 Oct 2018) | 4 lines

Mergr etc from github repository.

  * ext/etc/extconf.rb: It supports to generate dependency header
    on standalone gem with github repository.
------------------------------------------------------------------------
r65210 | hsbt | 2018-10-20 16:27:18 +0900 (Sat, 20 Oct 2018) | 3 lines

Merge fiddle from github repository.

  * ext/fiddle/extconf.rb: It supports to build libffi with standalone gem.
------------------------------------------------------------------------
r65209 | hsbt | 2018-10-20 16:21:14 +0900 (Sat, 20 Oct 2018) | 1 line

Cleanup fiddle extenstion when sync them from github repo.
------------------------------------------------------------------------
r65208 | svn | 2018-10-20 16:03:56 +0900 (Sat, 20 Oct 2018) | 1 line

* properties.
------------------------------------------------------------------------
r65207 | hsbt | 2018-10-20 16:03:55 +0900 (Sat, 20 Oct 2018) | 3 lines

Merge fileutils from ruby/fileutils on GitHub.

  * It was separated version file for gemspec.
------------------------------------------------------------------------
r65206 | naruse | 2018-10-20 15:56:51 +0900 (Sat, 20 Oct 2018) | 1 line

fix header_length's type to unsigned long
------------------------------------------------------------------------
r65205 | svn | 2018-10-20 15:53:11 +0900 (Sat, 20 Oct 2018) | 1 line

* append newline at EOF.
------------------------------------------------------------------------
r65204 | ko1 | 2018-10-20 15:53:00 +0900 (Sat, 20 Oct 2018) | 17 lines

add disabling MJIT features option.

* configure.ac: introduce new configure option `--enable-mjit` and
  `--disable-mjit`. Default is "enable".
  `--disable-mjit` disables all of MJIT features so that `ruby --jit`
  can't enable MJIT.
  This option affect a macro `USE_MJIT`.
  This change remove `--enable/disable-install-mjit-header` option.

* Makefile.in: introduce the `ENABLE_MJIT` variable.

* common.mk: use `ENABLE_MJIT` option.

* internal.h: respect `USE_MJIT`. Same as other *.c, *.h.

* test/ruby/test_jit.rb: check `ENABLE_MJIT` key of rbconfg.rb.

------------------------------------------------------------------------
r65203 | naruse | 2018-10-20 15:45:51 +0900 (Sat, 20 Oct 2018) | 1 line

fix r65202 on ELF environment
------------------------------------------------------------------------
r65202 | naruse | 2018-10-20 15:35:25 +0900 (Sat, 20 Oct 2018) | 1 line

Support Mach-O on backtrace with DWARF
------------------------------------------------------------------------
r65201 | naruse | 2018-10-20 15:18:41 +0900 (Sat, 20 Oct 2018) | 4 lines

Support DWARF4's .debug_line

ICC uses DWARF4 for .debug_line which adds
maximum_operations_per_instruction in its header.
------------------------------------------------------------------------
r65200 | mame | 2018-10-20 14:44:14 +0900 (Sat, 20 Oct 2018) | 4 lines

thread.c (rb_clear_coverages): defined out of #ifdef

It failed to build on windows.
https://ci.appveyor.com/project/ruby/ruby/builds/19655876
------------------------------------------------------------------------
r65199 | mame | 2018-10-20 14:44:12 +0900 (Sat, 20 Oct 2018) | 3 lines

iseq.c (rb_iseq_trace_flag_cleared): Accept size_t for type consistency

It caused "implicit conversion loses integer precision" on clang.
------------------------------------------------------------------------
r65198 | yui-knk | 2018-10-20 14:33:37 +0900 (Sat, 20 Oct 2018) | 1 line

parse.y (struct ripper_args): Remove not used struct definition
------------------------------------------------------------------------
r65197 | svn | 2018-10-20 14:33:13 +0900 (Sat, 20 Oct 2018) | 1 line

* properties.
------------------------------------------------------------------------
r65196 | svn | 2018-10-20 14:33:13 +0900 (Sat, 20 Oct 2018) | 1 line

* expand tabs.
------------------------------------------------------------------------
r65195 | mame | 2018-10-20 14:33:04 +0900 (Sat, 20 Oct 2018) | 9 lines

ext/coverage/: add the oneshot mode

This patch introduces "oneshot_lines" mode for `Coverage.start`, which
checks "whether each line was executed at least once or not", instead of
"how many times each line was executed".  A hook for each line is fired
at most once, and after it is fired, the hook flag was removed; it runs
with zero overhead.

See [Feature #15022] in detail.
------------------------------------------------------------------------
r65194 | yui-knk | 2018-10-20 13:41:19 +0900 (Sat, 20 Oct 2018) | 4 lines

ast.c: Fix the documents of `RubyVM::AST.parse` and `RubyVM::AST.parse_file`

* ast.c: r63602 fixed to raise `SyntaxError` when `RubyVM::AST.parse`
  or `RubyVM::AST.parse_file` fail to parse input.
------------------------------------------------------------------------
r65193 | hsbt | 2018-10-20 13:25:04 +0900 (Sat, 20 Oct 2018) | 3 lines

Merge Pysch-3.1.0.pre2 from ruby/psych.

  * Added deprecated warnings for the new interface of keyword argument.
------------------------------------------------------------------------
r65192 | hsbt | 2018-10-20 11:51:09 +0900 (Sat, 20 Oct 2018) | 1 line

Support keyword arguments with Pysch.safe_load provided by after Psych 3.1.0.pre1.
------------------------------------------------------------------------
r65191 | svn | 2018-10-20 11:49:23 +0900 (Sat, 20 Oct 2018) | 1 line

* expand tabs.
------------------------------------------------------------------------
r65190 | nobu | 2018-10-20 11:49:18 +0900 (Sat, 20 Oct 2018) | 5 lines

complex.c: small optimization of Complex#**

* complex.c (rb_complex_pow): calculate power of a Fixnum without
  allocating intermediate Complex objects, and avoid unexpected
  NaNs.
------------------------------------------------------------------------
r65189 | suke | 2018-10-20 11:24:21 +0900 (Sat, 20 Oct 2018) | 4 lines

try to use System Monitor Control

* test/win32ole/test_win32ole_type_event.rb: try to use System Monitor
  Control to test. ADO is not available in AppVeyor(Mingw only?)
------------------------------------------------------------------------
r65188 | k0kubun | 2018-10-20 10:10:09 +0900 (Sat, 20 Oct 2018) | 5 lines

test_win32ole_event.rb: fire message_loop on retry

because it's failing even after sleeping 31s in total.
https://ci.appveyor.com/project/ruby/ruby/builds/19642619/job/pkaj5svr8glk8twt
https://ci.appveyor.com/project/ruby/ruby/builds/19641381/job/spdvrptpaq1d5778
------------------------------------------------------------------------
r65187 | k0kubun | 2018-10-20 10:00:37 +0900 (Sat, 20 Oct 2018) | 5 lines

appveyor.yml: increase timeout for mswin

because
https://ci.appveyor.com/project/ruby/ruby/builds/19643041/job/jlqs65wsvoqdguj0
failed with timeout on vs140
------------------------------------------------------------------------
r65186 | stomar | 2018-10-20 06:37:04 +0900 (Sat, 20 Oct 2018) | 1 line

NEWS: small fixes
------------------------------------------------------------------------
r65185 | stomar | 2018-10-20 06:35:51 +0900 (Sat, 20 Oct 2018) | 1 line

array.c, file.c, string.c: [DOC] fix typos
------------------------------------------------------------------------
r65184 | stomar | 2018-10-20 06:26:15 +0900 (Sat, 20 Oct 2018) | 3 lines

array.c: improve docs for Array#difference

* array.c: [DOC] small doc fixes for Array#difference and Array#-.
------------------------------------------------------------------------
r65183 | normal | 2018-10-20 05:56:10 +0900 (Sat, 20 Oct 2018) | 3 lines

rb_execution_context_t: pack bits, 256 -> 252 bytes (on 32-bit)

Maybe execution contexts will become more common.
------------------------------------------------------------------------
r65182 | normal | 2018-10-20 05:14:41 +0900 (Sat, 20 Oct 2018) | 4 lines

rb_sigwait_sleep: change internal API to use rb_hrtime_t

rb_hrtime_t is a more pleasant type to use and this can make
future changes around sleeping/scheduling easier.
------------------------------------------------------------------------
r65181 | nobu | 2018-10-20 00:24:42 +0900 (Sat, 20 Oct 2018) | 1 line

.travis.yml: separate apt addons for i686-linux
------------------------------------------------------------------------
r65180 | svn | 2018-10-20 00:08:57 +0900 (Sat, 20 Oct 2018) | 1 line

* 2018-10-20
------------------------------------------------------------------------
r65179 | k0kubun | 2018-10-20 00:08:55 +0900 (Sat, 20 Oct 2018) | 5 lines

mjit.c: don't let MJIT.pause hang on full active units

test/ruby/test_rubyvm_mjit.rb: add reproductive test

[Bug #15071]
------------------------------------------------------------------------
r65178 | k0kubun | 2018-10-19 23:26:29 +0900 (Fri, 19 Oct 2018) | 5 lines

test/lib/jit_support.rb: continue to skip test_jit

for icc since it's not supported yet but running on rubyci.

This reverts some part of r65175, r65176 and r65177.
------------------------------------------------------------------------
r65177 | k0kubun | 2018-10-19 23:19:19 +0900 (Fri, 19 Oct 2018) | 3 lines

test_rubyoptions.rb: don't use obsoleted method

It was removed on r65175.
------------------------------------------------------------------------
r65176 | k0kubun | 2018-10-19 23:08:45 +0900 (Fri, 19 Oct 2018) | 3 lines

test_rubyvm_mjit.rb: don't use obsoleted method

It was removed on r65175.
------------------------------------------------------------------------
r65175 | k0kubun | 2018-10-19 23:03:37 +0900 (Fri, 19 Oct 2018) | 5 lines

test/lib/jit_support.rb: fire test_jit everywhere

That was a workaround to make rubyci green for a short term after the
MJIT merge. As we've done many portability fixes for MJIT, let's try
running test_jit on all rubyci platforms.
------------------------------------------------------------------------
r65174 | k0kubun | 2018-10-19 22:47:02 +0900 (Fri, 19 Oct 2018) | 3 lines

mjit_worker.c: don't compile more than max_cache_size

Prior to this commit, max_cache_size + 1 methods could be active.
------------------------------------------------------------------------
r65173 | nobu | 2018-10-19 22:11:33 +0900 (Fri, 19 Oct 2018) | 1 line

transform_mjit_header.rb: fix up r65169
------------------------------------------------------------------------
r65172 | k0kubun | 2018-10-19 22:05:05 +0900 (Fri, 19 Oct 2018) | 5 lines

appveyor.yml: use -fs for test-spec

to debug silent death on vs120 builds
https://ci.appveyor.com/project/ruby/ruby/builds/19630104/job/tm8at8kfnvwxwe58
https://ci.appveyor.com/project/ruby/ruby/builds/19631779/job/qpjanaho1lc1e5a0
------------------------------------------------------------------------
r65171 | k0kubun | 2018-10-19 21:31:02 +0900 (Fri, 19 Oct 2018) | 8 lines

configure.ac: add --disable-install-mjit-header

and substitute INSTALL_MJIT_HEADER. This would be convenient as a workaround
for user if we found a platform that can't compile Ruby after Ruby 2.6.0 release.

common.mk: Install MJIT header only when INSTALL_MJIT_HEADER
Makefile.in: ditto
win32/Makefile.sub: ditto
------------------------------------------------------------------------
r65170 | nobu | 2018-10-19 21:29:47 +0900 (Fri, 19 Oct 2018) | 1 line

transform_mjit_header.rb: `inline` may be a macro
------------------------------------------------------------------------
r65169 | nobu | 2018-10-19 21:29:46 +0900 (Fri, 19 Oct 2018) | 5 lines

transform_mjit_header.rb: add system_header pragma

* tool/transform_mjit_header.rb: insert GCC system_header pragma
  to get rid of errors caused by the contents included from system
  headers.
------------------------------------------------------------------------
r65168 | k0kubun | 2018-10-19 20:30:32 +0900 (Fri, 19 Oct 2018) | 7 lines

.travis.yml: try promoting osx to non-allow_failures

somehow it gets stable there days...

Later, we may be able to add wrapper to apply timeout appropriately
and dump threads, in case that it stucks. It's not super easy to write
it, so this commit just tries to enable osx for now.
------------------------------------------------------------------------
r65167 | shyouhei | 2018-10-19 17:46:41 +0900 (Fri, 19 Oct 2018) | 8 lines

compile.c: default_len is positive

Recent GCC warns that default_len can be negative (thus can
overflow PTRDIFF_MAX), which is a false assert.  Suppresses
warnings by adding __builtin_unreachable.

See also: https://travis-ci.org/ruby/ruby/jobs/443568193#L2227

------------------------------------------------------------------------
r65166 | shyouhei | 2018-10-19 16:48:45 +0900 (Fri, 19 Oct 2018) | 5 lines

_mjit_compile_ivar.rb: use PRIuSIZE

`ic->ic_value.index` is size_t, not always unsigned long.
See also: https://travis-ci.org/ruby/ruby/jobs/443560810#L2263

------------------------------------------------------------------------
r65165 | shyouhei | 2018-10-19 16:36:31 +0900 (Fri, 19 Oct 2018) | 5 lines

.travis.yml: delete duplicated --disable-install-doc [ci skip]

The flag was already specified inside of before_script


------------------------------------------------------------------------
r65164 | shyouhei | 2018-10-19 16:32:28 +0900 (Fri, 19 Oct 2018) | 4 lines

.travis.yml: name each builds [ci-skip]

Just cosmetic update.

------------------------------------------------------------------------
r65163 | shyouhei | 2018-10-19 16:26:48 +0900 (Fri, 19 Oct 2018) | 8 lines

.travis.yml: add i686-linux tests

This is a better-than-nothing compilation check that compiles
32bit binary on a 64bit VM.

Commented out are universal.i386-darwin17 biulds, which I think
are in very low priority.

------------------------------------------------------------------------
r65162 | ko1 | 2018-10-19 14:26:35 +0900 (Fri, 19 Oct 2018) | 5 lines

check before access.

* vm_insnhelper.c (vm_push_frame): validate prev_frame because
  prev_frame can be the end of frame.

------------------------------------------------------------------------
r65161 | shyouhei | 2018-10-19 12:33:48 +0900 (Fri, 19 Oct 2018) | 12 lines

vm_core.h: NSIG is a BSDism.

Surprisingly, this constant (been there since around 1983) has
never been a part of any standards until now.  We have to find
out the appropriate value.

NSIG_MAX is expected to become a part of forthcoming POSIX.
See: http://austingroupbugs.net/view.php?id=741

_SIG_MAXSIG is here because that is greater than NSIG. See
Python's relevant discussion: https://bugs.python.org/issue20584

------------------------------------------------------------------------
r65160 | shyouhei | 2018-10-19 11:01:46 +0900 (Fri, 19 Oct 2018) | 4 lines

addr2line.c: minimal workaround to prevent parse error

"//*" is super dangerous for non-C++ compiler.

------------------------------------------------------------------------
r65159 | shyouhei | 2018-10-19 09:35:42 +0900 (Fri, 19 Oct 2018) | 5 lines

addr2line.c: this file has no portability

It seems nobody on earth is interested in such thing for it.
Ignore compiler warnings.

------------------------------------------------------------------------
r65158 | svn | 2018-10-19 08:58:23 +0900 (Fri, 19 Oct 2018) | 1 line

* 2018-10-19
------------------------------------------------------------------------
r65157 | nobu | 2018-10-19 08:58:21 +0900 (Fri, 19 Oct 2018) | 1 line

tool/insns2vm.rb: get rid of expanding paths
------------------------------------------------------------------------
r65154 | shyouhei | 2018-10-18 18:21:05 +0900 (Thu, 18 Oct 2018) | 6 lines

configure.ac: do not overwrite -std=

Set -std=gnu99 only when no such compiler flag(s) are set in any
compiler-related environment variables.  This enables users to
specify something more modern, say,
Showing 512.00 KB of 1.58 MB. Use Edit/Download for full content.

Directory Contents

Dirs: 0 × Files: 11

Name Size Perms Modified Actions
1.25 KB lrw-r--r-- 2022-04-12 11:50:11
Edit Download
1.58 MB lrw-r--r-- 2022-04-12 11:50:11
Edit Download
2.48 KB lrw-r--r-- 2022-04-12 11:50:11
Edit Download
2.56 KB lrw-r--r-- 2022-04-12 11:50:11
Edit Download
17.67 KB lrw-r--r-- 2022-04-12 11:50:11
Edit Download
38.35 KB lrw-r--r-- 2022-04-12 11:50:11
Edit Download
18.48 KB lrw-r--r-- 2022-04-12 11:50:11
Edit Download
28 B lrw-r--r-- 2022-04-12 11:50:11
Edit Download
43 B lrw-r--r-- 2022-04-12 11:50:11
Edit Download
8.06 KB lrw-r--r-- 2022-04-12 11:50:11
Edit Download
6.04 KB lrw-r--r-- 2022-04-12 11:50:11
Edit Download

If ZipArchive is unavailable, a .tar will be created (no compression).