? GR0V Shell

GR0V shell

Linux server122.web-hosting.com 4.18.0-513.18.1.lve.el8.x86_64 #1 SMP Thu Feb 22 12:55:50 UTC 2024 x86_64

Path : /opt/alt/ruby26/share/doc/alt-ruby26/
File Upload :
Current File : //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, -std=c11.

------------------------------------------------------------------------
r65153 | shyouhei | 2018-10-18 17:58:18 +0900 (Thu, 18 Oct 2018) | 7 lines

.travis.yml: add -pedantic build (2nd try)

Now that we have allow_failures, why not add configurations
that are prone to fail.  The first thing I want to add is
$CC -ansi -pedantic, which spots lots of bugs on my local
machine.

------------------------------------------------------------------------
r65152 | shyouhei | 2018-10-18 17:39:15 +0900 (Thu, 18 Oct 2018) | 2 lines

revert r65151, because the other tests were broken.

------------------------------------------------------------------------
r65151 | shyouhei | 2018-10-18 17:33:52 +0900 (Thu, 18 Oct 2018) | 7 lines

.travis.yml: add -pedantic build

Now that we have allow_failures, why not add configurations
that are prone to fail.  The first thing I want to add is
$CC -ansi -pedantic, which spots lots of bugs on my local
machine.

------------------------------------------------------------------------
r65150 | nobu | 2018-10-18 15:36:30 +0900 (Thu, 18 Oct 2018) | 1 line

make-snapshot: package with TarHeader
------------------------------------------------------------------------
r65149 | svn | 2018-10-18 14:51:35 +0900 (Thu, 18 Oct 2018) | 1 line

* expand tabs.
------------------------------------------------------------------------
r65148 | shyouhei | 2018-10-18 14:51:29 +0900 (Thu, 18 Oct 2018) | 37 lines

fix SEGV in rb_raw_obj_info()

This funcion can be called from inside of rb_ast_new().
Should add appropriate case branches.

(lldb) run
Process 9135 launched: './miniruby' (x86_64)
Process 9135 stopped
* thread #1: tid = 0xdf36b, 0x00000001000ca4f9 miniruby`rb_raw_obj_info(buff="0x000000010205d158 [0    ] T_IMEMO", buff_size=256, obj=4328903000) + 2361 at gc.c:9617, queue = 'com.apple.main-thread', stop reason = EXC_BAD_INSTRUCTION (code=EXC_I386_INVOP, subcode=0x0)
    frame #0: 0x00000001000ca4f9 miniruby`rb_raw_obj_info(buff="0x000000010205d158 [0    ] T_IMEMO", buff_size=256, obj=4328903000) + 2361 at gc.c:9617
   9614                 IMEMO_NAME(iseq);
   9615                 IMEMO_NAME(tmpbuf);
   9616 #undef IMEMO_NAME
-> 9617               default: UNREACHABLE;
   9618             }
   9619             snprintf(buff, buff_size, "%s %s", buff, imemo_name);
   9620
(lldb) bt
* thread #1: tid = 0xdf36b, 0x00000001000ca4f9 miniruby`rb_raw_obj_info(buff="0x000000010205d158 [0    ] T_IMEMO", buff_size=256, obj=4328903000) + 2361 at gc.c:9617, queue = 'com.apple.main-thread', stop reason = EXC_BAD_INSTRUCTION (code=EXC_I386_INVOP, subcode=0x0)
  * frame #0: 0x00000001000ca4f9 miniruby`rb_raw_obj_info(buff="0x000000010205d158 [0    ] T_IMEMO", buff_size=256, obj=4328903000) + 2361 at gc.c:9617
    frame #1: 0x00000001000c433f miniruby`obj_info(obj=4328903000) + 95 at gc.c:9671
    frame #2: 0x00000001000ce2ac miniruby`newobj_init(klass=4302478608, flags=36890, v1=0, v2=0, v3=0, wb_protected=1, objspace=0x0000000101800410, obj=4328903000) + 444 at gc.c:1882
    frame #3: 0x00000001000c0a49 miniruby`newobj_of(klass=4302478608, flags=36890, v1=0, v2=0, v3=0, wb_protected=1) + 217 at gc.c:1968
    frame #4: 0x00000001000c0bcb miniruby`rb_imemo_new(type=imemo_ast, v1=0, v2=0, v3=0, v0=4302478608) + 75 at gc.c:2017
    frame #5: 0x0000000100148f2a miniruby`rb_ast_new + 58 at node.c:1118
    frame #6: 0x000000010018d9e2 miniruby`yycompile(vparser=4328903720, p=0x0000000100729670, fname=4328903160, line=1) + 98 at parse.y:4925
    frame #7: 0x000000010018d66f miniruby`parser_compile_string(vparser=4328903720, fname=4328903160, s=4328904440, line=1) + 143 at parse.y:4995
    frame #8: 0x000000010018d768 miniruby`rb_parser_compile_string_path(vparser=4328903720, f=4328903160, s=4328904440, line=1) + 56 at parse.y:5015
    frame #9: 0x000000010018d71e miniruby`rb_parser_compile_string(vparser=4328903720, f="-e", s=4328904440, line=1) + 62 at parse.y:5008
    frame #10: 0x00000001002130d5 miniruby`process_options(argc=0, argv=0x00007fff5fbfdc08, opt=0x00007fff5fbfd9e8) + 3477 at ruby.c:1754
    frame #11: 0x00000001002122dd miniruby`ruby_process_options(argc=2, argv=0x00007fff5fbfdbf8) + 285 at ruby.c:2332
    frame #12: 0x00000001000aa966 miniruby`ruby_options(argc=2, argv=0x00007fff5fbfdbf8) + 262 at eval.c:118
    frame #13: 0x0000000100000ed4 miniruby`main(argc=2, argv=0x00007fff5fbfdbf8) + 116 at main.c:42
    frame #14: 0x00007fff933845ad libdyld.dylib`start + 1
    frame #15: 0x00007fff933845ad libdyld.dylib`start + 1
(lldb)

------------------------------------------------------------------------
r65147 | nobu | 2018-10-18 11:32:25 +0900 (Thu, 18 Oct 2018) | 1 line

.travis.yml: no additional apt packages for spec/ruby [ci skip]
------------------------------------------------------------------------
r65146 | shyouhei | 2018-10-18 11:22:26 +0900 (Thu, 18 Oct 2018) | 4 lines

.travis.yml: should escape spaces

workarounds for https://github.com/travis-ci/travis-ci/issues/1444

------------------------------------------------------------------------
r65145 | shyouhei | 2018-10-18 10:56:30 +0900 (Thu, 18 Oct 2018) | 6 lines

.travis.yml: just use env

You don't have to use `before_install` to introduce
new environment variables; that is to be done using
`env` command.

------------------------------------------------------------------------
r65144 | nobu | 2018-10-18 10:52:50 +0900 (Thu, 18 Oct 2018) | 4 lines

.travis.yml: no PR in spec/ruby [ci skip]

* .travis.yml (before_script): spec/ruby has been incorporated
  already, no pull-requests to merge.
------------------------------------------------------------------------
r65143 | shyouhei | 2018-10-18 10:34:45 +0900 (Thu, 18 Oct 2018) | 2 lines

.travis.yml: fix typo in configure arguments

------------------------------------------------------------------------
r65142 | nobu | 2018-10-18 10:10:56 +0900 (Thu, 18 Oct 2018) | 5 lines

.travis.yml: split before_install into the matrix

* .travis.yml (before_install): split shell commands into the
  matrix per OSs, so that the commands will appear in the logs
  separately.
------------------------------------------------------------------------
r65141 | nobu | 2018-10-18 09:55:05 +0900 (Thu, 18 Oct 2018) | 1 line

zlib: fix Zlib::VERSION
------------------------------------------------------------------------
r65140 | usa | 2018-10-18 09:54:32 +0900 (Thu, 18 Oct 2018) | 2 lines

remove message already unnecesary

------------------------------------------------------------------------
r65139 | rhe | 2018-10-18 09:24:49 +0900 (Thu, 18 Oct 2018) | 13 lines

openssl: sync with upstream repository

Import current master (01b23fa8eee2) of ruby/openssl.git.

----------------------------------------------------------------
Kazuki Yamaguchi (3):
      x509name: fix OpenSSL::X509::Name#{cmp,<=>}
      Ruby/OpenSSL 2.0.9
      Ruby/OpenSSL 2.1.2

nobu (2):
      needs openssl/opensslv.h
      Remove -Wno-parentheses flag.
------------------------------------------------------------------------
r65138 | k0kubun | 2018-10-18 00:42:34 +0900 (Thu, 18 Oct 2018) | 7 lines

.travis.yml: revert r65131 too

because it succeeded https://travis-ci.org/ruby/ruby/jobs/442733840.

It looks that it randomly succeeds. Let's just leave it and see how
stable it is, starting from `allow_failures` because it hasn't hanged
only once so far.
------------------------------------------------------------------------
r65131 | k0kubun | 2018-10-18 00:13:36 +0900 (Thu, 18 Oct 2018) | 7 lines

revert r65124 and try non-parallel test-all on osx

OpenSSL error was fixed but r65124 hanged too
https://travis-ci.org/ruby/ruby/jobs/442727035.

So it seems to be an independent issue.
Let me try removing -j.
------------------------------------------------------------------------
r65127 | svn | 2018-10-18 00:03:12 +0900 (Thu, 18 Oct 2018) | 1 line

* 2018-10-18
------------------------------------------------------------------------
r65126 | svn | 2018-10-18 00:03:11 +0900 (Thu, 18 Oct 2018) | 1 line

* expand tabs.
------------------------------------------------------------------------
r65125 | nagachika | 2018-10-18 00:03:10 +0900 (Thu, 18 Oct 2018) | 6 lines

infect taint flag on Array#pack and String#unpack
with the directives "B", "b", "H" and "h".

	* pack.c (pack_pack, pack_unpack_internal): infect taint flag.

	* test/ruby/test_pack.rb: add test for above.
------------------------------------------------------------------------
r65124 | k0kubun | 2018-10-17 23:50:35 +0900 (Wed, 17 Oct 2018) | 5 lines

.travis.yml: try openssl stable version

macOS build is handing on OpenSSL::SSL::SSLError https://travis-ci.org/ruby/ruby/jobs/442706479
Now 1.0.2p is stable version https://formulae.brew.sh/formula/openssl,
so let me try that version to make CI green
------------------------------------------------------------------------
r65123 | mame | 2018-10-17 23:35:02 +0900 (Wed, 17 Oct 2018) | 7 lines

sample/trick2018/03-tompng: merge upstream fixes

* Remove `ruby '2.5.0'`
* Add `source 'https://rubygems.org'`
* Avoid `Kernel#Integer`

Thanks to tompng.  Fixes #14930.
------------------------------------------------------------------------
r65122 | shyouhei | 2018-10-17 23:09:24 +0900 (Wed, 17 Oct 2018) | 5 lines

.travis.yml: enhance build matrix

add OS=osx compiler=clang build matrix so that we can make sure
things are built smoothly on that platform.

------------------------------------------------------------------------
r65121 | nobu | 2018-10-17 20:35:28 +0900 (Wed, 17 Oct 2018) | 4 lines

NEWS in rdoc mode [ci skip]

* NEWS: reverted to rdoc mode.  markdown mode does not make
  class/module/method references in HTML.
------------------------------------------------------------------------
r65120 | nobu | 2018-10-17 20:35:27 +0900 (Wed, 17 Oct 2018) | 5 lines

Fix NEWS format [ci skip]

* doc/NEWS-2.5.0: append bracketed tags to the previous lines, not
  to be parsed as description lists, and expand braces for method
  references.
------------------------------------------------------------------------
r65108 | svn | 2018-10-17 16:16:58 +0900 (Wed, 17 Oct 2018) | 1 line

* expand tabs.
------------------------------------------------------------------------
r65107 | mame | 2018-10-17 16:16:50 +0900 (Wed, 17 Oct 2018) | 3 lines

Remove the level information from throw instruction

It is no longer used.
------------------------------------------------------------------------
r65106 | aycabta | 2018-10-17 15:28:20 +0900 (Wed, 17 Oct 2018) | 1 line

Merge rdoc-6.1.0.beta2
------------------------------------------------------------------------
r65105 | naruse | 2018-10-17 10:29:49 +0900 (Wed, 17 Oct 2018) | 1 line

Check the end of Compilation Unit by unit length instead of level of tree
------------------------------------------------------------------------
r65104 | naruse | 2018-10-17 08:57:47 +0900 (Wed, 17 Oct 2018) | 1 line

Support base address selection entry
------------------------------------------------------------------------
r65103 | naruse | 2018-10-17 08:52:28 +0900 (Wed, 17 Oct 2018) | 4 lines

Correct the handling of .debug_ranges

Though DWARF specifies "the applicable base address defaults to the base
address of the compilation unit", but GCC seems to use zero as default.
------------------------------------------------------------------------
r65102 | naruse | 2018-10-17 08:52:28 +0900 (Wed, 17 Oct 2018) | 1 line

The value of .debug_ranges are uintptr_t
------------------------------------------------------------------------
r65101 | naruse | 2018-10-17 08:52:26 +0900 (Wed, 17 Oct 2018) | 1 line

If high_pc uses DW_FORM_addr, it's not size but address
------------------------------------------------------------------------
r65099 | svn | 2018-10-17 07:42:39 +0900 (Wed, 17 Oct 2018) | 1 line

* 2018-10-17
------------------------------------------------------------------------
r65098 | marcandre | 2018-10-17 07:42:37 +0900 (Wed, 17 Oct 2018) | 2 lines

Spec: Fix spec/ruby/core/array/reject_spec.rb & misc
Patch by @MSP-Greg.
------------------------------------------------------------------------
r65097 | k0kubun | 2018-10-16 18:29:23 +0900 (Tue, 16 Oct 2018) | 4 lines

tool/downloader.rb: retry Net::ReadTimeout

as failed in
https://ci.appveyor.com/project/ruby/ruby/builds/19540849/job/9p9pq0b7hfrb2r8q
------------------------------------------------------------------------
r65096 | nobu | 2018-10-16 18:11:12 +0900 (Tue, 16 Oct 2018) | 4 lines

string.c: grapheme cluster regexp failure

* string.c (get_reg_grapheme_cluster): show error info and relax
  to rb_fatal from rb_bug.
------------------------------------------------------------------------
r65095 | nobu | 2018-10-16 18:10:56 +0900 (Tue, 16 Oct 2018) | 1 line

regerror.c: lenghten MAX_ERROR_PAR_LEN to contain old property names
------------------------------------------------------------------------
r65094 | nobu | 2018-10-16 17:13:58 +0900 (Tue, 16 Oct 2018) | 1 line

regparse.c: check the result of propname2ctype
------------------------------------------------------------------------
r65093 | duerst | 2018-10-16 16:53:37 +0900 (Tue, 16 Oct 2018) | 2 lines

revert r65091, r65090 because ci fails

------------------------------------------------------------------------
r65092 | naruse | 2018-10-16 16:12:26 +0900 (Tue, 16 Oct 2018) | 1 line

check dwarf version and skip non Dwarf v4
------------------------------------------------------------------------
r65091 | duerst | 2018-10-16 16:01:55 +0900 (Tue, 16 Oct 2018) | 12 lines

update to Unicode 11.0.0 (basic step, not complete yet)

- common.mk: Change Unicode version to 11.0.0
- enc/unicode/case-folding.rb, enc/unicode.c: Initial changes to deal with
  Gregorian Mtavruli. This should bring us up to the same level as e.g.
  Python 3.7, by following the Unicode tables exactly. But it will
  produce undesirable (mixed-case) results for String#capitalize.
  This will be addressed in a later commit.
- enc/unicode/11.0.0, enc/unicode/11.0.0/casefold.h, enc/unicode/name2ctype.h:
  Add generated files.
- lib/unicode_normalize/tables.rb: Updated table.

------------------------------------------------------------------------
r65090 | duerst | 2018-10-16 15:41:47 +0900 (Tue, 16 Oct 2018) | 2 lines

add some comments to enc/unicode/case-folding.rb [ci skip]

------------------------------------------------------------------------
r65089 | svn | 2018-10-16 14:15:01 +0900 (Tue, 16 Oct 2018) | 1 line

* 2018-10-16
------------------------------------------------------------------------
r65088 | nobu | 2018-10-16 14:14:59 +0900 (Tue, 16 Oct 2018) | 1 line

Removed data for old Unicode [ci skip]
------------------------------------------------------------------------
r65087 | nobu | 2018-10-15 22:48:20 +0900 (Mon, 15 Oct 2018) | 4 lines

unicode.c: moved addtional GCB ranges

* enc/unicode.c: moved additional Grapheme Cluster Break ranges
  which depend on the Unicode version.
------------------------------------------------------------------------
r65086 | nobu | 2018-10-15 21:31:25 +0900 (Mon, 15 Oct 2018) | 5 lines

regparse.c: Suppress duplicated range warning by mere \X

* regparse.c (node_extended_grapheme_cluster): as Unicode 10 has
  added Grapheme_Cluster_Break properties to some characters,
  remove duplicated ranges for Unicode 9.
------------------------------------------------------------------------
r65085 | nobu | 2018-10-15 21:31:22 +0900 (Mon, 15 Oct 2018) | 1 line

regparse.c: warn all duplicated ranges when debugging
------------------------------------------------------------------------
r65084 | k0kubun | 2018-10-15 19:03:57 +0900 (Mon, 15 Oct 2018) | 4 lines

.travis.yml: try `addons.apt.config.retries: true` as well

This is suggested by Travis
https://github.com/travis-ci/travis-ci/issues/9112#issuecomment-376305909
------------------------------------------------------------------------
r65083 | k0kubun | 2018-10-15 18:51:32 +0900 (Mon, 15 Oct 2018) | 4 lines

.travis.yml: try `addons.apt.update: true` for gcc-8

because gcc-8 setup is super unstable like this
https://travis-ci.org/ruby/ruby/jobs/441528813
------------------------------------------------------------------------
r65082 | shyouhei | 2018-10-15 13:05:32 +0900 (Mon, 15 Oct 2018) | 5 lines

detect clang++

Given $CC is clang-* in this case branch the sed should
match against clang, not gcc.

------------------------------------------------------------------------
r65081 | nobu | 2018-10-15 09:11:45 +0900 (Mon, 15 Oct 2018) | 1 line

Pass cflags given to configure to mjit
------------------------------------------------------------------------
r65080 | nobu | 2018-10-15 08:45:33 +0900 (Mon, 15 Oct 2018) | 1 line

Moved hexdump macro before used
------------------------------------------------------------------------
r65079 | nobu | 2018-10-15 08:40:27 +0900 (Mon, 15 Oct 2018) | 1 line

Make local functions static
------------------------------------------------------------------------
r65078 | svn | 2018-10-15 01:59:16 +0900 (Mon, 15 Oct 2018) | 1 line

* 2018-10-15
------------------------------------------------------------------------
r65077 | naruse | 2018-10-15 01:59:15 +0900 (Mon, 15 Oct 2018) | 1 line

Read debug_info to show inline functions in backtrace
------------------------------------------------------------------------
r65076 | k0kubun | 2018-10-14 22:25:21 +0900 (Sun, 14 Oct 2018) | 25 lines

_mjit_compile_ivar.erb: optimize setivar as well

mjit_compile.inc.erb: ditto
common.mk: update dependency for the rename from getivar.erb

=== Optcarrot benchmark ===
```
$ benchmark-driver benchmark.yml --rbenv '2.0.0::2.0.0-p648 --disable-gems;before::before --disable-gems;before+JIT::before --disable-gems --jit;after::after --disable-gems;after+JIT::after --disable-gems --jit' -v --repeat-count 24
2.0.0: ruby 2.0.0p648 (2015-12-16 revision 53162) [x86_64-linux]
before: ruby 2.6.0dev (2018-10-14 trunk 65074) [x86_64-linux]
before+JIT: ruby 2.6.0dev (2018-10-14 trunk 65074) +JIT [x86_64-linux]
after: ruby 2.6.0dev (2018-10-14 trunk 65074) [x86_64-linux]
after+JIT: ruby 2.6.0dev (2018-10-14 trunk 65074) +JIT [x86_64-linux]
Calculating -------------------------------------
                              2.0.0      before  before+JIT       after   after+JIT
Optcarrot Lan_Master.nes     34.434      53.125      84.782      53.321      86.812 fps

Comparison:
             Optcarrot Lan_Master.nes
               after+JIT:        86.8 fps
              before+JIT:        84.8 fps - 1.02x  slower
                   after:        53.3 fps - 1.63x  slower
                  before:        53.1 fps - 1.63x  slower
                   2.0.0:        34.4 fps - 2.52x  slower
```
------------------------------------------------------------------------
r65075 | k0kubun | 2018-10-14 20:50:52 +0900 (Sun, 14 Oct 2018) | 3 lines

_mjit_compile_getivar.erb: we may not say receiver [ci skip]

for instance variable access, unlike method call.
------------------------------------------------------------------------
r65074 | k0kubun | 2018-10-14 20:25:36 +0900 (Sun, 14 Oct 2018) | 7 lines

vm_opts.h: share USE_IC_FOR_IVAR as OPT_IC_FOR_IVAR

with mjit_compile.c (tool/ruby_vm/views/_mjit_compile_getivar.erb).

mjit_compile.c: ditto
tool/ruby_vm/views/_mjit_compile_getivar.erb: ditto
vm_opts.h: ditto
------------------------------------------------------------------------
r65073 | k0kubun | 2018-10-14 18:24:43 +0900 (Sun, 14 Oct 2018) | 34 lines

_mjit_compile_getivar.erb: optimize IC-hit getivar

by inlining index (and serial to invalidate that) and simplifying the
branch by using JIT cancellation.

mjit_compile.inc.erb: use the above file
mjit_compile.c: copy USE_IC_FOR_IVAR definition. will move this to
another shared file later.
common.mk: add new dependency
test/ruby/test_jit.rb: cover this case

=== Optcarrot benchmark ===
```
$ benchmark-driver benchmark.yml --rbenv '2.0.0::2.0.0-p648;before::before --disable-gems;before+JIT::before --disable-gems --jit;after::after --disable-gems;after+JIT::after --disable-gems --jit' -v --repeat-count 24
2.0.0: ruby 2.0.0p648 (2015-12-16 revision 53162) [x86_64-linux]
before: ruby 2.6.0dev (2018-10-14 trunk 65072) [x86_64-linux]
before+JIT: ruby 2.6.0dev (2018-10-14 trunk 65072) +JIT [x86_64-linux]
after: ruby 2.6.0dev (2018-10-14 trunk 65072) [x86_64-linux]
last_commit=_mjit_compile_getivar.erb: optimize IC-hit getivar
after+JIT: ruby 2.6.0dev (2018-10-14 trunk 65072) +JIT [x86_64-linux]
last_commit=_mjit_compile_getivar.erb: optimize IC-hit getivar
Calculating -------------------------------------
                              2.0.0      before  before+JIT       after   after+JIT
Optcarrot Lan_Master.nes     36.065      53.896      71.565      53.856      84.747 fps

Comparison:
             Optcarrot Lan_Master.nes
               after+JIT:        84.7 fps
              before+JIT:        71.6 fps - 1.18x  slower
                  before:        53.9 fps - 1.57x  slower
                   after:        53.9 fps - 1.57x  slower
                   2.0.0:        36.1 fps - 2.35x  slower

```
------------------------------------------------------------------------
r65072 | k0kubun | 2018-10-14 14:50:06 +0900 (Sun, 14 Oct 2018) | 3 lines

vm_insnhelper.c: remove obsoleted comment [ci skip]

see also: r65061
------------------------------------------------------------------------
r65071 | k0kubun | 2018-10-14 10:24:21 +0900 (Sun, 14 Oct 2018) | 5 lines

appveyor.yml: test open-uri separately

This randomly crashes test worker
https://ci.appveyor.com/project/ruby/ruby/builds/19488746/job/pf1c78dlh8lqcj06
and running it without -j is suggested.
------------------------------------------------------------------------
r65070 | stomar | 2018-10-14 05:53:56 +0900 (Sun, 14 Oct 2018) | 1 line

NEWS: Hash#update! does not exist
------------------------------------------------------------------------
r65069 | stomar | 2018-10-14 05:36:03 +0900 (Sun, 14 Oct 2018) | 7 lines

hash.c: improve docs for Hash#{merge,merge!,update}

* hash.c: [DOC] improve docs for Hash#{merge,merge!,update}:
  various rewordings, avoid referring to the receiver as `hsh'
  (does not appear in the call-seq of the generated HTML docs),
  mention that Hash#update is an alias for Hash#merge!,
  use more distinct example values, fix spacing in code.
------------------------------------------------------------------------
r65068 | stomar | 2018-10-14 04:04:02 +0900 (Sun, 14 Oct 2018) | 1 line

string.c: [DOC] add example code for String#strip!
------------------------------------------------------------------------
r65067 | stomar | 2018-10-14 04:02:51 +0900 (Sun, 14 Oct 2018) | 4 lines

string.c: small doc improvement

* string.c: [DOC] move unaltered case for String#strip to the end,
  similar to other strip methods.
------------------------------------------------------------------------
r65066 | stomar | 2018-10-14 04:01:22 +0900 (Sun, 14 Oct 2018) | 4 lines

array.c: fix rdoc syntax

* array.c: [DOC] use `<code>other_ary</code>s' instead of `+other_ary+s',
  which is not rendered correctly.
------------------------------------------------------------------------
r65065 | svn | 2018-10-14 01:21:10 +0900 (Sun, 14 Oct 2018) | 1 line

* 2018-10-14
------------------------------------------------------------------------
r65064 | nobu | 2018-10-14 01:21:07 +0900 (Sun, 14 Oct 2018) | 1 line

Define PRIdPTR etc
------------------------------------------------------------------------
r65063 | nobu | 2018-10-14 01:21:06 +0900 (Sun, 14 Oct 2018) | 1 line

Remove compile-time dependencies on ruby/version.h
------------------------------------------------------------------------
r65062 | k0kubun | 2018-10-13 23:49:41 +0900 (Sat, 13 Oct 2018) | 4 lines

vm_insinhelper.c: prefer using inlinable function

No major performance impact, but just in case for some platform
that matters.
------------------------------------------------------------------------
r65061 | k0kubun | 2018-10-13 23:03:48 +0900 (Sat, 13 Oct 2018) | 4 lines

vm_insnhelper.c: finish reverting r63333

That optimization is already reverted and we're not retrying the
optimization soon. Let me simplify the code of vm_getivar.
------------------------------------------------------------------------
r65060 | nobu | 2018-10-13 18:59:23 +0900 (Sat, 13 Oct 2018) | 1 line

Add missing require
------------------------------------------------------------------------
r65059 | nobu | 2018-10-13 18:59:22 +0900 (Sat, 13 Oct 2018) | 4 lines

Prefer `rb_fstring_lit` over `rb_fstring_cstr`

The former states explicitly that the argument must be a literal,
and can optimize away `strlen` on all compilers.
------------------------------------------------------------------------
r65058 | nobu | 2018-10-13 18:23:56 +0900 (Sat, 13 Oct 2018) | 5 lines

Added comments to rb_setup_fake_str and rb_fstring_new [ci skip]

`ptr` for these functions must refer constant string literals.
Otherwise, the result string's content can be modified/discarded
unexpectedly.
------------------------------------------------------------------------
r65057 | svn | 2018-10-13 14:36:51 +0900 (Sat, 13 Oct 2018) | 1 line

* expand tabs.
------------------------------------------------------------------------
r65056 | normal | 2018-10-13 14:36:50 +0900 (Sat, 13 Oct 2018) | 3 lines

addr2line.c: fix *printf type warnings on 32-bit

Yup, back to using an ancient 32-bit system...
------------------------------------------------------------------------
r65055 | normal | 2018-10-13 14:18:49 +0900 (Sat, 13 Oct 2018) | 4 lines

tests: support Linux kernels with CONFIG_IPV6=n

Detecting the presence of constants in C headers is insufficient,
as a Linux kernel can be built with CONFIG_IPV6=n
------------------------------------------------------------------------
r65054 | svn | 2018-10-13 12:18:44 +0900 (Sat, 13 Oct 2018) | 1 line

* properties.
------------------------------------------------------------------------
r65053 | suke | 2018-10-13 12:18:42 +0900 (Sat, 13 Oct 2018) | 7 lines

use ADODB.Connection instead of Microsoft Internet Controls.

  * test/win32ole/test_win32ole_type.rb: remove test using Microsoft
    Internet Controls.

  * test/win32ole/test_win32ole_type_event.rb: some test uses
    ADODB.Connection.
------------------------------------------------------------------------
r65052 | k0kubun | 2018-10-13 10:47:55 +0900 (Sat, 13 Oct 2018) | 6 lines

appveyor.yml: reorder jobs

to reduce time to get all green. As we have 3 parallelism on AppVeyor,
running the slow msys2 job first doesn't have significant impact on
job priorities, but at the same time this would reduce the time that
only msys2 is running alone at last.
------------------------------------------------------------------------
r65051 | k0kubun | 2018-10-13 10:32:20 +0900 (Sat, 13 Oct 2018) | 1 line

win32/win32.c: fix typo in comment [ci skip]
------------------------------------------------------------------------
r65050 | k0kubun | 2018-10-13 09:38:15 +0900 (Sat, 13 Oct 2018) | 7 lines

kill_spec.rb: exclude spec unstable on MinGW

like r64991, until we get helpful error logs on worker death or the
unstability is fixed.

Since mspec worker randomly dies on MinGW, maybe it should have an
option to retry worker death.
------------------------------------------------------------------------
r65049 | k0kubun | 2018-10-13 09:25:58 +0900 (Sat, 13 Oct 2018) | 3 lines

win32/win32.c: I meant FindFreeChildSlot [ci skip]

which was formerly used in CreateChild.
------------------------------------------------------------------------
r65048 | k0kubun | 2018-10-13 09:22:18 +0900 (Sat, 13 Oct 2018) | 4 lines

win32/win32.c: don't call FindChildSlot in MJIT

worker. It's very likely to be thread-unsafe and so it's better to avoid
using in MJIT worker to prevent surprises by race condition.
------------------------------------------------------------------------
r65047 | svn | 2018-10-13 09:22:00 +0900 (Sat, 13 Oct 2018) | 1 line

* properties.
------------------------------------------------------------------------
r65046 | suke | 2018-10-13 09:21:59 +0900 (Sat, 13 Oct 2018) | 5 lines

remove Microsoft Internet Control

* test/win32ole/test_win32ole_param: remove Microsoft Internet Control.
* test/win32ole/test_win32ole_param_event: use ADODB instead of
  Microsoft Internet Control for test_input?, test_output?
------------------------------------------------------------------------
r65045 | svn | 2018-10-13 08:57:44 +0900 (Sat, 13 Oct 2018) | 1 line

* expand tabs.
------------------------------------------------------------------------
r65044 | k0kubun | 2018-10-13 08:57:42 +0900 (Sat, 13 Oct 2018) | 7 lines

win32/win32.c: drop always-NULL psa parameter

I'm simplifying the interface of ChildRecord as I'm going to complicate
it a little next.

I didn't drop hInput since leaving it would be more natural as its
interface.
------------------------------------------------------------------------
r65043 | suke | 2018-10-13 08:07:48 +0900 (Sat, 13 Oct 2018) | 4 lines

use assert_equal instead of assert

* test/win32ole/test_win32ole_param.rb (test_input?, test_output,
  test_optional, test_retval?): use assert_equal instead of assert.
------------------------------------------------------------------------
r65042 | stomar | 2018-10-13 06:55:49 +0900 (Sat, 13 Oct 2018) | 1 line

enumerator.c: [DOC] small fix
------------------------------------------------------------------------
r65041 | stomar | 2018-10-13 06:11:54 +0900 (Sat, 13 Oct 2018) | 1 line

range.c: [DOC] improve docs for Range#cover?
------------------------------------------------------------------------
r65040 | stomar | 2018-10-13 05:37:30 +0900 (Sat, 13 Oct 2018) | 4 lines

readline.c: improve docs

* ext/readline/readline.c: [DOC] fix typo in docs for
  Readline.completion_quote_character; enable link to method.
------------------------------------------------------------------------
r65039 | stomar | 2018-10-13 05:01:52 +0900 (Sat, 13 Oct 2018) | 1 line

process.c: [DOC] improve docs for Process.groups
------------------------------------------------------------------------
r65038 | stomar | 2018-10-13 05:00:13 +0900 (Sat, 13 Oct 2018) | 1 line

vm.c: [DOC] small improvements
------------------------------------------------------------------------
r65037 | stomar | 2018-10-13 04:58:11 +0900 (Sat, 13 Oct 2018) | 10 lines

default gems: add missing comment in gemspec

* lib/csv/csv.gemspec: [DOC] add comment for require fallback
  in Ruby repository.

* lib/logger.gemspec: ditto.
* lib/prime.gemspec: ditto.
* lib/rexml/rexml.gemspec: ditto.
* lib/rss/rss.gemspec: ditto.
* lib/webrick/webrick.gemspec: ditto.
------------------------------------------------------------------------
r65036 | stomar | 2018-10-13 04:56:53 +0900 (Sat, 13 Oct 2018) | 4 lines

hash.c: improve docs for Hash#{size,length}

* hash.c: [DOC] shorten example code for Hash#{size,length}
  and mention aliases at the end; also enable links.
------------------------------------------------------------------------
r65035 | nobu | 2018-10-13 00:48:06 +0900 (Sat, 13 Oct 2018) | 8 lines

Fix overwritten zone string

* time.c (zone_str): while rb_fstring_usascii and the family
  require that the argument string is never modified, tzname may
  point areas which will be discarded by calling tzset().
  make a String then call rb_fstring to copy the zone name.
  when an ID equals TZ environment variable, its name string also
  has modified by changing tzname.
------------------------------------------------------------------------
r65034 | svn | 2018-10-13 00:14:55 +0900 (Sat, 13 Oct 2018) | 1 line

* 2018-10-13
------------------------------------------------------------------------
r65033 | k0kubun | 2018-10-13 00:14:51 +0900 (Sat, 13 Oct 2018) | 15 lines

mjit_worker.c: suppress child process's output properly

Prior to this commit, some of parent process's output was unintentionally
suppressed. We couldn't suppress only child process's output with spawnvp.

Instead of that, this commit uses CreateProcess directly to redirect stdout
and stderr only for child process.

As it's dealing with HANDLE returned from CreateProcess, now waitpid macro
needs to CloseHandle it.

win32/win32.c: Introduce rb_w32_start_process which is designed for MJIT
worker. Other similar functions can't be used since they are using ALLOCV
that may trigger GC, which should be avoided on MJIT worker.

------------------------------------------------------------------------
r65032 | suke | 2018-10-12 22:51:21 +0900 (Fri, 12 Oct 2018) | 1 line

remove duplicate assertion
------------------------------------------------------------------------
r65031 | nobu | 2018-10-12 21:54:21 +0900 (Fri, 12 Oct 2018) | 4 lines

Removed unreachable code

* node.c (rb_ast_dispose): since `ast->node_buffer` is freed in
  `rb_ast_free()`, it should be always NULL.
------------------------------------------------------------------------
r65030 | k0kubun | 2018-10-12 18:19:49 +0900 (Fri, 12 Oct 2018) | 10 lines

test/win32ole/test_win32ole_event.rb: wait longer

for unstable spec. I added r64963 but it couldn't rescue:
https://ci.appveyor.com/project/ruby/ruby/builds/19451743/job/hg0tyoxbacrrlnsr

Since #test_on_event is especially unstable,
https://ci.appveyor.com/project/ruby/ruby/builds/19337514/job/0wp2oe9dkr9gt1bi
https://ci.appveyor.com/project/ruby/ruby/builds/19451743/job/hg0tyoxbacrrlnsr
this commit lets it sleep longer as needed.

------------------------------------------------------------------------
r65029 | naruse | 2018-10-12 17:45:05 +0900 (Fri, 12 Oct 2018) | 1 line

Disable fast_finish
------------------------------------------------------------------------
r65028 | svn | 2018-10-12 12:55:22 +0900 (Fri, 12 Oct 2018) | 1 line

* properties.
------------------------------------------------------------------------
r65027 | suke | 2018-10-12 12:55:21 +0900 (Fri, 12 Oct 2018) | 7 lines

use ADODB.connection instead of Microsoft Internet Controls

  * test/win32ole/test_win32ole_method.rb: remove test using Microsoft
    Internet Controls.

  * test/win32ole/test_win32ole_method_event.rb: add test using
    ADODB.connection.
------------------------------------------------------------------------
r65026 | nobu | 2018-10-12 11:49:39 +0900 (Fri, 12 Oct 2018) | 1 line

Initialize zone
------------------------------------------------------------------------
r65025 | nobu | 2018-10-12 11:25:38 +0900 (Fri, 12 Oct 2018) | 1 line

Load as FIXOFF mode if zone is present
------------------------------------------------------------------------
r65024 | nobu | 2018-10-12 11:25:37 +0900 (Fri, 12 Oct 2018) | 1 line

Just copy tzmode
------------------------------------------------------------------------
r65023 | nobu | 2018-10-12 11:22:55 +0900 (Fri, 12 Oct 2018) | 3 lines

Missing write-barrier

Fix up r64507.
------------------------------------------------------------------------
r65022 | naruse | 2018-10-12 10:21:45 +0900 (Fri, 12 Oct 2018) | 1 line

Remove debug print
------------------------------------------------------------------------
r65021 | naruse | 2018-10-12 09:45:07 +0900 (Fri, 12 Oct 2018) | 1 line

use APPVEYOR_BUILD_WORKER_IMAGE
------------------------------------------------------------------------
r65020 | naruse | 2018-10-12 09:31:24 +0900 (Fri, 12 Oct 2018) | 1 line

escape
------------------------------------------------------------------------
r65019 | naruse | 2018-10-12 09:25:41 +0900 (Fri, 12 Oct 2018) | 1 line

Quote path
------------------------------------------------------------------------
r65018 | naruse | 2018-10-12 09:20:14 +0900 (Fri, 12 Oct 2018) | 1 line

debug print
------------------------------------------------------------------------
r65017 | naruse | 2018-10-12 09:09:19 +0900 (Fri, 12 Oct 2018) | 1 line

Define VS140COMNTOOLS by itself
------------------------------------------------------------------------
r65016 | naruse | 2018-10-12 08:59:09 +0900 (Fri, 12 Oct 2018) | 1 line

Specify vm image on appveyor.yml
------------------------------------------------------------------------
r65015 | svn | 2018-10-12 08:58:21 +0900 (Fri, 12 Oct 2018) | 1 line

* expand tabs.
------------------------------------------------------------------------
r65014 | naruse | 2018-10-12 08:58:20 +0900 (Fri, 12 Oct 2018) | 1 line

Revert wrongly commit debug_info feature
------------------------------------------------------------------------
r65013 | naruse | 2018-10-12 08:55:47 +0900 (Fri, 12 Oct 2018) | 1 line

Support FreeBSD
------------------------------------------------------------------------
r65012 | naruse | 2018-10-12 08:55:47 +0900 (Fri, 12 Oct 2018) | 1 line

Support compressed debug_info
------------------------------------------------------------------------
r65011 | naruse | 2018-10-12 08:55:46 +0900 (Fri, 12 Oct 2018) | 1 line

free line info leaves
------------------------------------------------------------------------
r65010 | naruse | 2018-10-12 08:55:45 +0900 (Fri, 12 Oct 2018) | 1 line

close dlopen-ed handle
------------------------------------------------------------------------
r65009 | naruse | 2018-10-12 08:55:45 +0900 (Fri, 12 Oct 2018) | 1 line

fix
------------------------------------------------------------------------
r65008 | naruse | 2018-10-12 08:55:44 +0900 (Fri, 12 Oct 2018) | 1 line

Support additional forms
------------------------------------------------------------------------
r65007 | naruse | 2018-10-12 08:55:44 +0900 (Fri, 12 Oct 2018) | 1 line

Show backtrace with .debug_info
------------------------------------------------------------------------
r65006 | naruse | 2018-10-12 08:55:43 +0900 (Fri, 12 Oct 2018) | 1 line

Read .debug_info
------------------------------------------------------------------------
r65005 | naruse | 2018-10-12 08:23:16 +0900 (Fri, 12 Oct 2018) | 1 line

show envvars before use it
------------------------------------------------------------------------
r65004 | naruse | 2018-10-12 08:21:11 +0900 (Fri, 12 Oct 2018) | 1 line

Show VS*COMNTOOLS environment variable on appveyor
------------------------------------------------------------------------
r65003 | k0kubun | 2018-10-12 01:28:04 +0900 (Fri, 12 Oct 2018) | 8 lines

win32/Makefile.sub: generate MJIT header pdb

in the MJIT-header-specific path, not default path like vc140.pdb.

mjit_worker.c: specify the MJIT-header-specific pdb path.

tool/rbinstall.rb: install MJIT header pdb as well.

------------------------------------------------------------------------
r65001 | svn | 2018-10-12 00:02:00 +0900 (Fri, 12 Oct 2018) | 1 line

* 2018-10-12
------------------------------------------------------------------------
r65000 | k0kubun | 2018-10-12 00:01:56 +0900 (Fri, 12 Oct 2018) | 8 lines

win32/Makefile.sub: install MJIT header and object

to prefix. This is a retry of r64947. So this doesn't still make mswin MJIT
on install directory succeed. One more step required.

tool/rbinstall.rb: This change is needed to install headers correctly since
the extensions are .obj and .pch, not .h

------------------------------------------------------------------------
r64995 | svn | 2018-10-11 10:03:07 +0900 (Thu, 11 Oct 2018) | 1 line

* 2018-10-11
------------------------------------------------------------------------
r64994 | mame | 2018-10-11 10:03:05 +0900 (Thu, 11 Oct 2018) | 3 lines

prelude.rb (Kernel#pp): make it private

It was a bug.
------------------------------------------------------------------------
r64993 | k0kubun | 2018-10-10 20:58:40 +0900 (Wed, 10 Oct 2018) | 6 lines

spec/.../ole_method.rb: retry WIN32OLERuntimeError

This part sometimes causes random failure like:
https://ci.appveyor.com/project/ruby/ruby/builds/19382723/job/bedc33p4nolcqkp6

Let me retry this to make CI stable.
------------------------------------------------------------------------
r64992 | k0kubun | 2018-10-10 20:39:46 +0900 (Wed, 10 Oct 2018) | 3 lines

spec: add comments to re-enable specs for MinGW [ci skip]

r64918 and r64988 should not be kept forever.
------------------------------------------------------------------------
r64991 | k0kubun | 2018-10-10 20:35:58 +0900 (Wed, 10 Oct 2018) | 7 lines

terminate_spec.rb: exclude unstable spec for MinGW

This spec seems to randomly kill mspec worker.
https://ci.appveyor.com/project/ruby/ruby/builds/19390874/job/wv1bsm8skd4e1pxl

To make CI stable, let me exclude this for MinGW until we get some logs
that help debugging or resolve that.
------------------------------------------------------------------------
r64990 | svn | 2018-10-10 13:24:11 +0900 (Wed, 10 Oct 2018) | 1 line

* expand tabs.
------------------------------------------------------------------------
r64989 | ko1 | 2018-10-10 13:24:10 +0900 (Wed, 10 Oct 2018) | 5 lines

revisit `RARRAY_PTR()`.

* ext/fiddle/function.c (initialize): use RARRAY_AREF() instead of
  using RARRAY_PTR().

------------------------------------------------------------------------
r64988 | svn | 2018-10-10 13:20:21 +0900 (Wed, 10 Oct 2018) | 1 line

* expand tabs.
------------------------------------------------------------------------
r64987 | ko1 | 2018-10-10 13:20:17 +0900 (Wed, 10 Oct 2018) | 5 lines

revisit `RARRAY_PTR()`.

* process.c (check_exec_redirect): use RARRAY_AREF() instead of
  using RARRAY_PTR().

------------------------------------------------------------------------
r64986 | ko1 | 2018-10-10 13:17:01 +0900 (Wed, 10 Oct 2018) | 12 lines

revisit `RARRAY_PTR()`.

* array.c (yield_indexed_values): use RARRAY_AREF/ASET instead of
  using RARRAY_PTR().

* enum.c (nmin_filter): ditto.

* proc.c (rb_sym_to_proc): ditto.

* enum.c (rb_nmin_run): use RARRAY_PTR_USE() instead of RARRAY_PTR().
  It is safe because they don't make new referecen from an array.

------------------------------------------------------------------------
r64985 | ko1 | 2018-10-10 12:52:20 +0900 (Wed, 10 Oct 2018) | 10 lines

revisit `RARRAY_PTR()`.

* array.c (ary_memcpy0): remove traditional `RARRAY_PTR()` code.
  It's enough stable.

* array.c (rb_ary_splice): add comment about wb-unprotect.

* array.c (rotate_count): use `RARRAY_PTR_USE()` instead of
  `RARRAY_PTR()` to avoid wb-unprotect.

------------------------------------------------------------------------
r64984 | svn | 2018-10-10 05:06:42 +0900 (Wed, 10 Oct 2018) | 1 line

* 2018-10-10
------------------------------------------------------------------------
r64983 | odaira | 2018-10-10 05:06:36 +0900 (Wed, 10 Oct 2018) | 2 lines

* configure.ac: do not use __builtin_longjmp on ppc64* Linux
  because it causes a segmentation fault with MJIT
------------------------------------------------------------------------
r64977 | nobu | 2018-10-09 15:56:38 +0900 (Tue, 09 Oct 2018) | 1 line

Add tests for another timezone
------------------------------------------------------------------------
r64976 | ko1 | 2018-10-09 15:18:28 +0900 (Tue, 09 Oct 2018) | 2 lines

use `should include`.

------------------------------------------------------------------------
r64975 | nobu | 2018-10-09 14:55:29 +0900 (Tue, 09 Oct 2018) | 9 lines

Time.parse based from non-Time object

* lib/time.rb (Time.make_time): as the document states, the second
  argument of `Time.parse` may be a non-`Time` object which does not
  have `getlocal` method, assume it is in the local time in the case.
  based on the patch by nkmrya (Yasuhiro Nakamura) at
  [ruby-core:68775].  [ruby-core:68775] [Bug #11037]

Co-authored-by: nkmrya (Yasuhiro Nakamura) <yasuhiro6194@gmail.com>
------------------------------------------------------------------------
r64974 | nobu | 2018-10-09 12:21:57 +0900 (Tue, 09 Oct 2018) | 10 lines

ext/objspace/objspace_dump.c: print addresses consistently

The format addresses are printed in are different if you use
`ObjectSpace.dump_all(output: :stdout)` vs.
`ObjectSpace.dump_all(output: :string)` (or `ObjectSpace.dump`) due to
differences in the underlying `vfprintf` implementation.

Use `"%#"PRIxVALUE` to format `VALUE`.

Co-authored-by: Ashe Connor <ashe@kivikakk.ee>
------------------------------------------------------------------------
r64973 | svn | 2018-10-09 11:01:56 +0900 (Tue, 09 Oct 2018) | 1 line

* expand tabs.
------------------------------------------------------------------------
r64972 | naruse | 2018-10-09 11:01:54 +0900 (Tue, 09 Oct 2018) | 8 lines

Revert "ext/objspace/objspace_dump.c: print addresses consistently"

This reverts commit r64970.

Visual C++ 12.0 doesn't have PRIxPTR.
Anyway we have our own vfprintf implementation BSD_vfprintf().
If you want to have portable vfprintf, replace it with BSD_vfprintf like
vsnprintf or just use BSD_vfprintf.
------------------------------------------------------------------------
r64971 | svn | 2018-10-09 08:43:48 +0900 (Tue, 09 Oct 2018) | 1 line

* expand tabs.
------------------------------------------------------------------------
r64970 | tenderlove | 2018-10-09 08:43:45 +0900 (Tue, 09 Oct 2018) | 10 lines

ext/objspace/objspace_dump.c: print addresses consistently

The format addresses are printed in are different if you use
`ObjectSpace.dump_all(output: :stdout)` vs.
`ObjectSpace.dump_all(output: :string)` (or `ObjectSpace.dump`) due to
differences in the underlying `vfprintf` implementation.

Use %"PRIxPTR" instead to be consistent across both.

Co-authored-by: Ashe Connor <ashe@kivikakk.ee>
------------------------------------------------------------------------
r64969 | kazu | 2018-10-09 00:47:21 +0900 (Tue, 09 Oct 2018) | 5 lines

Revert "NEWS: Fix indent [ci skip]"

This reverts commit a43d71159fdf208f5ad29fe8f4169e193056caaa.

already fixed at r64958
------------------------------------------------------------------------
r64968 | svn | 2018-10-09 00:12:57 +0900 (Tue, 09 Oct 2018) | 1 line

* 2018-10-09
------------------------------------------------------------------------
r64967 | kazu | 2018-10-09 00:12:56 +0900 (Tue, 09 Oct 2018) | 1 line

NEWS: Fix indent [ci skip]
------------------------------------------------------------------------
r64966 | svn | 2018-10-08 22:57:38 +0900 (Mon, 08 Oct 2018) | 1 line

* remove trailing space. [ci skip]
------------------------------------------------------------------------
r64965 | k0kubun | 2018-10-08 22:57:36 +0900 (Mon, 08 Oct 2018) | 2 lines

include/ruby/ruby.h: comment about mswin RUBY_EXTERN [ci skip]

------------------------------------------------------------------------
r64964 | k0kubun | 2018-10-08 22:46:42 +0900 (Mon, 08 Oct 2018) | 6 lines

include/ruby/ruby.h: import external symbols

properly on MinGW MJIT.

test_jit.rb: all MJIT tests are now passing on MinGW.

------------------------------------------------------------------------
r64963 | k0kubun | 2018-10-08 20:59:22 +0900 (Mon, 08 Oct 2018) | 5 lines

test_win32ole_event.rb: sleep longer

to increase the possibility of TestWIN32OLE_EVENT_SWbemSink#test_on_event success.
It seems to randomly fail
https://ci.appveyor.com/project/ruby/ruby/builds/19337514/job/0wp2oe9dkr9gt1bi
------------------------------------------------------------------------
r64962 | k0kubun | 2018-10-08 19:46:36 +0900 (Mon, 08 Oct 2018) | 7 lines

appveyor.yml: execute test_syntax separately

because NoMemoryError tends to be caused by
TestSyntax#assert_syntax_files.
https://ci.appveyor.com/project/ruby/ruby/build/1.0.8525
https://ci.appveyor.com/project/ruby/ruby/build/1.0.8795
https://ci.appveyor.com/project/ruby/ruby/builds/19334828/job/s1960qssxnk1lpoi
------------------------------------------------------------------------
r64961 | nobu | 2018-10-08 17:54:35 +0900 (Mon, 08 Oct 2018) | 1 line

Add test for marshal
------------------------------------------------------------------------
r64960 | nobu | 2018-10-08 17:46:50 +0900 (Mon, 08 Oct 2018) | 1 line

Removed redundant suffix `_with_timezone`
------------------------------------------------------------------------
r64959 | k0kubun | 2018-10-08 13:30:07 +0900 (Mon, 08 Oct 2018) | 10 lines

revert r64957 [ci skip]

r64956 didn't work either...
This means that svn.ruby-lang.org/ruby is not executing the latest git
hook on git.ruby-lang.org/ruby-commit-hook.

Tentatively I backported the changes of auto-style.rb in
git.ruby-lang.org/ruby-commit-hook to git.ruby-lang.org/scripts.

I hope this commit won't be rolled back by svn bot...
------------------------------------------------------------------------
r64958 | nobu | 2018-10-08 13:03:32 +0900 (Mon, 08 Oct 2018) | 3 lines

Timezone at Time#+ and Time#-

* time.c (time_add): support for Timezone.
------------------------------------------------------------------------
r64957 | svn | 2018-10-08 12:11:37 +0900 (Mon, 08 Oct 2018) | 1 line

* expand tabs.
------------------------------------------------------------------------
r64956 | k0kubun | 2018-10-08 12:11:36 +0900 (Mon, 08 Oct 2018) | 8 lines

revert r64955

r64954 didn't work...

In this commit, I'm experimenting
https://git.ruby-lang.org/ruby-commit-hook.git/commit/svn-utils/bin/auto-style.rb?id=2a1a17da1c163e8fc4321759d95057441ddf2c0a

We can distinguish possible 2 issues by this commit.
------------------------------------------------------------------------
r64955 | svn | 2018-10-08 11:55:07 +0900 (Mon, 08 Oct 2018) | 1 line

* expand tabs.
------------------------------------------------------------------------
r64954 | k0kubun | 2018-10-08 11:55:06 +0900 (Mon, 08 Oct 2018) | 11 lines

partially revert r64953

"expand tabs" is not intended to be applied to strftime.c, because its
c-file-style is "linux", not "ruby".

It's explicitly excluded to expand tabs
https://git.ruby-lang.org/ruby-commit-hook.git/tree/svn-utils/bin/auto-style.rb#n195
but it didn't work.
I fixed the issue in
https://git.ruby-lang.org/ruby-commit-hook.git/commit/svn-utils/bin/auto-style.rb?id=844e0d42de11ad4c549bfbdd752a21df2823c18c
so let me try to revert the strftime.c change to keep the tabs.
------------------------------------------------------------------------
r64953 | svn | 2018-10-08 11:35:33 +0900 (Mon, 08 Oct 2018) | 1 line

* expand tabs.
------------------------------------------------------------------------
r64952 | nobu | 2018-10-08 11:35:31 +0900 (Mon, 08 Oct 2018) | 6 lines

Timezone support by Time [Feature #14850]

* strftime.c (rb_strftime): support timezone object by `%z`.

* time.c (time_init_1, time_new_timew, time_getlocaltime): accept
  timezone object as `off`.
------------------------------------------------------------------------
r64951 | k0kubun | 2018-10-08 10:08:37 +0900 (Mon, 08 Oct 2018) | 7 lines

test_jit.rb: skip to test tempdir emptiness

on AppVeyor mswin. It's somehow failing and not reproductive on my
environment.

We're suspecting maybe somebody is still holding module handle, even
while FreeLibrary is finished successfully.
------------------------------------------------------------------------
r64950 | k0kubun | 2018-10-08 09:12:21 +0900 (Mon, 08 Oct 2018) | 9 lines

revert r64947 and r64949

Both didn't work well on mswin. Reverting.
https://ci.appveyor.com/project/ruby/ruby/builds/19322867/job/28fgwiq8j7hdmeu6
https://ci.appveyor.com/project/ruby/ruby/builds/19323721/job/1s73mrgu8n8wpa5f

We need to revisit this to have MJIT header in a correct place, but
having both in the place didn't make JIT on install directory functional
either anyway...
------------------------------------------------------------------------
r64949 | k0kubun | 2018-10-08 01:52:21 +0900 (Mon, 08 Oct 2018) | 1 line

win32/Makefile.sub: create header install dir first
------------------------------------------------------------------------
r64948 | k0kubun | 2018-10-08 01:45:16 +0900 (Mon, 08 Oct 2018) | 7 lines

appveyor.yml: completely separate win32ole tests

because r64938 was not enough and another win32ole test file
(`test_win32ole_type.rb`) crashed worker.
https://ci.appveyor.com/project/ruby/ruby/builds/19321161/job/ue1qrphi5j1xxgu6

Let's run whole win32ole test suite separately.
------------------------------------------------------------------------
r64947 | k0kubun | 2018-10-08 00:38:06 +0900 (Mon, 08 Oct 2018) | 13 lines

win32/Makefile.sub: install precompiled header to prefix

This is needed to run JIT from the installed ruby binary.

Even after this, we're hitting another error though.

start compilation: a@-e:1 -> C:\Users\k0kubun\AppData\Local\Temp/_ruby_mjit_p9712u0.c
Starting process: cl cl -nologo -LD -DMJIT_HEADER -MD -Zi -W2 -wd4100 -wd4127 -wd4210 -wd4214 -wd4255 -wd4574 -wd4668 -wd4710 -wd4711 -wd4820 -wd4996 -we4028 -we4142 -O2sy- -Zm600 -DRUBY_EXPORT -I. -I.ext/include/x64-mswin64_140 -I../ruby/include -I../ruby -I../ruby/enc/unicode/10.0.0 -DRUBY_DEVEL=1 -DCANONICALIZATION_FOR_MATHN -D_WIN32_WINNT=0x0600 -FeC:\Users\k0kubun\AppData\Local\Temp/_ruby_mjit_p9712u0.so -FoC:\Users\k0kubun\AppData\Local\Temp/_ruby_mjit_p9712u0.obj -YuC:/usr/include/ruby-2.6.0/x64-mswin64_140/rb_mjit_header-2.6.0.pch C:/usr/include/ruby-2.6.0/x64-mswin64_140/rb_mjit_header-2.6.0.obj -TcC:\Users\k0kubun\AppData\Local\Temp/_ruby_mjit_p9712u0.c -link -LIBPATH:C:/usr/lib x64-vcruntime140-ruby260.lib -incremental:no -debug -opt:ref -opt:icf -dll
_ruby_mjit_p9712u0.c
C:\Users\k0kubun\AppData\Local\Temp/_ruby_mjit_p9712u0.c(1): error C2859: C:\usr\bin\vc140.pdb is not the pdb file that was used when this precompiled header was created, recreate the precompiled header.
compile_c_to_so: compile error: 2
Failed to generate so: C:\Users\k0kubun\AppData\Local\Temp/_ruby_mjit_p9712u0.so

------------------------------------------------------------------------
r64946 | svn | 2018-10-08 00:10:00 +0900 (Mon, 08 Oct 2018) | 1 line

* 2018-10-08
------------------------------------------------------------------------
r64945 | k0kubun | 2018-10-08 00:09:58 +0900 (Mon, 08 Oct 2018) | 4 lines

mjit_worker.c: clean up all unnecessary files on mswin

test_jit.rb: passed all MJIT tests.

------------------------------------------------------------------------
r64944 | k0kubun | 2018-10-07 23:51:53 +0900 (Sun, 07 Oct 2018) | 4 lines

mjit_worker.c: don't suppress cl.exe logs

on --jit-verbose=2+.

------------------------------------------------------------------------
r64943 | k0kubun | 2018-10-07 23:05:56 +0900 (Sun, 07 Oct 2018) | 5 lines

appveyor.yml: give up running TestThreadQueue#test_queue_with_trap

for mswin. We tried to increase timeout and execute separately but both
didn't work. Let me skip this until somebody starts to work on fixing
this behavior, since this makes AppVeyor almost impossible to be used as CI.
------------------------------------------------------------------------
r64942 | k0kubun | 2018-10-07 23:00:04 +0900 (Sun, 07 Oct 2018) | 13 lines

include/ruby/intern.h: don't modify MJIT_FUNC_EXPORTED

on most of platforms except mswin.

Changing it to static was needed for mswin because it doesn't use
transform_mjit_header, but for platforms that use it, it causes link
error like:

/usr/bin/ld: /tmp/_ruby_mjit_p21652u0.o: relocation R_X86_64_PC32 against undefined symbol `rb_vm_search_method_slowpath' can not be used when making a shared object; recompile with -fPIC
/usr/bin/ld: final link failed: Bad value
collect2: error: ld returned 1 exit status

include/ruby/defines.h: MJIT_FUNC_EXPORTED moved to intern.h
------------------------------------------------------------------------
r64941 | k0kubun | 2018-10-07 22:34:59 +0900 (Sun, 07 Oct 2018) | 12 lines

vm_core.h: fix inconsistent prototype declarations

like "error: static declaration of 'xxx' follows non-static declaration".
r64940 is successfully built on mswin but not built on almost all other environments.

internal.h: ditto

include/ruby/intern.h: MJIT_STATIC is moved to this file since this file
also needs to use this.

mjit.h: MJIT_STATIC is moved from this.

------------------------------------------------------------------------
r64940 | k0kubun | 2018-10-07 22:11:27 +0900 (Sun, 07 Oct 2018) | 14 lines

mjit.h: introduce MJIT_STATIC for full mswin JIT support

This change resolves most of major remaining MJIT bugs on mswin.
Since Visual Studio doesn't support generating pre-processed code
preserving macros, we can't use transform_mjit_header approach for mswin.
So we need to transform MJIT header using macro like this.

vm.c: use MJIT_STATIC for non-static functions that exist on MJIT header
and cause conflict on link.
vm_insnhelper.c: ditto

test_jit.rb: remove many skips for mswin.


------------------------------------------------------------------------
r64939 | k0kubun | 2018-10-07 21:28:46 +0900 (Sun, 07 Oct 2018) | 4 lines

mjit_worker.c: print warning if FreeLibrary fails

because somehow AppVeyor fails to remove so file by Permission Deined.

------------------------------------------------------------------------
r64938 | k0kubun | 2018-10-07 21:03:49 +0900 (Sun, 07 Oct 2018) | 11 lines

appveyor.yml: separately execute unstable tests

without -j option. Those 2 tests are too unstable on AppVeyor.

test/excludes/TestThreadQueue.rb: The most unstable test ever. That even fails on my
machine too. This may be possibly because recent SIGCHLD-related changes.
https://ci.appveyor.com/project/ruby/ruby/build/9795/job/l9t4w9ks7arsldb1

test/excludes/TestWin32OLE.rb: I saw that win32ole crashes test-all several times.
https://ci.appveyor.com/project/ruby/ruby/build/9811/job/ra5uxf2cg6v7ohag

------------------------------------------------------------------------
r64937 | k0kubun | 2018-10-07 20:46:26 +0900 (Sun, 07 Oct 2018) | 3 lines

revert r64935

that didn't work at all. So the so file should be open at the time.
------------------------------------------------------------------------
r64936 | nobu | 2018-10-07 18:17:59 +0900 (Sun, 07 Oct 2018) | 1 line

Added missing declarations in readline.h bundled with macOS 10.14
------------------------------------------------------------------------
r64935 | k0kubun | 2018-10-07 17:15:48 +0900 (Sun, 07 Oct 2018) | 12 lines

appveyor.yml: use ./tmp as TMPDIR for test-all

on VS.

On AppVeyor, we seem to fail to remove so file due to permission error.
C:/projects/ruby/test/ruby/test_jit.rb:419: warning: MJIT warning: failed to remove
"C:\Users\appveyor\AppData\Local\Temp\1/_ruby_mjit_p3580u0.so": Permission denied
https://ci.appveyor.com/project/ruby/ruby/builds/19317520/job/sh8s6tw6ayxvtl33

But this is not reproductive on my local mswin environment at all.
To identify the cause, let me try changing the TMPDIR.

------------------------------------------------------------------------
r64934 | k0kubun | 2018-10-07 17:03:36 +0900 (Sun, 07 Oct 2018) | 6 lines

mjit_worker.c: clean up .obj file on mswin

prior to this commit, .obj file is generated on current directory and nobody deletes that.
This changes it to make sure it's generated to temporary directory and removes that.


------------------------------------------------------------------------
r64933 | k0kubun | 2018-10-07 15:08:54 +0900 (Sun, 07 Oct 2018) | 8 lines

add_spec.rb: skip unstable spec on mingw

This sometimes crashes mspec worker like
https://ci.appveyor.com/project/ruby/ruby/build/9806/job/37tx2atojy96227m

and it doesn't generate helpful output and it seems hard to fix it soon.
As AppVeyor is too unstable by too many factors, let me skip this
at least for a short term. until AppVeyor gets stable.
------------------------------------------------------------------------
r64932 | k0kubun | 2018-10-07 14:54:04 +0900 (Sun, 07 Oct 2018) | 3 lines

test_jit.rb: skip some tests

that don't succeed on MinGW after r64929
------------------------------------------------------------------------
r64931 | k0kubun | 2018-10-07 13:29:00 +0900 (Sun, 07 Oct 2018) | 1 line

mjit.c: fix obsoleted comment [ci skip]
------------------------------------------------------------------------
r64930 | kazu | 2018-10-07 13:21:32 +0900 (Sun, 07 Oct 2018) | 1 line

Fix indent of output in doc [ci skip]
------------------------------------------------------------------------
r64929 | k0kubun | 2018-10-07 13:17:59 +0900 (Sun, 07 Oct 2018) | 16 lines

mjit.h: call compiled code immediately

after the first compilation on --jit-wait.

Previously the assignment to `func` didn't have meaning for the behavior,
and the compiled code wasn't called immediately after the synchronous
compilation. It wasn't intentional.

Fixing this issue without impacting performance without --jit-wait is
not so obvious. Adding branch or goto to call func in mjit_exec spoiled
the performance without --jit-wait. Instead of that, I called the func
inside mjit_wait_call() (former mjit_get_iseq_func()) which is never
inlined to mjit_exec(). Thanks to that, this commit has no impact for
normal performance.

mjit.c: ditto
------------------------------------------------------------------------
r64928 | svn | 2018-10-07 00:14:20 +0900 (Sun, 07 Oct 2018) | 1 line

* 2018-10-07
------------------------------------------------------------------------
r64927 | nobu | 2018-10-07 00:14:19 +0900 (Sun, 07 Oct 2018) | 1 line

revert r64925
------------------------------------------------------------------------
r64926 | svn | 2018-10-06 12:11:49 +0900 (Sat, 06 Oct 2018) | 1 line

* 2018-10-06
------------------------------------------------------------------------
r64925 | nobu | 2018-10-06 12:11:46 +0900 (Sat, 06 Oct 2018) | 5 lines

order-only-prerequisites

* defs/gmake.mk: use order-only-prerequisites to run build and test
  targets sequentially.
  https://www.gnu.org/software/make/manual/html_node/Prerequisite-Types.html
------------------------------------------------------------------------
r64924 | naruse | 2018-10-05 19:36:24 +0900 (Fri, 05 Oct 2018) | 3 lines

Use binread because webrick also uses binread

Reported-by: MSP-Greg [Bug #15203]
------------------------------------------------------------------------
r64923 | hsbt | 2018-10-05 19:28:38 +0900 (Fri, 05 Oct 2018) | 1 line

Added news entry of r64741.
------------------------------------------------------------------------
r64922 | svn | 2018-10-05 15:23:37 +0900 (Fri, 05 Oct 2018) | 1 line

* expand tabs.
------------------------------------------------------------------------
r64921 | nobu | 2018-10-05 15:23:34 +0900 (Fri, 05 Oct 2018) | 13 lines

Add difference method to Array

I introduce a `difference` method equivalent to the `-` operator, but
which accept more than array as argument. This improved readability, and
it is also coherent with the `+` operator, which has a similar `concat`
method. The method doesn't modify the original object and return a new
object instead. I plan to introduce a `difference!` method as well.

Tests and documentation are included.

It solves partially https://bugs.ruby-lang.org/issues/14097

From: Ana Maria Martinez Gomez <ammartinez@suse.de>
------------------------------------------------------------------------
r64920 | nobu | 2018-10-05 12:25:33 +0900 (Fri, 05 Oct 2018) | 1 line

Update aclocal to 1.16.1 [ci skip]
------------------------------------------------------------------------
r64919 | nobu | 2018-10-05 09:37:40 +0900 (Fri, 05 Oct 2018) | 4 lines

Remove wrong conversion

* rational.c (nurat_to_double): should return `double`, not `Float`.
  fix r64897.  [Bug #15189]
------------------------------------------------------------------------
r64918 | svn | 2018-10-05 08:33:05 +0900 (Fri, 05 Oct 2018) | 1 line

* expand tabs.
------------------------------------------------------------------------
r64917 | ko1 | 2018-10-05 08:33:03 +0900 (Fri, 05 Oct 2018) | 4 lines

use RARRAY_AREF().

* struct.c (setup_struct): no need to use Array raw ptr here.

------------------------------------------------------------------------
r64916 | svn | 2018-10-05 00:22:55 +0900 (Fri, 05 Oct 2018) | 1 line

* 2018-10-05
------------------------------------------------------------------------
r64915 | ko1 | 2018-10-05 00:22:53 +0900 (Fri, 05 Oct 2018) | 5 lines

check argument type.

* iseq.c (iseqw_s_compile): check argument type (T_STRING) to
  avoid SEGV.

------------------------------------------------------------------------
r64914 | nobu | 2018-10-04 23:00:39 +0900 (Thu, 04 Oct 2018) | 1 line

lldb_rp: support Symbol [ci skip]
------------------------------------------------------------------------
r64913 | usa | 2018-10-04 15:29:31 +0900 (Thu, 04 Oct 2018) | 4 lines

Support ubasecrt.dll 10.0.17763.1 included in Windows 10 October 2018 Update



------------------------------------------------------------------------
r64912 | svn | 2018-10-04 04:19:36 +0900 (Thu, 04 Oct 2018) | 1 line

* 2018-10-04
------------------------------------------------------------------------
r64911 | stomar | 2018-10-04 04:19:33 +0900 (Thu, 04 Oct 2018) | 4 lines

fileutils.rb: restore documentation for FileUtils

* lib/fileutils.rb: [DOC] restore documentation for FileUtils module
  which became undocumented with r63430.
------------------------------------------------------------------------
r64910 | stomar | 2018-10-03 21:57:45 +0900 (Wed, 03 Oct 2018) | 5 lines

Improve docs for RubyVM::AST and RubyVM::AST::Node

* ast.c: [DOC] fix error in code example for RubyVM::AST::Node#type
  (r63604 changed the return value of RubyVM::AST::Node#children);
  enable link to RubyVM::AST.parse method; other minor improvements.
------------------------------------------------------------------------
r64909 | nobu | 2018-10-03 18:54:25 +0900 (Wed, 03 Oct 2018) | 1 line

lldb_rp: support T_CLASS,T_MODULE,T_ICLASS [ci skip]
------------------------------------------------------------------------
r64908 | nobu | 2018-10-03 18:54:21 +0900 (Wed, 03 Oct 2018) | 1 line

lldb_rp: use append_command_output [ci skip]
------------------------------------------------------------------------
r64907 | kazu | 2018-10-03 16:43:13 +0900 (Wed, 03 Oct 2018) | 1 line

Set indent_size of reg*.[ch] to 2 [ci skip]
------------------------------------------------------------------------
r64906 | nobu | 2018-10-03 15:48:35 +0900 (Wed, 03 Oct 2018) | 4 lines

Use cd -P

Setting PWD in the process does not let `cd` traverse symlinks in
/bin/sh on macOS.
------------------------------------------------------------------------
r64905 | shyouhei | 2018-10-03 13:49:34 +0900 (Wed, 03 Oct 2018) | 10 lines

support --with-arch=x86_64h

Recent apple machines describe themselves being x86_64h.  That
architecture is somehow supported by their C compiler and at least
by recent clang.  However config.sub does not know that fact so
making universal binary targeting it is rejected by the program.

Why not skip the check by config.sub.  [fix GH-1971]


------------------------------------------------------------------------
r64904 | nobu | 2018-10-03 13:37:43 +0900 (Wed, 03 Oct 2018) | 6 lines

Fix wrong use of BIGNUM_EMBED_LEN_NUMBITS

* internal.h (BIGNUM_EMBED_LEN_SHIFT): BIGNUM_EMBED_LEN_NUMBITS is the
  bit width of embedded bignum length, and BIGNUM_EMBED_LEN_SHIFT is
  the bit offset of it.  These two values happened to equal by chance,
  however they are different things.
------------------------------------------------------------------------
r64903 | nobu | 2018-10-03 13:27:19 +0900 (Wed, 03 Oct 2018) | 1 line

lldb_rp: support more types [ci skip]
------------------------------------------------------------------------
r64902 | nobu | 2018-10-03 13:07:16 +0900 (Wed, 03 Oct 2018) | 4 lines

lldb_rp: fix the order of results [ci skip]

The outputs from HandleCommand are printed immediately before print
statements.  Fix the order in `result` by capturing the outputs.
------------------------------------------------------------------------
r64901 | nobu | 2018-10-03 04:14:24 +0900 (Wed, 03 Oct 2018) | 4 lines

lldb_rp: reload debug info if not loaded yet [ci skip]

As debug infos in shared libraries are not accessible until loaded,
retry loading the infos when needed.
------------------------------------------------------------------------
r64900 | nobu | 2018-10-03 03:51:21 +0900 (Wed, 03 Oct 2018) | 3 lines

Just a shebang is valid code

[ruby-core:89240] [Bug #15190]
------------------------------------------------------------------------
r64899 | nobu | 2018-10-03 03:03:43 +0900 (Wed, 03 Oct 2018) | 3 lines

Get rid of calling to_f in rat2dbl_without_to_f

[Bug #15189]
------------------------------------------------------------------------
r64898 | svn | 2018-10-03 01:42:29 +0900 (Wed, 03 Oct 2018) | 1 line

* 2018-10-03
------------------------------------------------------------------------
r64897 | nobu | 2018-10-03 01:42:21 +0900 (Wed, 03 Oct 2018) | 3 lines

Fix Rational of Float

[ruby-core:89239] [Bug #15189]
------------------------------------------------------------------------
r64896 | svn | 2018-10-02 10:56:44 +0900 (Tue, 02 Oct 2018) | 1 line

* 2018-10-02
------------------------------------------------------------------------
r64895 | nobu | 2018-10-02 10:56:43 +0900 (Tue, 02 Oct 2018) | 1 line

Install HTML docs if produced
------------------------------------------------------------------------
r64894 | nobu | 2018-10-01 23:48:54 +0900 (Mon, 01 Oct 2018) | 1 line

lldb_cruby.py: T_DATA support [ci skip]
------------------------------------------------------------------------
r64892 | nobu | 2018-10-01 16:50:08 +0900 (Mon, 01 Oct 2018) | 3 lines

Removed Windows version condition

Seems all MSVC runtimes fails with EINVAL, regardless Windows version.
------------------------------------------------------------------------
r64891 | svn | 2018-10-01 15:22:27 +0900 (Mon, 01 Oct 2018) | 1 line

* 2018-10-01
------------------------------------------------------------------------
r64890 | ko1 | 2018-10-01 15:22:20 +0900 (Mon, 01 Oct 2018) | 5 lines

remove old VM profile counters.

* vm_insnhelper.c: remove `vm_profile_counter` because
  it is replaced with debug_counters.

------------------------------------------------------------------------
r64889 | svn | 2018-09-30 11:22:01 +0900 (Sun, 30 Sep 2018) | 1 line

* expand tabs.
------------------------------------------------------------------------
r64888 | k0kubun | 2018-09-30 11:22:00 +0900 (Sun, 30 Sep 2018) | 6 lines

mjit_compile.c: improve assertion message

intentionally inserting tab to this line to test svn bot.

Also expanding the all tabs in this file, since this file does not exist
in old versions and so there's no risk of conflict on backport.
------------------------------------------------------------------------
r64887 | naruse | 2018-09-30 02:49:33 +0900 (Sun, 30 Sep 2018) | 1 line

no-op if it is T_STRING
------------------------------------------------------------------------
r64886 | svn | 2018-09-30 02:49:07 +0900 (Sun, 30 Sep 2018) | 1 line

* 2018-09-30
------------------------------------------------------------------------
r64885 | svn | 2018-09-30 02:49:06 +0900 (Sun, 30 Sep 2018) | 1 line

* expand tabs.
------------------------------------------------------------------------
r64884 | naruse | 2018-09-30 02:49:03 +0900 (Sun, 30 Sep 2018) | 1 line

Remove unnecessary use of function pointer
------------------------------------------------------------------------
r64883 | k0kubun | 2018-09-29 16:21:30 +0900 (Sat, 29 Sep 2018) | 4 lines

common.mk: upgrade benchmark_driver

since maybe r64870 implicitly depends on
https://github.com/benchmark-driver/benchmark-driver/pull/47 too.
------------------------------------------------------------------------
r64882 | nobu | 2018-09-29 16:04:29 +0900 (Sat, 29 Sep 2018) | 4 lines

Expand gemspec path to the real path

`make install` has loaded forwardable.rb twice, from
forwardable.gemspec and prime.gemspec.
------------------------------------------------------------------------
r64881 | svn | 2018-09-29 15:47:34 +0900 (Sat, 29 Sep 2018) | 1 line

* expand tabs.
------------------------------------------------------------------------
r64880 | shirosaki | 2018-09-29 15:47:32 +0900 (Sat, 29 Sep 2018) | 4 lines

Revert search_convpath spec

Remove .name since SEGV on MinGW is fixed.
[ruby-core:89200]
------------------------------------------------------------------------
r64879 | shirosaki | 2018-09-29 15:47:30 +0900 (Sat, 29 Sep 2018) | 5 lines

transcode.c: add GC guard on raise

* transcode.c (econv_s_search_convpath): add GC guard to fix SEGV
  on raise.
  [Bug #15162] [ruby-core:89172]
------------------------------------------------------------------------
r64878 | svn | 2018-09-29 09:45:44 +0900 (Sat, 29 Sep 2018) | 1 line

* expand tabs.
------------------------------------------------------------------------
r64877 | nobu | 2018-09-29 09:45:41 +0900 (Sat, 29 Sep 2018) | 4 lines

rational.c: may be float

* rational.c (f_muldiv): Integer#** can return Rational with Float
  right now.  [ruby-core:89212] [Bug #15175]
------------------------------------------------------------------------
r64876 | svn | 2018-09-29 09:43:32 +0900 (Sat, 29 Sep 2018) | 1 line

* 2018-09-29
------------------------------------------------------------------------
r64875 | nobu | 2018-09-29 09:43:29 +0900 (Sat, 29 Sep 2018) | 1 line

Split assertion expressions
------------------------------------------------------------------------
r64874 | nobu | 2018-09-28 18:23:35 +0900 (Fri, 28 Sep 2018) | 1 line

Adjust indent [ci skip]
------------------------------------------------------------------------
r64873 | kazu | 2018-09-28 15:25:24 +0900 (Fri, 28 Sep 2018) | 1 line

Add Range#% to call-seq [ci skip]
------------------------------------------------------------------------
r64872 | ko1 | 2018-09-28 14:28:12 +0900 (Fri, 28 Sep 2018) | 5 lines

don't use GC::Profiler on default.

* benchmark/gc/gcbench.rb: disable GC::Profiler on default.
  add -p option instead.

------------------------------------------------------------------------
r64871 | ko1 | 2018-09-28 12:35:15 +0900 (Fri, 28 Sep 2018) | 10 lines

add debug counters more.

* debug_counter.h: add debug counters to count frame state transitions:
  * frame_R2R: Ruby frame to Ruby frame
  * frame_R2C: Ruby frame to C frame
  * frame_C2C: C frame to C frame
  * frame_C2R: C frame to Ruby frame

* vm_insnhelper.c (vm_push_frame): ditto.

------------------------------------------------------------------------
r64870 | ko1 | 2018-09-28 12:32:49 +0900 (Fri, 28 Sep 2018) | 7 lines

add small utility for benchmarking.

* benchmark/lib/load.rb: add small utility which requires
  benchmark-driver.rb. You can load this file and can
  use benchmark-driver.


------------------------------------------------------------------------
r64869 | mrkn | 2018-09-28 11:18:58 +0900 (Fri, 28 Sep 2018) | 3 lines

range.c: Add Range#%

[Feature #14697] [ruby-core:86588]
------------------------------------------------------------------------
r64868 | svn | 2018-09-28 10:10:53 +0900 (Fri, 28 Sep 2018) | 1 line

* 2018-09-28
------------------------------------------------------------------------
r64867 | ko1 | 2018-09-28 10:10:43 +0900 (Fri, 28 Sep 2018) | 14 lines

add debug counters more.

* debug_counter.h: add the following counters.
  * frame_push: control frame counts (total counts).
  * frame_push_*: control frame counts per every frame type.
  * obj_*: add free'ed counts for each type.

* gc.c: ditto.

* vm_insnhelper.c (vm_push_frame): ditto.

* debug_counter.c (rb_debug_counter_show_results): widen counts field
  to show >10G numbers.

------------------------------------------------------------------------
r64866 | nobu | 2018-09-27 19:22:08 +0900 (Thu, 27 Sep 2018) | 1 line

Fix messages for too small year
------------------------------------------------------------------------
r64865 | nobu | 2018-09-27 19:22:07 +0900 (Thu, 27 Sep 2018) | 1 line

Sort in alphabetical order [ci skip]
------------------------------------------------------------------------
r64864 | kazu | 2018-09-27 19:15:05 +0900 (Thu, 27 Sep 2018) | 3 lines

NEWS: Replace tab with spaces

[ci skip]
------------------------------------------------------------------------
r64863 | mrkn | 2018-09-27 18:29:51 +0900 (Thu, 27 Sep 2018) | 3 lines

NEWS: Add ArithmeticSequence related things

[ci skip]
------------------------------------------------------------------------
r64862 | shyouhei | 2018-09-27 13:33:11 +0900 (Thu, 27 Sep 2018) | 4 lines

move GCC version check from marshal.c to configure.ac

I think it should be done in configure

------------------------------------------------------------------------
r64861 | svn | 2018-09-27 02:24:02 +0900 (Thu, 27 Sep 2018) | 1 line

* properties.
------------------------------------------------------------------------
r64860 | nobu | 2018-09-27 02:24:00 +0900 (Thu, 27 Sep 2018) | 6 lines

fallback env encoding to ASCII-8BIT

* hash.c (env_enc_str_new): as no locale/filesystem encoding is
  available in miniruby on Windows, fallback the encoding to
  ASCII-8BIT so it is valid encoding when the conversion failed.
  [ruby-core:89177] [Bug #15164]
------------------------------------------------------------------------
r64859 | svn | 2018-09-27 01:51:14 +0900 (Thu, 27 Sep 2018) | 1 line

* 2018-09-27
------------------------------------------------------------------------
r64858 | svn | 2018-09-27 01:51:13 +0900 (Thu, 27 Sep 2018) | 1 line

* expand tabs.
------------------------------------------------------------------------
r64857 | ko1 | 2018-09-27 01:51:09 +0900 (Thu, 27 Sep 2018) | 9 lines

fix use-after-free in obj_free.

* gc.c (obj_free): a table can be accessed for debug counters.
  [Bug #15165] [Fix GH-1964]

  A patch from Joe Truba <jtruba@meraki.com>

  Also check USE_DEBUG_COUNTER macro.

------------------------------------------------------------------------
r64856 | suke | 2018-09-26 18:33:46 +0900 (Wed, 26 Sep 2018) | 4 lines

* ext/win32ole/lib/win32ole.rb (methods): COM method elements should be
  symbol in return value of methods.

* test/win32ole/test_win32ole.rb ditto.
------------------------------------------------------------------------
r64855 | eregon | 2018-09-26 18:32:09 +0900 (Wed, 26 Sep 2018) | 4 lines

Use String arguments for #search_convpath

* Otherwise it seems to SEGV on Windows, see
  https://github.com/ruby/ruby/commit/f00bf242724d40d59a242c6bf9e567d18c9e1872#commitcomment-30650955
------------------------------------------------------------------------
r64854 | ko1 | 2018-09-26 17:11:05 +0900 (Wed, 26 Sep 2018) | 9 lines

fix OPT_CALL_THREADED_CODE issue.

* insns.def (opt_send_without_block): reorder insn position because
  `opt_str_freeze` insn refer this insn (function) when
  OPT_CALL_THREADED_CODE is true.

* vm_opts.h (OPT_THREADED_CODE): introduce new macro to select
  threaded code implementation with a compile option (-D...).

------------------------------------------------------------------------
r64853 | ko1 | 2018-09-26 16:28:04 +0900 (Wed, 26 Sep 2018) | 7 lines

add some debug counters.

* debug_counter.h: new debug counters obj_promote, obj_wb_unprotect
  and obj_struct_(ptr|embed) are added.

* gc.c: ditto.

------------------------------------------------------------------------
r64852 | shyouhei | 2018-09-26 15:16:32 +0900 (Wed, 26 Sep 2018) | 2 lines

use configure-defined macro instead of __GNUC__

------------------------------------------------------------------------
r64851 | svn | 2018-09-26 11:38:51 +0900 (Wed, 26 Sep 2018) | 1 line

* expand tabs.
------------------------------------------------------------------------
r64850 | k0kubun | 2018-09-26 11:38:45 +0900 (Wed, 26 Sep 2018) | 3 lines

revert r64847, r64846 and r64839

because r64849 seems to fix issues which we were confused about.
------------------------------------------------------------------------
r64849 | ko1 | 2018-09-26 11:23:21 +0900 (Wed, 26 Sep 2018) | 5 lines

fix "initialize miss".

* dir.c (glob_helper): initialize `args.pathtype`.
  missed at r64810.

------------------------------------------------------------------------
r64848 | shyouhei | 2018-09-26 11:02:09 +0900 (Wed, 26 Sep 2018) | 2 lines

yet another -Wparentheses tweak

------------------------------------------------------------------------
r64847 | svn | 2018-09-26 10:11:26 +0900 (Wed, 26 Sep 2018) | 1 line

* expand tabs.
------------------------------------------------------------------------
r64846 | k0kubun | 2018-09-26 10:11:20 +0900 (Wed, 26 Sep 2018) | 3 lines

revert r64838 and r64839

because some build failures persisted
------------------------------------------------------------------------
r64845 | nobu | 2018-09-26 08:31:22 +0900 (Wed, 26 Sep 2018) | 7 lines

Expand spec files to realpaths

* spec/mspec/lib/mspec/utils/script.rb (MSpecScript#entries): expand
  the given spec path to the realpath, not to require a library by
  realpath and symbolic link path from the spec file.

  reapply r64749 and r64751 overridden by r64830.
------------------------------------------------------------------------
r64844 | svn | 2018-09-26 03:47:18 +0900 (Wed, 26 Sep 2018) | 1 line

* properties.
------------------------------------------------------------------------
r64843 | eregon | 2018-09-26 03:47:17 +0900 (Wed, 26 Sep 2018) | 1 line

Update to ruby/mspec@2bca8cb
------------------------------------------------------------------------
r64842 | svn | 2018-09-26 03:13:35 +0900 (Wed, 26 Sep 2018) | 1 line

* expand tabs.
------------------------------------------------------------------------
r64841 | ko1 | 2018-09-26 03:13:29 +0900 (Wed, 26 Sep 2018) | 25 lines

refactoring debug_counter.

* debug_counter.h: add comments for each counters.

* debug_counter.h: add some counters (see added comments for details).
  * obj_newobj
  * obj_newobj_slowpath
  * obj_newobj_wb_unprotected
  * obj_hash_empty
  * obj_hash_under4
  * obj_hash_ge4
  * obj_hash_ge8
  * heap_xmalloc
  * heap_xrealloc
  * heap_xfree

* gc.c: add some debug counters (see the above list).

* debug_counter.c (rb_debug_counter_show_results): accept
  a header message.

* signal.c (ruby_default_signal): show debug counter results
  and malloc info (rb_malloc_info_show_results()) before
  SIGNAL exit.

------------------------------------------------------------------------
r64840 | k0kubun | 2018-09-26 02:26:34 +0900 (Wed, 26 Sep 2018) | 8 lines

appveyor.yml: increase timeout for vs

because `TestThreadQueue#test_queue_with_trap` is too unstable
especially on vs140.
https://ci.appveyor.com/project/ruby/ruby/build/9731/job/sevjm9lrmssg4dub

Increasing timeout may not fix the issue, but let me test this first to
check if it's true or not.
------------------------------------------------------------------------
r64839 | k0kubun | 2018-09-26 02:20:02 +0900 (Wed, 26 Sep 2018) | 34 lines

insns.def: drop bitblt insn

as a workaround to fix the build pipeline broken by r64824,
because optimizing Ruby should be prioritized higher than supporting unused jokes.

In the current build system, exceeding 200 insns somehow crashes C
extension build on some of MinGW environments like "mingw32-make[1]:
*** No rule to make target 'note'.  Stop."
https://ci.appveyor.com/project/ruby/ruby/build/9725/job/co4nu9jugm8qwdrp
and on some of Linux environments like "cannot load such file -- stringio (LoadError)"

```
build_install        /home/ko1/ruby/src/trunk_gcc5/lib/rubygems/specification.rb:18:in `require': cannot load such file -- stringio (LoadError)
	from /home/ko1/ruby/src/trunk_gcc5/lib/rubygems/specification.rb:18:in `<top (required)>'
	from /home/ko1/ruby/src/trunk_gcc5/lib/rubygems.rb:1365:in `require'
	from /home/ko1/ruby/src/trunk_gcc5/lib/rubygems.rb:1365:in `<module:Gem>'
	from /home/ko1/ruby/src/trunk_gcc5/lib/rubygems.rb:116:in `<top (required)>'
	from /home/ko1/ruby/src/trunk_gcc5/tool/rbinstall.rb:24:in `require'
	from /home/ko1/ruby/src/trunk_gcc5/tool/rbinstall.rb:24:in `<main>'
make: *** [do-install-nodoc] Error 1
```

http://ci.rvm.jp/results/trunk_gcc5@silicon-docker/1353447

This commit removes "bitblt" and "trace_bitblt" insns, which reduces the
number of insns from 202 to 200 and fixes at least the latter build
failure. I hope this fixes the MinGW build failure as well. Let me
confirm the situation on AppVeyor CI.

Note that this is hard to fix because some MinGW environments (MSP-Greg's
MinGW CI on AppVeyor) don't reproduce this and some Linux environments
(including my local machine) don't reproduce it either. Make sure you
have the reproductive environment and confirm it's fixed when reverting
this commit.
------------------------------------------------------------------------
r64838 | k0kubun | 2018-09-26 02:19:51 +0900 (Wed, 26 Sep 2018) | 4 lines

Revert "Revert r64824 to fix build failure on AppVeyor"

This reverts commit r64829. I'll prepare another temporary fix, but I'll
separately commit that to make it easier to revert that later.
------------------------------------------------------------------------
r64837 | svn | 2018-09-26 00:31:03 +0900 (Wed, 26 Sep 2018) | 1 line

* 2018-09-26
------------------------------------------------------------------------
r64836 | shirosaki | 2018-09-26 00:31:02 +0900 (Wed, 26 Sep 2018) | 5 lines

dir.c: fix glob with recursive and brace

Fixed bug that glob with recursive and braces (**/{a,b}) pattern
fails.
[Feature #13167]
------------------------------------------------------------------------
r64835 | shirosaki | 2018-09-26 00:31:01 +0900 (Wed, 26 Sep 2018) | 4 lines

dir.c: fix memory leak of glob with braces

join_path uses malloc. So free is required.
[Feature #13167]
------------------------------------------------------------------------
r64834 | svn | 2018-09-25 22:42:05 +0900 (Tue, 25 Sep 2018) | 1 line

* expand tabs.
------------------------------------------------------------------------
r64833 | nobu | 2018-09-25 22:42:02 +0900 (Tue, 25 Sep 2018) | 1 line

Moved `struct vtm` stuff from internal.h to timev.h
------------------------------------------------------------------------
r64832 | svn | 2018-09-25 19:41:19 +0900 (Tue, 25 Sep 2018) | 1 line

* properties.
------------------------------------------------------------------------
r64831 | eregon | 2018-09-25 19:41:16 +0900 (Tue, 25 Sep 2018) | 1 line

Update to ruby/spec@241f9e7
------------------------------------------------------------------------
r64830 | eregon | 2018-09-25 19:40:39 +0900 (Tue, 25 Sep 2018) | 1 line

Update to ruby/mspec@3fb5112
------------------------------------------------------------------------
r64829 | k0kubun | 2018-09-25 13:03:35 +0900 (Tue, 25 Sep 2018) | 6 lines

Revert r64824 to fix build failure on AppVeyor

AppVeyor msys2/MinGW build started to fail like:
https://ci.appveyor.com/project/ruby/ruby/build/9722/job/b94kixi004klmye3

Until I can investigate that, I revert this for now.
------------------------------------------------------------------------
r64828 | svn | 2018-09-25 08:23:16 +0900 (Tue, 25 Sep 2018) | 1 line

* 2018-09-25
------------------------------------------------------------------------
r64827 | nobu | 2018-09-25 08:23:14 +0900 (Tue, 25 Sep 2018) | 5 lines

test/unit.rb: fix --subprocess-timeout-scale

* test/lib/test/unit.rb (Test::Unit::SubprocessOption#non_options):
  set timeout scale after parsing options.  the option value will be
  set after returning from setup_options.
------------------------------------------------------------------------
r64826 | nobu | 2018-09-24 23:26:00 +0900 (Mon, 24 Sep 2018) | 1 line

Check whether to skip every frame
------------------------------------------------------------------------
r64825 | nobu | 2018-09-24 22:04:40 +0900 (Mon, 24 Sep 2018) | 1 line

Kernel#warn accepts multiple messages
------------------------------------------------------------------------
r64824 | k0kubun | 2018-09-24 21:40:28 +0900 (Mon, 24 Sep 2018) | 45 lines

insns.def: optimize & and | of Integer [experimental]

not optimizing Array#& and Array#| because vm_insnhelper.c can't easily
inline it (large amount of array.c code would be needed in vm_insnhelper.c)
and the method body is a little complicated compared to Integer's ones.
So I thought only Integer#& and Integer#| have a significant impact,
and eliminating unnecessary branches would contribute to JIT's performance.

vm_insnhelper.c: ditto

tool/transform_mjit_header.rb: make sure these instructions are inlined
on JIT.

compile.c: compile vm_opt_and and vm_opt_or.
id.def: define id for them to be used in compile.c and vm*.c
vm.c: track redefinition of Integer#& and Integer#|
vm_core.h: allow detecting redefinition of & and |

test/ruby/test_jit.rb: test new insns
test/ruby/test_optimization.rb: ditto

* Optcarrot benchmark

This is a kind of experimental thing but I'm committing this since the
performance impact is significant especially on Optcarrot with JIT.

$ benchmark-driver benchmark.yml --rbenv 'before::before --disable-gems;before+JIT::before --disable-gems --jit;after::after --disable-gems;after+JIT::after --disable-gems --jit' -v --repeat-count 24
before: ruby 2.6.0dev (2018-09-24 trunk 64821) [x86_64-linux]
before+JIT: ruby 2.6.0dev (2018-09-24 trunk 64821) +JIT [x86_64-linux]
after: ruby 2.6.0dev (2018-09-24 opt_and 64821) [x86_64-linux]
last_commit=opt_or
after+JIT: ruby 2.6.0dev (2018-09-24 opt_and 64821) +JIT [x86_64-linux]
last_commit=opt_or
Calculating -------------------------------------
                             before  before+JIT       after   after+JIT
Optcarrot Lan_Master.nes     51.460      66.315      53.023      71.173 fps

Comparison:
             Optcarrot Lan_Master.nes
               after+JIT:        71.2 fps
              before+JIT:        66.3 fps - 1.07x  slower
                   after:        53.0 fps - 1.34x  slower
                  before:        51.5 fps - 1.38x  slower

[close https://github.com/ruby/ruby/pull/1963]
------------------------------------------------------------------------
r64823 | normal | 2018-09-24 16:48:33 +0900 (Mon, 24 Sep 2018) | 5 lines

webrick: raise EOFError in parse when read line is nil

[Bug #15146]

From: Justin Li <git@justinli.net>
------------------------------------------------------------------------
r64822 | nobu | 2018-09-24 16:46:07 +0900 (Mon, 24 Sep 2018) | 1 line

revert r64817: kernel_warn.rb: skip kernel_require.rb
------------------------------------------------------------------------
r64821 | k0kubun | 2018-09-24 15:21:19 +0900 (Mon, 24 Sep 2018) | 3 lines

_mjit_compile_send.erb: remove TODO comment solved [ci skip]

which was solved by r64820
------------------------------------------------------------------------
r64820 | k0kubun | 2018-09-24 15:09:55 +0900 (Mon, 24 Sep 2018) | 10 lines

_mjit_compile_send.erb: refactor code to setup iseq

by sharing vm_call_iseq_setup_normal. This is a retry of r64280.

vm_insnhelper.c: Remove unused argument `ci` and pass `me` instead of
`cc` to share this with JIT. Declare this with ALWAYS_INLINE to make
sure this function is inlined in JIT.

tool/mk_call_iseq_optimized.rb: deal with the interface change of
vm_call_iseq_setup_normal.
------------------------------------------------------------------------
r64819 | svn | 2018-09-24 12:14:46 +0900 (Mon, 24 Sep 2018) | 1 line

* 2018-09-24
------------------------------------------------------------------------
r64818 | svn | 2018-09-24 12:14:46 +0900 (Mon, 24 Sep 2018) | 1 line

* properties.
------------------------------------------------------------------------
r64817 | nobu | 2018-09-24 12:14:43 +0900 (Mon, 24 Sep 2018) | 4 lines

kernel_warn.rb: skip kernel_require.rb

* lib/rubygems/core_ext/kernel_warn.rb (Kernel#warn): skip
  kernel_require.rb's frames when `uplevel` option is given.
------------------------------------------------------------------------
r64816 | nobu | 2018-09-23 21:40:46 +0900 (Sun, 23 Sep 2018) | 4 lines

test_win32api.rb: suppress a warning

* test/test_win32api.rb: suppress a warning, which we know already
  well.
------------------------------------------------------------------------
r64815 | nobu | 2018-09-23 08:52:58 +0900 (Sun, 23 Sep 2018) | 4 lines

Skip a cleanup if new_ole failed

On Appveyor, WIN32OLE sometimes fails due to a system shutdown, and
`@ie` is not assigned.
------------------------------------------------------------------------
r64814 | nobu | 2018-09-23 05:39:35 +0900 (Sun, 23 Sep 2018) | 1 line

tool/enc-unicode.rb: rewrote without flip-flop
------------------------------------------------------------------------
r64813 | svn | 2018-09-23 05:13:09 +0900 (Sun, 23 Sep 2018) | 1 line

* 2018-09-23
------------------------------------------------------------------------
r64812 | nobu | 2018-09-23 05:13:08 +0900 (Sun, 23 Sep 2018) | 3 lines

Fix for old names of mcontext registers

c.f. https://github.com/mistydemeo/tigerbrew/issues/473
------------------------------------------------------------------------
r64811 | svn | 2018-09-22 10:11:41 +0900 (Sat, 22 Sep 2018) | 1 line

* 2018-09-22
------------------------------------------------------------------------
r64810 | shirosaki | 2018-09-22 10:11:40 +0900 (Sat, 22 Sep 2018) | 8 lines

dir.c: performance fix with braces

Braces were expended before ruby_glob0(). This caused to call
replace_real_basename() for same plain patterns repeatedly.
Move blace expansion into glob_helper() in ruby_glob0() to reduce
replace_real_basename() call.
This fix changes the order of glob results.
[Feature #13167] [Fix GH-1864]
------------------------------------------------------------------------
r64809 | nobu | 2018-09-21 22:52:03 +0900 (Fri, 21 Sep 2018) | 1 line

configure.ac: prepend the wrapper after CPP is set
------------------------------------------------------------------------
r64808 | nobu | 2018-09-21 19:31:11 +0900 (Fri, 21 Sep 2018) | 3 lines

Suppress more -Wparentheses warnings

[Fix GH-1958]
------------------------------------------------------------------------
r64807 | svn | 2018-09-21 19:19:14 +0900 (Fri, 21 Sep 2018) | 1 line

* expand tabs.
------------------------------------------------------------------------
r64806 | nobu | 2018-09-21 19:19:10 +0900 (Fri, 21 Sep 2018) | 5 lines

Remove -Wno-parentheses flag.

[Fix GH-1958]

From: Jun Aruga <jaruga@redhat.com>
------------------------------------------------------------------------
r64805 | kazu | 2018-09-21 17:53:11 +0900 (Fri, 21 Sep 2018) | 1 line

Fix sample code [ci skip]
------------------------------------------------------------------------
r64804 | kazu | 2018-09-21 17:34:25 +0900 (Fri, 21 Sep 2018) | 1 line

Fix a typo [ci skip]
------------------------------------------------------------------------
r64803 | svn | 2018-09-21 16:19:14 +0900 (Fri, 21 Sep 2018) | 1 line

* properties.
------------------------------------------------------------------------
r64802 | nobu | 2018-09-21 16:19:13 +0900 (Fri, 21 Sep 2018) | 6 lines

darwin-cc: hide ld warnings

* tool/darwin-cc: ld in Apple's recent Xcode warns text-based stub
  files, which are probably caused by Apple's broken package.
  hide such (and architecture deprecation) warnings during
  configuration to pass TRY_LDFLAGS.
------------------------------------------------------------------------
r64801 | svn | 2018-09-21 15:41:09 +0900 (Fri, 21 Sep 2018) | 1 line

* remove trailing spaces.
------------------------------------------------------------------------
r64800 | ko1 | 2018-09-21 15:41:07 +0900 (Fri, 21 Sep 2018) | 15 lines

escape all env properly.

* vm_backtrace.c (rb_debug_inspector_open): escape all env using
  `rb_vm_stack_to_heap()` before making bindings.
  [Bug #15105]

  There is a complicated story of this issue:
  Without this patch, IFUNC frame does not escaped. A IFUNC frame
  points to CFUNC ep as previous ep. However, CFUNC ep can be escaped
  because of making bindings of Ruby level frames.
  IFUNC's ep can points to invalidated ep and `rb_iter_break()` will
  fail. This is why `any?` fails.

* test/-ext-/debug/test_debug.rb: add a test.

------------------------------------------------------------------------
r64799 | ko1 | 2018-09-21 15:30:54 +0900 (Fri, 21 Sep 2018) | 5 lines

fix typo.

* vm_exec.h (DEBUG_END_INSN()): use `ec` instead of `th`.
  This macro is used when `VMDEBUG > 0`.

------------------------------------------------------------------------
r64798 | kazu | 2018-09-21 11:14:33 +0900 (Fri, 21 Sep 2018) | 1 line

Fix a typo [ci skip]
------------------------------------------------------------------------
r64797 | svn | 2018-09-21 03:24:17 +0900 (Fri, 21 Sep 2018) | 1 line

* properties.
------------------------------------------------------------------------
r64796 | marcandre | 2018-09-21 03:24:16 +0900 (Fri, 21 Sep 2018) | 3 lines

Matrix: Add #reflexive? method. [Fix GH-1730]

Adapted from a patch by Yilo
------------------------------------------------------------------------
r64795 | svn | 2018-09-21 00:06:57 +0900 (Fri, 21 Sep 2018) | 1 line

* 2018-09-21
------------------------------------------------------------------------
r64794 | nobu | 2018-09-21 00:06:56 +0900 (Fri, 21 Sep 2018) | 3 lines

Enumerable#to_h with block and so on

[Feature #15143]
------------------------------------------------------------------------
r64793 | nobu | 2018-09-20 23:30:21 +0900 (Thu, 20 Sep 2018) | 1 line

Ignore Xcode linker warnings
------------------------------------------------------------------------
r64792 | mame | 2018-09-20 16:36:10 +0900 (Thu, 20 Sep 2018) | 1 line

* compile.c (compile_case): emit opt_case_dispatch only on optimized mode
------------------------------------------------------------------------
r64791 | shyouhei | 2018-09-20 14:31:51 +0900 (Thu, 20 Sep 2018) | 5 lines

fix typo [ci skip]

This error does not happen right now so this typo is
not serious, unless you locally edit insns.def.

------------------------------------------------------------------------
r64790 | nobu | 2018-09-20 12:18:54 +0900 (Thu, 20 Sep 2018) | 8 lines

Introduce rb_ary_union_hash method in Array

Avoid repeating code and improve readability in `rb_ary_or` and
`rb_ary_union_multi`. Similaty as done with `rb_ary_union`.

[Fix GH-1747] [Feature #14097]

From: Ana Maria Martinez Gomez <ammartinez@suse.de>
------------------------------------------------------------------------
r64789 | nobu | 2018-09-20 12:18:54 +0900 (Thu, 20 Sep 2018) | 8 lines

Link Array#union from | method

`Array#uniq` is not really related with `Array#|`, so I replaced it by
`Array#union`.

[Fix GH-1747] [Feature #14097]

From: Ana Maria Martinez Gomez <ammartinez@suse.de>
------------------------------------------------------------------------
r64788 | nobu | 2018-09-20 12:18:53 +0900 (Thu, 20 Sep 2018) | 8 lines

Introduce rb_ary_union method in Array

Avoid repeating code and improve readability in `rb_ary_or` and
`rb_ary_union_multi`.

[Fix GH-1747] [Feature #14097]

From: Ana Maria Martinez Gomez <ammartinez@suse.de>
------------------------------------------------------------------------
r64787 | nobu | 2018-09-20 12:18:52 +0900 (Thu, 20 Sep 2018) | 15 lines

Add union method to Array

I introduce a `union` method equivalent to the `|` operator, but which
accept more than array as argument. This improved readability, and it
is also coherent with the `+` operator, which has a similar `concat`
method. The method doesn't modify the original object and return a new
object instead. It is plan to introduce a `union!` method as well.

Tests and documentation are included.

It solves partially https://bugs.ruby-lang.org/issues/14097

[Fix GH-1747] [Feature #14097]

From: Ana Maria Martinez Gomez <ammartinez@suse.de>
------------------------------------------------------------------------
r64786 | nobu | 2018-09-20 10:43:35 +0900 (Thu, 20 Sep 2018) | 5 lines

parse.y: fix block passing with empty kwargs

* parse.y (arg_blk_pass): preceeding arguments node may be NULL when
  an empty keyword argument hash splat is optimized away.
  [ruby-core:88890] [Bug #15087]
------------------------------------------------------------------------
r64785 | svn | 2018-09-20 02:12:05 +0900 (Thu, 20 Sep 2018) | 1 line

* 2018-09-20
------------------------------------------------------------------------
r64784 | marcandre | 2018-09-20 02:12:04 +0900 (Thu, 20 Sep 2018) | 3 lines

net/http: Improve net/http header error message.

Patch by Matt Larraz. [Fix GH-1849].
------------------------------------------------------------------------
r64783 | kazu | 2018-09-19 21:39:44 +0900 (Wed, 19 Sep 2018) | 4 lines

ruby_2_2 branch has ended

https://www.ruby-lang.org/en/news/2018/06/20/support-of-ruby-2-2-has-ended/
[ci skip]
------------------------------------------------------------------------
r64782 | normal | 2018-09-19 17:23:19 +0900 (Wed, 19 Sep 2018) | 6 lines

process.c (waitpid_cleanup): unconditionally remove from waiters

This is the safer option, as there seems to be cases where checking
waitpid_state.ret is insufficient in ensure.  I'm not 100% sure
why this is, but this change was required for my work-in-progress
Thread::Light patch series, too...
------------------------------------------------------------------------
r64781 | mame | 2018-09-19 11:10:58 +0900 (Wed, 19 Sep 2018) | 1 line

* hash.c (rb_hash_update): fix indent
------------------------------------------------------------------------
r64780 | marcandre | 2018-09-19 11:10:05 +0900 (Wed, 19 Sep 2018) | 1 line

[DOC] Add changes to Hash#merge in NEWS [#15111]
------------------------------------------------------------------------
r64779 | mame | 2018-09-19 11:07:33 +0900 (Wed, 19 Sep 2018) | 3 lines

* hash.c (rb_hash_update): remove a meticulous explanation

As per Marc-Andre's comment.  [Refs GH-1951]
------------------------------------------------------------------------
r64778 | svn | 2018-09-19 10:59:27 +0900 (Wed, 19 Sep 2018) | 1 line

* 2018-09-19
------------------------------------------------------------------------
r64777 | mame | 2018-09-19 10:59:26 +0900 (Wed, 19 Sep 2018) | 9 lines

* hash.c (rb_hash_merge): Accepts zero or more hashes as arguments

Hash#merge, merge!, and update could merge exactly two hashes.
Now, they accepts zero or more hashes as arguments so that it can merge
hashes more than two.

This patch was created by Koki Ryu <liukoki@gmail.com> at Ruby Hack
Challenge #5.  Thank you!
[ruby-core:88970] [Feature #15111] [Fix GH-1951]
------------------------------------------------------------------------
r64776 | svn | 2018-09-18 22:52:08 +0900 (Tue, 18 Sep 2018) | 1 line

* expand tabs.
------------------------------------------------------------------------
r64775 | k0kubun | 2018-09-18 22:52:06 +0900 (Tue, 18 Sep 2018) | 4 lines

vm_insnhelper.c: always use bool-ish value

for CC_SET_FASTPATH condition. Just a cosmetic change to unify the
styling with other lines.
------------------------------------------------------------------------
r64774 | nobu | 2018-09-18 21:55:05 +0900 (Tue, 18 Sep 2018) | 1 line

Skip EHOSTUNREACH by host issues
------------------------------------------------------------------------
r64773 | svn | 2018-09-18 21:48:31 +0900 (Tue, 18 Sep 2018) | 1 line

* expand tabs.
------------------------------------------------------------------------
r64772 | k0kubun | 2018-09-18 21:48:28 +0900 (Tue, 18 Sep 2018) | 7 lines

vm_insnhelper.h: rename CI_SET_FASTPATH to CC_SET_FASTPATH

because it's actually setting fastpath to cc instead of ci since r51903.

vm_insnhelper.c: ditto
mjit_compile.c: ditto
tool/ruby_vm/views/_mjit_compile_send.erb: ditto
------------------------------------------------------------------------
r64771 | nobu | 2018-09-18 18:15:46 +0900 (Tue, 18 Sep 2018) | 4 lines

pty.c: typo

* ext/pty/pty.c (chfunc): fix a typo of an operator.  pointed out by
  jaruga (Jun Aruga) at [ruby-core:89058].  [Bug #15116]
------------------------------------------------------------------------
r64770 | nobu | 2018-09-18 17:49:40 +0900 (Tue, 18 Sep 2018) | 5 lines

Lazy Enumerator reduce intermediate array creation

[ruby-core:87907] [Bug #14908] [Fix GH-1912]

From: Anmol Chopra <chopraanmol1@gmail.com>
------------------------------------------------------------------------
r64769 | hsbt | 2018-09-18 17:37:18 +0900 (Tue, 18 Sep 2018) | 5 lines

Merge upstream revision of rubygems/rubygems.

  This commits includes tiny bugfix and new features listed here:
    * Add --re-sign flag to cert command by bronzdoc: https://github.com/rubygems/rubygems/pull/2391
    * Download gems with threads. by indirect: https://github.com/rubygems/rubygems/pull/1898
------------------------------------------------------------------------
r64768 | nobu | 2018-09-18 17:30:24 +0900 (Tue, 18 Sep 2018) | 1 line

Tests of Enumerator::Yielder#yield with multiple arguments
------------------------------------------------------------------------
r64767 | svn | 2018-09-18 09:22:06 +0900 (Tue, 18 Sep 2018) | 1 line

* 2018-09-18
------------------------------------------------------------------------
r64766 | nobu | 2018-09-18 09:22:04 +0900 (Tue, 18 Sep 2018) | 4 lines

pty.c: more difensive

* ext/pty/pty.c (chfunc): should not close the slave fd if it is 0..2.
  [ruby-core:89043] [Bug #15116]
------------------------------------------------------------------------
r64765 | svn | 2018-09-17 10:31:08 +0900 (Mon, 17 Sep 2018) | 1 line

* 2018-09-17
------------------------------------------------------------------------
r64764 | k0kubun | 2018-09-17 10:31:06 +0900 (Mon, 17 Sep 2018) | 5 lines

common.mk: ruby tool/update-deps --fix

tool/update-deps: tweak the comment to make sure it should be built in
the source directory, because building ruby outside source directory
failed on my trial.
------------------------------------------------------------------------
r64763 | nobu | 2018-09-16 23:32:30 +0900 (Sun, 16 Sep 2018) | 1 line

Propagate subprocess timeout scale option to worker processes
------------------------------------------------------------------------
r64762 | k0kubun | 2018-09-16 22:22:00 +0900 (Sun, 16 Sep 2018) | 9 lines

addr2line.c: fix -Wmaybe-uninitialized

../addr2line.c: In function 'fill_lines':
../addr2line.c:709:8: warning: 'file' may be used uninitialized in this function [-Wmaybe-uninitialized]
     if (file != NULL) {
        ^
../addr2line.c:535:11: warning: 'filesize' may be used uninitialized in this function [-Wmaybe-uninitialized]
     off_t filesize;
           ^~~~~~~~
------------------------------------------------------------------------
r64761 | marcandre | 2018-09-16 13:18:50 +0900 (Sun, 16 Sep 2018) | 4 lines

lib/matrix: Fix potential bug of Vector#angle_with

Could happen for some linearly dependent vectors.
Patch by Vasiliy Petrov. [Fix GH-1803]
------------------------------------------------------------------------
r64760 | svn | 2018-09-16 13:00:16 +0900 (Sun, 16 Sep 2018) | 1 line

* properties.
------------------------------------------------------------------------
r64759 | marcandre | 2018-09-16 13:00:14 +0900 (Sun, 16 Sep 2018) | 3 lines

Alias Struct#select as Struct#filter. Patch by Kenichi Kamiya.

[Fix GH-#1862] [#1784]
------------------------------------------------------------------------
r64758 | marcandre | 2018-09-16 12:24:15 +0900 (Sun, 16 Sep 2018) | 1 line

node.c: Typo fix. Patch by Shuichi Tamayose. [ci skip] [Fix GH-1880]
------------------------------------------------------------------------
r64757 | marcandre | 2018-09-16 11:49:44 +0900 (Sun, 16 Sep 2018) | 3 lines

[DOC] Improve String#strip documentation.

Patch by Josh Goldberg. [Fix GH-1933] [ci skip]
------------------------------------------------------------------------
r64756 | marcandre | 2018-09-16 11:45:16 +0900 (Sun, 16 Sep 2018) | 5 lines

Add some missing documentation to Queue#{close|deq} [ci skip]

Patch by Lars Kanis. [Fix GH-1949]

*  Describe the impact of Queue#close to Queue#deq .
------------------------------------------------------------------------
r64755 | marcandre | 2018-09-16 11:42:26 +0900 (Sun, 16 Sep 2018) | 1 line

array.c: Optimize rb_ary_and. Patch by Stefan Schu{U+00DF}ler. [Fix GH-1938]
------------------------------------------------------------------------
r64754 | svn | 2018-09-16 01:27:07 +0900 (Sun, 16 Sep 2018) | 1 line

* 2018-09-16
------------------------------------------------------------------------
r64753 | nobu | 2018-09-16 01:27:06 +0900 (Sun, 16 Sep 2018) | 4 lines

encoding.c: check external encoding

* encoding.c (rb_enc_get_index): external encoding may not be Data
  object.  [ruby-core:89016] [Bug #15122]
------------------------------------------------------------------------
r64752 | nobu | 2018-09-15 21:45:46 +0900 (Sat, 15 Sep 2018) | 5 lines

Work on Benchmark::Tms documentation [ci skip]

[ruby-core:88874] [Bug #15080]

From: Richard Wardin <shalmezad@gmail.com>
------------------------------------------------------------------------
r64751 | nobu | 2018-09-15 20:45:31 +0900 (Sat, 15 Sep 2018) | 1 line

get rid of newer syntax for old versions
------------------------------------------------------------------------
r64750 | nobu | 2018-09-15 18:59:14 +0900 (Sat, 15 Sep 2018) | 8 lines

Fix issues detected by code analysis tool (mainly Coverity).

* Fix leaked storage in addr2line.c.
* Fix for "top_root" leaking the resource.

[Fix GH-1956]

From: Jun Aruga <jaruga@redhat.com>
------------------------------------------------------------------------
r64749 | nobu | 2018-09-15 18:48:42 +0900 (Sat, 15 Sep 2018) | 5 lines

Expand spec files to realpaths

* spec/mspec/lib/mspec/utils/script.rb (MSpecScript#entries): expand
  the given spec path to the realpath, not to require a library by
  realpath and symbolic link path from the spec file.
------------------------------------------------------------------------
r64748 | nobu | 2018-09-15 18:25:31 +0900 (Sat, 15 Sep 2018) | 1 line

rid of warnings [Fix GH-1953]
------------------------------------------------------------------------
r64747 | nobu | 2018-09-15 17:39:07 +0900 (Sat, 15 Sep 2018) | 1 line

test_sprintf.rb: test for %p
------------------------------------------------------------------------
r64746 | svn | 2018-09-15 11:20:48 +0900 (Sat, 15 Sep 2018) | 1 line

* 2018-09-15
------------------------------------------------------------------------
r64745 | nobu | 2018-09-15 11:20:47 +0900 (Sat, 15 Sep 2018) | 9 lines

Use opt_{aref,aset} over opt_{aref,aset}_with

* compile.c (iseq_compile_each0): Use `opt_aref`/`opt_aset` over
  `opt_aref_with`/`opt_aset_with` when frozen_string_literal: true,
  not to resurrect the index string on non-Hash receiver.

[Fix GH-1957]

From: chopraanmol1 <chopraanmol1@gmail.com>
------------------------------------------------------------------------
r64744 | svn | 2018-09-14 22:19:46 +0900 (Fri, 14 Sep 2018) | 1 line

* properties.
------------------------------------------------------------------------
r64743 | hsbt | 2018-09-14 22:19:45 +0900 (Fri, 14 Sep 2018) | 5 lines

Partly reverted for ruby-style.el.

  Revert "Removed old elisp files. New upstream repository was moved https://github.com/ruby/elisp."

  This reverts commit 7eedd308b841e7b8eb4bc36211d28faf3521ee92.
------------------------------------------------------------------------
r64742 | hsbt | 2018-09-14 21:37:51 +0900 (Fri, 14 Sep 2018) | 1 line

Added entries for lldb files in misc directory.
------------------------------------------------------------------------
r64741 | hsbt | 2018-09-14 21:34:50 +0900 (Fri, 14 Sep 2018) | 1 line

Removed old elisp files. New upstream repository was moved https://github.com/ruby/elisp.
------------------------------------------------------------------------
r64740 | shyouhei | 2018-09-14 17:27:44 +0900 (Fri, 14 Sep 2018) | 6 lines

PRI_64_PREFIX "u" is called PRIu64

See also ISO9899:1999 section 7.8.1 paragraph 3.

The #ifndef is for C compilers older than C99.

------------------------------------------------------------------------
r64739 | shyouhei | 2018-09-14 16:57:19 +0900 (Fri, 14 Sep 2018) | 2 lines

forgot to expand tabs [ci skip]

------------------------------------------------------------------------
r64738 | svn | 2018-09-14 16:44:45 +0900 (Fri, 14 Sep 2018) | 1 line

* 2018-09-14
------------------------------------------------------------------------
r64737 | shyouhei | 2018-09-14 16:44:44 +0900 (Fri, 14 Sep 2018) | 43 lines

move ADD_PC around (take 2)

Now that we can say for sure if an instruction calls a method or
not internally, it is now possible to reroute the bugs that
forced us to revert the "move PC around" optimization.

First try: r62051
Reverted:  r63763
See also:  r63999

----

trunk: ruby 2.6.0dev (2018-09-13 trunk 64736) [x86_64-darwin15]
ours: ruby 2.6.0dev (2018-09-13 trunk 64736) [x86_64-darwin15]
last_commit=move ADD_PC around (take 2)
Calculating -------------------------------------
                           trunk        ours
         so_ackermann      1.884       2.278 i/s -       1.000 times in 0.530926s 0.438935s
             so_array      1.178       1.157 i/s -       1.000 times in 0.848786s 0.864467s
      so_binary_trees      0.176       0.177 i/s -       1.000 times in 5.683895s 5.657707s
       so_concatenate      0.220       0.221 i/s -       1.000 times in 4.546896s 4.518949s
       so_count_words      6.729       6.470 i/s -       1.000 times in 0.148602s 0.154561s
         so_exception      3.324       3.688 i/s -       1.000 times in 0.300872s 0.271147s
          so_fannkuch      0.546       0.968 i/s -       1.000 times in 1.831328s 1.033376s
             so_fasta      0.541       0.547 i/s -       1.000 times in 1.849923s 1.827091s
      so_k_nucleotide      0.800       0.777 i/s -       1.000 times in 1.250635s 1.286295s
             so_lists      2.101       1.848 i/s -       1.000 times in 0.475954s 0.541095s
        so_mandelbrot      0.435       0.408 i/s -       1.000 times in 2.299328s 2.450535s
            so_matrix      1.946       1.912 i/s -       1.000 times in 0.513872s 0.523076s
    so_meteor_contest      0.311       0.317 i/s -       1.000 times in 3.219297s 3.152052s
             so_nbody      0.746       0.703 i/s -       1.000 times in 1.339815s 1.423441s
       so_nested_loop      0.899       0.901 i/s -       1.000 times in 1.111767s 1.109555s
            so_nsieve      0.559       0.579 i/s -       1.000 times in 1.787763s 1.726552s
       so_nsieve_bits      0.435       0.428 i/s -       1.000 times in 2.296282s 2.333852s
            so_object      1.368       1.442 i/s -       1.000 times in 0.731237s 0.693684s
      so_partial_sums      0.616       0.546 i/s -       1.000 times in 1.623592s 1.833097s
          so_pidigits      0.831       0.832 i/s -       1.000 times in 1.203117s 1.202334s
            so_random      2.934       2.724 i/s -       1.000 times in 0.340791s 0.367150s
so_reverse_complement      0.583       0.866 i/s -       1.000 times in 1.714144s 1.154615s
             so_sieve      1.829       2.081 i/s -       1.000 times in 0.546607s 0.480562s
      so_spectralnorm      0.524       0.558 i/s -       1.000 times in 1.908716s 1.792382s


------------------------------------------------------------------------
r64736 | k0kubun | 2018-09-13 22:59:25 +0900 (Thu, 13 Sep 2018) | 7 lines

iseq.c: prefix rb_ to non-static iseq functions

I assume we always prefix rb_ to non-static functions to avoid conflict.
These functions are not exported and safe to be renamed.

iseq.h: ditto
compile.c: ditto
------------------------------------------------------------------------
r64735 | k0kubun | 2018-09-13 21:29:57 +0900 (Thu, 13 Sep 2018) | 8 lines

vm_insnhelper.h: drop OPT_CALL_FASTPATH macro support

because cc->call is NULL by default and it is not overridden by
vm_search_super_method if OPT_CALL_FASTPATH is 0. So this macro is not
just a switch for optimization but now it's mandatory.

vm_insnhelper.c: cosmetic change. Use boolean-ish `TRUE` instead of 1 to
specify `enabled` flag.
------------------------------------------------------------------------
r64734 | kazu | 2018-09-13 21:06:18 +0900 (Thu, 13 Sep 2018) | 5 lines

Remove old ruby-mode.el

Use emacs bundled ruby-mode.el instead.
[Feature #6823] [ci skip]

------------------------------------------------------------------------
r64733 | nobu | 2018-09-13 20:10:24 +0900 (Thu, 13 Sep 2018) | 5 lines

warn unused blocks with Enumerable#all? any? one? none?

[Fix GH-1953]

From: Koji Onishi <fursich0@gmail.com>
------------------------------------------------------------------------
r64732 | nobu | 2018-09-13 20:00:55 +0900 (Thu, 13 Sep 2018) | 15 lines

Make qsort_r() flavor detecting work if qsort_r() is a macro

On FreeBSD we're going to switch to the GNU-ish version of qsort_r().
POSIX is also considering standardizing that one. To prevent faulty
calls, we have a macro in place to throw a compiler error if a BSD-style
qsort_r() call is performed on a patched system. Such an approach tends
to be permitted by POSIX.

The configure check we have in Ruby would fail if qsort_r() is a
function macro. Add parentheses around it to prevent macro expansion and
force the declaration of a prototype.

[Fix GH-1954]

From: Ed Schouten <ed@nuxi.nl>
------------------------------------------------------------------------
r64731 | nobu | 2018-09-13 19:59:12 +0900 (Thu, 13 Sep 2018) | 1 line

thread.c: fix -Wformat warning where uint64_t is not unsigned long
------------------------------------------------------------------------
r64730 | k0kubun | 2018-09-13 16:12:07 +0900 (Thu, 13 Sep 2018) | 4 lines

Revert "vm_insnhelper.h: simplify EXEC_EC_CFP implementation"

This reverts commit r64711, because EXEC_EC_CFP on JIT-ed code does not
call jit_func with the patch when catch_except_p is true. It wasn't intentional.
------------------------------------------------------------------------
r64712 | k0kubun | 2018-09-13 15:49:49 +0900 (Thu, 13 Sep 2018) | 10 lines

thread.c: fix -Wformat warning

../thread.c:1219:18: warning: format specifies type 'unsigned long' but the argument has type 'rb_hrtime_t'
      (aka 'unsigned long long') [-Wformat]
                 end, now);
                 ^~~
../thread.c:1219:23: warning: format specifies type 'unsigned long' but the argument has type 'rb_hrtime_t'
      (aka 'unsigned long long') [-Wformat]
                 end, now);
                      ^~~
------------------------------------------------------------------------
r64711 | k0kubun | 2018-09-13 15:39:40 +0900 (Thu, 13 Sep 2018) | 31 lines

vm_insnhelper.h: simplify EXEC_EC_CFP implementation

and possibly memory access for iseq->body may be reduced.

No significant impact for performance on Optcarrot.

* before
fps: 55.03865935187656
fps: 57.16854675983188
fps: 57.672458407661765
fps: 58.28989837869383
fps: 58.80503815099268
fps: 59.068054176528534
fps: 59.55736806358244
fps: 61.01018920533034
fps: 63.34167049232186
fps: 65.20575018321766
fps: 65.46758316561318

* after
fps: 55.21860411005677
fps: 55.34840351179166
fps: 58.23666596747484
fps: 59.71987124578901
fps: 61.131485120234935
fps: 61.279905164649485
fps: 61.66060774175459
fps: 64.11215576508765
fps: 64.63699742853154
fps: 65.28260058920769
fps: 65.85447796482678
------------------------------------------------------------------------
r64710 | nobu | 2018-09-13 13:53:52 +0900 (Thu, 13 Sep 2018) | 4 lines

node.h: removed unused macros

* node.h (enum node_type): removed unused macros which redefine the
  same name enum values, and probably had ended the historical role.
------------------------------------------------------------------------
r64709 | shyouhei | 2018-09-13 12:46:46 +0900 (Thu, 13 Sep 2018) | 5 lines

move canary-related statements into macros

This is mostly cosmetic.  Should generate a slightly readable
vm.inc output.

------------------------------------------------------------------------
r64708 | k0kubun | 2018-09-13 10:45:38 +0900 (Thu, 13 Sep 2018) | 5 lines

appveyor.yml: increase timeout for vs

vs140 tends to die with 10s timeout on TestThreadQueue#test_queue_with_trap
https://ci.appveyor.com/project/ruby/ruby/build/9610/job/di9durc5rv0dwhor
https://ci.appveyor.com/project/ruby/ruby/build/9598/job/t7wugyn1sm57lbw3
------------------------------------------------------------------------
r64707 | normal | 2018-09-13 10:43:03 +0900 (Thu, 13 Sep 2018) | 9 lines

thread.c (rb_thread_atfork): reinitialize current th->interrupt_lock

Another thread may be holding th->interrupt_lock while our
current thread calls fork.  Therefore we must reinitialize our
own th->interrupt_lock in the child process because the owner
of the lock is only in the parent.  The original parent process
is unaffected.  We cannot destroy the lock while it has an unknown
state, either, so some implementations can leak a small amount
of memory, here (NPTL won't).
------------------------------------------------------------------------
r64706 | normal | 2018-09-13 05:49:24 +0900 (Thu, 13 Sep 2018) | 15 lines

fiber: fix crash on GC after forking

Remove the remainder of ROOT_FIBER_CONTEXT use and unnecessary
differences between the root and non-root fiber.  This makes
it easier to follow new root fiber at fork time.

Multiple sources of truth often leads to bugs, as in this case.
We can determinte root fiber by checking a fiber against the root_fiber
of its owner thread.  The new `fiber_is_root_p' function
supports that.

Now, we can care only about free-ing/recycling/munmap-ing stacks
as appropriate.

[Bug #15050]
------------------------------------------------------------------------
r64705 | normal | 2018-09-13 05:49:19 +0900 (Thu, 13 Sep 2018) | 11 lines

cont.c (fiber_memsize): do not rely on ROOT_FIBER_CONTEXT

We can check if the fiber we're interested in is the
th->root_fiber for the owner thread, so there is no need to use
ROOT_FIBER_CONTEXT.

Note: there is no guarantee th->ec points to
&th->root_fiber->cont.saved_ec, thus vm::thread_memsize may not
account for root fiber correctly (pre-existing bug).

[Bug #15050]
------------------------------------------------------------------------
r64704 | normal | 2018-09-13 05:49:14 +0900 (Thu, 13 Sep 2018) | 6 lines

cont.c (ec_set_vm_stack): avoid needless casting

Am I missing something, here?  Casting was totally unnecessary
and ugly...

[ruby-core:88929]
------------------------------------------------------------------------
r64703 | normal | 2018-09-13 05:49:10 +0900 (Thu, 13 Sep 2018) | 10 lines

share VM stack between threads and fibers if identical in size

ec->vm_stack is always allocated with malloc, so stack cache for
root fiber (thread stack) and non-root fibers can be shared as
long as the size is the same.  The purpose of this change is to
reduce dependencies on ROOT_FIBER_CONTEXT.

[Feature #15095] [Bug #15050]

v2: vm.c: fix build with USE_THREAD_DATA_RECYCLE==0
------------------------------------------------------------------------
r64702 | svn | 2018-09-13 01:05:08 +0900 (Thu, 13 Sep 2018) | 1 line

* 2018-09-13
------------------------------------------------------------------------
r64701 | kazu | 2018-09-13 01:05:07 +0900 (Thu, 13 Sep 2018) | 1 line

[DOC] aseq.each always return self [ci skip]
------------------------------------------------------------------------
r64700 | nobu | 2018-09-12 23:37:51 +0900 (Wed, 12 Sep 2018) | 4 lines

time.c split time_utc_or_local

* time.c (time_utc_or_local): split into time_s_mkutc and
  time_s_mktime without utc flag.
------------------------------------------------------------------------
r64699 | k0kubun | 2018-09-12 22:32:11 +0900 (Wed, 12 Sep 2018) | 32 lines

_mjit_compile_pc_and_sp.erb: forget about memcpy [ci skip]

because using memcpy here actually made performance worse.
In Optcarrot,

* for loop
fps: 55.90428960597268
fps: 57.21690379342434
fps: 58.41751168279789
fps: 58.7317470613203
fps: 62.81371000202459
fps: 63.02541045417479
fps: 63.77324026366317
fps: 65.48067818347447
fps: 66.02324323831398
fps: 66.3816048847424
fps: 66.54526488660156

* memcpy
fps: 54.98389812126847
fps: 57.96524857391357
fps: 57.974918725327946
fps: 58.285987089087364
fps: 58.639003211333225
fps: 59.03244214601948
fps: 59.89964772199603
fps: 60.809490242786175
fps: 62.462070790624146
fps: 62.534599002918306
fps: 63.787312566163756

That's probably because the copied size is very small.
------------------------------------------------------------------------
r64698 | nobu | 2018-09-12 21:14:45 +0900 (Wed, 12 Sep 2018) | 1 line

.travis.yml: run ruby/spec version guards check in parallel
------------------------------------------------------------------------
r64697 | mrkn | 2018-09-12 17:51:34 +0900 (Wed, 12 Sep 2018) | 3 lines

[DOC] Modify descriptions for ArithmeticSequence

[ci-skip]
------------------------------------------------------------------------
r64696 | mrkn | 2018-09-12 17:36:48 +0900 (Wed, 12 Sep 2018) | 3 lines

[DOC] Add the documentation of ArithmeticSequence

[ci-skip]
------------------------------------------------------------------------
r64695 | mrkn | 2018-09-12 16:35:42 +0900 (Wed, 12 Sep 2018) | 6 lines

enumerator.c: Fix ArithmeticSequence for complex step

Make sure Enumerator::ArithmeticSequence#each to work well
for a complex step value.

This reverts commit ca47fb329a1d48af3e1009620bdb18e931c9f188.
------------------------------------------------------------------------
r64694 | nobu | 2018-09-12 16:01:59 +0900 (Wed, 12 Sep 2018) | 1 line

deduce versioned tools from CC
------------------------------------------------------------------------
r64693 | mrkn | 2018-09-12 14:52:27 +0900 (Wed, 12 Sep 2018) | 3 lines

Revert "enumerator.c: Fix ArithmeticSequence for complex step"

This reverts commit 0a0f8238d02a2dfff4cd2892408e14cb826cec7e.
------------------------------------------------------------------------
r64692 | mrkn | 2018-09-12 14:35:46 +0900 (Wed, 12 Sep 2018) | 4 lines

enumerator.c: Fix ArithmeticSequence for complex step

Make sure Enumerator::ArithmeticSequence#each to work well
for a complex step value.
------------------------------------------------------------------------
r64691 | shyouhei | 2018-09-12 13:04:31 +0900 (Wed, 12 Sep 2018) | 6 lines

resurrect the string to expect modifications

String#freeze can be redefined to be destructive.  While such
redefinition is definitely weird, it should be possible.  Resurrect
the string to prepare for that sort of things.

------------------------------------------------------------------------
r64690 | shyouhei | 2018-09-12 12:39:36 +0900 (Wed, 12 Sep 2018) | 21 lines

make opt_str_freeze leaf

Simply use DISPATCH_ORIGINAL_INSN instead of rb_funcall.  This is,
when possible, overall performant because method dispatch results are
cached inside of CALL_CACHE.  Should also be good for JIT.

----

trunk: ruby 2.6.0dev (2018-09-12 trunk 64689) [x86_64-darwin15]
ours: ruby 2.6.0dev (2018-09-12 leaf-insn 64688) [x86_64-darwin15]
last_commit=make opt_str_freeze leaf
Calculating -------------------------------------
                          trunk        ours
    vm2_freezestring     5.440M     31.411M i/s -      6.000M times in 1.102968s 0.191017s

Comparison:
                 vm2_freezestring
                ours:  31410864.5 i/s
               trunk:   5439865.4 i/s - 5.77x  slower


------------------------------------------------------------------------
r64689 | shyouhei | 2018-09-12 10:55:00 +0900 (Wed, 12 Sep 2018) | 22 lines

make opt_case_dispatch leaf

This instruction can be written without rb_funcall. It not only boosts
performance of case statements, but also makes room of future JIT
improvements.  Because opt_case_dispatch is about optimization this
should not be a bad thing to have.

----

trunk: ruby 2.6.0dev (2018-09-05 trunk 64634) [x86_64-darwin15]
ours: ruby 2.6.0dev (2018-09-12 leaf-insn 64688) [x86_64-darwin15]
last_commit=make opt_case_dispatch leaf
Calculating -------------------------------------
                          trunk        ours
        vm2_case_lit      1.366       2.012 i/s -       1.000 times in 0.731839s 0.497008s

Comparison:
                     vm2_case_lit
                ours:         2.0 i/s
               trunk:         1.4 i/s - 1.47x  slower


------------------------------------------------------------------------
r64688 | svn | 2018-09-12 00:14:57 +0900 (Wed, 12 Sep 2018) | 1 line

* 2018-09-12
------------------------------------------------------------------------
r64687 | k0kubun | 2018-09-12 00:14:56 +0900 (Wed, 12 Sep 2018) | 5 lines

_mjit_compile_insn.erb: move pc on JIT cancel

if and only if it's not moved yet, to avoid potential bugs in the future.

_mjit_compile_send.erb: ditto
------------------------------------------------------------------------
r64686 | k0kubun | 2018-09-11 23:38:05 +0900 (Tue, 11 Sep 2018) | 11 lines

mjit_worker.c: atomically print main message and \n

To attempt to fix CI failure on rubyci freebsd:
https://rubyci.org/logs/rubyci.s3.amazonaws.com/freebsd11zfs/ruby-trunk/log/20180911T123001Z.fail.html.gz

```
JIT success (68.7ms): mjit9@(eval):1 -> /usr/home/hsbt/chkbuild/tmp/build/20180911T123001Z/tmp/jit_test_unload_units_20180911-96427-13cagj9/_ruby_mjit_p99188u9.c
JIT compaction (25.1ms): Compacted 10 methods -> /usr/home/hsbt/chkbuild/tmp/build/20180911T123001Z/tmp/jit_test_unload_units_20180911-96427-13cagj9/_ruby_mjit_p99188u10.soToo many JIT code -- 1 units unloaded

JIT success (68.2ms): mjit10@(eval):1 -> /usr/home/hsbt/chkbuild/tmp/build/20180911T123001Z/tmp/jit_test_unload_units_20180911-96427-13cagj9/_ruby_mjit_p99188u11.c
```
------------------------------------------------------------------------
r64685 | k0kubun | 2018-09-11 23:10:00 +0900 (Tue, 11 Sep 2018) | 4 lines

bare_instructions.rb: use Hash#fetch to read attr

to raise descriptive KeyError instead of NoMethodError in case these
attrs are accidentally removed.
------------------------------------------------------------------------
r64684 | k0kubun | 2018-09-11 22:48:00 +0900 (Tue, 11 Sep 2018) | 32 lines

_mjit_compile_insn.erb: prefer insn.always_leaf?

rather than `trace_enablable_insns` which is hard to maintain.

This would make performance bad because new branches for tracepoint will
be added.

Optcarrot before:
fps: 56.885371547337655
fps: 60.02493636060194
fps: 63.051028327122076
fps: 63.78463316242535
fps: 64.20391937940403
fps: 64.55990344731123
fps: 64.56771099162921
fps: 64.95991277629723
fps: 65.15120708973232
fps: 65.90558702393933
fps: 66.29579283026303

Optcarrot after:
fps: 52.7647027470875
fps: 53.67404855529564
fps: 58.40514319229468
fps: 60.90736996487708
fps: 62.83487236283472
fps: 63.01386139447994
fps: 63.42395443471596
fps: 63.78328559878602
fps: 64.58432081229746
fps: 64.78720429848532
fps: 65.48720618907552
------------------------------------------------------------------------
r64683 | k0kubun | 2018-09-11 21:53:52 +0900 (Tue, 11 Sep 2018) | 12 lines

_mjit_compile_pc_and_sp.erb: skip moving pc

when catch_except_p is false and insn.always_leaf? is true (never makes
arbitrary method call in the insn).

On Optcarrot, unfortunately this didn't have measureable performance impact.
But still this is a good direction since it becomes much faster when
marking all insns as always leaf.

bare_instructions.rb: add `#always_leaf?` that indicates the insn can
always be considered as leaf. Using dynamic leaf for JIT would be hard
since it requires to discard outdated code somehow.
------------------------------------------------------------------------
r64682 | k0kubun | 2018-09-11 20:26:15 +0900 (Tue, 11 Sep 2018) | 8 lines

transform_mjit_header.rb: add static to Init_*

as well, to make CI succeed with VM_CHECK_MODE > 1.

vm_insnhelper.c: drop unnecessary MJIT_HEADER ifdef. This is intended to
be ignored by having `static inline`. Removing that by macro would be
helpful for minimizing compilation time, but the impact is not so big
and having many MJIT_HEADER check would be bad for maintainability.
------------------------------------------------------------------------
r64681 | k0kubun | 2018-09-11 20:09:59 +0900 (Tue, 11 Sep 2018) | 3 lines

test_jit.rb: show extra debug info for #test_unload_units

failure
------------------------------------------------------------------------
r64680 | nobu | 2018-09-11 20:05:20 +0900 (Tue, 11 Sep 2018) | 1 line

random.c: prefixed fill_random_bytes
------------------------------------------------------------------------
r64679 | k0kubun | 2018-09-11 20:01:18 +0900 (Tue, 11 Sep 2018) | 1 line

vm_insnhelper.c: stop unnecessarily using rb_sprintf
------------------------------------------------------------------------
r64678 | k0kubun | 2018-09-11 19:58:33 +0900 (Tue, 11 Sep 2018) | 1 line

vm_insnhelper.c: fix -Wformat-security on rb_bug
------------------------------------------------------------------------
r64677 | shyouhei | 2018-09-11 18:48:58 +0900 (Tue, 11 Sep 2018) | 8 lines

add new instruction attribute called leaf

An instruction is leaf if it has no rb_funcall inside.  In order to
check this property, we introduce stack canary which is a random
number collected at runtime.  Stack top is always filled with this
number and checked for stack smashing operations, when VM_CHECK_MODE.
[GH-1947]

------------------------------------------------------------------------
r64676 | svn | 2018-09-11 18:46:50 +0900 (Tue, 11 Sep 2018) | 1 line

* 2018-09-11
------------------------------------------------------------------------
r64675 | kazu | 2018-09-11 18:46:49 +0900 (Tue, 11 Sep 2018) | 1 line

Use https instead of http
------------------------------------------------------------------------
r64674 | nobu | 2018-09-10 22:05:34 +0900 (Mon, 10 Sep 2018) | 1 line

appveyor.yml: try VS140
------------------------------------------------------------------------
r64673 | nobu | 2018-09-10 18:35:03 +0900 (Mon, 10 Sep 2018) | 1 line

signal.c: consider non-sigaltstack platforms
------------------------------------------------------------------------
r64672 | nobu | 2018-09-10 13:23:24 +0900 (Mon, 10 Sep 2018) | 1 line

util.c: removed extra #endif [Bug #15091]
------------------------------------------------------------------------
r64671 | nobu | 2018-09-10 13:21:39 +0900 (Mon, 10 Sep 2018) | 5 lines

util.c: fix ruby_qsort with qsort_s

* util.c (ruby_qsort): __STDC_VERSION__ may not be defined even if it
  is available.  fixed duplicate definitions when qsort_s is available
  on non-Windows platforms.  [ruby-core:88921] [Bug #15091]
------------------------------------------------------------------------
r64670 | usa | 2018-09-10 10:43:10 +0900 (Mon, 10 Sep 2018) | 2 lines

there is no such predefined macro.  check build before commit!

------------------------------------------------------------------------
r64669 | svn | 2018-09-10 00:46:53 +0900 (Mon, 10 Sep 2018) | 1 line

* 2018-09-10
------------------------------------------------------------------------
r64668 | nobu | 2018-09-10 00:46:51 +0900 (Mon, 10 Sep 2018) | 1 line

.travis.yml: separate ruby/spec on old version
------------------------------------------------------------------------
r64667 | nobu | 2018-09-09 21:48:33 +0900 (Sun, 09 Sep 2018) | 5 lines

Add latest version gcc-8 case to Travis CI

[Fix GH-1937]

Co-authored-by: Jun Aruga <jaruga@redhat.com>
------------------------------------------------------------------------
r64666 | nobu | 2018-09-09 21:48:32 +0900 (Sun, 09 Sep 2018) | 1 line

.travis.yml: branches only for travis-ci
------------------------------------------------------------------------
r64665 | nobu | 2018-09-09 21:42:48 +0900 (Sun, 09 Sep 2018) | 1 line

thread.c: get rid of false warnings by gcc-8
------------------------------------------------------------------------
r64664 | kazu | 2018-09-09 19:51:48 +0900 (Sun, 09 Sep 2018) | 1 line

Fix a typo
------------------------------------------------------------------------
r64663 | normal | 2018-09-09 17:50:53 +0900 (Sun, 09 Sep 2018) | 4 lines

spec/ruby/library/socket/addrinfo: require for SocketSpecs

Otherwise, I get NameError when running these IPv6 tests individually
or in parallel.
------------------------------------------------------------------------
r64662 | svn | 2018-09-09 16:49:05 +0900 (Sun, 09 Sep 2018) | 1 line

* 2018-09-09
------------------------------------------------------------------------
r64661 | nobu | 2018-09-09 16:49:04 +0900 (Sun, 09 Sep 2018) | 10 lines

util.c: qsort_s in C11

* configure.ac: macro for C11 to use qsort_s.

* util.c (ruby_qsort): fix for C11 qsort_s.  the comparison function
  for MSVCRT qsort_s is compatible with BSD qsort_r, but not with C11
  qsort_s, in spite of its name.
  note that mingw defines __STDC_VERSION__ but uses qsort_s in MSVCRT,
  so the MSVCRT block needs to preced the C11 block.
  [ruby-core:88899] [Bug #15091]
------------------------------------------------------------------------
r64660 | kazu | 2018-09-08 11:44:24 +0900 (Sat, 08 Sep 2018) | 1 line

Use `&.` after `&.`
------------------------------------------------------------------------
r64659 | svn | 2018-09-08 10:09:45 +0900 (Sat, 08 Sep 2018) | 1 line

* 2018-09-08
------------------------------------------------------------------------
r64658 | normal | 2018-09-08 10:09:44 +0900 (Sat, 08 Sep 2018) | 3 lines

test/ruby/test_thread.rb: join threads in each test

Leaky thread detection doesn't happen frequently, enough
------------------------------------------------------------------------
r64657 | nobu | 2018-09-07 23:37:19 +0900 (Fri, 07 Sep 2018) | 1 line

ext/objspace/object_tracing.c (freeobj_i): fix missing assignment
------------------------------------------------------------------------
r64656 | nobu | 2018-09-07 22:43:01 +0900 (Fri, 07 Sep 2018) | 1 line

tool/node_name.rb: rewrote without flip-flop
------------------------------------------------------------------------
r64655 | nobu | 2018-09-07 17:28:57 +0900 (Fri, 07 Sep 2018) | 9 lines

object_tracing.c: register TracePoint objects

* ext/objspace/object_tracing.c (trace_object_allocations_start): to
  prevent TracePoint objects from GC, register them in the VM, since
  they are unique per VM.
  http://ci.rvm.jp/results/trunk-test@ruby-sky3/1291901

* ext/objspace/object_tracing.c (trace_object_allocations_stop): reuse
  TracePoint objects.
------------------------------------------------------------------------
r64654 | nobu | 2018-09-07 12:42:51 +0900 (Fri, 07 Sep 2018) | 1 line

test/ruby/test_ast.rb: assert error messages too
------------------------------------------------------------------------
r64653 | nobu | 2018-09-07 12:39:30 +0900 (Fri, 07 Sep 2018) | 5 lines

Refactor test

[Fix GH-1946]

From: Josh Cheek <josh.cheek@gmail.com>
------------------------------------------------------------------------
r64652 | nobu | 2018-09-07 12:23:25 +0900 (Fri, 07 Sep 2018) | 1 line

ext/objspace/object_tracing.c (freeobj_i): no lookup before delete
------------------------------------------------------------------------
r64651 | svn | 2018-09-07 12:16:13 +0900 (Fri, 07 Sep 2018) | 1 line

* 2018-09-07
------------------------------------------------------------------------
r64650 | nobu | 2018-09-07 12:16:12 +0900 (Fri, 07 Sep 2018) | 1 line

ext/objspace/object_tracing.c: get rid of aliasing pointers
------------------------------------------------------------------------
r64648 | hsbt | 2018-09-06 12:02:06 +0900 (Thu, 06 Sep 2018) | 1 line

Extracted file list for csv.gemspec.
------------------------------------------------------------------------
r64647 | kazu | 2018-09-06 08:15:02 +0900 (Thu, 06 Sep 2018) | 3 lines

[DOC] Remove link to dead project

[Bug #14885] [ci skip]
------------------------------------------------------------------------
r64646 | nobu | 2018-09-06 06:34:44 +0900 (Thu, 06 Sep 2018) | 1 line

fix a typo [ci skip]
------------------------------------------------------------------------
r64645 | nobu | 2018-09-06 05:40:49 +0900 (Thu, 06 Sep 2018) | 4 lines

enumerator.c: [DOC] Enumerator::Lazy#force [ci skip]

added documentation of Enumerator::Lazy#force, just to clarify that it
is an alias of an inherited method.  [ruby-core:88872] [Bug #15079]
------------------------------------------------------------------------
r64644 | eregon | 2018-09-06 05:39:19 +0900 (Thu, 06 Sep 2018) | 4 lines

Add platform guards for AIX

* Most of these seem OS bugs.
* See https://rubyci.org/logs/rubyci.s3.amazonaws.com/aix71_ppc/ruby-trunk/log/20180905T103302Z.fail.html.gz
------------------------------------------------------------------------
r64643 | eregon | 2018-09-06 05:39:02 +0900 (Thu, 06 Sep 2018) | 1 line

Guard a few specs which ipv6_available?
------------------------------------------------------------------------
r64642 | nobu | 2018-09-06 05:02:32 +0900 (Thu, 06 Sep 2018) | 5 lines

backward.h: removed stale declarations

* include/ruby/backward.h (rb_complex_set_real, rb_complex_set_imag):
  removed useless declarations which have been deprecated from the
  beginning.
------------------------------------------------------------------------
r64641 | svn | 2018-09-06 04:06:09 +0900 (Thu, 06 Sep 2018) | 1 line

* 2018-09-06
------------------------------------------------------------------------
r64640 | tarui | 2018-09-06 04:06:08 +0900 (Thu, 06 Sep 2018) | 11 lines

range.c: Range#cover? accepts Range object. [Feature #14473]

	* range.c (range_cover): add code for range argument.
          If the argument is a Range, check it is or is not 
	  covered by the reciver. If it can be treated as a
	  sequence, this method treats it that way. 
	* test/ruby/test_range.rb (class TestRange): add tests
	  for this feature.
	  
	  This patch is written by Owen Stephens. thank you!

------------------------------------------------------------------------
r64639 | svn | 2018-09-05 22:33:22 +0900 (Wed, 05 Sep 2018) | 1 line

* append newline at EOF.
------------------------------------------------------------------------
r64638 | hsbt | 2018-09-05 22:33:21 +0900 (Wed, 05 Sep 2018) | 1 line

Merge csv-3.0.0 from ruby/csv repository.
------------------------------------------------------------------------
r64637 | naruse | 2018-09-05 22:16:03 +0900 (Wed, 05 Sep 2018) | 1 line

fix typo
------------------------------------------------------------------------
r64636 | naruse | 2018-09-05 22:15:41 +0900 (Wed, 05 Sep 2018) | 4 lines

AIX doesn't set OptionLength for boolean options

https://rubyci.org/logs/rubyci.s3.amazonaws.com/aix71_ppc/ruby-trunk/log/20180904T103302Z.fail.html.gz
https://www.ibm.com/support/knowledgecenter/ja/ssw_aix_72/com.ibm.aix.commtrf2/getsockopt.htm
------------------------------------------------------------------------
r64635 | duerst | 2018-09-05 15:04:02 +0900 (Wed, 05 Sep 2018) | 1 line

define ubf_list_atfork() as empty on cygwin
------------------------------------------------------------------------
r64634 | svn | 2018-09-05 08:10:18 +0900 (Wed, 05 Sep 2018) | 1 line

* 2018-09-05
------------------------------------------------------------------------
r64633 | nobu | 2018-09-05 08:10:17 +0900 (Wed, 05 Sep 2018) | 4 lines

random.c: fix up r64596

* random.c (fill_random_bytes_syscall): check if the version macro is
  defined, for very old Mac OS X development tools.
------------------------------------------------------------------------
r64632 | nobu | 2018-09-04 21:41:14 +0900 (Tue, 04 Sep 2018) | 4 lines

rational.c: remove duplicate macros

* rational.c (RRATIONAL_SET_{NUM,DEN}): also defined in internal.h
  since r53887.
------------------------------------------------------------------------
r64631 | nobu | 2018-09-04 21:30:34 +0900 (Tue, 04 Sep 2018) | 4 lines

ruby.h: removed internal macros

* include/ruby/ruby.h (RCOMPLEX_SET_REAL, RCOMPLEX_SET_IMAG): removed
  macros for internal use, which have been exposed by accident.
------------------------------------------------------------------------
r64630 | nobu | 2018-09-04 17:39:14 +0900 (Tue, 04 Sep 2018) | 3 lines

use mingw ANSI stdio

[Bug #13496]
------------------------------------------------------------------------
r64629 | nobu | 2018-09-04 14:28:38 +0900 (Tue, 04 Sep 2018) | 3 lines

bootstraptest update test_io.rb [Bug #15060] [Fix GH-1495]

From: MSP-Greg <greg.mpls@gmail.com>
------------------------------------------------------------------------
r64628 | nobu | 2018-09-04 12:41:44 +0900 (Tue, 04 Sep 2018) | 3 lines

Spec updates [Bug #15060] [Fix GH-1495]

From: MSP-Greg <greg.mpls@gmail.com>
------------------------------------------------------------------------
r64627 | nobu | 2018-09-04 11:19:39 +0900 (Tue, 04 Sep 2018) | 5 lines

appveyor.yml: fix PATH and env for msys2

based on the patch by MSP-Greg at #1945.

Co-authored-by: MSP-Greg <greg.mpls@gmail.com>
------------------------------------------------------------------------
r64626 | nobu | 2018-09-04 11:18:51 +0900 (Tue, 04 Sep 2018) | 6 lines

appveyor.yml: reduce matrix factors

* appveyor.yml (environment): separate matrix factors by `build` (`vs`
  or `msys2`), and `build` (and `vs` version if VS build).
  now `MSYS2_ARCH` and `MSYSTEM` are derived from `Platform` if msys2
  build.
------------------------------------------------------------------------
r64625 | shyouhei | 2018-09-04 10:42:37 +0900 (Tue, 04 Sep 2018) | 8 lines

avoid fork-unsafe arc4random implementations

Some old implementaions of arc4random_buf(3) were ARC4 based, or
unsafe when forked, or both.  Resort to /dev/urandom for those
known problematic cases.  Fix [Bug #15039]

Patch from Thomas Hurst <tom@hur.st>

------------------------------------------------------------------------
r64624 | svn | 2018-09-04 09:12:50 +0900 (Tue, 04 Sep 2018) | 1 line

* 2018-09-04
------------------------------------------------------------------------
r64623 | nobu | 2018-09-04 09:12:49 +0900 (Tue, 04 Sep 2018) | 3 lines

RubyGems installer.rb - fix up my mistakes in r64582

From: MSP-Greg <greg.mpls@gmail.com>
------------------------------------------------------------------------
r64622 | kazu | 2018-09-03 22:52:09 +0900 (Mon, 03 Sep 2018) | 1 line

Use unpack1 instead of unpack and `[0]`
------------------------------------------------------------------------
r64620 | nobu | 2018-09-03 17:20:41 +0900 (Mon, 03 Sep 2018) | 5 lines

Declare as gnu_printf on mingw

[Bug #13496]

From: MSP-Greg <MSP-Greg@users.noreply.github.com>
------------------------------------------------------------------------
r64619 | svn | 2018-09-03 08:27:09 +0900 (Mon, 03 Sep 2018) | 1 line

* 2018-09-03
------------------------------------------------------------------------
r64618 | nobu | 2018-09-03 08:27:08 +0900 (Mon, 03 Sep 2018) | 5 lines

Readline: expose rl_completion_quote_character variable

[Feature #13050]

From: georgebrock (George Brocklehurst) <ruby@georgebrock.com>
------------------------------------------------------------------------
r64615 | svn | 2018-09-02 12:49:32 +0900 (Sun, 02 Sep 2018) | 1 line

* 2018-09-02
------------------------------------------------------------------------
r64614 | nobu | 2018-09-02 12:49:31 +0900 (Sun, 02 Sep 2018) | 4 lines

configure.ac: -fstack-protector-strong

* configure.ac: use -fstack-protector-strong if available instead of
  -fstack-protector conditionally.  [ruby-core:88788] [Misc #15053]
------------------------------------------------------------------------
r64610 | nobu | 2018-09-01 16:34:31 +0900 (Sat, 01 Sep 2018) | 4 lines

complex.c: simplify division result

* complex.c (f_divide): canonicalize rationals to simplify integer
  complex results.
------------------------------------------------------------------------
r64609 | kazu | 2018-09-01 15:59:36 +0900 (Sat, 01 Sep 2018) | 6 lines

Re-try to add workaround for warnings

```
.../ext/psych/lib/psych/versions.rb:4: warning: already initialized constant Psych::VERSION
.../.ext/common/psych/versions.rb:4: warning: previous definition of VERSION was here
```
------------------------------------------------------------------------
r64608 | nobu | 2018-09-01 15:19:05 +0900 (Sat, 01 Sep 2018) | 1 line

RSTRING_PTR may not be terminated in the future
------------------------------------------------------------------------
r64607 | nobu | 2018-09-01 15:14:07 +0900 (Sat, 01 Sep 2018) | 1 line

10**3 is always 1000
------------------------------------------------------------------------
r64606 | nobu | 2018-09-01 15:14:06 +0900 (Sat, 01 Sep 2018) | 1 line

adjust indent
------------------------------------------------------------------------
r64604 | nobu | 2018-09-01 13:09:02 +0900 (Sat, 01 Sep 2018) | 1 line

surround macro block with do/while
------------------------------------------------------------------------
r64601 | kazu | 2018-09-01 10:37:12 +0900 (Sat, 01 Sep 2018) | 1 line

[DOC] Add %Q and %+ to strptime [ci skip]
------------------------------------------------------------------------
r64600 | kazu | 2018-09-01 00:29:06 +0900 (Sat, 01 Sep 2018) | 3 lines

Revert "Try to add workaround for warnings"

This reverts commit a5e5cfa3f650d4e78fb50e2df15c102ab56fca3c.
------------------------------------------------------------------------
r64599 | kazu | 2018-09-01 00:25:52 +0900 (Sat, 01 Sep 2018) | 6 lines

Try to add workaround for warnings

```
.../ext/psych/lib/psych/versions.rb:4: warning: already initialized constant Psych::VERSION
.../.ext/common/psych/versions.rb:4: warning: previous definition of VERSION was here
```
------------------------------------------------------------------------
r64598 | svn | 2018-09-01 00:05:32 +0900 (Sat, 01 Sep 2018) | 1 line

* 2018-09-01
------------------------------------------------------------------------
r64597 | kazu | 2018-09-01 00:05:29 +0900 (Sat, 01 Sep 2018) | 1 line

[DOC] leap seconds [ci skip]
------------------------------------------------------------------------
r64596 | nobu | 2018-08-31 18:56:24 +0900 (Fri, 31 Aug 2018) | 4 lines

random.c: SecRandomCopyBytes

* random.c (fill_random_bytes_syscall): use SecRandomCopyBytes in
  Security framework on macOS 10.7 or later.
------------------------------------------------------------------------
r64595 | mame | 2018-08-31 13:31:45 +0900 (Fri, 31 Aug 2018) | 1 line

test/lib/test/unit/assertions.rb: explicit delegation of keyword arguments
------------------------------------------------------------------------
r64594 | svn | 2018-08-31 04:14:38 +0900 (Fri, 31 Aug 2018) | 1 line

* 2018-08-31
------------------------------------------------------------------------
r64593 | normal | 2018-08-31 04:14:37 +0900 (Fri, 31 Aug 2018) | 7 lines

cont.c (rb_fiber_atfork): th->root_fiber may not exist

Otherwise, bootstraptest/test_fork.rb fails with -DVM_CHECK_MODE=2

[Bug #15041]

Fixes: r64589 "cont.c: set th->root_fiber to current fiber at fork"
------------------------------------------------------------------------
r64592 | normal | 2018-08-30 12:24:55 +0900 (Thu, 30 Aug 2018) | 1 line

hrtime.h: fix typo in non-builtin overflow check
------------------------------------------------------------------------
r64591 | svn | 2018-08-30 04:47:15 +0900 (Thu, 30 Aug 2018) | 1 line

* 2018-08-30
------------------------------------------------------------------------
r64590 | normal | 2018-08-30 04:47:14 +0900 (Thu, 30 Aug 2018) | 6 lines

test/ruby/test_io.rb (test_select_leak): use handle_interrupt

Interrupt timing is tricky and it's possible the target
thread is still stopped from the previous loop iteration.

[ruby-core:88732] [Bug #15043]
------------------------------------------------------------------------
r64589 | normal | 2018-08-29 17:04:09 +0900 (Wed, 29 Aug 2018) | 7 lines

cont.c: set th->root_fiber to current fiber at fork

Otherwise, th->root_fiber can point to an invalid Fiber,
because Fibers do not live across fork.  So consider
whatever Fiber is running the root fiber.

[ruby-core:88723] [Bug #15041]
------------------------------------------------------------------------
r64588 | svn | 2018-08-29 11:23:15 +0900 (Wed, 29 Aug 2018) | 1 line

* 2018-08-29
------------------------------------------------------------------------
r64587 | normal | 2018-08-29 11:23:14 +0900 (Wed, 29 Aug 2018) | 3 lines

cont.c (rb_context_t): remove ensure_list

It is unused (we use rb_execution_context_t.ensure_list instead)
------------------------------------------------------------------------
r64586 | eregon | 2018-08-28 23:55:33 +0900 (Tue, 28 Aug 2018) | 4 lines

Tag a couple specs failing on AIX

* The rest seems OS bugs, MRI bugs or incomplete IPv6 implementation:
  https://rubyci.org/logs/rubyci.s3.amazonaws.com/aix71_ppc/ruby-trunk/log/20180828T103302Z.fail.html.gz
------------------------------------------------------------------------
r64585 | hsbt | 2018-08-28 22:42:39 +0900 (Tue, 28 Aug 2018) | 4 lines

Fixed installation failure with mswin environment.

  [ruby-core:88699][Bug #15035]
  This patch was provided by MSP-Greg.
------------------------------------------------------------------------
r64584 | eregon | 2018-08-28 18:41:26 +0900 (Tue, 28 Aug 2018) | 1 line

Update to ruby/spec@6fd9472
------------------------------------------------------------------------
r64583 | ko1 | 2018-08-28 16:06:06 +0900 (Tue, 28 Aug 2018) | 8 lines

rest parameter optimization [Feature #15010]

* vm_args.c: rb_ary_dup(args->rest) to be used at most once during
  parameter setup. [Feature #15010]
  A patch by chopraanmol1 (Anmol Chopra) <chopraanmol1@gmail.com>.

* array.c (rb_ary_behead): added to remove first n elements.

------------------------------------------------------------------------
r64582 | hsbt | 2018-08-28 11:39:22 +0900 (Tue, 28 Aug 2018) | 4 lines

Fixed test failures in mswin environment at r64555.

  [ruby-core:88699][Bug #15035]
  This patch was provided by MSP-Greg.
------------------------------------------------------------------------
r64581 | normal | 2018-08-28 09:24:08 +0900 (Tue, 28 Aug 2018) | 6 lines

thread_pthread.h: rename `gvl.acquired' to `gvl.owner' and document

`acquired' was an old boolean variable, but nowadays it is a
rb_thread_t pointer;  "gvl.owner" seems like a more appropriate
name.  And document the contended path including waitq, timer,
and timer_err.
------------------------------------------------------------------------
r64580 | normal | 2018-08-28 08:39:58 +0900 (Tue, 28 Aug 2018) | 3 lines

thread_pthread.c: document sigwait_th and sigwait_fd [ci skip]

This is an important concept to document, I think.
------------------------------------------------------------------------
r64579 | normal | 2018-08-28 08:29:44 +0900 (Tue, 28 Aug 2018) | 3 lines

thread_pthread.c: fix deadlock on test_thread.rb::test_signal_at_join

Fixes: r64575 ("avoid lock ping-pong in do_gvl_timer & ubf_select")
------------------------------------------------------------------------
r64578 | eregon | 2018-08-28 04:08:38 +0900 (Tue, 28 Aug 2018) | 1 line

Rewrite Etc.sysconf spec to allow nil or Integer for all variables
------------------------------------------------------------------------
r64577 | normal | 2018-08-28 03:37:04 +0900 (Tue, 28 Aug 2018) | 7 lines

process.c: fix potential missed wakeups in r64576

Oddly, all existing test cases passed multiple times
before this patch (even with --jit-wait), so this seems
like a difficult failure to prove.

Fixes: r64576 ("process.c: simplify SIGCHLD-based waitpid")
------------------------------------------------------------------------
r64576 | normal | 2018-08-28 02:17:13 +0900 (Tue, 28 Aug 2018) | 11 lines

process.c: simplify SIGCHLD-based waitpid

Introduce a new rb_thread_sleep_interruptible that does not
execute interrupts before sleeping.  Skipping the interrupt
check before sleep is required for out-of-GVL ruby_waitpid_all
to function properly when setting waitpid_state.ret

Now that ubf_select can be called by the gvl.timer thread
without recursive locking gvl.lock, we can safely use
rb_threadptr_interrupt to deal with waking up sleeping
processes,
------------------------------------------------------------------------
r64575 | normal | 2018-08-28 02:17:08 +0900 (Tue, 28 Aug 2018) | 10 lines

thread_pthread.c: avoid lock ping-pong in do_gvl_timer & ubf_select

This simplifies the locking logic somewhat.

While we're at it, designate_timer_thread is worthless in
ubf_select because gvl_acquire_common already guarantees there
is a gvl.timer if gvl->waitq is populated.

In the future (for auto-fiber), this will allow using
th->unblock.func for rb_waitpid callers (via rb_sigchld_handler).
------------------------------------------------------------------------
r64574 | svn | 2018-08-28 01:38:38 +0900 (Tue, 28 Aug 2018) | 1 line

* 2018-08-28
------------------------------------------------------------------------
r64573 | eregon | 2018-08-28 01:38:37 +0900 (Tue, 28 Aug 2018) | 1 line

SC_TZNAME_MAX can also be infinite
------------------------------------------------------------------------
r64572 | svn | 2018-08-28 01:22:22 +0900 (Tue, 28 Aug 2018) | 1 line

* append newline at EOF.
------------------------------------------------------------------------
r64571 | eregon | 2018-08-28 01:22:21 +0900 (Tue, 28 Aug 2018) | 1 line

Update to ruby/spec@007e908
------------------------------------------------------------------------
r64570 | svn | 2018-08-27 23:49:57 +0900 (Mon, 27 Aug 2018) | 1 line

* append newline at EOF.
------------------------------------------------------------------------
r64569 | eregon | 2018-08-27 23:49:56 +0900 (Mon, 27 Aug 2018) | 1 line

Update to ruby/spec@a89819d
------------------------------------------------------------------------
r64568 | eregon | 2018-08-27 23:33:10 +0900 (Mon, 27 Aug 2018) | 1 line

Fix template/fake.rb.in if ENV["RUBYOPT"] is nil
------------------------------------------------------------------------
r64567 | eregon | 2018-08-27 23:25:14 +0900 (Mon, 27 Aug 2018) | 4 lines

Fix template/fake.rb.in when external and internal encodings are set

* To be able to run spec/ruby/command_line/dash_encoding_spec.rb
  with the in-repo build.
------------------------------------------------------------------------
r64566 | svn | 2018-08-27 23:25:02 +0900 (Mon, 27 Aug 2018) | 1 line

* append newline at EOF.
------------------------------------------------------------------------
r64565 | eregon | 2018-08-27 23:25:00 +0900 (Mon, 27 Aug 2018) | 1 line

Update to ruby/spec@09fa86c
------------------------------------------------------------------------
r64557 | eregon | 2018-08-27 19:12:41 +0900 (Mon, 27 Aug 2018) | 1 line

Simplify guards, the behavior seems Linux-specific
------------------------------------------------------------------------
r64556 | svn | 2018-08-27 19:05:06 +0900 (Mon, 27 Aug 2018) | 1 line

* remove trailing spaces.
------------------------------------------------------------------------
r64555 | hsbt | 2018-08-27 19:05:04 +0900 (Mon, 27 Aug 2018) | 5 lines

Merge master branch from rubygems upstream.

  * It's preparation to release RubyGems 3.0.0.beta2 and Ruby 2.6.0
    preview 3.
  * https://github.com/rubygems/rubygems/compare/v3.0.0.beta1...fad2eb15a282b19dfcb4b48bc95b8b39ebb4511f
------------------------------------------------------------------------
r64554 | normal | 2018-08-27 17:48:49 +0900 (Mon, 27 Aug 2018) | 3 lines

hrtime.h: add note explaining current use of uint64_t [ci skip]

[ruby-core:88678]
------------------------------------------------------------------------
r64553 | nobu | 2018-08-27 14:49:41 +0900 (Mon, 27 Aug 2018) | 1 line

hrtime.h: missing paren
------------------------------------------------------------------------
r64552 | nobu | 2018-08-27 14:48:41 +0900 (Mon, 27 Aug 2018) | 1 line

hrtime.h: explicit casts to time_t
------------------------------------------------------------------------
r64551 | nobu | 2018-08-27 14:39:09 +0900 (Mon, 27 Aug 2018) | 1 line

configure.ac: printf prifix for int64_t
------------------------------------------------------------------------
r64550 | normal | 2018-08-27 14:32:18 +0900 (Mon, 27 Aug 2018) | 9 lines

thread.c: check interrupts explicitly in select/ppoll blocking regions

The logic around blocking_region_begin is confusing to me,
but the goal of this patch is to ensure rb_sigwait_fd_get
and rb_sigwait_fd_put are matched.

In other words, we don't want a thread to hold sigwait_fd
forever if an exception is raised while calling select()
or ppoll().
------------------------------------------------------------------------
r64549 | svn | 2018-08-27 10:30:21 +0900 (Mon, 27 Aug 2018) | 1 line

* properties.
------------------------------------------------------------------------
r64548 | svn | 2018-08-27 10:30:20 +0900 (Mon, 27 Aug 2018) | 1 line

* remove trailing spaces.
------------------------------------------------------------------------
r64547 | hsbt | 2018-08-27 10:30:18 +0900 (Mon, 27 Aug 2018) | 3 lines

Merge rdoc-6.1.0.beta1.

  * https://github.com/ruby/rdoc/compare/v6.0.4...v6.1.0.beta1
------------------------------------------------------------------------
r64546 | svn | 2018-08-27 09:44:06 +0900 (Mon, 27 Aug 2018) | 1 line

* properties.
------------------------------------------------------------------------
r64545 | svn | 2018-08-27 09:44:05 +0900 (Mon, 27 Aug 2018) | 1 line

* 2018-08-27
------------------------------------------------------------------------
r64544 | hsbt | 2018-08-27 09:44:04 +0900 (Mon, 27 Aug 2018) | 6 lines

Merge psych-3.1.0.pre1.

  * Update bundled libyaml-0.2.1 from 0.1.7.
    https://github.com/ruby/psych/pull/368
  * Unify Psych's API: To use keyword arguments with method call.
    https://github.com/ruby/psych/pull/358
------------------------------------------------------------------------
r64543 | normal | 2018-08-26 21:41:21 +0900 (Sun, 26 Aug 2018) | 10 lines

test/ruby/test_io.rb (test_recycled_fd_close): Linux workaround

Arch Linux CI still seems to timeout on this test...

Note, I can't reproduce the failures in these tests on a
FreeBSD 11.1 VM while infinite-looping, even without the
"th.join(0.001)".  It doesn't seem related to the use of
rb_wait_for_single_fd (r64529).

cf. https://rubyci.org/logs/rubyci.s3.amazonaws.com/arch/ruby-trunk/log/20180826T090003Z.fail.html.gz
------------------------------------------------------------------------
r64542 | normal | 2018-08-26 21:41:16 +0900 (Sun, 26 Aug 2018) | 12 lines

thread_sync.c: common wakeup_{one,all} implementation

This let us avoid looping in rb_szqueue_max_set, saves us
some lines of code and reduces binary size slightly
(numbers from 32-bit x86):

         text      data     bss     dec     hex filename
before: 91272       392     156   91820   166ac thread.o
 after: 91200       392     156   91748   16664 thread.o

Inspiration from this taken from the FUTEX_WAKE op
of the Linux futex(2) syscall.
------------------------------------------------------------------------
r64541 | normal | 2018-08-26 13:29:11 +0900 (Sun, 26 Aug 2018) | 5 lines

process.c: remove worthless waitpid_sys macro

It is identical to do_waitpid, and the win32 version will not
be needed for MJIT (since win32 does not suffer from the
waitpid(-1, ...) conflict where waits can get stolen.
------------------------------------------------------------------------
r64540 | normal | 2018-08-26 07:32:35 +0900 (Sun, 26 Aug 2018) | 7 lines

test/io/wait/test_io_wait_uncommon.rb: relax /dev/random check

Too many machines lack entropy to have a usable /dev/random.  I
had similar problems on my system until I started using
haveged(8), but we can't require that for CI.

cf. https://rubyci.org/logs/rubyci.s3.amazonaws.com/debian/ruby-trunk/log/20180825T213003Z.fail.html.gz
------------------------------------------------------------------------
r64539 | normal | 2018-08-26 07:14:14 +0900 (Sun, 26 Aug 2018) | 1 line

thread_pthread.c (ubf_wakeup_thread): `th' is never NULL
------------------------------------------------------------------------
r64538 | normal | 2018-08-26 06:59:30 +0900 (Sun, 26 Aug 2018) | 28 lines

thread_pthread.c: main thread always gets hit by signals

We need to ensure Signal.trap handlers can function if the main
thread is sleeping after a subthread has grabbed sigwait_fd,
but later exited.

Consider the following timeline:

main_thread             sub-thread
-----------------------------------------
Signal.trap() { ... }
                        get sigwait_fd
                        ppoll on sigwait_fd
native_cond_sleep
(via pthread_cond_wait)
                        ppoll times-out
			put sigwait_fd
                        sub-thread exits

only thread alive
SIGNAL HITS

The problem is pthread_cond_wait cannot return EINTR,
so we can never run the Signal.trap handler.  So we
will avoid using native_cond_sleep in the main thread
and always use ppoll to sleep when in the main thread.
This can guarantee the main thread remains aware of
signals; even if it cannot safely read off sigwait_fd
------------------------------------------------------------------------
r64537 | svn | 2018-08-26 06:33:55 +0900 (Sun, 26 Aug 2018) | 1 line

* 2018-08-26
------------------------------------------------------------------------
r64536 | normal | 2018-08-26 06:33:55 +0900 (Sun, 26 Aug 2018) | 3 lines

thread.c: quiet down -Wmaybe-uninitialized on gcc 7.[2-3]

Haven't tested gcc 8, yet; but gcc 6 seems fine....
------------------------------------------------------------------------
r64535 | normal | 2018-08-25 18:02:50 +0900 (Sat, 25 Aug 2018) | 6 lines

hrtime.h: add documentation

I updated the patch with documentation but forgot about it,
earlier :x

[ruby-core:88616] [Misc #15014]
------------------------------------------------------------------------
r64534 | svn | 2018-08-25 15:58:36 +0900 (Sat, 25 Aug 2018) | 1 line

* properties.
------------------------------------------------------------------------
r64533 | normal | 2018-08-25 15:58:35 +0900 (Sat, 25 Aug 2018) | 18 lines

thread.c: use rb_hrtime_t scalar for high-resolution time operations

Relying on "struct timespec" was too annoying API-wise and
used more stack space.  "double" was a bit wacky w.r.t rounding
in the past, so now we'll switch to using a 64-bit type.

Unsigned 64-bit integer is able to give us over nearly 585
years of range with nanoseconds.  This range is good enough
for the Linux kernel internal time representation, so it
ought to be good enough for us.

This reduces the stack usage of functions while GVL is held
(and thus subject to marking) on x86-64 Linux (with ppoll):

	rb_wait_for_single_fd    120 => 104
	do_select                120 => 88

[ruby-core:88582] [Misc #15014]
------------------------------------------------------------------------
r64532 | normal | 2018-08-25 11:32:15 +0900 (Sat, 25 Aug 2018) | 6 lines

drb: close graceful shutdown pipe before socket

Closing a listen socket while entering select(2) may
trigger IOError or even deadlock because another thread
may give the file descriptor to another file description;
meaning the kernel can wait on the wrong description.
------------------------------------------------------------------------
r64531 | normal | 2018-08-25 11:32:10 +0900 (Sat, 25 Aug 2018) | 4 lines

drb: simplify shutdown pipe close logic

IO#close is idempotent, so we don't need to waste bytecode
to check or nil it at shutdown time.
------------------------------------------------------------------------
r64530 | naruse | 2018-08-25 07:32:07 +0900 (Sat, 25 Aug 2018) | 1 line

Add AIX guards
------------------------------------------------------------------------
r64529 | normal | 2018-08-25 05:28:08 +0900 (Sat, 25 Aug 2018) | 5 lines

test/ruby/test_io.rb (test_recycled_fd_close): use IO#read to avoid ppoll call

IO#sysread calls rb_wait_for_single_fd for compatibility, and
perhaps something is amiss with that (unrelated to timer-thread
elimination)
------------------------------------------------------------------------
r64528 | svn | 2018-08-25 04:19:02 +0900 (Sat, 25 Aug 2018) | 1 line

* 2018-08-25
------------------------------------------------------------------------
r64527 | normal | 2018-08-25 04:19:01 +0900 (Sat, 25 Aug 2018) | 8 lines

thread_pthread.c: use eventfd instead of pipe on Linux

Based on r64478, any regular user creating more than 1024 pipes
on Linux will end up with tiny pipes with only a single page
capacity.  So avoid wasting user resources and use lighter
eventfd on Linux.

[ruby-core:88563] [Misc #15011]
------------------------------------------------------------------------
r64526 | k0kubun | 2018-08-24 19:25:51 +0900 (Fri, 24 Aug 2018) | 7 lines

ext/readline/extconf.rb: try using more readline APIs

on MinGW.

[Bug #15020]

From: MSP-Greg <Greg.mpls@gmail.com>
------------------------------------------------------------------------
r64525 | k0kubun | 2018-08-24 08:50:48 +0900 (Fri, 24 Aug 2018) | 10 lines

test/readline/test_readline.rb: fix readline test

for mingw.

test/lib/minitest/unit.rb: Add 'guards' for mingw.
Removed still-unused method `mswin?` from original patch.

[Fix GH-1941]

From: MSP-Greg <MSP-Greg@users.noreply.github.com>
------------------------------------------------------------------------
r64524 | normal | 2018-08-24 04:49:35 +0900 (Fri, 24 Aug 2018) | 4 lines

thread_pthread.c (ubf_timer_destroy): remove redundant getpid check

TIMER_THREAD_CREATED_P already checks that pid, and glibc 2.25+
no longer caches getpid(2).
------------------------------------------------------------------------
r64523 | svn | 2018-08-24 04:13:02 +0900 (Fri, 24 Aug 2018) | 1 line

* 2018-08-24
------------------------------------------------------------------------
r64522 | normal | 2018-08-24 04:13:01 +0900 (Fri, 24 Aug 2018) | 5 lines

NEWS: add entries for rb_waitpid and timer-thread [ci skip]

Some of these changes may affect debugging and tracing tools

[Bug #14867] [ruby-core:88199] [Misc #14937]
------------------------------------------------------------------------
r64521 | mame | 2018-08-23 17:49:23 +0900 (Thu, 23 Aug 2018) | 1 line

iseq.c (rb_vm_encoded_insn_data_table_init): add a cast to build on clang
------------------------------------------------------------------------
r64520 | kazu | 2018-08-23 17:33:54 +0900 (Thu, 23 Aug 2018) | 4 lines

Mention `--enable=jit` instead of `--jit`

"--jit" flag usage may be deprecated at r63995 [Feature #14878]
[ci skip]
------------------------------------------------------------------------
r64519 | mame | 2018-08-23 17:32:31 +0900 (Thu, 23 Aug 2018) | 3 lines

iseq.c (rb_iseq_trace_set): refactoring by using encoded_insn_data

Now it uses encoded_insn_data to identify and replace each encoded insn.
------------------------------------------------------------------------
r64518 | mame | 2018-08-23 17:32:30 +0900 (Thu, 23 Aug 2018) | 7 lines

iseq.c: add a map from encoded insn to insn data

This enhances rb_vm_insn_addr2insn which retrieves a decoded insn number
from encoded insn.
The insn data table include not only decoded insn number, but also its
len, trace and non-trace version of encoded insn.
This table can be used to simplify trace instrumentation.
------------------------------------------------------------------------
r64517 | nobu | 2018-08-23 16:45:39 +0900 (Thu, 23 Aug 2018) | 4 lines

compile.c: drop unused array

* compile.c (iseq_peephole_optimize): drop unused dynamic array
  literal, without concatenation.
------------------------------------------------------------------------
r64516 | nobu | 2018-08-23 16:22:27 +0900 (Thu, 23 Aug 2018) | 4 lines

compile.c: drop unused string

* compile.c (iseq_peephole_optimize): drop unused dynamic string
  literal, without concatenation.
------------------------------------------------------------------------
r64515 | ko1 | 2018-08-23 14:54:38 +0900 (Thu, 23 Aug 2018) | 5 lines

remove `const` warning.

* compile.c (iseq_ibf_load): remove `const` to pass iseq as no `const`
  parameter.

------------------------------------------------------------------------
r64514 | ko1 | 2018-08-23 13:12:14 +0900 (Thu, 23 Aug 2018) | 9 lines

check trace flags at loading [Bug #14702]

* iseq.c (iseq_init_trace): at ISeq loading time, we need to check
  `ruby_vm_event_enabled_flags` to turn on trace instructions.
  Seprate this checking code from `finish_iseq_build()` and make
  new function. `iseq_ibf_load()` calls this funcation after loading.

* test/ruby/test_iseq.rb: add a test for this fix.

------------------------------------------------------------------------
r64513 | naruse | 2018-08-23 04:18:22 +0900 (Thu, 23 Aug 2018) | 1 line

Also skip on AIX
------------------------------------------------------------------------
r64512 | nobu | 2018-08-23 01:02:03 +0900 (Thu, 23 Aug 2018) | 4 lines

compile.c: pop literal object in condition

* compile.c (compile_branch_condition): pop dynamic literal
  object, which is never nil/false, as the branch condition.
------------------------------------------------------------------------
r64511 | svn | 2018-08-23 00:04:06 +0900 (Thu, 23 Aug 2018) | 1 line

* 2018-08-23
------------------------------------------------------------------------
r64510 | mame | 2018-08-23 00:04:05 +0900 (Thu, 23 Aug 2018) | 7 lines

parse.y (arg_append): support NODE_ARGSCAT case

Because of the lack of this case, `[*ary,1,2,3,4,5,6]` was parsed into
an inefficient AST like `ary + [1,2] + [3,4] + [5,6]`.

A patch from Anmol Chopra <anmolchopra@rocketbox.in>.
Fixes [Bug #15018].
------------------------------------------------------------------------
r64509 | mame | 2018-08-22 20:09:47 +0900 (Wed, 22 Aug 2018) | 4 lines

compile.c: remove tracecoverage instruction for line coverage

Line coverage was based on special instruction "tracecoverage".
Now, instead, it uses the mechanism of trace hook [Feature #14104].
------------------------------------------------------------------------
r64508 | mame | 2018-08-22 19:38:56 +0900 (Wed, 22 Aug 2018) | 10 lines

parse.y: remove coverage-related code fragments

The code fragments that initializes coverage data were scattered into
both parse.y and compile.c.  parse.y allocated a coverage data, and
compile.c initialize the data.

To remove this cross-cutting concern, this change moves the allocation
from "coverage" function of parse.y to "rb_iseq_new_top" of iseq.c.
For the sake, parse.y just counts the line number of the original source
code, and the number is passed via rb_ast_body_t.
------------------------------------------------------------------------
r64507 | mame | 2018-08-22 19:38:55 +0900 (Wed, 22 Aug 2018) | 4 lines

node.h (rb_ast_t): move its field mark_ary to node_buffer_t

I want to add a new field to rb_ast_t whose size is restricted because
it is an imemo.  This change makes one room in rb_ast_t.
------------------------------------------------------------------------
r64506 | nobu | 2018-08-22 19:22:02 +0900 (Wed, 22 Aug 2018) | 1 line

prototized
------------------------------------------------------------------------
r64505 | mame | 2018-08-22 14:24:51 +0900 (Wed, 22 Aug 2018) | 1 line

common.mk: update "make help" so that "make check" now runs test-spec
------------------------------------------------------------------------
r64504 | mame | 2018-08-22 14:24:50 +0900 (Wed, 22 Aug 2018) | 10 lines

thread.c (rb_reset_coverages): remove coverage counters from all ISeqs

When coverage measurement is enabled, the compiler makes each iseq have
a reference to the counter array of coverage.
Even after coverage measurement is disabled, the reference is kept.
And, if coverage measurement is restarted, a coverage hook will increase
the counter.  This is completely meaningless; it brings just overhead.

To remove this meaninglessness, this change removes all the reference
when coverage measuement is stopped.
------------------------------------------------------------------------
r64503 | kazu | 2018-08-22 13:04:06 +0900 (Wed, 22 Aug 2018) | 3 lines

Avoid compiler depend error

ref r64492
------------------------------------------------------------------------
r64502 | eregon | 2018-08-22 07:17:37 +0900 (Wed, 22 Aug 2018) | 3 lines

Run specs against 2.3.7 to ensure version guards are correctly added

* See [Feature #15004].
------------------------------------------------------------------------
r64501 | eregon | 2018-08-22 07:01:34 +0900 (Wed, 22 Aug 2018) | 1 line

Update to ruby/spec@dd828d6
------------------------------------------------------------------------
r64500 | eregon | 2018-08-22 07:01:18 +0900 (Wed, 22 Aug 2018) | 1 line

Update to ruby/mspec@269f9cd
------------------------------------------------------------------------
r64499 | eregon | 2018-08-22 05:28:45 +0900 (Wed, 22 Aug 2018) | 3 lines

Only run the spec on Linux

* Other platforms seem to behave differently.
------------------------------------------------------------------------
r64498 | eregon | 2018-08-22 05:28:29 +0900 (Wed, 22 Aug 2018) | 5 lines

Revert r64483

* This reverts commit 12f624b673fd1bd1782f4c52e3b6c78d033e7b84:
 "Try 4 times for WIN32OLE specs"
* It was a machine problem, it needed to be rebooted.
------------------------------------------------------------------------
r64497 | svn | 2018-08-22 00:57:24 +0900 (Wed, 22 Aug 2018) | 1 line

* 2018-08-22
------------------------------------------------------------------------
r64496 | naruse | 2018-08-22 00:57:23 +0900 (Wed, 22 Aug 2018) | 1 line

AIX also timeouts the spec
------------------------------------------------------------------------
r64495 | kazu | 2018-08-21 23:57:56 +0900 (Tue, 21 Aug 2018) | 1 line

Add more assertions for NotImplementedError of instance method
------------------------------------------------------------------------
r64494 | akr | 2018-08-21 23:40:18 +0900 (Tue, 21 Aug 2018) | 2 lines

rename an argument of calc_wday.

------------------------------------------------------------------------
r64493 | naruse | 2018-08-21 22:39:24 +0900 (Tue, 21 Aug 2018) | 4 lines

Re-Revert "Temporary revert "process.c: dead code when no SIGCHLD""

This re-reverts commit r64447.
The issue was machine side problem.
------------------------------------------------------------------------
r64492 | nobu | 2018-08-21 11:11:39 +0900 (Tue, 21 Aug 2018) | 4 lines

cont.c: fix syntax error

* cont.c (struct rb_fiber_struct): fix wrong usage of BITFIELD in
  r64487, which caused syntax error on pre-C99 compilers.
------------------------------------------------------------------------
r64491 | nobu | 2018-08-21 11:02:54 +0900 (Tue, 21 Aug 2018) | 4 lines

common.mk: timestamp directory

* common.mk: timestamp files need the timestamp directory.
  [Bug #15015] [ruby-core:88584]
------------------------------------------------------------------------
r64490 | normal | 2018-08-21 10:01:42 +0900 (Tue, 21 Aug 2018) | 4 lines

thread*.c: replace GetMutexPtr with mutex_ptr

Following ko1's lead in r59192, this gets rid of non-obvious
assignments which happen inside macros.
------------------------------------------------------------------------
r64489 | normal | 2018-08-21 10:01:37 +0900 (Tue, 21 Aug 2018) | 4 lines

cont.c: replace "GetFooPtr" macros with "foo_ptr" functions

Following ko1's lead in r59192, this gets rid of non-obvious
assignments which happen inside macros.
------------------------------------------------------------------------
r64488 | normal | 2018-08-21 09:16:45 +0900 (Tue, 21 Aug 2018) | 3 lines

internal.h: remove prototype for non-existent rb_divert_reserved_fd

I forgot to remove it 3 years ago in r51576
------------------------------------------------------------------------
r64487 | normal | 2018-08-21 08:48:03 +0900 (Tue, 21 Aug 2018) | 4 lines

cont.c (struct rb_fiber_struct): bitfields for trasnferred and status

On 32-bit x86, this reduces the struct from 836 to 832 bytes and
brings us down to 13 (64-byte) cachelines (from 14).
------------------------------------------------------------------------
r64486 | normal | 2018-08-21 06:34:44 +0900 (Tue, 21 Aug 2018) | 4 lines

thread*.c: avoid unnecessary initialization for list_for_each_safe

According to r52446, it is only necessary for the current item (@i),
not the `@nxt` parameter for list_for_each_safe.
------------------------------------------------------------------------
r64485 | normal | 2018-08-21 06:34:39 +0900 (Tue, 21 Aug 2018) | 10 lines

thread_pthread.c: reinitialize ubf_list at fork

It's possible for the ubf_list_head to be populated with dead
threads at fork or the ubf_list_lock to be held, so reinitialize
both at startup.

And while we're at it, use a static initializer at startup
to save a library call and kill some ifdef.

[ruby-core:88578] [Bug #15013]
------------------------------------------------------------------------
r64484 | normal | 2018-08-21 05:45:40 +0900 (Tue, 21 Aug 2018) | 6 lines

test/socket/test_socket.rb (timestamp_retry_rw): IO.select before recvmsg

CI failures are still happening from these tests, but try
to break out of it earlier instead of holding up the job.

[Bug #14898]
------------------------------------------------------------------------
r64483 | eregon | 2018-08-21 00:48:27 +0900 (Tue, 21 Aug 2018) | 4 lines

Try 4 times for WIN32OLE specs

* They seem to fail a lot on:
  http://mswinci.japaneast.cloudapp.azure.com/vc12-x64/ruby-trunk/recent.html
------------------------------------------------------------------------
r64482 | eregon | 2018-08-21 00:41:00 +0900 (Tue, 21 Aug 2018) | 6 lines

Revert r64471

* This reverts commit 9ab04897bd06767f773b35c6958a0551981093aa:
  "don't run specs add at r64409 on Windows"
* It doesn't seem to help:
  http://mswinci.japaneast.cloudapp.azure.com/vc12-x64/ruby-trunk/recent.html
------------------------------------------------------------------------
r64481 | svn | 2018-08-21 00:34:00 +0900 (Tue, 21 Aug 2018) | 1 line

* 2018-08-21
------------------------------------------------------------------------
r64480 | kazu | 2018-08-21 00:33:59 +0900 (Tue, 21 Aug 2018) | 1 line

Remove extra semicolon
------------------------------------------------------------------------
r64479 | kazu | 2018-08-20 17:24:55 +0900 (Mon, 20 Aug 2018) | 6 lines

Update link to Email address specification

The current link leads to 404, I updated to the actual one.

[Fix GH-1929] [ci skip]
Author:    Nikolay Belov <travelerspb@gmail.com>
------------------------------------------------------------------------
r64478 | normal | 2018-08-20 10:43:10 +0900 (Mon, 20 Aug 2018) | 27 lines

spec/ruby/core/io/select_spec.rb: workaround stuck IO.select

Under pipe page memory pressure on Linux, a pipe may only be
created with a single buffer[1].  And as of Linux v4.18, the
fs/pipe.c::pipe_poll callback does not account for merging
done in fs/pipe::pipe_write; only the number of usable buffers
in the pipe.  Thus it is possible for a pipe to be writable
(if only by a small amount) despite IO.select saying it is not.

With the default 16384 /proc/sys/fs/pipe-user-pages-soft value
and the pipe having 16 pages of buffers, this issue is trivially
reproducible by creating 1024 pipes in a background process
before running the spec:

  $ ulimit -n 2053 # or something higher
  $ ./miniruby -e '1024.times.map { IO.pipe }; sleep' &
  $ make test-spec MSPECOPT=spec/ruby/core/io/select_spec.rb

So, we create a new pipe we never write to for testing
writability of IO.select.  This may cause the test to fail with
ENFILE on an overloaded system, but at least that's an obvious
failure (unlike having a test get stuck).  This should reduce
failures on our overloaded CI machines:

   http://ci.rvm.jp/results/trunk-nopara@silicon-docker/1239426

[1] https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/fs/pipe.c?h=v4.18#n642
------------------------------------------------------------------------
r64477 | normal | 2018-08-20 08:36:23 +0900 (Mon, 20 Aug 2018) | 3 lines

thread_sync.c (rb_condvar_initialize): remove extra semicolon

Oops :x
------------------------------------------------------------------------
r64476 | normal | 2018-08-20 07:20:22 +0900 (Mon, 20 Aug 2018) | 13 lines

thread_sync.c (rb_mutex_sleep): disable interrupt checking in ensure

This is needed to reliably fix ConditionVariable#wait on Thread#kill
[Bug #14999] because there is still a chance an interrupt could fire
and prevent lock acquisition after an ensure statement.

Arguably, rb_mutex_lock itself should be uninterruptible, but that
already prevents bootstraptest/test_thread.rb from completing and
probably breaks existing use cases.

For reference, POSIX expressly forbids EINTR from pthread_mutex_lock.

[ruby-core:88556] [Bug #14999]
------------------------------------------------------------------------
r64475 | normal | 2018-08-20 05:40:42 +0900 (Mon, 20 Aug 2018) | 4 lines

thread.c (rb_thread_fd_select): fix off-by-one with sigwait_fd

select(2) needs the nfds argument to be one higher than the
largest FD in the sets :x
------------------------------------------------------------------------
r64474 | normal | 2018-08-20 05:16:15 +0900 (Mon, 20 Aug 2018) | 4 lines

thread_sync.rb (rb_condvar_wait): golf out unnecessary variables

GCC is smart enough to optimize these away, but my attention
span is too short :{
------------------------------------------------------------------------
r64473 | svn | 2018-08-20 05:16:10 +0900 (Mon, 20 Aug 2018) | 1 line

* 2018-08-20
------------------------------------------------------------------------
r64472 | normal | 2018-08-20 05:16:09 +0900 (Mon, 20 Aug 2018) | 1 line

test/ruby/test_io.rb (test_select_leak): quiet unused variable warning
------------------------------------------------------------------------
r64471 | naruse | 2018-08-19 22:25:11 +0900 (Sun, 19 Aug 2018) | 3 lines

don't run specs add at r64409 on Windows

Maybe it breaks http://mswinci.japaneast.cloudapp.azure.com/vc12-x64/ruby-trunk/log/20180817T095734Z.fail.html.gz
------------------------------------------------------------------------
r64470 | eregon | 2018-08-19 22:23:49 +0900 (Sun, 19 Aug 2018) | 4 lines

select() on all platforms for Socket#recvmsg_nonblock spec

* The specs above already do that, and Solaris needs it too:
  https://rubyci.org/logs/rubyci.s3.amazonaws.com/unstable10x/ruby-trunk/log/20180819T111806Z.fail.html.gz
------------------------------------------------------------------------
r64469 | nobu | 2018-08-19 10:55:27 +0900 (Sun, 19 Aug 2018) | 1 line

NEWS: categorized new entries all
------------------------------------------------------------------------
r64468 | kazu | 2018-08-19 10:33:33 +0900 (Sun, 19 Aug 2018) | 1 line

Fix a typo [ci skip]
------------------------------------------------------------------------
r64467 | normal | 2018-08-19 09:01:08 +0900 (Sun, 19 Aug 2018) | 13 lines

thread_pthread.c: reset timeslice delay when uncontended

This matches the behavior of old timer thread more closely
and seems to fix [Bug #14999] when limited to a single CPU.
I cannot reproduce the error on a multi-core system unless
I use schedtool to force affinity to a single CPU:

schedtool -a 0x01 -e make test-spec \
	MSPECOPT='-R1000 spec/ruby/library/conditionvariable/wait_spec.rb'

While it may be good enough to pass the spec, I don't have
huge degree of confidence in the interrupt handling robustness
under extremely heavy load (these may be ancient bugs, though).
------------------------------------------------------------------------
r64466 | normal | 2018-08-19 09:01:03 +0900 (Sun, 19 Aug 2018) | 3 lines

Revert "thread_sync.c (rb_mutex_sleep): skip interrupt check before sleep"

This reverts commit 2e420b8b99db4a5b81e2deda1ca386d59ad6bcba (r64464)
------------------------------------------------------------------------
r64465 | eregon | 2018-08-19 08:49:34 +0900 (Sun, 19 Aug 2018) | 1 line

Guard spec which only works on Linux
------------------------------------------------------------------------
r64464 | normal | 2018-08-19 05:04:07 +0900 (Sun, 19 Aug 2018) | 5 lines

thread_sync.c (rb_mutex_sleep): skip interrupt check before sleep

We do not want to risk switching threads before going to sleep
because it can cause unexpected wakeups and put us in an
unexpected state when used with ConditionVariable.
------------------------------------------------------------------------
r64463 | eregon | 2018-08-19 04:37:46 +0900 (Sun, 19 Aug 2018) | 3 lines

Special case for Solaris 11x on RubyCI

* Where localhost is an alias but not the primary name of 127.0.0.1.
------------------------------------------------------------------------
r64462 | eregon | 2018-08-19 04:37:29 +0900 (Sun, 19 Aug 2018) | 4 lines

Be more flexible in the protocol value returned by getaddrinfo()

* Only Solaris 2.10 i386 and Windows seem to return 0 it and other
  Solaris seem to fill the value.
------------------------------------------------------------------------
r64461 | eregon | 2018-08-19 04:37:12 +0900 (Sun, 19 Aug 2018) | 1 line

Adapt pack_sockaddr_in specs for Solaris
------------------------------------------------------------------------
r64460 | eregon | 2018-08-19 04:36:57 +0900 (Sun, 19 Aug 2018) | 3 lines

Use ftp for the service in getaddrinfo/getnameinfo/getservbyname specs

* Solaris cannot resolve 'http' but can resolve 'ftp'.
------------------------------------------------------------------------
r64459 | eregon | 2018-08-19 04:36:41 +0900 (Sun, 19 Aug 2018) | 1 line

Simplify to a more standardized Socket SCM constant in specs
------------------------------------------------------------------------
r64458 | eregon | 2018-08-19 04:36:26 +0900 (Sun, 19 Aug 2018) | 1 line

Add guards for Solaris for socket specs
------------------------------------------------------------------------
r64457 | eregon | 2018-08-19 04:36:10 +0900 (Sun, 19 Aug 2018) | 1 line

Adapt spec to consider Solaris
------------------------------------------------------------------------
r64456 | eregon | 2018-08-19 04:35:54 +0900 (Sun, 19 Aug 2018) | 4 lines

Use 127.0.0.1 instead of localhost in Addrinfo specs

* Solaries doesn't support Addrinfo.getaddrinfo('localhost', 80),
  but supports Addrinfo.getaddrinfo('127.0.0.1', 80).
------------------------------------------------------------------------
r64455 | eregon | 2018-08-19 04:35:37 +0900 (Sun, 19 Aug 2018) | 4 lines

Accept TypeError for Socket#getnameinfo

* Happens when VALIDATE_SOCKLEN() actually checks the length such as on
  FreeBSD.
------------------------------------------------------------------------
r64454 | eregon | 2018-08-19 04:35:20 +0900 (Sun, 19 Aug 2018) | 4 lines

Always set autoclose=false for IO.for_fd fds

* I believe this should be default behavior, see [Feature #2250].
* Now make test-spec MSPECOPT='-R100 spec/ruby/library/socket' works fine.
------------------------------------------------------------------------
r64453 | svn | 2018-08-19 04:35:03 +0900 (Sun, 19 Aug 2018) | 1 line

* properties.
------------------------------------------------------------------------
r64452 | eregon | 2018-08-19 04:35:02 +0900 (Sun, 19 Aug 2018) | 5 lines

Re-add socket specs

* This reverts commit df9521fd043df1fb862e46f9b1af83223f16eb2d:
  "Remove failing spec files"
* Platform guards follow in the next commits.
------------------------------------------------------------------------
r64451 | normal | 2018-08-19 04:03:44 +0900 (Sun, 19 Aug 2018) | 6 lines

Revert "thread.c (sleep_*): check interrupt before changing th->status"

This reverts commit 9e59487a38d914275bedcde723923f22b3779e59 (r64449)

More (but different) CI failures I can't reproduce locally...
http://ci.rvm.jp/results/trunk-test@ruby-sky3/1235951
------------------------------------------------------------------------
r64450 | svn | 2018-08-19 03:29:29 +0900 (Sun, 19 Aug 2018) | 1 line

* 2018-08-19
------------------------------------------------------------------------
r64449 | normal | 2018-08-19 03:29:28 +0900 (Sun, 19 Aug 2018) | 8 lines

thread.c (sleep_*): check interrupt before changing th->status

Having threads switch before we sleep can cause applications
to misread the state of the thread.  Now, we are consistent
with blocking_region_begin behavior and change th->status
AFTER checking interrupts.

Maybe this can fix [Bug #15002]
------------------------------------------------------------------------
r64448 | eregon | 2018-08-18 22:52:53 +0900 (Sat, 18 Aug 2018) | 7 lines

Revert r64441

* This reverts commit 647fc1227a4146ecbfeb0d59358abc8d99cd8ae6:
  "thread_sync.c (rb_mutex_synchronize): only unlock if we own the mutex"
* Let's try to preserve the semantics of always being locked inside
  Mutex#synchronize, even if an exception interrupts ConditionVariable#wait.
* As discussed on [Bug #14999].
------------------------------------------------------------------------
r64447 | naruse | 2018-08-18 21:35:28 +0900 (Sat, 18 Aug 2018) | 4 lines

Temporary revert "process.c: dead code when no SIGCHLD"

This reverts commit r64407.
Maybe it breaks http://mswinci.japaneast.cloudapp.azure.com/vc12-x64/ruby-trunk/log/20180817T095734Z.fail.html.gz
------------------------------------------------------------------------
r64446 | nobu | 2018-08-18 18:56:43 +0900 (Sat, 18 Aug 2018) | 1 line

NEWS: quote false [ci skip]
------------------------------------------------------------------------
r64445 | nobu | 2018-08-18 18:53:11 +0900 (Sat, 18 Aug 2018) | 4 lines

NEWS: converted to Markdown [ci skip]

* NEWS: Converted to Markdown format, from (wrongly) Markdown-mixed
  RDoc format.
------------------------------------------------------------------------
r64444 | normal | 2018-08-18 18:07:36 +0900 (Sat, 18 Aug 2018) | 10 lines

thread.c (sleep_*): reduce the effect of spurious interrupts

Spurious interrupts from SIGCHLD cause Mutex#sleep (via
ConditionVariable#wait) to return early and breaks some use
cases.  Since these are outside the programs's control with
MJIT, we will only consider pending interrupts (e.g. those
from Thread#run) and signals which cause a Ruby-level Signal.trap
handler to fire as "spurious" wakeups.

[ruby-core:88537] [Feature #15002]
------------------------------------------------------------------------
r64442 | kazu | 2018-08-18 16:26:23 +0900 (Sat, 18 Aug 2018) | 1 line

[DOC] Fix indent [ci skip]
------------------------------------------------------------------------
r64441 | normal | 2018-08-18 15:33:49 +0900 (Sat, 18 Aug 2018) | 14 lines

thread_sync.c (rb_mutex_synchronize): only unlock if we own the mutex

If an exception is raised inside Mutex#sleep (via ConditionVariable#wait),
we cannot guarantee we can own the mutex in the ensure callback.

However, who owns the mutex at that point does not matter.  What
matters is the Mutex is usable after an exception occurs.

* thread_sync.c (rb_mutex_synchronize): only unlock if we own the mutex

* spec/ruby/library/conditionvariable/wait_spec.rb: only test lock
  usability after thread kill.  Who owns the lock at any
  particular moment is an implementation detail which we cannot
  easily guarantee.
------------------------------------------------------------------------
r64440 | normal | 2018-08-18 15:05:17 +0900 (Sat, 18 Aug 2018) | 5 lines

Revert "thread_sync.c (do_sleep): avoid thread-switch/interrupt check"

This reverts commit d7ddbff2954ba22b71bdfeba4b94e1c4fb91efb0 (r64436)

Seems worthless at preventing CI failures
------------------------------------------------------------------------
r64436 | normal | 2018-08-18 13:24:31 +0900 (Sat, 18 Aug 2018) | 13 lines

thread_sync.c (do_sleep): avoid thread-switch/interrupt check

Calling rb_mutex_sleep directly should avoid
thread-switching/interrupt checking which can lead to occasional
failures.

Unfortunately, this means overriding Mutex#sleep is no longer
supported.  Will let this commit run for a bit see if CI failures
from ConditionVariable specs continue...

cf. https://rubyci.org/logs/rubyci.s3.amazonaws.com/ubuntu/ruby-trunk/log/20180817T213003Z.fail.html.gz

[ruby-core:88524] [Bug #14999]
------------------------------------------------------------------------
r64433 | kazu | 2018-08-18 13:09:48 +0900 (Sat, 18 Aug 2018) | 1 line

Suppress read of ~/.irbrc
------------------------------------------------------------------------
r64429 | nobu | 2018-08-18 11:44:35 +0900 (Sat, 18 Aug 2018) | 1 line

test/ruby/test_system.rb: suppress prompt and echo on Windows
------------------------------------------------------------------------
r64427 | k0kubun | 2018-08-18 11:20:46 +0900 (Sat, 18 Aug 2018) | 3 lines

test/lib/zombie_hunter.rb: enable zombie hunter for MJIT

I think this issue is solved by Eric Wong.
------------------------------------------------------------------------
r64426 | k0kubun | 2018-08-18 11:15:41 +0900 (Sat, 18 Aug 2018) | 6 lines

test_function.rb: try running test_nogvl_poll again

According to some runs in mjit-test (make test-all RUN_OPTS="--jit-wait"),
this test might not be the cause of its failure.

So, let me try running this again.
------------------------------------------------------------------------
r64425 | k0kubun | 2018-08-18 11:04:44 +0900 (Sat, 18 Aug 2018) | 4 lines

tool/downloader.rb: retry 500 from GitHub

Unfortunately, GitHub may return 500 for temporary failure:
https://travis-ci.org/ruby/ruby/builds/417246523
------------------------------------------------------------------------
r64424 | k0kubun | 2018-08-18 10:10:03 +0900 (Sat, 18 Aug 2018) | 9 lines

mjit_worker.c: revert r64322 and r64323

I gave up to introduce the optimization that skips pc motion by checking
C code's line number. The same code can often be shared by multiple
program counters and it's so hard to achieve the optimization in MJIT's
architecture.

Reverting to improve performance by removing -g1 and to remove so file
when it becomes not necessary.
------------------------------------------------------------------------
r64423 | svn | 2018-08-18 08:51:48 +0900 (Sat, 18 Aug 2018) | 1 line

* 2018-08-18
------------------------------------------------------------------------
r64422 | eregon | 2018-08-18 08:51:47 +0900 (Sat, 18 Aug 2018) | 3 lines

Guard spec failing on Solaris

* https://rubyci.org/logs/rubyci.s3.amazonaws.com/unstable11x/ruby-trunk/log/20180817T182406Z.fail.html.gz
------------------------------------------------------------------------
r64417 | eregon | 2018-08-17 23:52:18 +0900 (Fri, 17 Aug 2018) | 1 line

Add guard for Solaris in Socket#connect_nonblock spec
------------------------------------------------------------------------
r64416 | eregon | 2018-08-17 22:07:37 +0900 (Fri, 17 Aug 2018) | 1 line

Guard connect_nonblock spec on FreeBSD
------------------------------------------------------------------------
r64415 | eregon | 2018-08-17 22:07:24 +0900 (Fri, 17 Aug 2018) | 1 line

Guard with a :pktinfo feature specs relying on PKTINFO
------------------------------------------------------------------------
r64414 | eregon | 2018-08-17 22:07:11 +0900 (Fri, 17 Aug 2018) | 4 lines

Re-add specs

* This reverts commit 325fd389018897bd156837639675517ef3b7dea5.
* Platform guards in the next commit.
------------------------------------------------------------------------
r64413 | eregon | 2018-08-17 20:22:55 +0900 (Fri, 17 Aug 2018) | 1 line

Add a note how to run specs under older Ruby versions
------------------------------------------------------------------------
r64412 | eregon | 2018-08-17 20:22:43 +0900 (Fri, 17 Aug 2018) | 1 line

Fix typo in version guard
------------------------------------------------------------------------
r64411 | eregon | 2018-08-17 20:22:30 +0900 (Fri, 17 Aug 2018) | 3 lines

Add version guards for Enumerator::ArithmeticSequence

* And keep specs for older versions.
------------------------------------------------------------------------
r64410 | eregon | 2018-08-17 19:14:01 +0900 (Fri, 17 Aug 2018) | 1 line

spec/README.md: add a note about version guards
------------------------------------------------------------------------
r64409 | eregon | 2018-08-17 18:51:26 +0900 (Fri, 17 Aug 2018) | 3 lines

Integrate new specs for ConditionVariable#wait to prevent regressions

* See [Bug #14999].
------------------------------------------------------------------------
r64408 | normal | 2018-08-17 16:47:26 +0900 (Fri, 17 Aug 2018) | 3 lines

NEWS: clarify that we still use FD_CLOEXEC [ci skip]

[Misc #14907]
------------------------------------------------------------------------
r64407 | nobu | 2018-08-17 14:59:45 +0900 (Fri, 17 Aug 2018) | 6 lines

process.c: dead code when no SIGCHLD

* process.c (ruby_waitpid_all): nothing to do unless SIGCHLD is
  available.

* signal.c (ruby_nocldwait): used only if SIGCHLD is available.
------------------------------------------------------------------------
r64406 | kazu | 2018-08-17 13:01:12 +0900 (Fri, 17 Aug 2018) | 1 line

[DOC] Add ticket number [ci skip]
------------------------------------------------------------------------
r64405 | kazu | 2018-08-17 13:00:09 +0900 (Fri, 17 Aug 2018) | 1 line

[DOC] Update NEWS about close_others [ci skip]
------------------------------------------------------------------------
r64404 | mame | 2018-08-17 12:36:01 +0900 (Fri, 17 Aug 2018) | 1 line

vm.c: add a simple rdoc for RubyVM
------------------------------------------------------------------------
r64403 | normal | 2018-08-17 11:06:54 +0900 (Fri, 17 Aug 2018) | 5 lines

thread_pthread.c (rb_sigwait_fd_get): skip getpid check

This is not called in signal handlers, so there's no reason for
it.  glibc 2.25+ no longer caches getpid(), so it will cost a
syscall for those users.
------------------------------------------------------------------------
r64402 | nobu | 2018-08-17 10:39:49 +0900 (Fri, 17 Aug 2018) | 4 lines

signal.c: no SIGCHLD, no sigchld_hit

* signal.c (sigchld_hit): if SIGCHLD is not available, this variable
  never sets.
------------------------------------------------------------------------
r64401 | nobu | 2018-08-17 10:37:58 +0900 (Fri, 17 Aug 2018) | 1 line

ast.c (rb_ast_node_type): return frozen strings
------------------------------------------------------------------------
r64400 | nobu | 2018-08-17 10:14:37 +0900 (Fri, 17 Aug 2018) | 1 line

passing non-stdio fds is not supported on Windows
------------------------------------------------------------------------
r64399 | normal | 2018-08-17 08:56:08 +0900 (Fri, 17 Aug 2018) | 15 lines

process.c: defaults to close_others false

Arbitrarily closing file descriptors on exec breaks use cases
where a Ruby process sets up a descriptor for non-Ruby children
to use.  For example, the "rake foo" target may spawn any number
of subprocesses (Ruby or not) which depends on parsing the "FOO"
environment variable for out_fd:99 and writing to foo.out

    FOO=out_fd:99 rake foo 99>>foo.out

Unfortunately, this introduced one incompatibility in
test/lib/test/unit.rb and it now requires explicitly setting
IO#close_on_exec=true

[ruby-core:88007] [Misc #14907]
------------------------------------------------------------------------
r64398 | normal | 2018-08-17 04:59:21 +0900 (Fri, 17 Aug 2018) | 15 lines

thread_sync.c (rb_mutex_lock): acquire lock before being killed

We (the thread acquiring the mutex) need to acquire the mutex
before being killed to work with ConditionVariable#wait.

Thus we reinstate the acquire-immediately-after-sleeping logic
from pre-r63711 while still retaining the
acquire-after-checking-for-interrupts logic from r63711.

This regression was introduced in
commit 501069b8a4013f2e3fdde35c50e9527ef0061963 (r63711)
("thread_sync.c (rb_mutex_lock): fix deadlock") for
[Bug #14841]

[ruby-core:88503] [Bug #14999] [Bug #14841]
------------------------------------------------------------------------
r64397 | nobu | 2018-08-17 01:11:55 +0900 (Fri, 17 Aug 2018) | 1 line

Makefile.sub: remove -DRUBY_EXPORT overridden by -U option
------------------------------------------------------------------------
r64396 | svn | 2018-08-17 01:11:55 +0900 (Fri, 17 Aug 2018) | 1 line

* 2018-08-17
------------------------------------------------------------------------
r64395 | nobu | 2018-08-17 01:11:54 +0900 (Fri, 17 Aug 2018) | 1 line

appveyor.yml: run on all branches
------------------------------------------------------------------------
r64394 | kazu | 2018-08-16 21:14:11 +0900 (Thu, 16 Aug 2018) | 1 line

Remove outdated comment [ci skip]
------------------------------------------------------------------------
r64393 | naruse | 2018-08-16 19:50:53 +0900 (Thu, 16 Aug 2018) | 1 line

skip examples failing on solaris
------------------------------------------------------------------------
r64392 | nobu | 2018-08-16 18:46:20 +0900 (Thu, 16 Aug 2018) | 5 lines

configure.ac: LIBPATHENV on macOS

* configure.ac (LIBPATHENV): use DYLD_FALLBACK_LIBRARY_PATH instead of
  DYLD_LIBRARY_PATH on macOS, to honor runtime paths embedded in the
  binaries.  [ruby-core:88487] [Bug #14992]
------------------------------------------------------------------------
r64391 | nobu | 2018-08-16 18:27:53 +0900 (Thu, 16 Aug 2018) | 4 lines

Makefile.in: dependencies to config.status

* Makefile.in (ruby.pc, ruby-runner.h): fix missing dependencies.
  config.status is needed to be up to date, to run it.
------------------------------------------------------------------------
r64390 | normal | 2018-08-16 18:16:11 +0900 (Thu, 16 Aug 2018) | 5 lines

thread.c (consume_communication_pipe): disarm UBF_TIMER before consume

Same reasoning as the disarm in rb_sigwait_fd_get, the current
thread is already processing signals, so we do not need
UBF_TIMER to continually kick the process, anymore.
------------------------------------------------------------------------
r64389 | normal | 2018-08-16 17:26:56 +0900 (Thu, 16 Aug 2018) | 5 lines

thread_pthread.c: reduce ubf_timer arming for non-signal wakeups

We do not need to rely on SIGVTALRM for non-sighandler wakeups.
This will reduce spurious wakeups in cases where sigwait_fd
is not grabbed again, soon.
------------------------------------------------------------------------
r64388 | normal | 2018-08-16 17:26:51 +0900 (Thu, 16 Aug 2018) | 8 lines

thread_pthread.c: check signals from gvl.timer

For (rare) blocking functions which are not affected by signals,
we need to call the appropriate unblocking function via
`threadptr_trap_interrupt'

While we're at it, handling waitpid/SIGCHLD from gvl.timer isn't
harmful, here.
------------------------------------------------------------------------
r64387 | normal | 2018-08-16 12:37:14 +0900 (Thu, 16 Aug 2018) | 13 lines

test/net/imap/test_imap.rb (test_exception_during_idle): kill infinite looper

It is possible for Mutex#sleep (via ConditionVariable#wait)
to prematurely wake up under MJIT (because Mutex#sleep can't
handle spurious wakeups).  This affects @idle_done_cond in
Net::IMAP#idle and means the response handler may never
set `in_idle' to `true`.

In any case, ensure the infinite looping `raiser' thread
stops running when the test is done.

Will work on reducing the effect of spurious wakeups from
MJIT...
------------------------------------------------------------------------
r64386 | svn | 2018-08-16 09:58:22 +0900 (Thu, 16 Aug 2018) | 1 line

* properties.
------------------------------------------------------------------------
r64385 | nobu | 2018-08-16 09:58:21 +0900 (Thu, 16 Aug 2018) | 7 lines

Adding Enumerator::Lazy#uniq and Enumerator::Lazy#grep_v to proc chaining

[Feature #14994]

[Fix GH-1930]

From: Anmol Chopra <chopraanmol1@gmail.com>
------------------------------------------------------------------------
r64384 | nobu | 2018-08-16 09:13:47 +0900 (Thu, 16 Aug 2018) | 1 line

enumerator.c: id_lazy is no longer used since r38923
------------------------------------------------------------------------
r64383 | nobu | 2018-08-16 09:05:08 +0900 (Thu, 16 Aug 2018) | 1 line

apply r64239 to macOS too
------------------------------------------------------------------------
r64382 | svn | 2018-08-16 03:56:35 +0900 (Thu, 16 Aug 2018) | 1 line

* 2018-08-16
------------------------------------------------------------------------
r64381 | normal | 2018-08-16 03:56:34 +0900 (Thu, 16 Aug 2018) | 3 lines

test/ripper/test_parser_events.rb (test_block_variables): bump RLIMIT_AS again

I still seem to need more memory for parallel tests with MJIT...
------------------------------------------------------------------------
r64380 | akr | 2018-08-15 23:24:44 +0900 (Wed, 15 Aug 2018) | 2 lines

gmtimew_noleapsecond uses tables for mon and mday.

------------------------------------------------------------------------
r64379 | nobu | 2018-08-15 21:53:45 +0900 (Wed, 15 Aug 2018) | 1 line

spec/ruby/optional/capi/ext/io_spec.c: guard unreachable code
------------------------------------------------------------------------
r64378 | nobu | 2018-08-15 20:01:30 +0900 (Wed, 15 Aug 2018) | 1 line

spec/ruby/optional/capi/ext/io_spec.c: guard unreachable code
------------------------------------------------------------------------
r64377 | normal | 2018-08-15 16:16:55 +0900 (Wed, 15 Aug 2018) | 5 lines

thread_pthread.c: hoist out do_gvl_timer and improve documentation

This hopefully clarifies the roles of UBF_TIMER and vm->gvl.timer

[ruby-core:88475] [Misc #14937]
------------------------------------------------------------------------
r64376 | normal | 2018-08-15 14:54:41 +0900 (Wed, 15 Aug 2018) | 6 lines

vm_core.h (rb_thread_t): pack small fields together

On a 64-bit system, this reduces rb_thread_t from 536 to 520 bytes.
Depending on the allocation, this can reduce cacheline access
for checking the abort_on_exception, report_on_exception and
pending_interrupt_queue_checked flags.
------------------------------------------------------------------------
r64375 | normal | 2018-08-15 14:31:31 +0900 (Wed, 15 Aug 2018) | 6 lines

thread_pthread.h (native_thread_data): split list_node between ubf and gvl

Do not waste extra memory for each thread, but make
thread_pthread.c easier-to-follow as a result.

[ruby-core:88475] [Misc #14937]
------------------------------------------------------------------------
r64374 | k0kubun | 2018-08-15 13:51:10 +0900 (Wed, 15 Aug 2018) | 11 lines

test_function.rb: skip running test

that times out with test-all w/ --jit-wait.

I'm running the following command on Wecker CI everyday:
```
make test-all TESTOPTS="--color=never --job-status=normal" RUN_OPTS="--disable-gems --jit-wait --jit-warnings" RUBY_FORCE_TEST_JIT=1
```

By running yesterday's all commits, r64354 ran successfully but r64355
didn't. So the test should be fixed to run with --jit-wait at first.
------------------------------------------------------------------------
r64373 | normal | 2018-08-15 13:32:46 +0900 (Wed, 15 Aug 2018) | 7 lines

thread_pthread.c: rename rb_timer_* to ubf_timer_*

These functions will not be exported outside of thread_pthread.c
and we need to clarify the timer here is used for ubf and not
timeslice.

[ruby-core:88475] [Misc #14937]
------------------------------------------------------------------------
r64372 | normal | 2018-08-15 13:32:41 +0900 (Wed, 15 Aug 2018) | 5 lines

thread_pthread.c: rename timer_thread_pipe to signal_self_pipe

This data structure has nothing to do with timers or threads.

[ruby-core:88475] [Misc #14937]
------------------------------------------------------------------------
r64371 | normal | 2018-08-15 13:32:36 +0900 (Wed, 15 Aug 2018) | 5 lines

thread_pthread.c: additional UBF_TIMER == UBF_TIMER_PTHREAD guards

Hopefully this makes the code easier-to-follow

[ruby-core:88475] [Misc #14937]
------------------------------------------------------------------------
r64370 | nobu | 2018-08-15 13:10:19 +0900 (Wed, 15 Aug 2018) | 1 line

appveyor.yml: no MSYS path conversion
------------------------------------------------------------------------
r64369 | k0kubun | 2018-08-15 12:03:18 +0900 (Wed, 15 Aug 2018) | 5 lines

test_readline.rb: skip teardown failure

https://ci.appveyor.com/project/ruby/ruby/build/9271/job/e88212s136mr0dgr

I'll take a look at MSP-Greg's patch on readline later.
------------------------------------------------------------------------
r64368 | nobu | 2018-08-15 11:15:13 +0900 (Wed, 15 Aug 2018) | 1 line

appveyor.yml: get rid of msys sh as possible
------------------------------------------------------------------------
r64367 | nobu | 2018-08-15 11:05:20 +0900 (Wed, 15 Aug 2018) | 1 line

-Wsuggest-attribute=noreturn on io_spec_rb_io_wait_readable
------------------------------------------------------------------------
r64366 | k0kubun | 2018-08-15 10:55:09 +0900 (Wed, 15 Aug 2018) | 5 lines

test_env.rb: change mingw branch

https://github.com/MSP-Greg/ruby-loco/blob/e287cb739113da289271a017a1e7fa46cbfe47d9/patches/gte20600/test-ruby-test_env.rb_test_huge_value.patch

From: MSP-Greg (Greg L) <Greg.mpls@gmail.com>
------------------------------------------------------------------------
r64365 | k0kubun | 2018-08-15 10:40:57 +0900 (Wed, 15 Aug 2018) | 3 lines

skip tests failing on AppVeyor MinGW

Let me skip this to make CI green first and take a look later...
------------------------------------------------------------------------
r64364 | k0kubun | 2018-08-15 08:23:44 +0900 (Wed, 15 Aug 2018) | 4 lines

appveyor.yml: remove broken --name option

Currently all tests are skipped by the --name option.
V=1 is for debugging this issue.
------------------------------------------------------------------------
r64363 | normal | 2018-08-15 08:00:02 +0900 (Wed, 15 Aug 2018) | 7 lines

webrick/httpauth/htgroup.rb (flush): avoid unnecessary unlink

Based on patch by akr [ruby-core:88477], use Tempfile.create
to avoid unnecessary unlink call.  Unlike akr's original patch,
this does not change the return value of flush.

Thanks-to: Tanaka Akira <akr@fsij.org>
------------------------------------------------------------------------
r64362 | normal | 2018-08-15 07:59:57 +0900 (Wed, 15 Aug 2018) | 6 lines

Revert "test/lib/leakchecker.rb (find_tempfiles): don't warn for missing files"

This reverts commit 52102f6ff50eebf8c16667c9b49cef579d2057c1 (r64238).

It is no longer necessary if we use Tempfile.create in
WEBrick::HTTPAuth::Htgroup#flush (see next commit)
------------------------------------------------------------------------
r64361 | normal | 2018-08-15 07:06:40 +0900 (Wed, 15 Aug 2018) | 6 lines

Revert "thread_pthread.c: use UBF_TIMER_PTHREAD on Solaris"

This reverts commit 31bfe0fe86433beddfec2b2bdba69dfda1775f8d (r64357)

commit 17ed23bb6dfc942a8c51658b01135c3e2807ccf0 (r64359,
"fix fragile spec from unpredictable errno") is the correct fix
------------------------------------------------------------------------
r64360 | svn | 2018-08-15 02:07:37 +0900 (Wed, 15 Aug 2018) | 1 line

* 2018-08-15
------------------------------------------------------------------------
r64359 | normal | 2018-08-15 02:07:36 +0900 (Wed, 15 Aug 2018) | 12 lines

spec/ruby/optional/capi/io_spec.rb: fix fragile spec from unpredictable errno

rb_io_wait_readable and rb_io_wait_writable depend on the TSD
errno value.  Due to the recent changes in r64352-r64353 to
restructure GVL, errno could be set to EAGAIN from the signal
self-pipe and cause the rb_io_wait_readable spec to block
unexpectedly.  This should fix rubyspec timeouts on Solaris:

  http://rubyci.s3.amazonaws.com/unstable11s/ruby-trunk/log/20180814T042506Z.fail.html.gz

* spec/ruby/optional/capi/ext/io_spec.c: add errno= setter method
* spec/ruby/optional/capi/io_spec.rb: set errno to appropriate values for tests
------------------------------------------------------------------------
r64358 | nobu | 2018-08-14 20:58:17 +0900 (Tue, 14 Aug 2018) | 5 lines

non-symbol keys in kwargs

* class.c (separate_symbol): [EXPERIMENTAL] non-symbol key in keyword
  arguments hash causes an exception now.
  c.f. https://twitter.com/yukihiro_matz/status/1022287578995646464
------------------------------------------------------------------------
r64357 | normal | 2018-08-14 15:49:25 +0900 (Tue, 14 Aug 2018) | 8 lines

thread_pthread.c: use UBF_TIMER_PTHREAD on Solaris

I'm not sure what's causing this failure in Solaris and only
on rubyspec, since rb_io_wait_readable is a well-exercised
code path in other places.  But maybe using a pthread for
timing (similar to old timer-thread) can solve the issue.

cf. http://rubyci.s3.amazonaws.com/unstable11s/ruby-trunk/log/20180814T042506Z.fail.html.gz
------------------------------------------------------------------------
r64356 | normal | 2018-08-14 11:24:37 +0900 (Tue, 14 Aug 2018) | 10 lines

thread_pthread.c: use CLOCK_REALTIME on SunOS (Solaris)

timer_create does not seem to support CLOCK_MONOTONIC on Solaris,
and CLOCK_HIRES seems like it could fail with insufficient permissions:

https://docs.oracle.com/cd/E86824_01/html/E54766/timer-create-3c.html

(Only tested on Linux and FreeBSD)

[ruby-core:88360] [Misc #14937]
------------------------------------------------------------------------
r64355 | normal | 2018-08-14 09:31:31 +0900 (Tue, 14 Aug 2018) | 11 lines

test/fiddle/test_function.rb (test_nogvl_poll): stop timer hack

EINTR seems unavoidable in real programs (or MJIT), so maybe
it's not worth dealing with.  r64353 relies on POSIX timers
to signal.

Switching pipes and sockets to non-blocking by default would let
us get rid of POSIX timers, timer pthread and this hack:
https://bugs.ruby-lang.org/issues/14968

[ruby-core:88360] [Misc #14937]
------------------------------------------------------------------------
r64354 | normal | 2018-08-14 07:19:54 +0900 (Tue, 14 Aug 2018) | 6 lines

thread_pthread (rb_timer_arm): ignore UBF_TIMER_POSIX state 2

It looks like I forgot to account for a situation involving 3
threads.

[ruby-core:88360] [Misc #14937]
------------------------------------------------------------------------
r64353 | normal | 2018-08-14 06:34:24 +0900 (Tue, 14 Aug 2018) | 19 lines

thread_pthread: use POSIX timer or thread to get rid of races

This closes race condition where GVL is uncontended and a thread
receives a signal immediately before calling the blocking
function when releasing GVL:

	1) check interrupts
	2) release GVL
	3) blocking function

If signal fires after 1) but before 3), that thread may never
wake up if GVL is uncontended

We also need to wakeup the ubf_list unconditionally on
gvl_yield; because two threads can be yielding to each other
while waiting on IO#close while waiting on threads in IO#read or
IO#gets.

[ruby-core:88360] [Misc #14937]
------------------------------------------------------------------------
r64352 | normal | 2018-08-14 06:34:20 +0900 (Tue, 14 Aug 2018) | 8 lines

thread_pthread.c: eliminate timer thread by restructuring GVL

This reverts commit 194a6a2c68e9c8a3536b24db18ceac87535a6051 (r64203).

Race conditions which caused the original reversion will be fixed
in the subsequent commit.

[ruby-core:88360] [Misc #14937]
------------------------------------------------------------------------
r64351 | naruse | 2018-08-14 04:12:23 +0900 (Tue, 14 Aug 2018) | 9 lines

FreeBSD 11.0 lacks ELFCOMPRESS_ZLIB

FreeBSD 11.0 unfortunately lacks ELF compression definitions in their
elf.h (sys/elf_common.h), and 11.1 introduced them.
https://github.com/freebsd/freebsd/commit/b9167d33a12b8a6c279be9cd1005874728e808c9

Though we can add workaround, we simply drop support because
FreeBSD 11.0 is already EOL at November 30, 2017.
https://www.freebsd.org/security/unsupported.html
------------------------------------------------------------------------
r64350 | k0kubun | 2018-08-14 01:03:47 +0900 (Tue, 14 Aug 2018) | 5 lines

appveyor.yml: install gdbm

which is missing on AppVeyor environment

https://github.com/ruby/ruby/commit/6a1e323ae88101cfed3fc4591d6e6a3bd8c05f02#commitcomment-30056791
------------------------------------------------------------------------
r64349 | svn | 2018-08-14 00:29:41 +0900 (Tue, 14 Aug 2018) | 1 line

* 2018-08-14
------------------------------------------------------------------------
r64348 | k0kubun | 2018-08-14 00:29:40 +0900 (Tue, 14 Aug 2018) | 1 line

appveyor.yml: add MinGW build
------------------------------------------------------------------------
r64347 | kazu | 2018-08-13 23:54:32 +0900 (Mon, 13 Aug 2018) | 1 line

fix typos [ci skip]
------------------------------------------------------------------------
r64346 | usa | 2018-08-13 23:33:06 +0900 (Mon, 13 Aug 2018) | 2 lines

mention about r64337

------------------------------------------------------------------------
r64345 | usa | 2018-08-13 23:29:21 +0900 (Mon, 13 Aug 2018) | 2 lines

Add some tests for *method_defined?

------------------------------------------------------------------------
r64344 | kazu | 2018-08-13 22:50:48 +0900 (Mon, 13 Aug 2018) | 1 line

Fix test bug
------------------------------------------------------------------------
r64343 | usa | 2018-08-13 22:48:27 +0900 (Mon, 13 Aug 2018) | 4 lines

Fix problem about notimplemented case

Re-revert r64340, and take care about notimplemented case.

------------------------------------------------------------------------
r64342 | k0kubun | 2018-08-13 22:46:06 +0900 (Mon, 13 Aug 2018) | 7 lines

appveyor.yml: drop unnecessary 1.0. prefix

from version.

Also I fixed the wrong way of using `for:`.
Specifying `for` without `matrix.only` was just useless.
This fix is for adding MinGW matrix in the future.
------------------------------------------------------------------------
r64341 | kazu | 2018-08-13 22:27:49 +0900 (Mon, 13 Aug 2018) | 1 line

Add test for method_defined?(notimplement)
------------------------------------------------------------------------
r64340 | kazu | 2018-08-13 22:27:47 +0900 (Mon, 13 Aug 2018) | 1 line

Revert "Support optional inherit argument for Module#method_defined?"
------------------------------------------------------------------------
r64339 | usa | 2018-08-13 21:42:55 +0900 (Mon, 13 Aug 2018) | 2 lines

get rid of an encode noncompatible error

------------------------------------------------------------------------
r64338 | svn | 2018-08-13 21:42:04 +0900 (Mon, 13 Aug 2018) | 1 line

* remove trailing spaces.
------------------------------------------------------------------------
r64337 | usa | 2018-08-13 21:42:03 +0900 (Mon, 13 Aug 2018) | 51 lines

Support optional inherit argument for Module#method_defined?

Module has many introspection methods for methods and constants that
either return an array or return true or false for whether the method
or constant is defined. Most of these methods support an optional
argument that controls whether to consider inheritance.  Currently,
the following Module methods support such a argument:

* const_defined?
* constants
* instance_methods
* private_instance_methods
* protected_instance_methods
* public_instance_methods

and the following methods do not:

* method_defined?
* private_method_defined?
* protected_method_defined?
* public_method_defined?

This patch supports such an argument for the *method_defined?
methods.

While you can currently work around the lack of support via:

  mod.instance_methods(false).include?(:method_name)

This patch allows the simpler and more efficient:

  mod.method_defined?(:method_name, false)

One case where you want to exclude inheritance when checking
for a method definition is when you want to replace a method
that may already exist.  To avoid a verbose warning, you want
to remove the method only if it is already defined:

  remove_method(:foo) if method_defined?(:foo, false)
  define_method(:foo){}

You can't call remove_method without checking for the method
definition, as that can raise a NameError, and you don't want
to include inheritance because remove_method will still raise
a NameError if the method is defined by an ancestor and not
by the module itself.

[ruby-core:88140] [Feature #14944]

From: Jeremy Evans <code@jeremyevans.net>

------------------------------------------------------------------------
r64336 | kazu | 2018-08-13 21:22:43 +0900 (Mon, 13 Aug 2018) | 3 lines

test/rinda/test_rinda.rb: Start keeper only on used tests

to reduce sleeping threads on unrelated tests
------------------------------------------------------------------------
r64335 | k0kubun | 2018-08-13 20:02:37 +0900 (Mon, 13 Aug 2018) | 3 lines

Makefile.in: drop MJIT_DLDFLAGS_NOCOMPRESS

which is obsoleted by r64331
------------------------------------------------------------------------
r64334 | naruse | 2018-08-13 17:48:30 +0900 (Mon, 13 Aug 2018) | 1 line

Don't free allocated uncompressed_debug_line until backtrace is printed
------------------------------------------------------------------------
r64333 | naruse | 2018-08-13 16:55:43 +0900 (Mon, 13 Aug 2018) | 1 line

Re-apply wrongly reverted r64330
------------------------------------------------------------------------
r64332 | naruse | 2018-08-13 15:31:37 +0900 (Mon, 13 Aug 2018) | 1 line

Define parse_compressed_debug_line() only ifdef SUPPORT_COMPRESSED_DEBUG_LINE
------------------------------------------------------------------------
r64331 | naruse | 2018-08-13 15:20:12 +0900 (Mon, 13 Aug 2018) | 5 lines

support compressed debug_line

re-commit r64328
https://blogs.oracle.com/solaris/elf_section_compression-v2
https://gnu.wildebeest.org/blog/mjw/2016/01/13/elf-libelf-compressed-sections-and-elfutils/
------------------------------------------------------------------------
r64330 | nobu | 2018-08-13 15:09:57 +0900 (Mon, 13 Aug 2018) | 7 lines

configure.ac: use linker_flag to LIBRUBY_DLDFLAGS

* configure.ac: use a feature flag `linker_flag`, than checking if the
  compiler is `GCC`.

* configure.ac: append to LIBRUBY_DLDFLAGS once after initialized with
  DLDFLAGS.
------------------------------------------------------------------------
r64329 | naruse | 2018-08-13 15:05:39 +0900 (Mon, 13 Aug 2018) | 3 lines

Revert "support compressed debug_line"

This reverts commit r64328
------------------------------------------------------------------------
r64328 | naruse | 2018-08-13 11:56:06 +0900 (Mon, 13 Aug 2018) | 4 lines

support compressed debug_line

https://blogs.oracle.com/solaris/elf_section_compression-v2
https://gnu.wildebeest.org/blog/mjw/2016/01/13/elf-libelf-compressed-sections-and-elfutils/
------------------------------------------------------------------------
r64327 | akr | 2018-08-13 01:45:02 +0900 (Mon, 13 Aug 2018) | 2 lines

timegm_noleapsecond uses calc_tm_yday.

------------------------------------------------------------------------
r64326 | k0kubun | 2018-08-13 00:16:00 +0900 (Mon, 13 Aug 2018) | 9 lines

configure.ac: use the correct argument

for --compress-debug-sections. I thought "no" is the correct one because
configure.ac has `AS_IF([test "x$compress_debug_sections" != xno]`, but
it wasn't the case.

This commit is needed to resolve errors like:
/usr/bin/x86_64-linux-gnu-ld: invalid --compress-debug-sections option: `no'
collect2: error: ld returned 1 exit status
------------------------------------------------------------------------
r64325 | k0kubun | 2018-08-13 00:13:06 +0900 (Mon, 13 Aug 2018) | 11 lines

configure.ac: MJIT_DLDFLAGS_NOCOMPRESS

is configured now, to force -Wl,--compress-debug-sections=no
for MJIT only when the option is used in MJIT_DLDFLAGS.

This needs to be done in configure.ac to resolve build failure like
https://travis-ci.org/ruby/ruby/builds/415120662.

Makefile.in: define it in mjit_config.h

mjit_worker.c: replace hard-coded flag to MJIT_DLDFLAGS_NOCOMPRESS
------------------------------------------------------------------------
r64324 | svn | 2018-08-13 00:00:05 +0900 (Mon, 13 Aug 2018) | 1 line

* 2018-08-13
------------------------------------------------------------------------
r64323 | k0kubun | 2018-08-13 00:00:03 +0900 (Mon, 13 Aug 2018) | 6 lines

mjit_worker.c: lazily delete so file

on ELF.

I need symbol name and line number to lazily create program counter for
optimization on ELF binary.
------------------------------------------------------------------------
r64322 | k0kubun | 2018-08-12 23:42:25 +0900 (Sun, 12 Aug 2018) | 6 lines

mjit_worker.c: allow showing line number

on addr2line.c, if --jit-save-temps is specified.

I'm going to use the line number to lazily create program counter to
improve the performance degraded in r64283.
------------------------------------------------------------------------
r64321 | k0kubun | 2018-08-12 21:59:47 +0900 (Sun, 12 Aug 2018) | 3 lines

mjit.c: reduce the number of variables

in mark_ec_units() to simplify code.
------------------------------------------------------------------------
r64318 | nobu | 2018-08-12 17:10:53 +0900 (Sun, 12 Aug 2018) | 5 lines

Optimization for case when with splat operator

[Fix GH-1928] [Feature #14984]

From: chopraanmol1 <chopraanmol1@gmail.com>
------------------------------------------------------------------------
r64317 | k0kubun | 2018-08-12 15:00:31 +0900 (Sun, 12 Aug 2018) | 8 lines

tool/downloader.rb: increase retries

GitHub download failed on 13:50:36
https://ci.appveyor.com/project/ruby/ruby/build/1.0.9221 and it also
failed on 13:51:35 (all builds between them failed too).

It means that we need to expect GitHub 502 that continues 1 minute.
So I configured 6 retries, that will sleep at most 91s in total.
------------------------------------------------------------------------
r64316 | nobu | 2018-08-12 13:50:48 +0900 (Sun, 12 Aug 2018) | 1 line

compile.c: use EXPECT_NODE macro
------------------------------------------------------------------------
r64315 | nobu | 2018-08-12 13:50:14 +0900 (Sun, 12 Aug 2018) | 5 lines

compile.c: check error in when_vals

* compile.c (when_vals): return a negative value on error.

* compile.c (compile_case): check error in when_vals().
------------------------------------------------------------------------
r64314 | k0kubun | 2018-08-12 09:30:04 +0900 (Sun, 12 Aug 2018) | 4 lines

vm_insnhelper.c: revert r64280

This commit caused test-all failure with --jit-wait.
I don't know the reason yet, but let me revert it to normalize CI.
------------------------------------------------------------------------
r64313 | nobu | 2018-08-12 09:28:26 +0900 (Sun, 12 Aug 2018) | 4 lines

skip non-IP interfaces

* spec/ruby/library/socket/socket/getifaddrs_spec.rb: VirtualBox host
  only adapter seems something different than ordinary interfaces.
------------------------------------------------------------------------
r64312 | k0kubun | 2018-08-12 08:40:12 +0900 (Sun, 12 Aug 2018) | 4 lines

vm_insnhelper.c: drop duplicated inline

to resolve warning:
c:\projects\ruby\vm_insnhelper.c(1661) : warning C4141: 'inline' : used more than once
------------------------------------------------------------------------
r64311 | k0kubun | 2018-08-12 08:33:36 +0900 (Sun, 12 Aug 2018) | 4 lines

appveyor.yml: customize icon_url

We're using "x" sign as an icon for incoming webhook, but the success
notification by `on_build_status_changed` should not be an "x" asign.
------------------------------------------------------------------------
r64310 | svn | 2018-08-12 01:25:22 +0900 (Sun, 12 Aug 2018) | 1 line

* 2018-08-12
------------------------------------------------------------------------
r64309 | naruse | 2018-08-12 01:25:21 +0900 (Sun, 12 Aug 2018) | 1 line

fix r64296
------------------------------------------------------------------------
r64308 | k0kubun | 2018-08-11 23:50:21 +0900 (Sat, 11 Aug 2018) | 1 line

test_rubyvm_mjit.rb: skip testing MJIT if not supported
------------------------------------------------------------------------
r64307 | k0kubun | 2018-08-11 23:48:10 +0900 (Sat, 11 Aug 2018) | 1 line

mjit.c: stop defining alias for a very limited use
------------------------------------------------------------------------
r64306 | k0kubun | 2018-08-11 23:44:31 +0900 (Sat, 11 Aug 2018) | 4 lines

mjit.c: drop obsoleted duplicated declaration

of mjit_worker(). It was needed when mjit_worker.c is separated from
mjit.c, but it's now just included.
------------------------------------------------------------------------
r64305 | k0kubun | 2018-08-11 23:36:14 +0900 (Sat, 11 Aug 2018) | 1 line

mjit_worker.c: remove redundant cast for calloc/alloca
------------------------------------------------------------------------
r64304 | k0kubun | 2018-08-11 23:34:05 +0900 (Sat, 11 Aug 2018) | 5 lines

mjit_worker.c: handle calloc failure

Unlike ZALLOC, it's not automatically handled.

mjit.c: ditto
------------------------------------------------------------------------
r64303 | nobu | 2018-08-11 23:32:15 +0900 (Sat, 11 Aug 2018) | 4 lines

test_env.rb: a failure on appveyor

* test/ruby/test_env.rb (test_huge_value): Windows 8 seems having a
  limit on single environment variable.
------------------------------------------------------------------------
r64302 | k0kubun | 2018-08-11 23:27:53 +0900 (Sat, 11 Aug 2018) | 1 line

mjit_worker.c: never trigger GC on MJIT worker
------------------------------------------------------------------------
r64301 | k0kubun | 2018-08-11 23:18:55 +0900 (Sat, 11 Aug 2018) | 5 lines

mjit_worker.c: don't use ruby_strdup

on MJIT worker. That may trigger GC. And handled strdup failure instead.

mjit_compile.c: update comment about GC
------------------------------------------------------------------------
r64300 | nobu | 2018-08-11 23:15:58 +0900 (Sat, 11 Aug 2018) | 1 line

appveyor.yml: show the OS version
------------------------------------------------------------------------
r64299 | k0kubun | 2018-08-11 23:09:26 +0900 (Sat, 11 Aug 2018) | 4 lines

test_rubyvm_mjit.rb: dump output on test_pause

failure. It's failing on mswinci but it's hard to know the cause without
out/err.
------------------------------------------------------------------------
r64298 | k0kubun | 2018-08-11 23:05:34 +0900 (Sat, 11 Aug 2018) | 5 lines

mjit_worker.c: share MJIT warning logic

as mjit_warning().

mjit.c: ditto
------------------------------------------------------------------------
r64297 | naruse | 2018-08-11 22:43:31 +0900 (Sat, 11 Aug 2018) | 1 line

Solaris 10 doesn't have getifaddrs
------------------------------------------------------------------------
r64296 | naruse | 2018-08-11 22:31:43 +0900 (Sat, 11 Aug 2018) | 1 line

Solaris raises EAI_SERVICE if hints.ai_socktype=0
------------------------------------------------------------------------
r64295 | k0kubun | 2018-08-11 22:31:10 +0900 (Sat, 11 Aug 2018) | 4 lines

test_iseq_load.rb: reduce timeout of test_stressful_roundtrip

We should increase RUBY_TEST_SUBPROCESS_TIMEOUT_SCALE for slow
environments, and we configured some CI machines.
------------------------------------------------------------------------
r64294 | nobu | 2018-08-11 22:28:40 +0900 (Sat, 11 Aug 2018) | 5 lines

upgrade the default WINNT version

* configure.ac: set the default target Windows NT version to 0x0600,
  as well as mswin version since r50051.  Windows XP has ended years
  ago.
------------------------------------------------------------------------
r64293 | nobu | 2018-08-11 22:18:55 +0900 (Sat, 11 Aug 2018) | 7 lines

hash.c: env block size limit on Windows

* hash.c (ruby_setenv): do not check environment block size.
  c.f. https://msdn.microsoft.com/en-us/library/windows/desktop/ms682653(v=vs.85).aspx
  Starting with Windows Vista and Windows Server 2008, there is no
  technical limitation on the size of the environment block.
  [ruby-core:88400] [Bug #14979]
------------------------------------------------------------------------
r64292 | k0kubun | 2018-08-11 19:05:56 +0900 (Sat, 11 Aug 2018) | 5 lines

mjit_worker.c: resurrect more static declarations

and remove old mjit_ prefixes again.

mjit.c: ditto
------------------------------------------------------------------------
r64291 | k0kubun | 2018-08-11 18:58:20 +0900 (Sat, 11 Aug 2018) | 5 lines

mjit_worker.c: reorder functions and variables

so that related things are placed closely.

Sorry for mixing them in previous commits...
------------------------------------------------------------------------
r64290 | k0kubun | 2018-08-11 18:48:07 +0900 (Sat, 11 Aug 2018) | 5 lines

mjit.c: make some variables static again

and remove redundant mjit_ prefixes.

mjit_worker.c: ditto
------------------------------------------------------------------------
r64289 | k0kubun | 2018-08-11 18:37:14 +0900 (Sat, 11 Aug 2018) | 12 lines

mjit.c: include mjit_worker.c

instead of linking functions with mjit_worker.o.

In the r64285's structure, we needed to publish some variables with
mjit_ prefix. But ideally those variables should be completely private
in mjit.o (or old mjit_worker.o), and it was hard.

So I chose an approach similar to vm*.c for mjit.c and mjit_worker.c.
I believe mjit_compile.c is still nice to be separated.

After this commit, I'll remove the mjit_ prefix again...
------------------------------------------------------------------------
r64288 | k0kubun | 2018-08-11 17:34:25 +0900 (Sat, 11 Aug 2018) | 5 lines

mjit.c: exclude mjit_valid_class_serial_p

from mjit.c because it's executed only on MJIT worker thread.

Instead of that, `valid_class_serials` is shared with mjit_ prefix.
------------------------------------------------------------------------
r64287 | k0kubun | 2018-08-11 17:07:13 +0900 (Sat, 11 Aug 2018) | 7 lines

mjit_worker.c: prefix mjit_ to pch_status

which was just forgotten.

mjit.c: ditto

mjit_internal.h: moved some macros only used by mjit_worker.c to it.
------------------------------------------------------------------------
r64286 | svn | 2018-08-11 16:57:59 +0900 (Sat, 11 Aug 2018) | 1 line

* properties.
------------------------------------------------------------------------
r64285 | k0kubun | 2018-08-11 16:57:58 +0900 (Sat, 11 Aug 2018) | 11 lines

mjit_worker.c: carve out worker-related code

The motivation of this change is to make sure rb_funcall or GC-related
functions are not called on worker-related code. Currently such
functions are used in some places and I believe it's partly because it's
hard to identify which part is called on MJIT worker thread.

Now, mjit.c is safe to use them but we know we need to safely deal with
mjit_compile.c, mjit_worker.c and mjit_internal.h.

mjit_compile.c: update the comment about it
------------------------------------------------------------------------
r64284 | k0kubun | 2018-08-11 14:37:17 +0900 (Sat, 11 Aug 2018) | 3 lines

_mjit_compile_pc_and_sp.erb: update the comment

about the pc motion reason
------------------------------------------------------------------------
r64283 | k0kubun | 2018-08-11 14:33:15 +0900 (Sat, 11 Aug 2018) | 15 lines

_mjit_compile_pc_and_sp.erb: always move pc

to fix the wrong line number on #caller_locations or rb_profile_frames.

Actually we would be able to move it only when method call (of
caller_locations) or C extension invocation (calling rb_profile_frames)
can happen.

This degrades performance. Optcarrot fps becomes...
before: 71.78976052783555
after: 67.65429356624131

I think I can lazily move it and fix the performance issue, even
improving the performance for the situation catch table exists.
But let me fix this bug first...
------------------------------------------------------------------------
r64282 | k0kubun | 2018-08-11 13:22:14 +0900 (Sat, 11 Aug 2018) | 4 lines

tool/downloader.rb: retry on 502 and 503 error

rubyci was failed by download 503
https://rubyci.org/logs/rubyci.s3.amazonaws.com/scw-9d6766/ruby-trunk/log/20180811T021706Z.fail.html.gz
------------------------------------------------------------------------
r64281 | k0kubun | 2018-08-11 12:50:42 +0900 (Sat, 11 Aug 2018) | 5 lines

vm_args.c: stop requiring `calling` in vm_caller_setup_arg_block

_mjit_compile_send.erb: simplify code using the change

insns.def: adapt to the interface change
------------------------------------------------------------------------
r64280 | k0kubun | 2018-08-11 12:38:38 +0900 (Sat, 11 Aug 2018) | 8 lines

_mjit_compile_send.erb: refactor to share vm_call_iseq_setup_normal

implementation. This had no major performance impact by effort to keep
them inlined.

vm_insnhelper.c: ditto

mjit_compile.c: just update the comment about opt_pc=0 assumption
------------------------------------------------------------------------
r64279 | svn | 2018-08-11 08:32:33 +0900 (Sat, 11 Aug 2018) | 1 line

* 2018-08-11
------------------------------------------------------------------------
r64278 | k0kubun | 2018-08-11 08:32:32 +0900 (Sat, 11 Aug 2018) | 8 lines

test_iseq_load.rb: increase timeout

It's timed out on CI like this
https://gist.github.com/ko1/33df53d78fbec9e4156c017eeae023bb.

I'm not sure how long it would take (it finishes immediately on my machine),
so I chose 600s because r64271 says it took 635s on mswinci. (probably
it's improved by the commit, though.)
------------------------------------------------------------------------
r64277 | naruse | 2018-08-11 06:31:25 +0900 (Sat, 11 Aug 2018) | 3 lines

Remove failing specs

https://rubyci.org/logs/rubyci.s3.amazonaws.com/freebsd11zfs/ruby-trunk/log/20180810T183001Z.fail.html.gz
------------------------------------------------------------------------
r64276 | k0kubun | 2018-08-10 21:55:18 +0900 (Fri, 10 Aug 2018) | 1 line

appveyor.yml: don't notify PR failure to Slack
------------------------------------------------------------------------
r64275 | kazu | 2018-08-10 21:36:31 +0900 (Fri, 10 Aug 2018) | 1 line

Fix a typo [ci skip]
------------------------------------------------------------------------
r64274 | kazu | 2018-08-10 21:36:30 +0900 (Fri, 10 Aug 2018) | 1 line

Remove needless comment [ci skip]
------------------------------------------------------------------------
r64273 | nobu | 2018-08-10 21:04:24 +0900 (Fri, 10 Aug 2018) | 6 lines

Pathname: Simplified Pathname#mountpoint?

Removed unnecessary comparison in mountpoint?
[Fix GH-1927]

From: John Whitson <john.whitson@gmail.com>
------------------------------------------------------------------------
r64272 | nobu | 2018-08-10 20:55:19 +0900 (Fri, 10 Aug 2018) | 1 line

fixup r64270
------------------------------------------------------------------------
r64271 | naruse | 2018-08-10 18:22:13 +0900 (Fri, 10 Aug 2018) | 4 lines

Use assert_separately in TestIseqLoad#test_stressful_roundtrip

It takes 635 seconds on mswinci
http://mswinci.japaneast.cloudapp.azure.com/vc12-x64/ruby-trunk/log/20180810T061315Z.log.html.gz
------------------------------------------------------------------------
r64270 | mame | 2018-08-10 17:42:45 +0900 (Fri, 10 Aug 2018) | 13 lines

common.mk: "make check" now runs test-spec

Currently there are many "make" targets for testing: test, test-all,
check, exam, etc.
To make it simple, this change makes "make check" run all tests.
"make exam" is just an alias to "make check".
If a new test suite is added in future, "make check" should include it
(unless it takes too much time...)
[Feature #14187]

Also, this introduces "make test-short" as an alias to "make test".
I believe "make test" should equal to "make check", but there is
objection against this.  So now I commit only things that we agreed.
------------------------------------------------------------------------
r64269 | naruse | 2018-08-10 17:31:17 +0900 (Fri, 10 Aug 2018) | 8 lines

Remove failing spec files

Re-commit after specs are fixed.
http://rubyci.s3.amazonaws.com/freebsd11zfs/ruby-trunk/log/20180810T063001Z.log.html.gz
http://rubyci.s3.amazonaws.com/unstable10x/ruby-trunk/log/20180809T191808Z.log.html.gz
http://rubyci.s3.amazonaws.com/unstable11x/ruby-trunk/log/20180809T192406Z.log.html.gz
http://rubyci.s3.amazonaws.com/unstable10s/ruby-trunk/log/20180809T151911Z.log.html.gz
http://rubyci.s3.amazonaws.com/unstable11s/ruby-trunk/log/20180809T192507Z.log.html.gz
------------------------------------------------------------------------
r64268 | mame | 2018-08-10 16:45:16 +0900 (Fri, 10 Aug 2018) | 12 lines

insns.def (invokesuper): remove a dummy receiever flag hack for ZSUPER

This is just a refactoring.

The receiver of "invokesuper" was a boolean to represent if it is ZSUPER
or not.  This was used in vm_search_super_method to prohibit ZSUPER call
in define_method. (It is currently prohibited because of the limitation
of the implementation.)

This change removes the hack by introducing an explicit flag,
VM_CALL_SUPER, to signal the information.  Now, the implementation of
"invokesuper" is consistent with "send" instruction.
------------------------------------------------------------------------
r64267 | hsbt | 2018-08-10 15:06:32 +0900 (Fri, 10 Aug 2018) | 1 line

Move IPAddr to deafult gems category.
------------------------------------------------------------------------
r64266 | nobu | 2018-08-10 14:20:46 +0900 (Fri, 10 Aug 2018) | 4 lines

version.c: MKSTR for fake.rb

* version.c (Init_ruby_description): fake.rb needs MKSTR to extract
  constant names.
------------------------------------------------------------------------
r64265 | mrkn | 2018-08-10 14:18:03 +0900 (Fri, 10 Aug 2018) | 12 lines

process.c: fix rubyspec of Process.groups

getgroups(2) may return a GID list that includes duplicated GIDs.
The behavior is totaly depends on what OS is used.

This commit fixes the example of Process.groups so that the example
is independent of this OS-dependent features.

Additonaly, this commit adds the description of such system-dependent
characteristics of Process.groups.

[ruby-dev:50603] [Bug #14969]
------------------------------------------------------------------------
r64264 | nobu | 2018-08-10 14:02:35 +0900 (Fri, 10 Aug 2018) | 4 lines

version.c: separate Init_ruby_description

* version.c (Init_ruby_description): separate to initialize
  RUBY_DESCRIPTION constant according to mjit.
------------------------------------------------------------------------
r64263 | nobu | 2018-08-10 13:52:24 +0900 (Fri, 10 Aug 2018) | 1 line

common.mk: merge dependencies to wait miniruby to get built
------------------------------------------------------------------------
r64262 | mrkn | 2018-08-10 13:49:44 +0900 (Fri, 10 Aug 2018) | 4 lines

enumerator.c: fix for non-integral argument for ArithmeticSequence#last

This fixes a bug of Enumerator::ArithmeticSequence#last in the case that
a non-integral argument is passed.
------------------------------------------------------------------------
r64261 | nobu | 2018-08-10 13:33:11 +0900 (Fri, 10 Aug 2018) | 1 line

mjit.c: ruby_version is no longer used since r63279
------------------------------------------------------------------------
r64260 | nobu | 2018-08-10 13:26:54 +0900 (Fri, 10 Aug 2018) | 1 line

.gdbinit: startup without shell for macOS Sierra and later
------------------------------------------------------------------------
r64259 | svn | 2018-08-10 09:53:50 +0900 (Fri, 10 Aug 2018) | 1 line

* 2018-08-10
------------------------------------------------------------------------
r64258 | nobu | 2018-08-10 09:53:49 +0900 (Fri, 10 Aug 2018) | 1 line

another test needs IO.select
------------------------------------------------------------------------
r64257 | nobu | 2018-08-09 22:32:49 +0900 (Thu, 09 Aug 2018) | 6 lines

gmake.mk: fix commit dependency

* defs/gmake.mk (commit): pass CONFIGURE and fix dependency of
  `reconfig` target, not to try to make config.status newer than
  the source directory.  and remove configure_args in common.mk,
  which is a garbage argument.
------------------------------------------------------------------------
r64256 | mrkn | 2018-08-09 22:18:08 +0900 (Thu, 09 Aug 2018) | 5 lines

enumerator.c: undef new and allocate of ArithmeticSequence

Undefine new and allocate methods of Enumerator::ArithmeticSequence.

[ruby-core:82816] [Feature #13904]
------------------------------------------------------------------------
r64255 | naruse | 2018-08-09 21:45:02 +0900 (Thu, 09 Aug 2018) | 1 line

Don't run the spec on Solaris
------------------------------------------------------------------------
r64254 | k0kubun | 2018-08-09 20:39:07 +0900 (Thu, 09 Aug 2018) | 3 lines

process.c: don't wait JIT queue flush on rb_f_exec

This wasn't intended in r64253.
------------------------------------------------------------------------
r64253 | k0kubun | 2018-08-09 20:31:41 +0900 (Thu, 09 Aug 2018) | 9 lines

process.c: fix outdated mjit_pause declaration

by sharing it with vm.c in internal.h.

vm.c: ditto
internal.h: ditto
mjit.h: share more.

mjit.c: make sure the third arguemnt is not used
------------------------------------------------------------------------
r64252 | rhe | 2018-08-09 19:00:19 +0900 (Thu, 09 Aug 2018) | 15 lines

net/http, net/ftp: skip SSL/TLS session resumption tests

Due to a bug in OpenSSL 1.1.0h[1] (it's only in this specific version;
it was introduced just before the release and is already fixed in their
stable branch), the callback set by SSLContext#session_new_cb= does not
get called for clients, making net/http and net/ftp not attempt session
resumption.

Let's disable the affected test cases for now. Another option would be
to fallback to using SSLSocket#session as we did before r64234. But
since only a single version is affected and hopefully a new stable
version containing the fix will be released in near future, I chose not
to add such workaround code to lib/.

[1] https://github.com/openssl/openssl/pull/5967
------------------------------------------------------------------------
r64251 | svn | 2018-08-09 18:58:08 +0900 (Thu, 09 Aug 2018) | 1 line

* properties.
------------------------------------------------------------------------
r64250 | k0kubun | 2018-08-09 18:58:07 +0900 (Thu, 09 Aug 2018) | 11 lines

mjit.c: add :wait option to RubyVM::MJIT.pause

and wait until JIT queue is flushed when wait option is not passed or
`wait: true` is passed.

vm.c: ditto

test/ruby/test_rubyvm_mjit.rb: added test for pause/resume

test/lib/jit_support.rb: allow retrying MJIT on JITSupport level
test/ruby/test_jit.rb: ditto
------------------------------------------------------------------------
r64249 | kazu | 2018-08-09 18:36:03 +0900 (Thu, 09 Aug 2018) | 8 lines

Fix error when Encoding.default_external is Encoding::IBM437

https://ci.appveyor.com/project/ruby/ruby/build/1.0.9151#L4601
```
  1) Error:
TestArgf#test_inplace_nonascii:
Encoding::UndefinedConversionError: U+3042 from UTF-8 to IBM437
```
------------------------------------------------------------------------
r64248 | normal | 2018-08-09 18:02:32 +0900 (Thu, 09 Aug 2018) | 5 lines

test/io/console/test_io_console.rb: fix short read failures

Running with TESTS=--no-retry, I sometimes get short reads
leading to failures due to the use of IO#readpartial instead of
IO#gets.
------------------------------------------------------------------------
r64247 | normal | 2018-08-09 17:51:22 +0900 (Thu, 09 Aug 2018) | 4 lines

test/io/wait/test_io_wait_uncommon.rb (test_tty_wait): increase timeout

Apparently my tty can't keep up when I run test-all with
TESTS='-v --no-retry'
------------------------------------------------------------------------
r64246 | kazu | 2018-08-09 17:49:10 +0900 (Thu, 09 Aug 2018) | 1 line

Skip test_inplace_nonascii if external encoding is us-ascii
------------------------------------------------------------------------
r64245 | kazu | 2018-08-09 17:49:09 +0900 (Thu, 09 Aug 2018) | 4 lines

add 'x' mode character for O_EXCL

[Feature #11258]
Patch by cremno (cremno phobia)
------------------------------------------------------------------------
r64244 | knu | 2018-08-09 17:40:54 +0900 (Thu, 09 Aug 2018) | 3 lines

Include the input in the message when raising InvalidAddressError

[Feature #5987]
------------------------------------------------------------------------
r64243 | nobu | 2018-08-09 17:29:38 +0900 (Thu, 09 Aug 2018) | 4 lines

io.c: fix non-ascii filename inplace edit

* io.c (argf_next_argv): convert filename to the OS encoding to be
  dealt with by system calls.  [ruby-dev:50607] [Bug #14970]
------------------------------------------------------------------------
r64242 | nobu | 2018-08-09 16:04:45 +0900 (Thu, 09 Aug 2018) | 1 line

apply r64239 to macOS too
------------------------------------------------------------------------
r64241 | nobu | 2018-08-09 16:01:09 +0900 (Thu, 09 Aug 2018) | 1 line

apply r64239 to macOS too
------------------------------------------------------------------------
r64240 | naruse | 2018-08-09 14:28:33 +0900 (Thu, 09 Aug 2018) | 1 line

Don't run specs on Solaris
------------------------------------------------------------------------
r64239 | normal | 2018-08-09 12:32:51 +0900 (Thu, 09 Aug 2018) | 18 lines

spec/ruby/library/socket/*: more FreeBSD fixes

FreeBSD portability notes:

Loopback connections are not instantaneous (unlike Linux), so
non-blocking read-after-write MUST check for readability via
IO.select or IO#wait_readable before attempting non-blocking
recv/read operations.

IPv6 seems favored, so we'll get "::" instead of "0.0.0.0"

Some constants are different or obsolete, so that should be
self-explanatory.

There are still other failures I or somebody else needs to get
to when we have time and feel like dealing with spec DSL:

      http://rubyci.s3.amazonaws.com/freebsd11zfs/ruby-trunk/recent.html
------------------------------------------------------------------------
r64238 | normal | 2018-08-09 11:14:27 +0900 (Thu, 09 Aug 2018) | 3 lines

test/lib/leakchecker.rb (find_tempfiles): don't warn for missing files

Quiet a false-positive warning from TestHtgroup#test_htgroup
------------------------------------------------------------------------
r64237 | svn | 2018-08-09 00:36:29 +0900 (Thu, 09 Aug 2018) | 1 line

* 2018-08-09
------------------------------------------------------------------------
r64236 | nobu | 2018-08-09 00:36:28 +0900 (Thu, 09 Aug 2018) | 4 lines

needs openssl/opensslv.h

* ext/openssl/extconf.rb: LIBRESSL_VERSION_NUMBER is defined in
  openssl/opensslv.h.  fix up r64101.
------------------------------------------------------------------------
r64235 | nobu | 2018-08-08 23:34:24 +0900 (Wed, 08 Aug 2018) | 4 lines

fix mjit_min_header for universal binary

* common.mk: rules using MJIT_HEADER_SUFFIX, which to be overriden
  in defs/universal.mk, must be in common.mk, not Makefile.in.
------------------------------------------------------------------------
r64234 | rhe | 2018-08-08 23:13:55 +0900 (Wed, 08 Aug 2018) | 8 lines

net/http, net/ftp: fix session resumption with TLS 1.3

When TLS 1.3 is in use, the session ticket may not have been sent yet
even though a handshake has finished. Also, the ticket could change if
multiple session ticket messages are sent by the server. Use
SSLContext#session_new_cb instead of calling SSLSocket#session
immediately after a handshake. This way also works with earlier protocol
versions.
------------------------------------------------------------------------
r64233 | rhe | 2018-08-08 23:13:53 +0900 (Wed, 08 Aug 2018) | 36 lines

openssl: sync with upstream repository

Sync with the current tip of master branch, 62436385306c of
ruby/openssl.git. Changes can be found at:

	https://github.com/ruby/openssl/compare/v2.1.1...62436385306c

----------------------------------------------------------------
Brian Cunnie (1):
      Correctly verify abbreviated IPv6 SANs

Janko Marohnic (1):
      Reduce memory allocation when writing to SSLSocket

Jeremy Evans (1):
      Move rb_global_variable call to directly after assignment

Kazuki Yamaguchi (7):
      pkcs7: allow recipient's certificate to be omitted for PKCS7#decrypt
      pkey: resume key generation after interrupt
      tool/ruby-openssl-docker: update to latest versions
      test/test_ssl: fix test failure with TLS 1.3
      test/test_x509name: change script encoding to ASCII-8BIT
      x509name: refactor OpenSSL::X509::Name#to_s
      x509name: fix handling of X509_NAME_{oneline,print_ex}() return value

ahadc (1):
      Update CONTRIBUTING.md

nobu (6):
      no ID cache in Init functions
      search winsock libraries explicitly
      openssl: search winsock
      openssl_missing.h: constified
      reduce LibreSSL warnings
      openssl/buffering.rb: no RS when output
------------------------------------------------------------------------
r64232 | naruse | 2018-08-08 22:50:25 +0900 (Wed, 08 Aug 2018) | 6 lines

fix MSG_OOB spec

* OOBINLINE should be set for accepted socket
* When OOBINLINE is set, MSG_OOB shouldn't be passed to recv

Merge spec/ruby's commit 5b418374f8006318434ee9a2366382d004f585df
------------------------------------------------------------------------
r64231 | naruse | 2018-08-08 22:44:25 +0900 (Wed, 08 Aug 2018) | 5 lines

Add colon to avoid chkbuild's alert

https://github.com/ruby/chkbuild/blob/c0448670a9a5cb85f283bc639806ba09b294557f/chkbuild/ruby.rb#L847

Merge ruby/spec's commit 5a6ac7dbef3d59fe279303bf3346d92f1e620f12
------------------------------------------------------------------------
r64230 | akr | 2018-08-08 21:48:58 +0900 (Wed, 08 Aug 2018) | 11 lines

rename several internal macros in time.c

TIME_UTC_P -> TZMODE_UTC_P
TIME_SET_UTC -> TZMODE_SET_UTC
TIME_LOCALTIME_P -> TZMODE_LOCALTIME_P
TIME_SET_LOCALTIME -> TZMODE_SET_LOCALTIME
TIME_FIXOFF_P -> TZMODE_FIXOFF_P
TIME_SET_FIXOFF -> TZMODE_SET_FIXOFF
TIME_COPY_GMT -> TZMODE_COPY


------------------------------------------------------------------------
r64229 | kazu | 2018-08-08 20:50:39 +0900 (Wed, 08 Aug 2018) | 1 line

Update comment of tzmode [ci skip]
------------------------------------------------------------------------
r64228 | akr | 2018-08-08 19:39:31 +0900 (Wed, 08 Aug 2018) | 2 lines

Rename gmt field to tzmode in struct time_object.

------------------------------------------------------------------------
r64227 | akr | 2018-08-08 19:00:43 +0900 (Wed, 08 Aug 2018) | 4 lines

Store String as zone in struct vtm.

This removes zone_table and use fstring instead.

------------------------------------------------------------------------
r64226 | kazu | 2018-08-08 17:00:45 +0900 (Wed, 08 Aug 2018) | 1 line

Some environments do not have IPv6 address of localhost in /etc/hosts
------------------------------------------------------------------------
r64225 | normal | 2018-08-08 16:26:14 +0900 (Wed, 08 Aug 2018) | 4 lines

mjit.c: remove old comment about WNOHANG and SIGCHLD [ci skip]

[Bug #14867] implemented exactly what was needed (for POSIX
platforms, at least).
------------------------------------------------------------------------
r64224 | nobu | 2018-08-08 11:56:04 +0900 (Wed, 08 Aug 2018) | 1 line

skip hanging-up tests on macOS
------------------------------------------------------------------------
r64223 | normal | 2018-08-08 10:16:37 +0900 (Wed, 08 Aug 2018) | 6 lines

spec/ruby/library/socket/*: fix hanging on FreeBSD 11.1

There are still other test failures which need fixing on FreeBSD.
Keep an eye on:

  http://rubyci.s3.amazonaws.com/freebsd11zfs/ruby-trunk/recent.html
------------------------------------------------------------------------
r64222 | k0kubun | 2018-08-08 01:49:34 +0900 (Wed, 08 Aug 2018) | 1 line

appveyor.yml: make sure MJIT is tested on AppVeyor
------------------------------------------------------------------------
r64221 | k0kubun | 2018-08-08 01:27:45 +0900 (Wed, 08 Aug 2018) | 13 lines

mjit.c: initial support for mswin MJIT

By this commit's changes in other files, now MJIT started to work on VC++.
Unfortunately some features are still broken and they'll be fixed later.

This also suppresses cl.exe's default output to stdout because there
seems to be no option to do it. Tweaking some log messages as well.

vm_core.h: declare `__declspec(dllimport)` to export them correctly on mswin.
vm_insnhelper.h: ditto
mjit.h: ditto

test_jit.rb: skipped some pending tests.
------------------------------------------------------------------------
r64220 | svn | 2018-08-08 00:14:49 +0900 (Wed, 08 Aug 2018) | 1 line

* 2018-08-08
------------------------------------------------------------------------
r64219 | k0kubun | 2018-08-08 00:14:48 +0900 (Wed, 08 Aug 2018) | 18 lines

win32/Makefile.sub: escape `=` in MJIT cflags

Since `=` is considered as delimiter in `()` of `for`, having
`-DRUBY_DEVEL=1` in CPPFLAGS had resulted in:

 #define MJIT_OPTFLAGS "-DMJIT_HEADER", \
   "-DRUBY_DEVEL", \
   "1", \

Even escaped `for %I in (... -DRUBY_DEVEL^=1)` does not yield an
expected result. This commit is a workaround for this issue.

After this commit, mjit_config.h will have:

 #define MJIT_OPTFLAGS "-DMJIT_HEADER", \
   "-DRUBY_DEVEL" MJIT_CONFIG_ESCAPED_EQ "1", \

And C macro resolves MJIT_CONFIG_ESCAPED_EQ to "=".
------------------------------------------------------------------------
r64218 | hsbt | 2018-08-07 22:08:53 +0900 (Tue, 07 Aug 2018) | 5 lines

Silence Net::HTTP warning in test.

  https://github.com/ruby/webrick/pull/8

  Co-authored-by: Espartaco Palma <>
------------------------------------------------------------------------
r64217 | svn | 2018-08-07 21:56:49 +0900 (Tue, 07 Aug 2018) | 1 line

* properties.
------------------------------------------------------------------------
r64216 | hsbt | 2018-08-07 21:56:48 +0900 (Tue, 07 Aug 2018) | 7 lines

Add missing test for WEBrick::HTTPAuth::Htgroup.

  [Bug #14866][ruby-core:87602]

  https://github.com/ruby/webrick/pull/10

  Co-authored-by: TSUYUSATO Kitsune <make.just.on@gmail.com>
------------------------------------------------------------------------
r64215 | hsbt | 2018-08-07 21:47:11 +0900 (Tue, 07 Aug 2018) | 3 lines

Support old versions of Ruby with FrozenError.

  They should work separatedly from Ruby core repository.
------------------------------------------------------------------------
r64214 | hsbt | 2018-08-07 21:32:29 +0900 (Tue, 07 Aug 2018) | 1 line

Fallback to load version constant for ruby core repository.
------------------------------------------------------------------------
r64213 | hsbt | 2018-08-07 21:02:10 +0900 (Tue, 07 Aug 2018) | 3 lines

Removed needless date attribute from gemspec of default gems.

  They are assigned automatically when pushing gem file to rubygems.org.
------------------------------------------------------------------------
r64212 | kazu | 2018-08-07 21:00:54 +0900 (Tue, 07 Aug 2018) | 1 line

Remove unnecessary assignment
------------------------------------------------------------------------
r64211 | hsbt | 2018-08-07 20:36:09 +0900 (Tue, 07 Aug 2018) | 1 line

Removed needless file from gemspec.
------------------------------------------------------------------------
r64210 | hsbt | 2018-08-07 20:18:40 +0900 (Tue, 07 Aug 2018) | 5 lines

Add support of Berkeley DB 6.x.

  https://github.com/ruby/dbm/pull/3

  Co-authored-by: Yasuhiro KIMURA <>
------------------------------------------------------------------------
r64209 | hsbt | 2018-08-07 18:52:53 +0900 (Tue, 07 Aug 2018) | 5 lines

Add test for coverage.

  https://github.com/ruby/cmath/pull/2

  Co-authored-by: MATSUBARA Nobutada
------------------------------------------------------------------------
r64208 | svn | 2018-08-07 10:17:40 +0900 (Tue, 07 Aug 2018) | 1 line

* 2018-08-07
------------------------------------------------------------------------
r64207 | k0kubun | 2018-08-07 10:17:39 +0900 (Tue, 07 Aug 2018) | 21 lines

win32/Makefile.sub: remove RUBY_EXPORT macro

defined in XCFLAGS.

This change resolves following link errors in MJIT:

```
rb_mjit_header-2.6.0.obj : error LNK2001: unresolved external symbol rb_cObject
rb_mjit_header-2.6.0.obj : error LNK2001: unresolved external symbol rb_cFalseClass
rb_mjit_header-2.6.0.obj : error LNK2001: unresolved external symbol rb_cFloat
rb_mjit_header-2.6.0.obj : error LNK2001: unresolved external symbol rb_cInteger
rb_mjit_header-2.6.0.obj : error LNK2001: unresolved external symbol rb_cNilClass
rb_mjit_header-2.6.0.obj : error LNK2001: unresolved external symbol rb_cProc
rb_mjit_header-2.6.0.obj : error LNK2001: unresolved external symbol rb_cString
rb_mjit_header-2.6.0.obj : error LNK2001: unresolved external symbol rb_cSymbol
rb_mjit_header-2.6.0.obj : error LNK2001: unresolved external symbol rb_cTrueClass
rb_mjit_header-2.6.0.obj : error LNK2001: unresolved external symbol rb_eArgError
rb_mjit_header-2.6.0.obj : error LNK2001: unresolved external symbol rb_eNoMethodError
rb_mjit_header-2.6.0.obj : error LNK2001: unresolved external symbol rb_eNameError
_ruby_mjit_p41476u0.obj : error LNK2001: unresolved external symbol rb_eFatal
```
------------------------------------------------------------------------
r64206 | svn | 2018-08-06 18:08:30 +0900 (Mon, 06 Aug 2018) | 1 line

* properties.
------------------------------------------------------------------------
r64205 | mrkn | 2018-08-06 18:08:28 +0900 (Mon, 06 Aug 2018) | 16 lines

enumerator.c: Introduce Enumerator::ArithmeticSequence

This commit introduces new core class Enumerator::ArithmeticSequence.
Enumerator::ArithmeticSequence is a subclass of Enumerator, and
represents a number generator of an arithmetic sequence.

After this commit, Numeric#step and Range#step without blocks
returned an ArithmeticSequence object instead of an Enumerator.

This class introduces the following incompatibilities:

- You can create a zero-step ArithmeticSequence,
  and its size is not ArgumentError, but Infinity.
- You can create a negative-step ArithmeticSequence from a range.

[ruby-core:82816] [Feature #13904]
------------------------------------------------------------------------
r64204 | normal | 2018-08-06 17:42:04 +0900 (Mon, 06 Aug 2018) | 4 lines

test/ripper/test_parser_events.rb (test_block_variables): increase RLIMIT_AS

Unfortunately, MJIT goes over the 100M RLIMIT_AS for this test
on x86-64 (Debian 9)
------------------------------------------------------------------------
r64203 | normal | 2018-08-06 14:22:00 +0900 (Mon, 06 Aug 2018) | 87 lines

thread_pthread.c: restore timer-thread for now :<

[ruby-core:88306]

Revert "process.c: ensure th->interrupt lock is held when migrating"

This reverts commit 5ca416bdf6b6785cb20f139c2c514eda005fe42f (r64201)

Revert "process.c (rb_waitpid): reduce sigwait_fd bouncing"

This reverts commit 217bdd776fbeea3bfd0b9324eefbfcec3b1ccb3e (r64200).

Revert "test/ruby/test_thread.rb (test_thread_timer_and_interrupt): add timeouts"

This reverts commit 9f395f11202fc3c7edbd76f5aa6ce1f8a1e752a9 (r64199).

Revert "thread_pthread.c (native_sleep): reduce ppoll sleeps"

This reverts commit b3aa256c4d43d3d7e9975ec18eb127f45f623c9b (r64193).

Revert "thread.c (consume_communication_pipe): do not retry after short read"

This reverts commit 291a82f748de56e65fac10edefc51ec7a54a82d4 (r64185).

Revert "test/ruby/test_io.rb (test_race_gets_and_close): timeout each thread"

This reverts commit 3dbd8d1f66537f968f0461ed8547460b3b1241b3 (r64184).

Revert "thread_pthread.c (gvl_acquire_common): persist timeout across calls"

This reverts commit 8c2ae6e3ed072b06fc3cbc34fa8a14b2acbb49d5 (r64165).

Revert "test/ruby/test_io.rb (test_race_gets_and_close): use SIGABRT on timeout"

This reverts commit 931cda4db8afd6b544a8d85a6815765a9c417213 (r64135).

Revert "thread_pthread.c (gvl_yield): do ubf wakeups when uncontended"

This reverts commit 508f00314f46c08b6e9b0141c01355d24954260c (r64133).

Revert "thread_pthread.h (native_thread_data): split condvars on some platforms"

This reverts commit a038bf238bd9a24bf1e1622f618a27db261fc91b (r64124).

Revert "process.c (waitpid_nogvl): prevent conflicting use of sleep_cond"

This reverts commit 7018acc946882f21d519af7c42ccf84b22a46b27 (r64117).

Revert "thread_pthread.c (rb_sigwait_sleep): th may be 0 from MJIT"

This reverts commit 56491afc7916fb24f5c4dc2c632fb93fa7063992 (r64116).

Revert "thread*.c: waiting on sigwait_fd performs periodic ubf wakeups"

This reverts commit ab47a57a46e70634d049e4da20a5441c7a14cdec (r64115).

Revert "thread_pthread.c (gvl_destroy): make no-op on GVL bits"

This reverts commit 95cae748171f4754b97f4ba54da2ae62a8d484fd (r64114).

Revert "thread_pthread.c (rb_sigwait_sleep): fix uninitialized poll set in UBF case"

This reverts commit 4514362948fdb914c6138b12d961d92e9c0fee6c (r64113).

Revert "thread_pthread.c (rb_sigwait_sleep): re-fix [Bug #5343] harder"

This reverts commit 26b8a70bb309c7a367b9134045508b5b5a580a77 (r64111).

Revert "thread.c: move ppoll wrapper into thread_pthread.c"

This reverts commit 3dc7727d22fecbc355597edda25d2a245bf55ba1 (r64110).

Revert "thread.c: move ppoll wrapper before thread_pthread.c"

This reverts commit 2fa1e2e3c3c5c4b3ce84730dee4bcbe9d81b8e35 (r64109).

Revert "thread_pthread.c (ubf_select): refix [Bug #5343]"

This reverts commit 4c1ab82f0623eca91a95d2a44053be22bbce48ad (r64108).

Revert "thread_win32.c: suppress warnings by -Wsuggest-attribute"

This reverts commit 6a9b63e39075c53870933fbac5c1065f7d22047c (r64159).

Revert "thread_pthread: remove timer-thread by restructuring GVL"

This reverts commit 708bfd21156828526fe72de2cedecfaca6647dc1 (r64107).
------------------------------------------------------------------------
r64202 | hsbt | 2018-08-06 14:01:08 +0900 (Mon, 06 Aug 2018) | 1 line

Ignore native extension of Date library when syncing gemification files.
------------------------------------------------------------------------
r64201 | normal | 2018-08-06 10:06:21 +0900 (Mon, 06 Aug 2018) | 4 lines

process.c: ensure th->interrupt lock is held when migrating

w->cond may be changed without our knowledge in waitpid_nogvl
without th->interrupt_lock
------------------------------------------------------------------------
r64200 | normal | 2018-08-06 06:27:14 +0900 (Mon, 06 Aug 2018) | 5 lines

process.c (rb_waitpid): reduce sigwait_fd bouncing

Once a thread has acquired sigwait_fd, hold onto it until
waitpid is complete.  This prevents unnecessary migration
and atomic operations.
------------------------------------------------------------------------
r64199 | normal | 2018-08-06 05:06:55 +0900 (Mon, 06 Aug 2018) | 9 lines

test/ruby/test_thread.rb (test_thread_timer_and_interrupt): add timeouts

Trying to diagnose CI failures from i686-linux on Debian 7.

This also fixes a potential GC problem with Thread.start or
IO#read potentially closing the write-end of the pipe due
to allocation.

cf. http://www.rubyist.net/~akr/chkbuild/debian/ruby-trunk/log/20180805T080500Z.fail.html.gz
------------------------------------------------------------------------
r64198 | svn | 2018-08-06 05:06:50 +0900 (Mon, 06 Aug 2018) | 1 line

* 2018-08-06
------------------------------------------------------------------------
r64197 | normal | 2018-08-06 05:06:49 +0900 (Mon, 06 Aug 2018) | 10 lines

thread_pthread: stop trying to deal with cancellation

We don't use pthreads cancellation ourselves and it's painful to
use correctly.  Any cancelled threads would break
vm->living_threads, GVL, thread_sync.c, autoload, etc...

So don't bother caring; because we can't stop rogue extensions
from completely breaking the VM in other ways, either.

[ruby-core:88282] [Misc #14962]
------------------------------------------------------------------------
r64196 | k0kubun | 2018-08-05 23:33:40 +0900 (Sun, 05 Aug 2018) | 5 lines

mjit.c: use -Tc flag explicitly

This option makes sure that the argument is C source file.
Probably this is not needed, but since I'm debugging it, I want to
exclude any failure possibility for now.
------------------------------------------------------------------------
r64194 | normal | 2018-08-05 17:56:57 +0900 (Sun, 05 Aug 2018) | 11 lines

test/ruby/test_process.rb (test_wait_and_sigchld): allow extra SIGCHLD

MJIT way generate an extra SIGCHLD, so we'll have to deal with it.

Any realistic Ruby program may hit unexpected SIGCHLD, too,
since any spawned subprocess could have extra grandchildren
which get reaped by the main Ruby process, and SIGCHLD may
be sent spuriously by an external process using kill(2) syscall
(via kill(1) or Process.kill).

cf. http://ci.rvm.jp/results/trunk-mjit@silicon-docker/1194620
------------------------------------------------------------------------
r64193 | normal | 2018-08-05 17:56:52 +0900 (Sun, 05 Aug 2018) | 12 lines

thread_pthread.c (native_sleep): reduce ppoll sleeps

By holding into sigwait_fd until after we acquire GVL, we can
hit the faster native_cond_sleep path instead of ppoll when
another thread wants to start sleeping.  ppoll-ing on sigwait_fd
isn't really useful in program where GVL is contended

This also allows reducing vm->gvl.lock mutex contention on
waitpid sleep migrations.

                         r64170        this patch
vm_thread_condvar1        0.921        1.356
------------------------------------------------------------------------
r64192 | k0kubun | 2018-08-05 14:34:37 +0900 (Sun, 05 Aug 2018) | 9 lines

mjit.c: link precompiled object

This is needed to resolve:
"error LNK2011: precompiled object not linked in; image may not run"

win32/Makefile.sub: Use the same flags as ones for precompiled header.

This is needed to resolve:
"error C2855: command-line option '/Z7' inconsistent with precompiled header"
------------------------------------------------------------------------
r64191 | k0kubun | 2018-08-05 13:48:18 +0900 (Sun, 05 Aug 2018) | 3 lines

mjit.c: reorder functions to reduce #ifdef branches

Just moved make_pch into `#else` of `#ifdef _MSC_VER`.
------------------------------------------------------------------------
r64190 | k0kubun | 2018-08-05 13:37:59 +0900 (Sun, 05 Aug 2018) | 5 lines

mjit.c: include prebuilt precompiled header

on mswin properly.

Deleted code to attempt make_pch for mswin, since it won't be needed.
------------------------------------------------------------------------
r64189 | k0kubun | 2018-08-05 12:12:09 +0900 (Sun, 05 Aug 2018) | 6 lines

mjit.c: initialize prebuilt precompiled header

file name correctly. This allows to use the header installed by r64188.

win32/Makefile.sub: define prebuilt precompiled header path instead of
unused min header path
------------------------------------------------------------------------
r64188 | k0kubun | 2018-08-05 08:53:41 +0900 (Sun, 05 Aug 2018) | 6 lines

win32/Makefile.sub: build precompiled header

See the comment in win32/Makefile.sub.
Not only .pch, but also .obj needs to be installed and used on runtime.

.gitignore: ignore .pch that will be built by this.
------------------------------------------------------------------------
r64187 | normal | 2018-08-05 08:33:38 +0900 (Sun, 05 Aug 2018) | 9 lines

test/ruby/test_io.rb (test_select_leak): speedup and reduce memory use

We can reuse the sub-thread and exception with Thread#raise to
reproduce the old memory leak with less overhead.  This allows
us to to run more iterations and improve reliability of the
actual test, particularly on platforms without USE_THREAD_CACHE.

For glibc and jemalloc, also limit arena count to avoid
inadvertant growth.
------------------------------------------------------------------------
r64186 | normal | 2018-08-05 07:58:08 +0900 (Sun, 05 Aug 2018) | 21 lines

test/ruby/test_thread.rb (test_thread_interrupt_for_killed_thread): conserve resources

Use Thread.pass to let the sub-thread finish.  This should avoid
running out of memory on resource-constrained systems.
(We don't want to use Thread#join to hit the exception)

This results in a significant memory usage reduction in this test:

  make test-all TESTS='../test/ruby/test_thread.rb -v -n test_thread_interrupt_for_killed_thread'

Before:

  3.46user 2.02system 0:05.29elapsed 103%CPU (0avgtext+0avgdata 88672maxresident)k
  0inputs+0outputs (0major+143071minor)pagefaults 0swaps

After:

  3.40user 1.83system 0:05.20elapsed 100%CPU (0avgtext+0avgdata 9368maxresident)k
  0inputs+0outputs (0major+3059minor)pagefaults 0swaps

cf. https://rubyci.org/logs/rubyci.s3.amazonaws.com/scw-9d6766/ruby-trunk/log/20180803T231706Z.fail.html.gz
------------------------------------------------------------------------
r64185 | normal | 2018-08-05 05:38:48 +0900 (Sun, 05 Aug 2018) | 7 lines

thread.c (consume_communication_pipe): do not retry after short read

Saves a syscall and slightly improves vm_thread_condvar1
benchmark slightly (more improvements on the way):

                         r64170        this patch
vm_thread_condvar1        0.917        1.065
------------------------------------------------------------------------
r64184 | normal | 2018-08-05 05:34:19 +0900 (Sun, 05 Aug 2018) | 7 lines

test/ruby/test_io.rb (test_race_gets_and_close): timeout each thread

Still looking into CI failures on P895 (and seemingly no other boxes):

   http://ci.rvm.jp/results/trunk@P895/1190369

:<
------------------------------------------------------------------------
r64183 | svn | 2018-08-05 00:12:31 +0900 (Sun, 05 Aug 2018) | 1 line

* 2018-08-05
------------------------------------------------------------------------
r64182 | k0kubun | 2018-08-05 00:12:30 +0900 (Sun, 05 Aug 2018) | 16 lines

common.mk: stop building MJIT min header for mswin

Since it's impossible to leave macro when preprocessing C source file
with cl.exe, I decided to create precompiled header on Ruby's build time
instead.

We're not doing it for non-mswin environment for 2 reasons:
1) Precompiled header may not be able to be used when CC is upgraded.
2) We need to create as many precompiled headers as the patterns of
   compile options. (Probably only 2, for with and without --jit-debug)

I'll ignore them for mswin for now, and solve it later by including CC
version and --jit-debug information in precompiled header filename.
After that, non-mswin environment may follow it to simplify build system.

Makefile.in: ditto
------------------------------------------------------------------------
r64181 | normal | 2018-08-04 06:53:21 +0900 (Sat, 04 Aug 2018) | 8 lines

spec/ruby/library/socket/socket/getaddrinfo_spec.rb: avoid nonsensical lookup

"http" is a TCP service, so /etc/services on typical GNU/Linux systems
only specify a TCP port for it.  Use "discard" since it seems
used for other specs and is specified as both TCP and UDP.

This caused many CI failures like the following:
  git clone https://gist.github.com/812a9b747e4c4cb2e844d4be7991cd2d
------------------------------------------------------------------------
r64180 | eregon | 2018-08-04 01:19:40 +0900 (Sat, 04 Aug 2018) | 1 line

Update to ruby/spec@9be7c7e
------------------------------------------------------------------------
r64179 | eregon | 2018-08-04 01:19:10 +0900 (Sat, 04 Aug 2018) | 1 line

Update to ruby/mspec@072849e
------------------------------------------------------------------------
r64178 | eregon | 2018-08-04 00:11:49 +0900 (Sat, 04 Aug 2018) | 4 lines

encoding.c (rb_enc_get_index): return -1 for non-encoding capable objects

* Clarify logic and add spec.
* Now passes test-all with the JSON fix.
------------------------------------------------------------------------
r64177 | eregon | 2018-08-04 00:11:36 +0900 (Sat, 04 Aug 2018) | 3 lines

ext/json/parser/parser.c: do not call rb_str_resize() on Time object

* See https://github.com/flori/json/issues/342
------------------------------------------------------------------------
r64176 | svn | 2018-08-04 00:11:23 +0900 (Sat, 04 Aug 2018) | 1 line

* 2018-08-04
------------------------------------------------------------------------
r64175 | eregon | 2018-08-04 00:11:22 +0900 (Sat, 04 Aug 2018) | 1 line

Fix missed update of parser source in r62429
------------------------------------------------------------------------
r64174 | eregon | 2018-08-03 23:31:39 +0900 (Fri, 03 Aug 2018) | 4 lines

Revert "encoding.c (rb_enc_get_index): return -1 for non-encoding capable objects"

* This reverts commit fb253d2032e51f333e6577aa4fcf0c03f9c6fc02.
* The CI is failing, this seems a bug in the JSON C extension.
------------------------------------------------------------------------
r64173 | eregon | 2018-08-03 22:52:26 +0900 (Fri, 03 Aug 2018) | 3 lines

encoding.c (rb_enc_get_index): return -1 for non-encoding capable objects

* Clarify logic and add spec.
------------------------------------------------------------------------
r64172 | eregon | 2018-08-03 22:52:13 +0900 (Fri, 03 Aug 2018) | 3 lines

encoding.c (enc_set_index): raise instead of rb_bug() for non-encoding capable objects

* Add spec.
------------------------------------------------------------------------
r64171 | nobu | 2018-08-03 20:13:15 +0900 (Fri, 03 Aug 2018) | 1 line

random.c: fix fallback value
------------------------------------------------------------------------
r64170 | nobu | 2018-08-03 16:24:33 +0900 (Fri, 03 Aug 2018) | 1 line

random.c: use rb_check_funcall
------------------------------------------------------------------------
r64169 | nobu | 2018-08-03 16:17:20 +0900 (Fri, 03 Aug 2018) | 4 lines

random.c: moved domain error

* random.c (rand_range): moved call of domain_error(), not to
  raise an exception in range_values().
------------------------------------------------------------------------
r64168 | nobu | 2018-08-03 15:53:14 +0900 (Fri, 03 Aug 2018) | 4 lines

ast.c: allocator of Node

* ast.c (Init_ast): undefine allocator of Node, as a method call
  on an uninitialized Node causes segfault.
------------------------------------------------------------------------
r64167 | nobu | 2018-08-03 15:31:22 +0900 (Fri, 03 Aug 2018) | 4 lines

random.c: endless range random

* random.c (range_values): cannot determine the domain of an endless
  range.  [ruby-core:88261] [Bug #14958]
------------------------------------------------------------------------
r64166 | mame | 2018-08-03 14:11:20 +0900 (Fri, 03 Aug 2018) | 3 lines

thread_pthread.c: add a macro guard for PTHREAD_CANCEL_ENABLE

It seems to be unavailable on some platforms including my Android phone.
------------------------------------------------------------------------
r64165 | normal | 2018-08-03 06:13:50 +0900 (Fri, 03 Aug 2018) | 9 lines

thread_pthread.c (gvl_acquire_common): persist timeout across calls

Reuse old expiration time if the previous native_cond_timedwait
did not return ETIMEDOUT.  This should improve timeslice
accuracy for Timeout.timeout rubyspec without causing excessive
wakeups on uncontended GVL acquisition.

cf. http://ci.rvm.jp/results/trunk-gc-asserts@silicon-docker/1180486
    http://ci.rvm.jp/results/trunk-gc-asserts@silicon-docker/1184623
------------------------------------------------------------------------
r64164 | svn | 2018-08-03 00:35:06 +0900 (Fri, 03 Aug 2018) | 1 line

* 2018-08-03
------------------------------------------------------------------------
r64163 | k0kubun | 2018-08-03 00:35:05 +0900 (Fri, 03 Aug 2018) | 4 lines

test_jit.rb: split the test concern

Actually unload_units is working on MinGW, but putiseq is behaving
badly.
------------------------------------------------------------------------
r64162 | k0kubun | 2018-08-02 23:40:36 +0900 (Thu, 02 Aug 2018) | 4 lines

mjit.c: skip compaction on MinGW

because linking multiple .o files is problematic without having `static`
to the same function definitions.
------------------------------------------------------------------------
r64161 | k0kubun | 2018-08-02 22:41:27 +0900 (Thu, 02 Aug 2018) | 9 lines

mjit.c: don't apply workaround if --enable-load-relative

is specified.

This is needed for MinGW because MJIT_BUILD_DIR doesn't prefix path
like "C:\msys64", so it can't be read without msys2's conversion.

The workaround is not needed for Windows (LOAD_RELATIVE looks defined by
default) anyway. So removed it for such environment.
------------------------------------------------------------------------
r64160 | k0kubun | 2018-08-02 22:03:34 +0900 (Thu, 02 Aug 2018) | 9 lines

mjit.c: suppress warnings by -Wunused-value

on MinGW with __atomic_exchange_n(). It returns the previous pointer value but
obviously it's not needed in MJIT's usage.

mjit.c: In function 'compact_all_jit_code':
ruby_atomic.h:11:36: warning: value computed is not used [-Wunused-value]
 # define ATOMIC_EXCHANGE(var, val) __atomic_exchange_n(&(var), (val), __ATOMIC_SEQ_CST)
                                    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
------------------------------------------------------------------------
r64159 | k0kubun | 2018-08-02 20:39:11 +0900 (Thu, 02 Aug 2018) | 1 line

thread_win32.c: suppress warnings by -Wsuggest-attribute
------------------------------------------------------------------------
r64158 | svn | 2018-08-02 15:09:39 +0900 (Thu, 02 Aug 2018) | 1 line

* 2018-08-02
------------------------------------------------------------------------
r64157 | normal | 2018-08-02 15:09:38 +0900 (Thu, 02 Aug 2018) | 7 lines

test/socket/test_socket.rb (test_timestampns): retry send

It looks like we need to retry test_timestampns in addition
to test_timestamp; so share some code while we're at it.

cf. http://ci.rvm.jp/results/trunk-test@frontier/1153126
[ruby-core:88104] [Bug #14898]
------------------------------------------------------------------------
r64156 | shyouhei | 2018-08-01 12:40:37 +0900 (Wed, 01 Aug 2018) | 4 lines

move atomic logic from mjit.c from ruby_atomic.h

This macro shall be shared among other files, not just for mjit.c.

------------------------------------------------------------------------
r64155 | shyouhei | 2018-08-01 11:55:11 +0900 (Wed, 01 Aug 2018) | 2 lines

(cosmetic) add blank lines for better readability

------------------------------------------------------------------------
r64154 | nobu | 2018-08-01 02:11:00 +0900 (Wed, 01 Aug 2018) | 5 lines

[DOC] Added CI build status for Japanese docs

[Fix GH-1923]

From: Andrea Gomez <crypto.andrea@protonmail.ch>
------------------------------------------------------------------------
r64153 | kazu | 2018-08-01 00:20:55 +0900 (Wed, 01 Aug 2018) | 3 lines

Add same comment to thwait.gemspec like other gemspec at r64145

[ci skip]
------------------------------------------------------------------------
r64152 | kazu | 2018-08-01 00:20:54 +0900 (Wed, 01 Aug 2018) | 1 line

Add PRINTF_ARGS to kprintf
------------------------------------------------------------------------
r64151 | svn | 2018-08-01 00:02:32 +0900 (Wed, 01 Aug 2018) | 1 line

* 2018-08-01
------------------------------------------------------------------------
r64150 | nobu | 2018-08-01 00:02:31 +0900 (Wed, 01 Aug 2018) | 1 line

Makefile.in: remove GNU-make dependency
------------------------------------------------------------------------
r64145 | hsbt | 2018-07-31 21:56:17 +0900 (Tue, 31 Jul 2018) | 1 line

Try to load version file of github repository at first.
------------------------------------------------------------------------
r64144 | k0kubun | 2018-07-31 21:55:28 +0900 (Tue, 31 Jul 2018) | 3 lines

transform_mjit_header.rb: more strict FUNC_HEADER_REGEXP

to reduce "SKIPPED" logs on MJIT header build.
------------------------------------------------------------------------
r64143 | k0kubun | 2018-07-31 21:43:06 +0900 (Tue, 31 Jul 2018) | 13 lines

mjit.c: allow using MJIT header in build directory

when $MJIT_SEARCH_BUILD_DIR is set.

If prefix path is owned by root, `make install` needs to be run by root.
But in general we don't want to run `make test-all`, and also running
`make test-all` currently fails due to permission tests of rdoc and rubygems.
Thus, prior to this commit, specifying a prefix like "/usr/local" could
mean there was no way to pass test-all.

So we should not depend on `make install` for `make test-all`. Thus I
reverted r64104 and r64103, and applied this workaround to pass `make
test-all` without `make install`.
------------------------------------------------------------------------
r64142 | hsbt | 2018-07-31 21:25:24 +0900 (Tue, 31 Jul 2018) | 1 line

Follow up r64141 with sync tool.
------------------------------------------------------------------------
r64141 | hsbt | 2018-07-31 21:12:33 +0900 (Tue, 31 Jul 2018) | 1 line

Fixed inconsistency gemspec location.
------------------------------------------------------------------------
r64140 | hsbt | 2018-07-31 21:05:24 +0900 (Tue, 31 Jul 2018) | 1 line

Fixed unexpected direction deletion with irb sync.
------------------------------------------------------------------------
r64139 | hsbt | 2018-07-31 20:48:09 +0900 (Tue, 31 Jul 2018) | 1 line

Support Sync module same as other default gems.
------------------------------------------------------------------------
r64138 | k0kubun | 2018-07-31 20:18:59 +0900 (Tue, 31 Jul 2018) | 13 lines

transform_mjit_header.rb: accept having attribute

between a type of return value and function identifier. Like:

```
rb_control_frame_t *
__attribute__ ((__fastcall__)) rb_vm_opt_struct_aref(rb_execution_context_t *ec, rb_control_frame_t *reg_cfp)
{
    ...
}
```

[Bug #14949]
------------------------------------------------------------------------
r64137 | hsbt | 2018-07-31 12:49:38 +0900 (Tue, 31 Jul 2018) | 6 lines

Move obsoleted test/thread/test_*.rb with the current implementation.

  * test/ruby/test_thread_{cv,queue}.rb: Move under the test/ruby directory.
    and rename TestThread* from Test*.
  * test/test_sync.rb: Move toplevel of test diretory because sync is still
    standard library.
------------------------------------------------------------------------
r64136 | hsbt | 2018-07-31 10:35:16 +0900 (Tue, 31 Jul 2018) | 1 line

Fixed inconsistency file structure for gemspec.
------------------------------------------------------------------------
r64135 | normal | 2018-07-31 10:33:39 +0900 (Tue, 31 Jul 2018) | 5 lines

test/ruby/test_io.rb (test_race_gets_and_close): use SIGABRT on timeout

I can't reproduce the test failure and I'm still not sure what's
wrong, but maybe we can get a core dump from P895:
http://ci.rvm.jp/results/trunk@P895/1174672
------------------------------------------------------------------------
r64134 | normal | 2018-07-31 06:48:32 +0900 (Tue, 31 Jul 2018) | 6 lines

thread_pthread.c (unregister_ubf_list): assert unblock.func is unset

We must not allow reentry into ubf_list_head once we delete
ourselves, otherwise we could hang in there forever.

[ruby-core:88218] [Bug #14945]
------------------------------------------------------------------------
r64133 | normal | 2018-07-31 03:53:46 +0900 (Tue, 31 Jul 2018) | 8 lines

thread_pthread.c (gvl_yield): do ubf wakeups when uncontended

Not having contention for GVL could mean everybody else is stuck
in blocking region without GVL, so we kick the ubf list in that
case.

I expect this to fix test_thread_fd_close timeout:
http://ci.rvm.jp/results/trunk-test@ruby-sky3/1173398
------------------------------------------------------------------------
r64132 | svn | 2018-07-31 00:21:02 +0900 (Tue, 31 Jul 2018) | 1 line

* 2018-07-31
------------------------------------------------------------------------
r64131 | nobu | 2018-07-31 00:21:01 +0900 (Tue, 31 Jul 2018) | 4 lines

thread_pthread.c: revert r64123

* thread_pthread.c (USE_NATIVE_SLEEP_COND): revised wrongly removed
  line with the ifndef guard.
------------------------------------------------------------------------
r64124 | normal | 2018-07-30 18:54:41 +0900 (Mon, 30 Jul 2018) | 7 lines

thread_pthread.h (native_thread_data): split condvars on some platforms

Maybe some platforms have strange condition variable implementations
which have a "memory" of which mutexes they're associated with.

In any case, it makes documentation easier even on GNU/Linux and
FreeBSD.
------------------------------------------------------------------------
r64123 | nobu | 2018-07-30 17:45:19 +0900 (Mon, 30 Jul 2018) | 1 line

thread_pthread.c: remove duplicate define
------------------------------------------------------------------------
r64122 | shyouhei | 2018-07-30 17:22:50 +0900 (Mon, 30 Jul 2018) | 2 lines

fix typo(#2), sorry!

------------------------------------------------------------------------
r64121 | shyouhei | 2018-07-30 17:21:01 +0900 (Mon, 30 Jul 2018) | 2 lines

fix typo; sorry!

------------------------------------------------------------------------
r64120 | normal | 2018-07-30 17:05:22 +0900 (Mon, 30 Jul 2018) | 4 lines

bootstraptest/runner.rb: speed up assert_finish with IO.select (take #2)

Resurrect r63754 in a 1.8-compatible way.  While we're at it,
add a note to maintain 1.8 compatibility (cf. r63757).
------------------------------------------------------------------------
r64119 | shyouhei | 2018-07-30 16:53:24 +0900 (Mon, 30 Jul 2018) | 5 lines

move #pragma out of functions

gcc (GCC) 4.4.7 20120313 (Red Hat 4.4.7-18) reportedly fails to compile
cf: https://rubyci.org/logs/rubyci.s3.amazonaws.com/centos6/ruby-trunk/log/20180726T093003Z.fail.html.gz

------------------------------------------------------------------------
r64118 | shyouhei | 2018-07-30 16:07:48 +0900 (Mon, 30 Jul 2018) | 8 lines

reduce copy & paste

We see several occurrence of "diagnostic push/pop" so why not
make them macros.  Tested on GCC8 / Clang 6.

Note that ruby.h is intentionally left untouched because we don't
want to introduce new public macros.

------------------------------------------------------------------------
r64117 | normal | 2018-07-30 15:35:08 +0900 (Mon, 30 Jul 2018) | 7 lines

process.c (waitpid_nogvl): prevent conflicting use of sleep_cond

We reuse sleep_cond for waitpid notifications as well as GVL
waiting.  So we must take care to not hold onto sleep_cond
when we try to reacquire GVL.

[ruby-core:88183]
------------------------------------------------------------------------
r64116 | normal | 2018-07-30 15:02:22 +0900 (Mon, 30 Jul 2018) | 1 line

thread_pthread.c (rb_sigwait_sleep): th may be 0 from MJIT
------------------------------------------------------------------------
r64115 | normal | 2018-07-30 14:51:06 +0900 (Mon, 30 Jul 2018) | 6 lines

thread*.c: waiting on sigwait_fd performs periodic ubf wakeups

We need to be able to perform periodic ubf_list wakeups when a
thread is sleeping and waiting on signals.

[ruby-core:88088] [Misc #14937] [Bug #5343]
------------------------------------------------------------------------
r64114 | normal | 2018-07-30 14:51:01 +0900 (Mon, 30 Jul 2018) | 5 lines

thread_pthread.c (gvl_destroy): make no-op on GVL bits

It's possible for another thread to take vm->gvl.lock
during gvl_release at the end of thread_start_func_2
during VM shutdown, at least.
------------------------------------------------------------------------
r64113 | normal | 2018-07-30 13:28:28 +0900 (Mon, 30 Jul 2018) | 3 lines

thread_pthread.c (rb_sigwait_sleep): fix uninitialized poll set in UBF case

[ruby-core:88088] [Misc #14937] [Bug #5343]
------------------------------------------------------------------------
r64112 | shyouhei | 2018-07-30 12:23:32 +0900 (Mon, 30 Jul 2018) | 2 lines

non-constant aggregate initializer is a C99ism

------------------------------------------------------------------------
r64111 | normal | 2018-07-30 11:28:00 +0900 (Mon, 30 Jul 2018) | 7 lines

thread_pthread.c (rb_sigwait_sleep): re-fix [Bug #5343] harder

We can't always designate a timer thread, so any sleepers must
also perform ubf wakeups.  Note: a similar change needs to be
made for rb_thread_fd_select and rb_wait_for_single_fd.

[ruby-core:88088] [Misc #14937] [Bug #5343]
------------------------------------------------------------------------
r64110 | normal | 2018-07-30 09:31:08 +0900 (Mon, 30 Jul 2018) | 9 lines

thread.c: move ppoll wrapper into thread_pthread.c

thread_pthread.c relies on ppoll for rb_sigwait_sleep, so ensure
the compatibility wrapper is available for it.

[Bug #14950]

Reported-by: SHIBATA Hiroshi <hsbt@ruby-lang.org>
Reported-by: Greg L <Greg.mpls@gmail.com>
------------------------------------------------------------------------
r64109 | normal | 2018-07-30 07:54:44 +0900 (Mon, 30 Jul 2018) | 6 lines

thread.c: move ppoll wrapper before thread_pthread.c

thread_pthread.c relies on ppoll for rb_sigwait_sleep, so ensure
the compatibility wrapper is available for it.

Reported-by: SHIBATA Hiroshi <hsbt@ruby-lang.org>
------------------------------------------------------------------------
r64108 | normal | 2018-07-30 07:19:15 +0900 (Mon, 30 Jul 2018) | 12 lines

thread_pthread.c (ubf_select): refix [Bug #5343]

We still need to to designate a timer thread after registering target
thread for the ubf list.

Oops :x

Note: I was never able to reproduce
test/thread/test_queue.rb::test_thr_kill failures on my on
Debian machines.

[ruby-core:88088] [Misc #14937] [Bug #5343]
------------------------------------------------------------------------
r64107 | normal | 2018-07-30 05:47:33 +0900 (Mon, 30 Jul 2018) | 57 lines

thread_pthread: remove timer-thread by restructuring GVL

To reduce resource use and reduce CI failure; remove
timer-thread.  Single-threaded Ruby processes (including forked
children) will never see extra thread overhead.  This prevents
glibc and jemalloc from going into multi-threaded mode and
initializing locks or causing fragmentation via arena explosion.

The GVL is implements its own wait-queue as a ccan/list to
permit controlling wakeup order.  Timeslice under contention is
handled by a designated timer thread (similar to choosing a
"patrol_thread" for current deadlock checking).

There is only one self-pipe, now, as wakeups for timeslice are
done independently using condition variables.  This reduces FD
pressure slightly.

Signal handling is handled directly by a Ruby Thread (instead
of timer-thread) by exposing signal self-pipe to callers of
rb_thread_fd_select, native_sleep, rb_wait_for_single_fd, etc...
Acquiring, using, and releasing the self-pipe is exposed via 4
new internal functions:

1) rb_sigwait_fd_get - exclusively acquire timer_thread_pipe.normal[0]

2) rb_sigwait_fd_sleep - sleep and wait for signal (and no other FDs)

3) rb_sigwait_fd_put - release acquired result from rb_sigwait_fd_get

4) rb_sigwait_fd_migrate - migrate signal handling to another thread
                           after calling rb_sigwait_fd_put.

rb_sigwait_fd_migrate is necessary for waitpid callers because
only one thread can wait on self-pipe at a time, otherwise a
deadlock will occur if threads fight over the self-pipe.

TRAP_INTERRUPT_MASK is now set for the main thread directly in
signal handler via rb_thread_wakeup_timer_thread.

Originally, I wanted to use POSIX timers
(timer_create/timer_settime) for this.  Unfortunately, this
proved unfeasible as Mutex#sleep resumes on spurious wakeups and
test/thread/test_cv.rb::test_condvar_timed_wait failed.  Using
pthread_sigmask to mask out SIGVTALRM fixed that test,  but
test/fiddle/test_function.rb::test_nogvl_poll proved there'd be
some unavoidable (and frequent) incompatibilities from that
approach.

Finally, this allows us to drop thread_destruct_lock and
interrupt current ec directly.

We don't need to rely on vm->thread_destruct_lock or a coherent
vm->running_thread on any platform.  Separate timer-thread for
time slice and signal handling is relegated to thread_win32.c,
now.

[ruby-core:88088] [Misc #14937]
------------------------------------------------------------------------
r64106 | svn | 2018-07-30 05:28:57 +0900 (Mon, 30 Jul 2018) | 1 line

* 2018-07-30
------------------------------------------------------------------------
r64105 | normal | 2018-07-30 05:28:56 +0900 (Mon, 30 Jul 2018) | 5 lines

test/ruby/test_process.rb (test_wait_and_sigchld): improve reliability

This should fix CI failure under MJIT, 100ms wait may not be
enough for signal handler to fire:
http://ci.rvm.jp/results/trunk-mjit@silicon-docker/1169472
------------------------------------------------------------------------
r64104 | nobu | 2018-07-29 20:00:02 +0900 (Sun, 29 Jul 2018) | 1 line

common.mk: install for test-all iff load-relative is disabled
------------------------------------------------------------------------
r64103 | k0kubun | 2018-07-29 19:31:57 +0900 (Sun, 29 Jul 2018) | 1 line

common.mk: test-all requires install for now
------------------------------------------------------------------------
r64102 | normal | 2018-07-29 19:15:11 +0900 (Sun, 29 Jul 2018) | 6 lines

thread_pthread.c: clear altstacks in thread cache at GVL destruction

Otherwise, an altstack may live past ObjectSpace destruction
and xfree-ing the altstack will segfault.

[ruby-core:85621] [Feature #14487]
------------------------------------------------------------------------
r64101 | nobu | 2018-07-29 17:13:05 +0900 (Sun, 29 Jul 2018) | 6 lines

reduce LibreSSL warnings

* ext/openssl/extconf.rb: LibreSSL headers emit "overriding WinCrypt
  defines" warnings if wincrypt.h has been included (except for
  x509.h) on Windows.  get rid of including the header by defining
  NOCRYPT macro.
------------------------------------------------------------------------
r64100 | k0kubun | 2018-07-29 17:04:45 +0900 (Sun, 29 Jul 2018) | 6 lines

mjit.c: keep unit->o_file on --jit-save-temps

to use compaction with --jit-save-temps.

Prior to this commit, JIT compaction didn't work with --jit-save-temps
but it wasn't intentional.
------------------------------------------------------------------------
r64099 | k0kubun | 2018-07-29 12:22:07 +0900 (Sun, 29 Jul 2018) | 4 lines

test_jit.rb: skip known test failure on MinGW

for the ease of MSP-Greg's CI. I'll track this failure as Bug#14948 and
fix it later.
------------------------------------------------------------------------
r64098 | k0kubun | 2018-07-29 11:36:35 +0900 (Sun, 29 Jul 2018) | 3 lines

test_jit.rb: use the appropiate name

for better C-level backtrace
------------------------------------------------------------------------
r64097 | k0kubun | 2018-07-29 11:05:08 +0900 (Sun, 29 Jul 2018) | 4 lines

mjit.c: disable compaction on empty queue w/ --jit-wait

When --jit-wait is specified, `unit_queue.length` is always 0 and it's
not a good metric.
------------------------------------------------------------------------
r64096 | nobu | 2018-07-29 10:32:37 +0900 (Sun, 29 Jul 2018) | 13 lines

repack structs

Repack rb_thread_struct, rb_execution_context_struct, args_info and
iseq_compile_data to save 1 word per struct.

re_pattern_buffer remains unpacked due to the possible binary
compatibility.

[Fix GH-1907]

Based on the patch

From: Lourens Naude <lourens@bearmetal.eu>
------------------------------------------------------------------------
r64095 | nobu | 2018-07-29 09:09:08 +0900 (Sun, 29 Jul 2018) | 4 lines

mkexports.rb: flip-flop

* win32/mkexports.rb (Exports::Mswin#each_export): get rid of
  flip-flop warning.  [ruby-core:88147] [Bug #14946]
------------------------------------------------------------------------
r64094 | k0kubun | 2018-07-29 01:14:56 +0900 (Sun, 29 Jul 2018) | 100 lines

mjit.c: introduce JIT compaction [experimental]

When all compilation finishes or the number of JIT-ed code reaches
--jit-max-cache, this compacts all generated code to a single .so file
and re-loads all methods from it.

In the future, it may trigger compaction more frequently and/or limit
the maximum times of compaction to prevent unlimited memory usage.
So the current behavior is experimental, but at least the performance
improvement in this commit won't be removed.

=== Benchmark ===
In this benchmark, I'll compare following four conditions:

* trunk: r64082
* trunk JIT: r64082 w/ --jit
* single-so JIT: This commit w/ --jit
* objfcn JIT: This branch https://github.com/k0kubun/ruby/tree/objfcn w/ --jit,
  which is shinh's objfcn https://github.com/shinh/ruby/tree/objfcn rebased from this commit

```
$ uname -a
Linux bionic 4.15.0-29-generic #31-Ubuntu SMP Tue Jul 17 15:39:52 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux
```

* Micro benchmark
Using this script https://gist.github.com/k0kubun/10e6d3387c9ab1b134622b2c9d76ef51,
calls some amount of different methods that just return `nil`. The following tables
are its average duration seconds of 3 measurements.

Smaller is better.

** 1 method (seconds)
|       | trunk             | trunk JIT         | single-so JIT     | objfcn JIT        |
|:------|:------------------|:------------------|:------------------|:------------------|
| Time  | 5.576067774333296 | 5.915551971666446 | 5.833641665666619 | 5.845915191666639 |
| Ratio | 1.00x             | 1.06x             | 1.05x             | 1.05x             |

** 50 methods (seconds)
|       | trunk             | trunk JIT         | single-so JIT     | objfcn JIT        |
|:------|:------------------|:------------------|:------------------|:------------------|
| Time  | 3.1661167996666677| 6.125825928333342 | 4.135432743666665 | 3.750358728333348 |
| Ratio | 1.00x             | 1.93x             | 1.31x             | 1.18x             |

** 1500 methods (seconds)
|       | trunk             | trunk JIT         | single-so JIT     | objfcn JIT        |
|:------|:------------------|:------------------|:------------------|:------------------|
| Time  | 5.971650823666664 | 19.579182102999994| 10.511108153999961| 10.854653588999932|
| Ratio | 1.00x             | 3.28x             | 1.76x             | 1.82x             |

* Discourse
Using the same benchmark strategy as https://bugs.ruby-lang.org/issues/14490 with
this branch https://github.com/k0kubun/discourse/commits/benchmark2 forked from discourse
v1.8.11 to support running trunk.

1. Run ruby script/bench.rb to warm up profiling database
2. Run RUBYOPT='--jit-verbose=1 --jit-max-cache=10000' RAILS_ENV=profile bin/puma -e production
3. WAIT 5-15 or so minutes for all jitting to stop so we have no cross talk
4. Run ab -n 100 http://localhost:9292/
5. Wait for all new jitting to finish
6. Run ab -n 100 http://localhost:9292/

** Response time (ms)
Here is the response time milliseconds for each percentile.
Skipping 99%ile because it's the same as 100%ile in 100 calls.

|     | trunk| trunk|single|objfcn|
|     |      |   JIT|so JIT|   JIT|
|:----|:-----|:-----|:-----|:-----|
| 50% |   38 |   45 |   41 |   43 |
| 66% |   39 |   50 |   44 |   44 |
| 75% |   47 |   51 |   46 |   45 |
| 80% |   49 |   52 |   47 |   47 |
| 90% |   50 |   63 |   50 |   52 |
| 95% |   60 |   79 |   52 |   55 |
| 98% |   91 |  114 |   91 |   91 |
|100% |   97 |  133 |   96 |   99 |

** Ratio (smaller is better)
Here is the response time increase ratio against no-JIT trunk's one.

|     | trunk| trunk|single|objfcn|
|     |      |   JIT|so JIT|   JIT|
|:----|:-----|:-----|:-----|:-----|
| 50% | 1.00x| 1.18x| 1.08x| 1.13x|
| 66% | 1.00x| 1.28x| 1.13x| 1.13x|
| 75% | 1.00x| 1.09x| 0.98x| 0.96x|
| 80% | 1.00x| 1.06x| 0.96x| 0.96x|
| 90% | 1.00x| 1.26x| 1.00x| 1.04x|
| 95% | 1.00x| 1.32x| 0.87x| 0.92x|
| 98% | 1.00x| 1.25x| 1.00x| 1.00x|
|100% | 1.00x| 1.37x| 0.99x| 1.02x|

While 50 and 60 %ile are still worse than no-JIT trunk, 75, 80, 90, 95,
98 and 100% are not slower than that.

So now it's a little harder to say "MJIT slows down Rails applications".
Probably I can close [Bug #14490] now. Let's start improving it.

Close https://github.com/ruby/ruby/pull/1921
------------------------------------------------------------------------
r64093 | svn | 2018-07-29 00:29:15 +0900 (Sun, 29 Jul 2018) | 1 line

* 2018-07-29
------------------------------------------------------------------------
r64092 | nobu | 2018-07-29 00:29:14 +0900 (Sun, 29 Jul 2018) | 5 lines

win32.c: limit write size on console

* win32/win32.c (constat_parse): split long buffer and limit write
  size on a console, as well as rb_w32_write.
  [ruby-dev:50597] [Bug #14942]
------------------------------------------------------------------------
r64091 | nobu | 2018-07-28 22:06:43 +0900 (Sat, 28 Jul 2018) | 4 lines

test_function.rb: fix messages

* test/fiddle/test_function.rb (test_nogvl_poll): fix messages as
  failed conditions, with errno description.
------------------------------------------------------------------------
r64090 | nobu | 2018-07-28 21:47:36 +0900 (Sat, 28 Jul 2018) | 1 line

make-snapshot: fetch from the official git site
------------------------------------------------------------------------
r64089 | kazu | 2018-07-28 19:00:29 +0900 (Sat, 28 Jul 2018) | 1 line

Fix filename in comment [ci skip]
------------------------------------------------------------------------
r64088 | kazu | 2018-07-28 19:00:27 +0900 (Sat, 28 Jul 2018) | 3 lines

use https:// instead of http://

[ci skip]
------------------------------------------------------------------------
r64087 | duerst | 2018-07-28 18:44:33 +0900 (Sat, 28 Jul 2018) | 16 lines

fix range check for Hangul jamo trailers in Unicode normalization

* lib/unicode_normalize/normalize.rb: Fix the range check for trailing
  Hangul jamo characters in Unicode normalization. Different from
  leading or vowel jamos, where LBASE and VBASE are actual characters,
  a value equal to TBASE expresses the absence of a trailing jamo.
  This fix is technically correct, but there was no bug because
  the regular expressions in lib/unicode_normalize/tables.rb
  eliminate jamos equal to TBASE from normalization processing.

* test/test_unicode_normalize.rb: Add preventive test
  test_no_trailing_jamo based on
  https://github.com/python/cpython/commit/d134809cd3764c6a634eab7bb8995e3e2eff14d5
  just for the case we ever get a regression.

This closes issue #14934, thanks to MaLin (Lin Ma) for reporting.
------------------------------------------------------------------------
r64086 | duerst | 2018-07-28 18:11:13 +0900 (Sat, 28 Jul 2018) | 6 lines

always run unicode normalization that do not depend on data file

* test/test_unicode_normalize.rb: extract tests that do not depend
  on NormalizationTest.txt data file from conditionally constructed
  part of TestUnicodeNormalize class, to always run them even if
  the data file isn't found.
------------------------------------------------------------------------
r64085 | duerst | 2018-07-28 17:56:59 +0900 (Sat, 28 Jul 2018) | 4 lines

update unicode data files directory for normalization tests

* test/test_unicode_normalize.rb: search ucd directory
  first if it exists. This change follows r61415.
------------------------------------------------------------------------
r64084 | normal | 2018-07-28 12:34:30 +0900 (Sat, 28 Jul 2018) | 3 lines

use https:// instead of git:// when possible

Avoid MitM when downloading from insecure networks.
------------------------------------------------------------------------
r64083 | normal | 2018-07-28 12:10:10 +0900 (Sat, 28 Jul 2018) | 13 lines

thread.c (blocking_region_end): clear ubf before unregister_ubf_list

If we keep ubf set after unregistering, there is a window for
other threads (including timer thread) to put this thread back
on the ubf_list right away.  Entering ubf_list unexpectedly
after GVL acquisition may cause spurious wakeup and trigger
unexpected behavior.

Finally, clear ubf before acquiring GVL, to since ubf is useless
during GVL acquisition anyways and we don't want to waste cycles
in other threads calling ubf for useless work.

[ruby-core:88141] [Bug #14945]
------------------------------------------------------------------------
r64082 | k0kubun | 2018-07-28 07:27:04 +0900 (Sat, 28 Jul 2018) | 1 line

mjit.c: clean up unit link from iseq
------------------------------------------------------------------------
r64081 | tenderlove | 2018-07-28 02:28:41 +0900 (Sat, 28 Jul 2018) | 9 lines

Include Hash#size in the examples

Both methods Hash#length and Hash#size share the same source code in
Ruby, but they also share the same documentation. Now when you look at
the documentation of Hash#size you only see examples for Hash#length,
which is confusing. This commit includes Hash#size in the examples and
also remarks that both methods are equivalent to each other.

Co-authored-by: Alberto Almagro <alberto.almagro@rakuten.com>
------------------------------------------------------------------------
r64080 | svn | 2018-07-28 02:19:44 +0900 (Sat, 28 Jul 2018) | 1 line

* 2018-07-28
------------------------------------------------------------------------
r64079 | tenderlove | 2018-07-28 02:19:43 +0900 (Sat, 28 Jul 2018) | 3 lines

Escape debug output in InvalidURIError exceptions.

Co-authored-by: Brad Landers <brad@bradlanders.com>
------------------------------------------------------------------------
r64078 | mame | 2018-07-27 22:57:14 +0900 (Fri, 27 Jul 2018) | 7 lines

eval.c: rename "rb_frozen_class_p" to "rb_class_modify_check"

Just refactoring.  Despite its name, the function does NOT return a
boolean but raises an exception when the class given is frozen.
I don't think the new name "rb_class_modify_check" is the best, but
it follows the precedeint "rb_ary_modify_check", and is definitely
better than "*_p".
------------------------------------------------------------------------
r64077 | k0kubun | 2018-07-27 18:27:58 +0900 (Fri, 27 Jul 2018) | 7 lines

mjit.c: keep all .o files

and lazily delete them on termination.

This will be needed to create a large so file later.
The large number of .o files will be probably compacted before the large so
file is created.
------------------------------------------------------------------------
r64076 | k0kubun | 2018-07-27 17:51:56 +0900 (Fri, 27 Jul 2018) | 10 lines

mjit.c: use NOT_COMPILED_JIT_ISEQ_FUNC for unloaded

units, renaming it from NOT_COMPILABLE_JIT_ISEQ_FUNC.

NOT_READY_JIT_ISEQ_FUNC is for ones being compiled, so
mjit_get_iseq_func treats it specially and it shouldn't be used for the
purpose.

I renamed it instead of adding a new one because I'm not sure about the
impact for the performance by increasing the switch branches in mjit_exec.
------------------------------------------------------------------------
r64075 | k0kubun | 2018-07-27 17:24:10 +0900 (Fri, 27 Jul 2018) | 3 lines

mjit.c: release memory for unloaded unit

`xfree(unit)` was missing.
------------------------------------------------------------------------
r64074 | mame | 2018-07-27 15:28:14 +0900 (Fri, 27 Jul 2018) | 1 line

insns.def: remove old wrong explanation for get/setconstant
------------------------------------------------------------------------
r64073 | k0kubun | 2018-07-27 15:01:46 +0900 (Fri, 27 Jul 2018) | 3 lines

mjit.c: clarify the intention of setting 0

which was originally NULL before r62221
------------------------------------------------------------------------
r64072 | k0kubun | 2018-07-27 14:52:01 +0900 (Fri, 27 Jul 2018) | 1 line

test_jit.rb: test unload_units
------------------------------------------------------------------------
r64071 | nobu | 2018-07-27 14:42:56 +0900 (Fri, 27 Jul 2018) | 4 lines

ruby.c: taint ARGV on Windows

* ruby.c (external_str_new_cstr): strings come from the external
  should be tainted.  [ruby-dev:50596] [Bug #14941]
------------------------------------------------------------------------
r64070 | svn | 2018-07-27 03:46:11 +0900 (Fri, 27 Jul 2018) | 1 line

* 2018-07-27
------------------------------------------------------------------------
r64069 | marcandre | 2018-07-27 03:46:10 +0900 (Fri, 27 Jul 2018) | 6 lines

lib/ostruct: Remove unnecessary `__send__`

Patch by yuuji.yaginuma [Fix GH-1890]

Since `remove_method` is public.
Ref: https://bugs.ruby-lang.org/issues/14133
------------------------------------------------------------------------
r64068 | k0kubun | 2018-07-26 22:05:47 +0900 (Thu, 26 Jul 2018) | 1 line

mjit.c: o -> so is not compilation
------------------------------------------------------------------------
r64067 | nobu | 2018-07-26 21:48:02 +0900 (Thu, 26 Jul 2018) | 7 lines

dir.c: fix glob with base when no DT_UNKNOWN

* dir.c (do_stat, do_lstat, do_opendir): need the length of the base
  path for fstatat() when fd is valid.

* dir.c (glob_helper): fix for platforms where DT_UNKNOWN is not
  available, e.g. Solaris.
------------------------------------------------------------------------
r64066 | kazu | 2018-07-26 21:47:01 +0900 (Thu, 26 Jul 2018) | 1 line

Add missing escape
------------------------------------------------------------------------
r64065 | nobu | 2018-07-26 21:04:32 +0900 (Thu, 26 Jul 2018) | 4 lines

process.c: conditionally used functions

* process.c (before_fork_ruby, after_fork_ruby): used only if fork()
  or daemon() is available.
------------------------------------------------------------------------
r64064 | nobu | 2018-07-26 18:34:30 +0900 (Thu, 26 Jul 2018) | 1 line

dladdr() is declared with non-const pointer on Solaris
------------------------------------------------------------------------
r64063 | nobu | 2018-07-26 18:32:42 +0900 (Thu, 26 Jul 2018) | 1 line

fork() is deprecated on Solaris
------------------------------------------------------------------------
r64062 | normal | 2018-07-26 17:30:10 +0900 (Thu, 26 Jul 2018) | 18 lines

cont.c (ec_switch): prevent delayed/missed trap interrupt race

timer-thread may set trap interrupt with rb_threadptr_check_signal
at any time independent of GVL.  This means timer-thread may set
the trap interrupt flag on the previous execution context; causing
the flag to be unnoticed until a future ec switch (or lost
completely if the ec is done).

Note: I avoid relying on th->interrupt_lock here and use
atomics because we won't be able to rely on it for proposed lazy
timer-thread [Misc #14937].

This regression affects Ruby 2.5 as it was introduced by moving
interrupt_flag to `ec' which is an unstable pointer.  Ruby <= 2.4
was unaffected because vm->main_thread->interrupt_flag never
changed.

[ruby-core:88119] [Bug #14939]
------------------------------------------------------------------------
r64061 | nobu | 2018-07-26 16:23:14 +0900 (Thu, 26 Jul 2018) | 1 line

ignore built files
------------------------------------------------------------------------
r64060 | normal | 2018-07-26 12:21:52 +0900 (Thu, 26 Jul 2018) | 34 lines

webrick: Support bcrypt password hashing

This adds a password_hash keyword argument to
WEBrick::HTTPAuth::Htpasswd#initialize.  If set to :bcrypt, it
will create bcrypt hashes instead of crypt hashes, and will
raise an exception if the .htpasswd file uses crypt hashes.

If :bcrypt is used, then instead of calling
BasicAuth.make_passwd (which uses crypt),
WEBrick::HTTPAuth::Htpasswd#set_passwd will set the bcrypt
password directly.  It isn't possible to change the
make_passwd API to accept the password hash format, as that
would break configurations who use Htpasswd#auth_type= to set
a custom auth_type.

This modifies WEBrick::HTTPAuth::BasicAuth to handle checking
both crypt and bcrypt hashes.

There are commented out requires for 'string/crypt', to handle
when String#crypt is deprecated and the undeprecated version is
moved to a gem.

There is also a commented out warning for the case when
the password_hash keyword is not specified and 'string/crypt'
cannot be required.  I think the warning makes sense to nudge
users to using bcrypt.

I've updated the tests to test nil, :crypt, and :bcrypt values
for the password_hash keyword, skipping the bcrypt tests if the
bcrypt library cannot be required.

[ruby-core:88111] [Feature #14940]

From: Jeremy Evans <code@jeremyevans.net>
------------------------------------------------------------------------
r64059 | normal | 2018-07-26 07:32:54 +0900 (Thu, 26 Jul 2018) | 3 lines

test/ruby/test_io.rb (test_select_leak): skip with MJIT

We need better ways to test for leaks :<
------------------------------------------------------------------------
r64058 | tenderlove | 2018-07-26 03:09:02 +0900 (Thu, 26 Jul 2018) | 68 lines

[Doc] Recover example about Queue

`trunk@42862` dropped example's last line.

https://github.com/ruby/ruby/commit/e334bb2ce5d8876b020ab681f21595e2e1c9d601#diff-8783a9b452e430bcf0d7b0c6e34f1db0L144
https://github.com/ruby/ruby/commit/e334bb2ce5d8876b020ab681f21595e2e1c9d601#diff-38e7b9d781319cfbc49445f8f6625b8aR195

This brings no output.

```queue_example1.rb
queue = Queue.new

producer = Thread.new do
  5.times do |i|
    sleep rand(i) # simulate expense
    queue << i
    puts "#{i} produced"
  end
end

consumer = Thread.new do
  5.times do |i|
    value = queue.pop
    sleep rand(i/2) # simulate expense
    puts "consumed #{value}"
  end
end
```

```queue_example2.rb
queue = Queue.new

producer = Thread.new do
  5.times do |i|
    sleep rand(i) # simulate expense
    queue << i
    puts "#{i} produced"
  end
end

consumer = Thread.new do
  5.times do |i|
    value = queue.pop
    sleep rand(i/2) # simulate expense
    puts "consumed #{value}"
  end
end

consumer.join
```

$ ruby queue_example1.rb
$

$ ruby queue_example2.rb
0 produced
1 produced
consumed 0
consumed 1
2 produced
consumed 2
3 produced
consumed 3
4 produced
consumed 4
$

Co-Authored-By: Sanemat <o.gata.ken@gmail.com>
------------------------------------------------------------------------
r64057 | tenderlove | 2018-07-26 03:06:29 +0900 (Thu, 26 Jul 2018) | 5 lines

Remove obsolete comment from Module#define_method documentation

Since 2.5, Module#define_method is public. (feature #14133)

Co-Authored-By: Miguel Landaeta <miguel@miguel.cc>
------------------------------------------------------------------------
r64056 | tenderlove | 2018-07-26 03:04:16 +0900 (Thu, 26 Jul 2018) | 3 lines

Fixes the File::CREAT logger documentation

Co-Authored-By: Matias Korhonen <matias@kiskolabs.com>
------------------------------------------------------------------------
r64055 | svn | 2018-07-26 03:00:12 +0900 (Thu, 26 Jul 2018) | 1 line

* 2018-07-26
------------------------------------------------------------------------
r64054 | tenderlove | 2018-07-26 03:00:09 +0900 (Thu, 26 Jul 2018) | 3 lines

Add docs to RubyVM::AST

Co-Authored-By: Robert Mosolgo <rdmosolgo@gmail.com>
------------------------------------------------------------------------
r64053 | k0kubun | 2018-07-25 23:55:43 +0900 (Wed, 25 Jul 2018) | 8 lines

insns.def: s/handles_frame/handles_sp/

because it's more suitable to describe the current behavior now.

tool/ruby_vm/models/bare_instructions.rb: ditto.
tool/ruby_vm/views/_insn_entry.erb: ditto.
tool/ruby_vm/views/_mjit_compile_insn_body.erb: ditto.
tool/ruby_vm/views/_mjit_compile_pc_and_sp.erb: ditto.
------------------------------------------------------------------------
r64052 | k0kubun | 2018-07-25 23:36:08 +0900 (Wed, 25 Jul 2018) | 56 lines

mjit.c: split build stages for unix

I'm going to build a large .so file that combines multiple .o files.
For that change, I want to confirm the impact to performance by this
change. So far, I haven't seen the significant change on the max
performance.

* before
$ for i in 1 2 3 4 5 6 7 8 9 1 2; do ruby --jit ../../mame/optcarrot/bin/optcarrot --benchmark ../../mame/optcarrot/examples/Lan_Master.nes; done
fps: 67.66058054621772
checksum: 59662
fps: 67.53138656233348
checksum: 59662
fps: 67.44109425628592
checksum: 59662
fps: 70.29423063961576
checksum: 59662
fps: 72.0147653358158
checksum: 59662
fps: 69.40157398157892
checksum: 59662
fps: 72.3984212467565
checksum: 59662
fps: 67.15473484463604
checksum: 59662
fps: 70.14142014098444
checksum: 59662
fps: 72.51761974327023
checksum: 59662
fps: 72.41086970333218
checksum: 59662

* after
$ for i in 1 2 3 4 5 6 7 8 9 1 2; do ruby --jit ../../mame/optcarrot/bin/optcarrot --benchmark ../../mame/optcarrot/examples/Lan_Master.nes; done
fps: 69.53134628999938
checksum: 59662
fps: 66.13157649232654
checksum: 59662
fps: 70.17474368971281
checksum: 59662
fps: 61.88316323809907
checksum: 59662
fps: 72.48731307319704
checksum: 59662
fps: 65.1180687907147
checksum: 59662
fps: 68.89553415996615
checksum: 59662
fps: 65.77342314036225
checksum: 59662
fps: 64.33337015048106
checksum: 59662
fps: 64.98152672793444
checksum: 59662
fps: 72.225729092625
checksum: 59662
------------------------------------------------------------------------
r64051 | k0kubun | 2018-07-25 22:54:00 +0900 (Wed, 25 Jul 2018) | 8 lines

mjit.c: completely separate compile_c_to_so

by whether on mswin or not.

This is needed because I'm going to renew the compilation process for
unix, keeping mswin builds as it is, at first.

This commit is not changing the behavior at all.
------------------------------------------------------------------------
r64050 | k0kubun | 2018-07-25 21:33:38 +0900 (Wed, 25 Jul 2018) | 1 line

mjit.c: prevent memory leak on realloc failure
------------------------------------------------------------------------
r64049 | hsbt | 2018-07-25 21:31:58 +0900 (Wed, 25 Jul 2018) | 1 line

Update latest default gems on maintainers.rdoc and standard_library.rdoc.
------------------------------------------------------------------------
r64048 | hsbt | 2018-07-25 21:28:17 +0900 (Wed, 25 Jul 2018) | 5 lines

Promote Mutex_m to Default gems.

  * lib/mutex_m.gemspec: Added initial gemspec.
  * lib/mutex_m.rb: Added Mutex_m::VERSION for gemspec.
  * tool/sync_default_gems.rb: Support Mutex_m.
------------------------------------------------------------------------
r64047 | svn | 2018-07-25 21:26:42 +0900 (Wed, 25 Jul 2018) | 1 line

* properties.
------------------------------------------------------------------------
r64046 | hsbt | 2018-07-25 21:26:41 +0900 (Wed, 25 Jul 2018) | 5 lines

Promote Exception2MessageMapper to Default gems.

  * lib/e2mmap.gemspec: Added initial gemspec.
  * lib/e2mmap/version.rb: Added Exception2MessageMapper::VERSION for gemspec.
  * tool/sync_default_gems.rb: Support Exception2MessageMapper.
------------------------------------------------------------------------
r64045 | svn | 2018-07-25 21:15:46 +0900 (Wed, 25 Jul 2018) | 1 line

* properties.
------------------------------------------------------------------------
r64044 | hsbt | 2018-07-25 21:15:45 +0900 (Wed, 25 Jul 2018) | 5 lines

Promote ThWait to Default gems.

  * lib/thwait.gemspec: Added initial gemspec.
  * lib/thwait/version.rb: Added ThWait::VERSION for gemspec.
  * tool/sync_default_gems.rb: Support ThWait.
------------------------------------------------------------------------
r64043 | hsbt | 2018-07-25 20:59:21 +0900 (Wed, 25 Jul 2018) | 1 line

Removed duplicate task in default gems that used single test file
------------------------------------------------------------------------
r64042 | hsbt | 2018-07-25 20:53:57 +0900 (Wed, 25 Jul 2018) | 5 lines

Promote Forwardable to default gems.

  * lib/forwardable.rb: Added Forwardable::VERSION and re-use it.
  * lib/forwardable/forwardable.gemspec: Added initial gemspec.
  * tool/sync_default_gems.rb: Support forwaradable repository.
------------------------------------------------------------------------
r64041 | hsbt | 2018-07-25 20:51:43 +0900 (Wed, 25 Jul 2018) | 1 line

Removed duplicate task in default gems
------------------------------------------------------------------------
r64040 | hsbt | 2018-07-25 20:47:04 +0900 (Wed, 25 Jul 2018) | 1 line

Support logger.gemspec
------------------------------------------------------------------------
r64039 | hsbt | 2018-07-25 20:34:35 +0900 (Wed, 25 Jul 2018) | 4 lines

Update latest versions of bundled gems.

  * net-telnet-0.2.0
  * power_assert-1.1.3
------------------------------------------------------------------------
r64038 | naruse | 2018-07-25 05:24:27 +0900 (Wed, 25 Jul 2018) | 4 lines

Revert "dir.c: fix glob with base when no DT_UNKNOWN"

This reverts commit r63982.
It breaks build on Solaris 11.
------------------------------------------------------------------------
r64037 | k0kubun | 2018-07-25 00:40:05 +0900 (Wed, 25 Jul 2018) | 10 lines

mjit.c: handle memory allocation failure

which was missing in r64033.

Prior to r64033, memory allocation failure had been checked by
TRY_WITH_GC and handled by rb_memerror. But calling rb_memerror on MJIT
worker is problematic since it does EC_JUMP_TAG in the end. Threads
except Ruby's main thread must not use it.

mjit_compile.c: ditto
------------------------------------------------------------------------
r64036 | svn | 2018-07-25 00:17:09 +0900 (Wed, 25 Jul 2018) | 1 line

* 2018-07-25
------------------------------------------------------------------------
r64035 | k0kubun | 2018-07-25 00:17:08 +0900 (Wed, 25 Jul 2018) | 10 lines

vm.c: simplify the implementation of r64031

because such inconsistency may result in the regression fixed in r64034.

vm_exec is not touched since renaming it may be controversial...

vm_args.c: ditto.
vm_eval.c: ditto.
vm_insnhelper.c: ditto.
vm_method.c: ditto.
------------------------------------------------------------------------
r64034 | k0kubun | 2018-07-24 23:43:40 +0900 (Tue, 24 Jul 2018) | 3 lines

transform_mjit_header.rb: fix performance regression

on r64031. Compiling vm_search_method_slowpath is very slow.
------------------------------------------------------------------------
r64033 | k0kubun | 2018-07-24 23:36:10 +0900 (Tue, 24 Jul 2018) | 7 lines

mjit.c: prevent GC on MJIT worker

mjit_compile.c: ditto.

REALLOC_N, ALLOC_N and xmalloc trigger GC but it's not expected.
Other allocation calls in mjit.c are executed on Ruby's main thread and
thus fine.
------------------------------------------------------------------------
r64032 | k0kubun | 2018-07-24 21:19:47 +0900 (Tue, 24 Jul 2018) | 5 lines

test_jit.rb: give up debugging cc1 issue

in a short term, and add retries to prevent random CI failures by it.

I remember this and will address it later for sure.
------------------------------------------------------------------------
r64031 | nobu | 2018-07-24 21:12:59 +0900 (Tue, 24 Jul 2018) | 1 line

prefix symbols exported for mjit
------------------------------------------------------------------------
r64030 | k0kubun | 2018-07-24 20:54:15 +0900 (Tue, 24 Jul 2018) | 1 line

test_jit.rb: suppress unused variable warning
------------------------------------------------------------------------
r64029 | kazu | 2018-07-24 18:15:58 +0900 (Tue, 24 Jul 2018) | 11 lines

Try to suppress warning on some CI

http://ci.rvm.jp/results/trunk-asserts-nopara@silicon-docker/1149270
```
/home/ko1/ruby/src/trunk-asserts-nopara/process.c: In function 'assert_close_on_exec':
/home/ko1/ruby/src/trunk-asserts-nopara/process.c:298:9: warning: ignoring return value of 'write', declared with attribute warn_unused_result [-Wunused-result]
         (void)write(2, m, sizeof(m) - 1);
         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
```

workaround from https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66425#c34
------------------------------------------------------------------------
r64028 | nobu | 2018-07-24 16:47:01 +0900 (Tue, 24 Jul 2018) | 4 lines

time.rb: yday support

* lib/time.rb (Time.make_time): added yday support.
  [ruby-core:87545] [Bug #14860]
------------------------------------------------------------------------
r64027 | nobu | 2018-07-24 15:03:02 +0900 (Tue, 24 Jul 2018) | 1 line

dsymutil needs the object files
------------------------------------------------------------------------
r64026 | svn | 2018-07-24 14:38:09 +0900 (Tue, 24 Jul 2018) | 1 line

* 2018-07-24
------------------------------------------------------------------------
r64025 | nobu | 2018-07-24 14:38:07 +0900 (Tue, 24 Jul 2018) | 4 lines

UNREACHABLE_RETURN

* include/ruby/ruby.h (UNREACHABLE_RETURN): UNREACHABLE at the end
  of non-void functions.
------------------------------------------------------------------------
r64024 | svn | 2018-07-23 18:56:50 +0900 (Mon, 23 Jul 2018) | 1 line

* properties.
------------------------------------------------------------------------
r64023 | kazu | 2018-07-23 18:56:49 +0900 (Mon, 23 Jul 2018) | 1 line

Revert previous commit and split lib/tracer/version.rb
------------------------------------------------------------------------
r64022 | kazu | 2018-07-23 18:49:46 +0900 (Mon, 23 Jul 2018) | 1 line

Revert partially to avoid test error temporarily
------------------------------------------------------------------------
r64021 | kazu | 2018-07-23 18:49:45 +0900 (Mon, 23 Jul 2018) | 1 line

Fix a typo [ci skip]
------------------------------------------------------------------------
r64020 | usa | 2018-07-23 15:22:25 +0900 (Mon, 23 Jul 2018) | 2 lines

60 sec is not enough at all

------------------------------------------------------------------------
r64019 | ko1 | 2018-07-23 15:08:02 +0900 (Mon, 23 Jul 2018) | 4 lines

increase timeout seconds.
* test/ruby/test_io.rb (test_select_leak): increase timeout seconds
  to pass this test on a high-load machine.

------------------------------------------------------------------------
r64018 | normal | 2018-07-23 10:07:41 +0900 (Mon, 23 Jul 2018) | 6 lines

Revert "thread.c (rb_thread_fd_select): remove unnecessary rb_fd_resize calls"

This reverts commit r64017
(git commit 2ff85621690f4f5b0dff9226ac68418a950a6919).

Nevermind, haven't had enough coffee, yet :x
------------------------------------------------------------------------
r64017 | normal | 2018-07-23 09:51:51 +0900 (Mon, 23 Jul 2018) | 5 lines

thread.c (rb_thread_fd_select): remove unnecessary rb_fd_resize calls

There's no need to resize each rb_fdset_t to match the size of
the biggest one.  This can allow some small memory savings if
watching several sets of FDs simultaneously.
------------------------------------------------------------------------
r64016 | svn | 2018-07-23 01:03:59 +0900 (Mon, 23 Jul 2018) | 1 line

* 2018-07-23
------------------------------------------------------------------------
r64015 | nobu | 2018-07-23 01:03:58 +0900 (Mon, 23 Jul 2018) | 5 lines

object.c: prefer base optarg

* object.c (rb_f_integer): prefer `base` optional argument over
  keyword arguments.  this issue should be resolved more generally
  by separating keyword arguments from hashes in the future.
------------------------------------------------------------------------
r64014 | nobu | 2018-07-22 19:47:33 +0900 (Sun, 22 Jul 2018) | 6 lines

fix sum on infinity

* array.c (rb_ary_sum): consider non-finite floats.
  [ruby-core:88024] [Bug #14926]

* enum.c (sum_iter): ditto.
------------------------------------------------------------------------
r64013 | kazu | 2018-07-22 19:02:54 +0900 (Sun, 22 Jul 2018) | 7 lines

Remove needless `nacl` check

`nacl` support already removed by https://github.com/ruby/ruby/pull/1726.

[Fix GH-1920]

From: yuuji.yaginuma <yuuji.yaginuma@gmail.com>
------------------------------------------------------------------------
r64012 | svn | 2018-07-22 11:53:39 +0900 (Sun, 22 Jul 2018) | 1 line

* 2018-07-22
------------------------------------------------------------------------
r64011 | k0kubun | 2018-07-22 11:53:38 +0900 (Sun, 22 Jul 2018) | 13 lines

test_rubyoptions.rb: allow passing test_verbose

with --jit.

`./ruby --jit -Itest/lib test/ruby/test_rubyoptions.rb -n "TestRubyOptions#test_verbose"`
has failed without -DMJIT_FORCE_ENABLE like:

  1) Failure:
TestRubyOptions#test_verbose [/home/travis/build/k0kubun/mjit-test/test/ruby/test_rubyoptions.rb:118]:
<"ruby 2.6.0dev (2018-07-21 trunk 64010) +JIT [x86_64-linux]"> expected but was
<"ruby 2.6.0dev (2018-07-21 trunk 64010) [x86_64-linux]">.

but the test should pass even without -DMJIT_FORCE_ENABLE.
------------------------------------------------------------------------
r64010 | svn | 2018-07-21 22:07:52 +0900 (Sat, 21 Jul 2018) | 1 line

* properties.
------------------------------------------------------------------------
r64009 | svn | 2018-07-21 22:07:52 +0900 (Sat, 21 Jul 2018) | 1 line

* append newline at EOF.
------------------------------------------------------------------------
r64008 | mame | 2018-07-21 22:07:50 +0900 (Sat, 21 Jul 2018) | 4 lines

sample/trick2018/: adds the top-five entries of TRICK 2018

See https://github.com/tric/trick2018 for TRICK 2018.
Fixes #14930.
------------------------------------------------------------------------
r64007 | normal | 2018-07-21 12:26:38 +0900 (Sat, 21 Jul 2018) | 11 lines

thread.c (do_select): fix leak on exception

When do_select is interrupted and raise happens from
RUBY_VM_CHECK_INTS_BLOCKING, the original FD sets we copied
do not get freed, leading to a memory leak.  Wrap up all the
FD sets into a Ruby object to ensure the GC can release an
allocations made for rb_fdset_t.

This leak existed since Ruby 2.0.0 (r36430)

[Bug #14929]
------------------------------------------------------------------------
r64006 | svn | 2018-07-21 07:30:40 +0900 (Sat, 21 Jul 2018) | 1 line

* 2018-07-21
------------------------------------------------------------------------
r64005 | normal | 2018-07-21 07:30:39 +0900 (Sat, 21 Jul 2018) | 6 lines

test/-ext-/gvl/test_last_thread.rb: skip under MJIT

Spurious wakeup is unavoidable with MJIT; and any real
code must be able to deal with spurious wakeup anyways.

[ruby-core:87882] https://bugs.ruby-lang.org/issues/14901
------------------------------------------------------------------------
r64004 | hsbt | 2018-07-20 11:24:59 +0900 (Fri, 20 Jul 2018) | 7 lines

Promote Shell library to default gems.

  * doc/*: Move entry to default gems category from standard library.
  * lib/shell/*: Added `Shell::VERSION` and re-used it with @RELEASE_VERSION.
  * test/shell/test_command_processor.rb: added missing require for test library.
  * tool/sync_default_gems.rb: Support shell library. We need to ignore shellwords.rb when
    syncing shell* files.
------------------------------------------------------------------------
r64003 | hsbt | 2018-07-20 10:48:11 +0900 (Fri, 20 Jul 2018) | 1 line

Fixed wrong library patFixed wrong library pathh
------------------------------------------------------------------------
r64002 | kazu | 2018-07-20 10:40:36 +0900 (Fri, 20 Jul 2018) | 1 line

Do not use `git ls-files` for file listing.
------------------------------------------------------------------------
r64001 | svn | 2018-07-20 10:26:00 +0900 (Fri, 20 Jul 2018) | 1 line

* 2018-07-20
------------------------------------------------------------------------
r64000 | hsbt | 2018-07-20 10:25:59 +0900 (Fri, 20 Jul 2018) | 1 line

Promote Tracer to default gems.
------------------------------------------------------------------------
r63999 | k0kubun | 2018-07-19 22:25:22 +0900 (Thu, 19 Jul 2018) | 38 lines

mjit_compile.c: reduce sp motion on JIT

This retries r62655, which was reverted at r63863 for r63763.

tool/ruby_vm/views/_mjit_compile_insn.erb: revert the revert.
tool/ruby_vm/views/_mjit_compile_insn_body.erb: ditto.
tool/ruby_vm/views/_mjit_compile_pc_and_sp.erb: ditto.
tool/ruby_vm/views/_mjit_compile_send.erb: ditto.
tool/ruby_vm/views/mjit_compile.inc.erb: ditto.

tool/ruby_vm/views/_insn_entry.erb: revert half of r63763. The commit
  was originally reverted since changing pc motion was bad for tracing,
  but changing sp motion was totally fine. For JIT, I wanna resurrect
  the sp motion change in r62051.
tool/ruby_vm/models/bare_instructions.rb: ditto.
insns.def: ditto.
vm_insnhelper.c: ditto.
vm_insnhelper.h: ditto.

* benchmark

$ benchmark-driver benchmark.yml --rbenv 'before;after;before --jit;after --jit' --repeat-count 12 -v
before: ruby 2.6.0dev (2018-07-19 trunk 63998) [x86_64-linux]
after: ruby 2.6.0dev (2018-07-19 add-sp 63998) [x86_64-linux]
last_commit=mjit_compile.c: reduce sp motion on JIT
before --jit: ruby 2.6.0dev (2018-07-19 trunk 63998) +JIT [x86_64-linux]
after --jit: ruby 2.6.0dev (2018-07-19 add-sp 63998) +JIT [x86_64-linux]
last_commit=mjit_compile.c: reduce sp motion on JIT
Calculating -------------------------------------
                             before       after  before --jit  after --jit
Optcarrot Lan_Master.nes     51.354      50.238        70.010       72.139 fps

Comparison:
             Optcarrot Lan_Master.nes
             after --jit:        72.1 fps
            before --jit:        70.0 fps - 1.03x  slower
                  before:        51.4 fps - 1.40x  slower
                   after:        50.2 fps - 1.44x  slower
------------------------------------------------------------------------
r63998 | svn | 2018-07-19 20:22:05 +0900 (Thu, 19 Jul 2018) | 1 line

* 2018-07-19
------------------------------------------------------------------------
r63997 | nobu | 2018-07-19 20:22:03 +0900 (Thu, 19 Jul 2018) | 1 line

renamed ruby_tz_update as ruby_tz_uptodate_p
------------------------------------------------------------------------
r63996 | k0kubun | 2018-07-18 22:11:03 +0900 (Wed, 18 Jul 2018) | 1 line

test_rubyoptions.rb: skip testing JIT on mswin
------------------------------------------------------------------------
r63995 | k0kubun | 2018-07-18 21:45:54 +0900 (Wed, 18 Jul 2018) | 11 lines

ruby.c: accept --disable-jit option

by promoting jit to feature flag.

mjit.h: update comment about mjit_opts.on

test_rubyoptions.rb: add test for switching JIT enablement

"--jit" flag usage may be deprecated later, but not discussed yet.

[Feature #14878]
------------------------------------------------------------------------
r63994 | nobu | 2018-07-18 19:30:41 +0900 (Wed, 18 Jul 2018) | 4 lines

reduce tzset

* time.c (rb_localtime_r): call tzset() only after TZ environment
  variable is changed.
------------------------------------------------------------------------
r63993 | normal | 2018-07-18 17:16:18 +0900 (Wed, 18 Jul 2018) | 9 lines

zlib (rb_gzreader_getc): localize and return cbuf directly

No point in having a long-lived cbuf in "struct gzfile"
since GZFILE_CBUF_CAPA is smaller than RSTRING_EMBED_LEN_MAX
(even on 32-bit).  We can also have rb_econv_convert write
directly to the return value instead of an intermediate buffer.

This brings "struct gzfile" from 264 to 256 bytes on 64-bit
systems to avoid taking an additional cache line.
------------------------------------------------------------------------
r63992 | tenderlove | 2018-07-18 07:27:52 +0900 (Wed, 18 Jul 2018) | 22 lines

Include the alternative malloc header instead of malloc.h

This commit fixes a build error on systems that have
`malloc_usable_size` but also enable jemalloc via `--with-jemalloc`.
For example, Ubuntu Precise defines `malloc_usable_size` in malloc.h, so
gc.c will include malloc.h.  This definition conflicts with jemalloc's
definition, so the following error occurs:

```
compiling gc.c
compiling hash.c
In file included from gc.c:50:0:
/usr/include/malloc.h:152:15: error: conflicting types for 'malloc_usable_size'
/usr/include/jemalloc/jemalloc.h:45:8: note: previous declaration of 'malloc_usable_size' was here
cc1: warning: unrecognized command line option "-Wno-self-assign" [enabled by default]
cc1: warning: unrecognized command line option "-Wno-constant-logical-operand" [enabled by default]
cc1: warning: unrecognized command line option "-Wno-parentheses-equality" [enabled by default]
cc1: warning: unrecognized command line option "-Wno-tautological-compare" [enabled by default]
```

Since jemalloc always defines `malloc_usable_size`, this patch just
includes the jemalloc header instead of malloc.h if it's available.
------------------------------------------------------------------------
r63991 | k0kubun | 2018-07-18 01:20:15 +0900 (Wed, 18 Jul 2018) | 5 lines

revert r63988

Due to trunk-mjit CI failures:
http://ci.rvm.jp/results/trunk-mjit@silicon-docker/1130097
http://ci.rvm.jp/results/trunk-mjit@silicon-docker/1130196
------------------------------------------------------------------------
r63990 | k0kubun | 2018-07-18 00:15:31 +0900 (Wed, 18 Jul 2018) | 6 lines

insns.def: remove redundant ifndef in r63988

By the way, the original patch of r63988 was provided by wanabe:
https://github.com/wanabe/ruby/tree/local-stack

but I forgot to add his credit in the previous commit message.
------------------------------------------------------------------------
r63989 | svn | 2018-07-18 00:09:42 +0900 (Wed, 18 Jul 2018) | 1 line

* 2018-07-18
------------------------------------------------------------------------
r63988 | k0kubun | 2018-07-18 00:09:41 +0900 (Wed, 18 Jul 2018) | 29 lines

mjit_compile.c: resurrect local variable stack

This optimization was reverted on r63863, but this commit resurrects the
optimization to skip some sp motions on JIT execution.

tool/ruby_vm/views/_mjit_compile_insn_body.erb: ditto
tool/ruby_vm/views/_mjit_compile_insn.erb: ditto

insns.def: resurrect handles_frame as handles_stack, which was deleted
on r63763.
tool/ruby_vm/models/bare_instructions.rb: ditto

vm_insnhelper.c: prevent moving sp outside insns.def to allow modifying
it by JIT.

* Optcarrot benchmark

$ benchmark-driver benchmark.yml --rbenv 'before --jit;after --jit' --repeat-count 12 -v
before --jit: ruby 2.6.0dev (2018-07-17 trunk 63987) +JIT [x86_64-linux]
after --jit: ruby 2.6.0dev (2018-07-17 local-stack 63987) +JIT [x86_64-linux]
last_commit=mjit_compile.c: resurrect local variable stack
Calculating -------------------------------------
                         before --jit  after --jit
Optcarrot Lan_Master.nes       70.518       72.144 fps

Comparison:
             Optcarrot Lan_Master.nes
             after --jit:        72.1 fps
            before --jit:        70.5 fps - 1.02x  slower
------------------------------------------------------------------------
r63987 | hsbt | 2018-07-17 21:21:29 +0900 (Tue, 17 Jul 2018) | 1 line

Promote Synchronizer to default gems.
------------------------------------------------------------------------
r63986 | hsbt | 2018-07-17 20:39:16 +0900 (Tue, 17 Jul 2018) | 1 line

Unified common workflow for default gems.
------------------------------------------------------------------------
r63985 | nobu | 2018-07-17 10:26:22 +0900 (Tue, 17 Jul 2018) | 1 line

test for wrong order: option
------------------------------------------------------------------------
r63984 | nobu | 2018-07-17 10:22:32 +0900 (Tue, 17 Jul 2018) | 8 lines

Fix message when `order` was an invalid value

The symbol that can be used is `:bottom`, not `:down`.
Ref: https://github.com/ruby/ruby/blob/e39b2cff8ac2dc93b35bd43ffcce3ded8e3b4c25/error.c#L1061

[Fix GH-1916]

From: yuuji.yaginuma <yuuji.yaginuma@gmail.com>
------------------------------------------------------------------------
r63983 | nobu | 2018-07-17 10:00:05 +0900 (Tue, 17 Jul 2018) | 1 line

ruby-runner.c: show the failed path
------------------------------------------------------------------------
r63982 | nobu | 2018-07-17 09:47:19 +0900 (Tue, 17 Jul 2018) | 7 lines

dir.c: fix glob with base when no DT_UNKNOWN

* dir.c (do_stat, do_lstat): need the length of the base path for
  fstatat() when fd is valid.

* dir.c (glob_helper): fix for platforms where DT_UNKNOWN is not
  available, e.g. Solaris.
------------------------------------------------------------------------
r63981 | svn | 2018-07-17 00:06:15 +0900 (Tue, 17 Jul 2018) | 1 line

* 2018-07-17
------------------------------------------------------------------------
r63980 | kazu | 2018-07-17 00:06:14 +0900 (Tue, 17 Jul 2018) | 1 line

[DOC] Update doc of NameError.new [ci skip]
------------------------------------------------------------------------
r63979 | naruse | 2018-07-16 23:43:38 +0900 (Mon, 16 Jul 2018) | 3 lines

No one knows how many leap seconds in year 2100

Just check whether leep seconds are considered or not.
------------------------------------------------------------------------
r63978 | duerst | 2018-07-16 19:20:24 +0900 (Mon, 16 Jul 2018) | 6 lines

tool/downloader.rb:

* remove initial "./" from destdir to make downloading
  ./enc/unicode/data/11.0.0/ucd/auxiliary/GraphemeBreakProperty.txt
  work properly
* tweak a comment
------------------------------------------------------------------------
r63977 | nobu | 2018-07-16 14:05:27 +0900 (Mon, 16 Jul 2018) | 4 lines

ruby.c: disable DidYouMean as gem

* ruby.c (process_options): as DidYouMean requires Rubygems, disable
  the former when the latter is disabled too.
------------------------------------------------------------------------
r63976 | yui-knk | 2018-07-16 11:07:44 +0900 (Mon, 16 Jul 2018) | 1 line

parse.y (heredoc_identifier): Update comment for term_len
------------------------------------------------------------------------
r63975 | svn | 2018-07-16 10:26:26 +0900 (Mon, 16 Jul 2018) | 1 line

* 2018-07-16
------------------------------------------------------------------------
r63974 | yui-knk | 2018-07-16 10:26:25 +0900 (Mon, 16 Jul 2018) | 1 line

parse.y: Add comment for `rb_strterm_heredoc_struct.sourceline`
------------------------------------------------------------------------
r63973 | ktsj | 2018-07-15 20:45:59 +0900 (Sun, 15 Jul 2018) | 3 lines

node.h: remove unused macro nd_compile_option

Follow up of r61610
------------------------------------------------------------------------
r63972 | ktsj | 2018-07-15 20:42:15 +0900 (Sun, 15 Jul 2018) | 3 lines

vm_core.h, vm_dump.c: fix cast

Revert r63968 and cast at caller side to prevent unintentional casting.
------------------------------------------------------------------------
r63971 | nobu | 2018-07-15 18:57:27 +0900 (Sun, 15 Jul 2018) | 1 line

process.c: adjust indent [ci skip]
------------------------------------------------------------------------
r63970 | ktsj | 2018-07-15 18:48:09 +0900 (Sun, 15 Jul 2018) | 1 line

insns.def: fix typo in comment
------------------------------------------------------------------------
r63969 | ktsj | 2018-07-15 18:47:12 +0900 (Sun, 15 Jul 2018) | 1 line

vm_dump.c: fix warning about constness
------------------------------------------------------------------------
r63968 | ktsj | 2018-07-15 18:45:31 +0900 (Sun, 15 Jul 2018) | 1 line

vm_core.h: add missing cast
------------------------------------------------------------------------
r63967 | svn | 2018-07-15 02:04:57 +0900 (Sun, 15 Jul 2018) | 1 line

* 2018-07-15
------------------------------------------------------------------------
r63966 | watson1978 | 2018-07-15 02:04:56 +0900 (Sun, 15 Jul 2018) | 3 lines

Fix documentation in Object#remove_instance_variable

It should be described that the string argument will be accept like Object#instance_variable_get.
------------------------------------------------------------------------
r63965 | svn | 2018-07-14 11:59:41 +0900 (Sat, 14 Jul 2018) | 1 line

* 2018-07-14
------------------------------------------------------------------------
r63964 | normal | 2018-07-14 11:59:39 +0900 (Sat, 14 Jul 2018) | 5 lines

webrick/httpresponse: set_redirect requires a valid URI

Prevents response splitting and HTML injection attacks in
poorly-written applications which blindly pass along user input
in redirects.
------------------------------------------------------------------------
r63963 | normal | 2018-07-13 15:05:43 +0900 (Fri, 13 Jul 2018) | 3 lines

process.c (assert_close_on_exec): quiet warning about unused result

Not much we can do if writing to STDERR_FILENO fails.
------------------------------------------------------------------------
r63962 | normal | 2018-07-13 12:15:04 +0900 (Fri, 13 Jul 2018) | 4 lines

test/ruby/test_signal.rb (test_sigchld_ignore): increase timeout

I suspect CI test machine was overloaded at the time,
or swapping at the time due to parallel build with mjit.
------------------------------------------------------------------------
r63961 | svn | 2018-07-13 08:23:26 +0900 (Fri, 13 Jul 2018) | 1 line

* 2018-07-13
------------------------------------------------------------------------
r63960 | normal | 2018-07-13 08:23:25 +0900 (Fri, 13 Jul 2018) | 16 lines

timer_thread: do not close pipes around fork

There's actually no need to close the pipes used by the
sleepy timer thread before forking, only to stop the timer
thread itself.

Instead, we only close the parent pipes in the child process,
either via close-on-exec flag or when reinitializing the timer
thread.

This change will be necessary when we allow
rb_wait_for_single_fd and rb_thread_fd_select to wait on the
timer_thread_pipe.normal[0] directly and eliminate timer thread.

I don't anticipate compatibility problems with this change
alone.
------------------------------------------------------------------------
r63959 | nobu | 2018-07-12 14:01:04 +0900 (Thu, 12 Jul 2018) | 8 lines

Improve branch misses

Improve branch misses on frozen object predicate checks negatively
affecting performance of most setters as most objects are not frozen.

[Fix GH-1913]

From: Lourens Naude <lourens@bearmetal.eu>
------------------------------------------------------------------------
r63958 | kazu | 2018-07-12 12:59:13 +0900 (Thu, 12 Jul 2018) | 9 lines

Fix compile error on debian8 and gentoo

https://rubyci.org/logs/rubyci.s3.amazonaws.com/debian8/ruby-trunk/log/20180711T213004Z.log.html.gz#miniruby
https://rubyci.org/logs/rubyci.s3.amazonaws.com/gentoo/ruby-trunk/log/20180711T213003Z.log.html.gz#miniruby
```
./include/ruby/ruby.h:2213:49: error: missing binary operator before token "("
 # if defined(__has_attribute) && __has_attribute(diagnose_if)
                                                 ^
```
------------------------------------------------------------------------
r63957 | nobu | 2018-07-12 11:29:57 +0900 (Thu, 12 Jul 2018) | 7 lines

removed unusecd constants

* ruby-runner.c (ruby_libm_func): removed as the following test
  actually doesn't need the path of libm.

* test/fiddle/test_pointer.rb (Fiddle::TestPointer#test_free=):
  removed never used constants and instance variables.
------------------------------------------------------------------------
r63956 | nobu | 2018-07-12 11:14:00 +0900 (Thu, 12 Jul 2018) | 7 lines

exe/ruby: link libm for fiddle test

* common.mk (exe/ruby): $(LIBS) should come after the source file
  due to the ld spec.

* ruby-runner.c (ruby_libm_func): force to link libm for fiddle
  test.
------------------------------------------------------------------------
r63955 | svn | 2018-07-12 07:49:50 +0900 (Thu, 12 Jul 2018) | 1 line

* 2018-07-12
------------------------------------------------------------------------
r63954 | k0kubun | 2018-07-12 07:49:48 +0900 (Thu, 12 Jul 2018) | 4 lines

benchmark/README.md: skip showing --timeout option [ci skip]

because it's only available for limited platforms for now.
I'll make it portable and show it later.
------------------------------------------------------------------------
r63953 | kazu | 2018-07-11 22:00:56 +0900 (Wed, 11 Jul 2018) | 1 line

Failed to unlink before close on mswin
------------------------------------------------------------------------
r63952 | normal | 2018-07-11 19:28:02 +0900 (Wed, 11 Jul 2018) | 3 lines

test/ruby/test_io.rb (test_copy_stream_to_duplex_io): join thread

Don't leave runaway threads as it could affect other tests.
------------------------------------------------------------------------
r63951 | nobu | 2018-07-11 18:56:49 +0900 (Wed, 11 Jul 2018) | 3 lines

Make block spacing consistent

[Fix GH-1910] [ci skip]
------------------------------------------------------------------------
r63950 | normal | 2018-07-11 18:47:36 +0900 (Wed, 11 Jul 2018) | 6 lines

test/ruby/test_io.rb: skip garbage and CPU tests if multi-threaded

Threads should not be active during these tests, but
maybe they are...

ref: https://bugs.ruby-lang.org/issues/14906
------------------------------------------------------------------------
r63949 | normal | 2018-07-11 17:49:23 +0900 (Wed, 11 Jul 2018) | 3 lines

thread_pthread: avoid redundant error message on pipe2() fail

Seeing one error for pipe creation is enough.
------------------------------------------------------------------------
r63948 | normal | 2018-07-11 17:49:18 +0900 (Wed, 11 Jul 2018) | 4 lines

thread_pthread.c: use mask for timer implementation

timer-thread will continue to be supported, but future
"timer" implementation may not be a thread.
------------------------------------------------------------------------
r63947 | normal | 2018-07-11 17:33:37 +0900 (Wed, 11 Jul 2018) | 3 lines

test/test_{tempfile,tmpdir}: get rid of leftover files

I ran out of inodes in $TMPDIR
------------------------------------------------------------------------
r63946 | normal | 2018-07-11 17:33:32 +0900 (Wed, 11 Jul 2018) | 3 lines

spec/ruby/security/cve_2018_6914_spec.rb: get rid of leftover files

I ran out of inodes in $TMPDIR :<
------------------------------------------------------------------------
r63945 | k0kubun | 2018-07-11 09:34:32 +0900 (Wed, 11 Jul 2018) | 5 lines

common.mk: upgrade benchmark_driver

benchmark/README.md: fix help output, which is changed on v0.14.6.
Especially `e1::path1,arg1,...; e2::path2,arg2` part was wrong since `,`
can't be used to split arguments anymore.
------------------------------------------------------------------------
r63944 | k0kubun | 2018-07-11 08:56:57 +0900 (Wed, 11 Jul 2018) | 1 line

benchmark/README.md: some are defined with YAML [ci skip]
------------------------------------------------------------------------
r63943 | naruse | 2018-07-11 01:10:57 +0900 (Wed, 11 Jul 2018) | 4 lines

Use "diagnose_if" attribute for clang

Before this patch, clang shows many "division by zero is undefined" errors
if a files has syntax error.
------------------------------------------------------------------------
r63942 | k0kubun | 2018-07-11 01:03:51 +0900 (Wed, 11 Jul 2018) | 1 line

benchmark/README.md: fix typo [ci skip]
------------------------------------------------------------------------
r63941 | k0kubun | 2018-07-11 00:58:52 +0900 (Wed, 11 Jul 2018) | 8 lines

benchmark: revise ERB benchmarks using YAML syntax

to improve the accuracy of measurement by stop using block.

benchmark/app_erb.rb -> benchmark/app_erb.yml: renamed and revised
benchmark/erb_render.rb -> benchmark/erb_render.yml: ditto

benchmark/README.md: follow renames
------------------------------------------------------------------------
r63940 | k0kubun | 2018-07-11 00:51:29 +0900 (Wed, 11 Jul 2018) | 1 line

benchmark/README.md: erb_render is no longer yml but rb [ci skip]
------------------------------------------------------------------------
r63939 | k0kubun | 2018-07-11 00:49:42 +0900 (Wed, 11 Jul 2018) | 1 line

benchmark/README.md: wording consistency in one sentence [ci skip]
------------------------------------------------------------------------
r63938 | svn | 2018-07-11 00:44:46 +0900 (Wed, 11 Jul 2018) | 1 line

* properties.
------------------------------------------------------------------------
r63937 | k0kubun | 2018-07-11 00:44:45 +0900 (Wed, 11 Jul 2018) | 7 lines

output/driver.rb: add output plugin to reproduce

the original behavior of benchmark/driver.rb.
Probably I won't use this but this is requested by ko1.

Use this with:
make benchmark OPTS="-o driver"
------------------------------------------------------------------------
r63936 | k0kubun | 2018-07-11 00:06:59 +0900 (Wed, 11 Jul 2018) | 3 lines

revert r63899

this is no longer needed due to r63926
------------------------------------------------------------------------
r63935 | svn | 2018-07-11 00:01:29 +0900 (Wed, 11 Jul 2018) | 1 line

* properties.
------------------------------------------------------------------------
r63934 | svn | 2018-07-11 00:01:28 +0900 (Wed, 11 Jul 2018) | 1 line

* 2018-07-11
------------------------------------------------------------------------
r63933 | k0kubun | 2018-07-11 00:01:27 +0900 (Wed, 11 Jul 2018) | 8 lines

benchmark_driver/runner: add runners for metrics

supported by legacy benchmark/driver.rb.

benchmark/README.md: document them

common.mk: update benchmark_driver to correct 0.0 output and to fix
spacing format of `-o simple` and `-o markdown`.
------------------------------------------------------------------------
r63932 | k0kubun | 2018-07-10 23:16:57 +0900 (Tue, 10 Jul 2018) | 6 lines

runner/size.rb: fix metric passed to output

runner/peak.rb: ditto

This is needed to make commands like `make -C .ruby-svn benchmark
ITEM=erb OPTS="-r size -o simple"` succeed.
------------------------------------------------------------------------
r63931 | k0kubun | 2018-07-10 22:41:13 +0900 (Tue, 10 Jul 2018) | 1 line

benchmark/README.md: add help output [ci skip]
------------------------------------------------------------------------
r63930 | k0kubun | 2018-07-10 22:36:44 +0900 (Tue, 10 Jul 2018) | 4 lines

benchmark/README.md: don't recommend alias installation [ci skip]

benchmark_driver is the official way to install benchmark_driver.
benchmark-driver is just an alias for it.
------------------------------------------------------------------------
r63929 | k0kubun | 2018-07-10 22:16:55 +0900 (Tue, 10 Jul 2018) | 1 line

common.mk: execute benchmark alphabetically
------------------------------------------------------------------------
r63928 | k0kubun | 2018-07-10 22:08:40 +0900 (Tue, 10 Jul 2018) | 3 lines

benchmark: drop all bm_ prefix for legacy driver.rb

benchmark/*.rb is only benchmarks now. We don't need prefixes.
------------------------------------------------------------------------
r63927 | svn | 2018-07-10 22:05:31 +0900 (Tue, 10 Jul 2018) | 1 line

* properties.
------------------------------------------------------------------------
r63926 | k0kubun | 2018-07-10 22:05:29 +0900 (Tue, 10 Jul 2018) | 12 lines

Revert "benchmark/*.yml: convert from benchmark/bm_*.rb"

This reverts r63900.

Having single-execution benchmark as a normal Ruby script is preferred
by ko1. I'm not a big fan of having inconsistent benchmark formats, but
I can understand some benefits of it.

common.mk: remove obsolsted benchmark-each PHONY declaration, support
running Ruby scripts added by this commit.

README.md: follow ARGS change
------------------------------------------------------------------------
r63925 | svn | 2018-07-10 21:14:05 +0900 (Tue, 10 Jul 2018) | 1 line

* properties.
------------------------------------------------------------------------
r63924 | k0kubun | 2018-07-10 21:14:04 +0900 (Tue, 10 Jul 2018) | 11 lines

benchmark: resurrect peak / size metrics

by adding runner plugins for them.

benchmark/lib/benchmark_driver/runner/peak.rb: added peak runner plugin
benchmark/lib/benchmark_driver/runner/size.rb: added size runner plugin
common.mk: allow using them

benchmark/memory_wrapper.rb: deleted in favor of those runner plugins

benchmark/README.md: document them
------------------------------------------------------------------------
r63923 | tenderlove | 2018-07-10 05:01:54 +0900 (Tue, 10 Jul 2018) | 8 lines

Remove redundant code in the compiler.

During instruction translation (linked list -> iseq generation), we can
treat `TS_VALUE` and `TS_ISEQ` the same as they are just embedded in the
generated sequences.  The only difference between `TS_ISE` and `TS_IC`
is that an inline storage entry may contain a markable `VALUE` pointer
at some point, so we need to flag the iseq as containing markable
objects.
------------------------------------------------------------------------
r63922 | tenderlove | 2018-07-10 04:20:27 +0900 (Tue, 10 Jul 2018) | 3 lines

Remove test code.  ISE generation should not impact write barrier

orz!
------------------------------------------------------------------------
r63921 | tenderlove | 2018-07-10 02:49:21 +0900 (Tue, 10 Jul 2018) | 6 lines

Add lldb as a debugger option

This adds support for lldb as a debugger so that tests can be run under
lldb like this:

  $ make test-all TESTS=test/some_test.rb RUNRUBYOPT=--debugger=lldb
------------------------------------------------------------------------
r63920 | tenderlove | 2018-07-10 02:47:37 +0900 (Tue, 10 Jul 2018) | 5 lines

Fix crash when loading iseq from an array

Objects loaded during iseq deserialization using arrays need to be added
to the compile time mark array so that they stay alive until iseqs
finish loading.
------------------------------------------------------------------------
r63919 | k0kubun | 2018-07-10 01:43:42 +0900 (Tue, 10 Jul 2018) | 1 line

benchmark/README.md: fix -e interface for v0.14 [ci skip]
------------------------------------------------------------------------
r63918 | k0kubun | 2018-07-10 01:31:35 +0900 (Tue, 10 Jul 2018) | 9 lines

benchmark/driver.rb: fully obsolete this

in favor of just using benchmark_driver.gem.

common.mk: The new `make benchmark` covers the both usages for old `make
benchmark` and old `make benchmark-each`. So `make benchmark-each` is
dropped now.

benchmark/README.md: Explain its details
------------------------------------------------------------------------
r63917 | svn | 2018-07-10 00:45:03 +0900 (Tue, 10 Jul 2018) | 1 line

* 2018-07-10
------------------------------------------------------------------------
r63916 | k0kubun | 2018-07-10 00:45:02 +0900 (Tue, 10 Jul 2018) | 4 lines

common.mk: upgrade benchmark_driver to v0.14

benchmark/driver.rb: deal with breaking changes which are actually
introduced for this driver.
------------------------------------------------------------------------
r63915 | hsbt | 2018-07-09 23:01:05 +0900 (Mon, 09 Jul 2018) | 6 lines

Promote irb library to default gems.

  * lib/irb/irb.gemspec: init.
  * lib/irb/version.rb: Set @RELEASE_VERSION value to IRB::VERSION for gemspec.
  * doc/*.rdoc: Move IRB entry to default gems category.
  * tool/sync_default_gems.rb: Add irb support.
------------------------------------------------------------------------
r63914 | k0kubun | 2018-07-09 22:20:25 +0900 (Mon, 09 Jul 2018) | 4 lines

file_rename.yml: allow running this on mswin/mingw

Suggested by MSP-Grep:
http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-core/87883
------------------------------------------------------------------------
r63913 | k0kubun | 2018-07-09 21:50:50 +0900 (Mon, 09 Jul 2018) | 1 line

app_pentominio.yml: drop unnecessary prelude
------------------------------------------------------------------------
r63912 | ko1 | 2018-07-09 17:07:26 +0900 (Mon, 09 Jul 2018) | 6 lines

Don't copy FL_USER* on Kernel#clone. [Bug #14847]

* object.c (mutable_obj_clone): `Kernel#clone` should not copy
  FL_USER* flags because they are copied unexpectedly.
  Unexpected copy will break internal data consistency.

------------------------------------------------------------------------
r63911 | normal | 2018-07-09 12:07:59 +0900 (Mon, 09 Jul 2018) | 3 lines

addr2line.c (kprintf): static

This function is not used outside of addr2line.c
------------------------------------------------------------------------
r63910 | nobu | 2018-07-09 10:50:12 +0900 (Mon, 09 Jul 2018) | 1 line

common.mk: codesign ruby-runner too
------------------------------------------------------------------------
r63909 | nobu | 2018-07-09 10:20:20 +0900 (Mon, 09 Jul 2018) | 6 lines

dir.c: fix directory glob

* dir.c (glob_helper): fix directory glob which resulted in lacking
  the first byte.  adjust the length of basename to be appended as
  well as removing the heading path, not the length of the joined
  path.  [ruby-dev:50588] [Bug #14899]
------------------------------------------------------------------------
r63908 | normal | 2018-07-09 08:43:14 +0900 (Mon, 09 Jul 2018) | 8 lines

addr2line.c: no need to keep fd around after mmap

POSIX mmap(3) manpage stipulates mmap bumps the reference
count of the file description.  Thus keeping a file descriptor
to maintain the reference is not necessary.

If this didn't work, every extension .so would require a
permanent FD, which is obviously not the case.
------------------------------------------------------------------------
r63907 | stomar | 2018-07-09 04:30:19 +0900 (Mon, 09 Jul 2018) | 1 line

range.c: [DOC] small improvement
------------------------------------------------------------------------
r63906 | k0kubun | 2018-07-09 03:33:43 +0900 (Mon, 09 Jul 2018) | 6 lines

benchmark/driver.rb: make this more similar

to original benchmark-driver command.

I'm going to add some runner plugins to resurrect metrics which were
originally supported by benchmark/driver.rb...
------------------------------------------------------------------------
r63905 | k0kubun | 2018-07-09 03:10:14 +0900 (Mon, 09 Jul 2018) | 1 line

benchmark/README.md: [ci skip] change syntax highlight
------------------------------------------------------------------------
r63904 | svn | 2018-07-09 03:08:27 +0900 (Mon, 09 Jul 2018) | 1 line

* properties.
------------------------------------------------------------------------
r63903 | k0kubun | 2018-07-09 03:08:26 +0900 (Mon, 09 Jul 2018) | 5 lines

benchmark/README.md: [ci skip] write documentation

about this directory

benchmark/driver.rb: ditto
------------------------------------------------------------------------
r63902 | k0kubun | 2018-07-09 02:48:58 +0900 (Mon, 09 Jul 2018) | 5 lines

benchmark/driver.rb: drop legacy Ruby script support

Now all benchmarks are converted to YAMLs.

common.mk: Drop obsoleted bm_* pattern
------------------------------------------------------------------------
r63901 | k0kubun | 2018-07-09 02:47:32 +0900 (Mon, 09 Jul 2018) | 3 lines

benchmark/app_pentomino.yml: remove original scripts after __END__

mistakenly left by conversion script...
------------------------------------------------------------------------
r63900 | k0kubun | 2018-07-09 02:36:26 +0900 (Mon, 09 Jul 2018) | 1 line

benchmark/*.yml: convert from benchmark/bm_*.rb
------------------------------------------------------------------------
r63899 | k0kubun | 2018-07-09 02:31:06 +0900 (Mon, 09 Jul 2018) | 5 lines

benchmark/gc: prevent GC bench from depending on normal benchmark

scripts.

This is needed to finish converting Ruby scripts to YAMLs.
------------------------------------------------------------------------
r63898 | k0kubun | 2018-07-09 02:22:58 +0900 (Mon, 09 Jul 2018) | 3 lines

benchmark/vm2_struct_small_aset.yml: unwrap loop_count

since `i` is involved in this script as well...
------------------------------------------------------------------------
r63897 | k0kubun | 2018-07-09 02:19:57 +0900 (Mon, 09 Jul 2018) | 1 line

benchmark/vm2_*.yml: fix ugly conversion errors
------------------------------------------------------------------------
r63896 | k0kubun | 2018-07-09 02:03:23 +0900 (Mon, 09 Jul 2018) | 1 line

benchmark/vm2_*.yml: abstract away the while loop
------------------------------------------------------------------------
r63895 | k0kubun | 2018-07-09 01:46:49 +0900 (Mon, 09 Jul 2018) | 8 lines

benchmark/vm1_ensure.yml: rollback loop_count abstraction

for now.

When measured script is really too fast, while loop substituion may
return a negative benchmark result.

Probably benchmark_driver.gem has rooms to be improved about this.
------------------------------------------------------------------------
r63894 | k0kubun | 2018-07-09 01:35:44 +0900 (Mon, 09 Jul 2018) | 1 line

benchmark/vm1_*.yml: manual fixes for ugly conversions
------------------------------------------------------------------------
r63893 | k0kubun | 2018-07-09 01:28:34 +0900 (Mon, 09 Jul 2018) | 6 lines

benchmark/vm1_*.yml: abstract away the while loop

benchmark/driver.rb had removed the cost for while loop in benchmark/bm_vm1_*.rb,
and benchmark_driver.gem can achieve the same thing with `loop_count`.

But unfortunately current benchmark_driver.gem can't solve it only for vm1_yield.yml...
------------------------------------------------------------------------
r63892 | k0kubun | 2018-07-09 00:35:22 +0900 (Mon, 09 Jul 2018) | 6 lines

benchmark: convert bm_vm2_*.rb to vm2_*.yml

This YAML transformation is needed to support whileloop2 time substituion
by benchmark_driver.gem later.

This commmit changes no benchmark behavior.
------------------------------------------------------------------------
r63891 | k0kubun | 2018-07-09 00:12:24 +0900 (Mon, 09 Jul 2018) | 6 lines

benchmark: convert bm_vm1_*.rb to vm1_*.yml

This YAML transformation is needed to support whileloop time substituion
by benchmark_driver.gem later.

This commmit changes no benchmark behavior.
------------------------------------------------------------------------
r63890 | svn | 2018-07-09 00:05:19 +0900 (Mon, 09 Jul 2018) | 1 line

* 2018-07-09
------------------------------------------------------------------------
r63889 | k0kubun | 2018-07-09 00:05:18 +0900 (Mon, 09 Jul 2018) | 1 line

benchmark/driver.rb: fix wrong multiline regexp
------------------------------------------------------------------------
r63888 | k0kubun | 2018-07-08 23:38:05 +0900 (Sun, 08 Jul 2018) | 29 lines

benchmark: introduce benchmark_driver.gem

Makefile.in: Clone benchmark-driver repository in benchmark/benchmark-driver
  `make update-benchmark-driver`, like simplecov.
win32/Makefile.sub: Roughly do the same thing.
.gitignore: Ignore the cloned repository.
common.mk: Trigger `make update-benchmark-driver` to run `make benchmark`
  and adjust arguments for benchmark_driver.gem.

benchmark/require.yml: renamed from benchmark/bm_require.rb, benchmark/prepare_require.rb
benchmark/require_thread.yml: renamed from benchmark/bm_require_thread.rb, benchmark/prepare_require_thread.rb
benchmark/so_count_words.yml: renamed from benchmark/bm_so_count_words.rb, benchmark/prepare_so_count_words.rb,
  benchmark/wc.input.base
benchmark/so_k_nucleotide.yml: renamed from benchmark/bm_so_k_nucleotide.rb, benchmark/prepare_so_k_nucleotide.rb,
  benchmark/make_fasta_output.rb
benchmark/so_reverse_complement.yml: renamed from benchmark/bm_so_reverse_complement.rb, benchmark/prepare_so_reverse_complement.rb,
  benchmark/make_fasta_output.rb

I'm sorry but I made some duplications between benchmark/require.yml and benchmark/require_thread.yml,
and between benchmark/so_k_nucleotide.yml and benchmark/so_reverse_complement.yml.

If you're not comfortable with it, please combine these YAMLs to share
the same prelude. One YAML file can have multiple benchmark definitions
sharing prelude.

benchmark/driver.rb: Replace its core feature with benchmark_driver.gem.
  Some old features are gone for now, but I'll add them again later.

[Misc #14902]
------------------------------------------------------------------------
r63887 | k0kubun | 2018-07-08 23:08:25 +0900 (Sun, 08 Jul 2018) | 6 lines

common.mk: load prelude on `make benchmark`

because benchmark/bm_io_nonblock_noex.rb and benchmark/bm_io_nonblock_noex2.rb
are using IO#write_nonblock and it's defined in prelude.

miniruby can't run the benchmark without prelude.
------------------------------------------------------------------------
r63886 | k0kubun | 2018-07-08 22:03:01 +0900 (Sun, 08 Jul 2018) | 10 lines

benchmark: drop legacy benchmark drivers

It seems like they are all benchmark drivers but "benchmark/driver.rb"
is the latest and others are no longer used.

It's confusing to have multiple drivers (and actually I used
benchmark/run.rb since I didn't know I should use benchmark/driver.rb).

As I'm going to support only benchmark/driver.rb features in Misc#14902,
let me delete them.
------------------------------------------------------------------------
r63885 | normal | 2018-07-08 16:27:29 +0900 (Sun, 08 Jul 2018) | 7 lines

test/ruby (*no_hidden_garbage): disable GC and skip if multi-threaded

Any single object allocation can reduce object count, and
object counts are global, so multi-threading leads to unpredictable
results.

See also similar commits: r60699 and r62608
------------------------------------------------------------------------
r63884 | normal | 2018-07-08 16:27:24 +0900 (Sun, 08 Jul 2018) | 15 lines

mjit: get rid of memory leak in pause+resume loop

pthread_atfork is not idempotent and repeatedly calling it
causes it to register the same hook repeatedly; leading to
unbound memory growth.

Ruby already has a (confusing-named) internal API for to call
in the forked child process: rb_thread_atfork
Call the MJIT child_after_fork hook inside that to prevent
unbound growth with the following loop:

    loop do
      RubyVM::MJIT.pause
      RubyVM::MJIT.resume
    end
------------------------------------------------------------------------
r63883 | k0kubun | 2018-07-08 14:52:12 +0900 (Sun, 08 Jul 2018) | 6 lines

tool/git-refresh: skip git fetch and checkout

if the tag is already checked out, to optimize the execution time.

I'm going to prepare a task depending on this tool, and I want that to
finish fast and output nothing when it's already up-to-date.
------------------------------------------------------------------------
r63882 | k0kubun | 2018-07-08 13:12:04 +0900 (Sun, 08 Jul 2018) | 1 line

benchmark/driver.rb: simplify LoadError handling
------------------------------------------------------------------------
r63881 | k0kubun | 2018-07-08 11:25:46 +0900 (Sun, 08 Jul 2018) | 4 lines

common.mk: drop obsoleted `make tbench`

benchmark/bmx_* files haven't existed since r37263 and thus it runs
nothing.
------------------------------------------------------------------------
r63880 | normal | 2018-07-08 10:46:31 +0900 (Sun, 08 Jul 2018) | 3 lines

test/ruby/test_signal.rb: skip ensure if test is skipped

Thanks to Greg for the fix. [ruby-core:87860] [Bug #14867]
------------------------------------------------------------------------
r63879 | normal | 2018-07-08 09:02:27 +0900 (Sun, 08 Jul 2018) | 6 lines

signal.c: preserve trap(:CHLD, "IGNORE") behavior with SIGCHLD

We need to preserve "IGNORE" behavior from Ruby 2.5 and earlier.
We can't rely on SA_NOCLDWAIT any more, since we always need
system() and MJIT to work; so we fake that behavior using
dedicated reaper (currently in timer-thread).
------------------------------------------------------------------------
r63878 | svn | 2018-07-08 08:59:24 +0900 (Sun, 08 Jul 2018) | 1 line

* 2018-07-08
------------------------------------------------------------------------
r63877 | normal | 2018-07-08 08:59:23 +0900 (Sun, 08 Jul 2018) | 9 lines

process.c (rb_f_exec): pause MJIT before replacing process

Non-parallel "make test-spec" caused
spec/ruby/core/process/wait2_spec.rb failures because mspec
uses "exec" in single-process mode, so there's no chance
the post-exec state could know about the MJIT child process
from its pre-exec state.

[ruby-core:87846] [Bug #14867]
------------------------------------------------------------------------
r63876 | k0kubun | 2018-07-07 23:55:22 +0900 (Sat, 07 Jul 2018) | 28 lines

wait2_spec.rb: skip leak checker for now

This is not working with cppflags="-DMJIT_FORCE_ENABLE" on my machine.

```
$ make test-spec
$ /home/k0kubun/src/github.com/ruby/ruby-svn/.ruby-force/miniruby -I/home/k0kubun/src/github.com/ruby/ruby-svn/lib /home/k0kubun/src/github.com/ruby/ruby-svn/tool/runruby.rb --archdir=/home/k0kubun/src/github.com/ruby/ruby-svn/.ruby-force --extout=.ext -- /home/k0kubun/src/github.com/ruby/ruby-svn/spec/mspec/bin/mspec-run -B ../spec/default.mspec
ruby 2.6.0dev (2018-07-07 trunk 63874) +JIT [x86_64-linux]
[| | ================  40%                    | 00:02:03]      0F      0E leaked before wait2 specs: [[31406, #<Process::Status: pid 31406 exit 0>]]

1)
An exception occurred during: before :all FAILED
Expected [[31406, #<Process::Status: pid 31406 exit 0>]] to be empty
/home/k0kubun/src/github.com/ruby/ruby-svn/spec/ruby/core/process/wait2_spec.rb:18:in `block (3 levels) in <top (required)>'
/home/k0kubun/src/github.com/ruby/ruby-svn/spec/ruby/core/process/wait2_spec.rb:16:in `block (2 levels) in <top (required)>'
/home/k0kubun/src/github.com/ruby/ruby-svn/spec/ruby/core/process/wait2_spec.rb:3:in `<top (required)>'
[- | ==================100%================== | 00:00:00]      1F      0E

Finished in 103.288794 seconds

3607 files, 28545 examples, 208272 expectations, 1 failure, 0 errors, 0 tagged
uncommon.mk:777: recipe for target 'yes-test-spec' failed
make: *** [yes-test-spec] Error 1
```

Let me skip this for now and enable MJIT CI again.

Related to Bug#14867
------------------------------------------------------------------------
r63875 | k0kubun | 2018-07-07 23:41:03 +0900 (Sat, 07 Jul 2018) | 3 lines

insns.def: stop pushing unnecessary keys for MJIT

[Bug #14892]
------------------------------------------------------------------------
r63874 | k0kubun | 2018-07-07 23:28:34 +0900 (Sat, 07 Jul 2018) | 5 lines

_mjit_compile_insn_body: rollback pc correctly

for catch_except_p case

Partially solving Bug#14892
------------------------------------------------------------------------
r63873 | svn | 2018-07-07 14:34:04 +0900 (Sat, 07 Jul 2018) | 1 line

* 2018-07-07
------------------------------------------------------------------------
r63872 | normal | 2018-07-07 14:34:03 +0900 (Sat, 07 Jul 2018) | 7 lines

test/socket/test_socket.rb (test_timestamp): retry send

I theorize there can be UDP packet loss even over loopback if
the kernel is under memory pressure.  Retry sending periodically
until recvmsg succeeds.

i[ruby-core:87842] [Bug #14898]
------------------------------------------------------------------------
r63871 | nobu | 2018-07-06 22:56:58 +0900 (Fri, 06 Jul 2018) | 5 lines

const_missing on private constants

* variable.c (rb_const_search): call #const_missing method on
  private constants, as well as uninitialized constants.
  [Feature #14328]
------------------------------------------------------------------------
r63870 | nobu | 2018-07-06 17:01:58 +0900 (Fri, 06 Jul 2018) | 6 lines

compile.c: remove unreachable jump only

* compile.c (iseq_peephole_optimize): remove unreachable jump
  instruction only.  if it is labeled and referred from other
  instructions, it is reachable and must not be removed.
  [ruby-core:87830] [Bug #14897]
------------------------------------------------------------------------
r63869 | normal | 2018-07-06 15:50:04 +0900 (Fri, 06 Jul 2018) | 8 lines

mjit.c: fix waitpid macro return value for win32

We started checking return value of waitpid, so it needs
to be correct for win32 platforms for MJIT to work.

Thanks-to: MSP-Greg (Greg L) <Greg.mpls@gmail.com>

[ruby-core:87832] [Bug #14867]
------------------------------------------------------------------------
r63868 | mame | 2018-07-06 13:52:33 +0900 (Fri, 06 Jul 2018) | 24 lines

Fix a bug of peephole optimization

```
  if   L1
L0:
  jump L2
L1:
  ...
L2:
```

was wrongly optimized to:

```
  unless L2
L0:
L1:
  ...
L2:
```

To make it conservative, this optimization is now disabled when there is
any label between `if` and `jump` instructions.
Fixes [Bug #14897].
------------------------------------------------------------------------
r63867 | normal | 2018-07-06 11:15:05 +0900 (Fri, 06 Jul 2018) | 23 lines

thread.c (ruby_ppoll): improve timespec to msec conversion

Round up non-zero <1ms timeouts to 1ms and use INT_MAX instead
of infinite (-1) for extremely large timeouts.  All of our
ppoll/select callers are able to handle spurious wakeups,
anyways.

This avoids excessive CPU usage and busy waits with short
timeouts to rb_wait_for_single_fd.

CPU usage with the following script is significantly reduced
for systems with "#undef HAVE_PPOLL":

    require 'io/wait'
    r, w = IO.pipe
    Thread.new { loop { r.wait_readable(0.000001) } }.join(5)
    exit!(0)

Low-resolution in poll(2) still sucks, though...

Note: I don't see the value in making a similar change to
time_timeval of a <1us sleep is attempted because of GVL
release and syscall latency.
------------------------------------------------------------------------
r63866 | normal | 2018-07-06 11:15:00 +0900 (Fri, 06 Jul 2018) | 3 lines

thread.c: our fake ppoll implementation is static

Rename it to "ruby_ppoll" so it looks more obvious in debuggers.
------------------------------------------------------------------------
r63865 | kazu | 2018-07-06 10:53:57 +0900 (Fri, 06 Jul 2018) | 1 line

Fixup r63864
------------------------------------------------------------------------
r63864 | nobu | 2018-07-06 10:40:04 +0900 (Fri, 06 Jul 2018) | 1 line

Prefixed reset_leap_second_info
------------------------------------------------------------------------
r63863 | k0kubun | 2018-07-06 00:56:48 +0900 (Fri, 06 Jul 2018) | 10 lines

revert r62655 for r63763

r63655 was tightly coupled to handle_frames and some assumptions seems
to have been broken by r63763.

To partially resolve Bug#14892, this reverts the optimization for now. I
want to make MJIT CI happy first and then I'll probably retry r63655 by
partially reverting r63763 for sp changes.

The skipped test is not fixed yet.
------------------------------------------------------------------------
r63862 | svn | 2018-07-06 00:20:28 +0900 (Fri, 06 Jul 2018) | 1 line

* 2018-07-06
------------------------------------------------------------------------
r63861 | nobu | 2018-07-06 00:20:27 +0900 (Fri, 06 Jul 2018) | 1 line

Make a prototype
------------------------------------------------------------------------
r63860 | naruse | 2018-07-05 21:48:45 +0900 (Thu, 05 Jul 2018) | 1 line

ruby tool/update-deps --fix
------------------------------------------------------------------------
r63859 | naruse | 2018-07-05 21:22:30 +0900 (Thu, 05 Jul 2018) | 1 line

Add missing prototype
------------------------------------------------------------------------
r63858 | naruse | 2018-07-05 20:53:18 +0900 (Thu, 05 Jul 2018) | 1 line

Add missing file
------------------------------------------------------------------------
r63857 | naruse | 2018-07-05 20:43:42 +0900 (Thu, 05 Jul 2018) | 5 lines

Re-apply r63848 (Optimize Time.utc)

* Both timegmw and gmtimew ignores leap second if the timezone doesn't
  have leap seconds on the first call of init_leap_second_info()
* Add Bug::Time.reset_leap_second_info for testing
------------------------------------------------------------------------
r63856 | normal | 2018-07-05 12:20:20 +0900 (Thu, 05 Jul 2018) | 6 lines

Revert "get rid of a compiler warning of VC"

Partially revert r63820.  mjit.c seems to have different idea of
"pid" type/size than the rest of Ruby on win32.

As noted in [ruby-core:87794], this seems to break Greg's build.
------------------------------------------------------------------------
r63855 | normal | 2018-07-05 12:02:33 +0900 (Thu, 05 Jul 2018) | 8 lines

unrevert r63852 but keep SIGCHLD path disabled for win32

Reading win32/win32.c waitpid implementation, maybe waitpid(-1, ...)
on that platform will never conflict with mjit use of waitpid.

In any case, I've added WAITPID_USE_SIGCHLD macro to vm_core.h
so it can be easy for Linux/BSD users to test (hopefully!)
win32-compatible code.
------------------------------------------------------------------------
r63854 | nobu | 2018-07-05 01:10:14 +0900 (Thu, 05 Jul 2018) | 9 lines

signal.c: packed signals

* signal.c (signals): pack signal names instead of references.

* signal.c (signm2signo): also reject too long signal name.
  [ruby-core:87767] [Bug #14893]

reapply r63841 and r63842, which are unrelated to r63758 but had been
wrongly reverted by r63852.
------------------------------------------------------------------------
r63853 | svn | 2018-07-05 00:08:58 +0900 (Thu, 05 Jul 2018) | 1 line

* 2018-07-05
------------------------------------------------------------------------
r63852 | naruse | 2018-07-05 00:08:56 +0900 (Thu, 05 Jul 2018) | 4 lines

Revert r63758 and related commits

The change is unstable on Windows. Please re-commit it when it correctly
supports Windows.
------------------------------------------------------------------------
r63851 | kazu | 2018-07-04 21:45:47 +0900 (Wed, 04 Jul 2018) | 6 lines

Fallback to Digest::SHA512

`Gem::Package::TarWriter#add_file_signed` expects to fallback to
`Digest::SHA512`, and `digest.respond_to? :name` or not.
So lib/rubygems/security.rb should use same logic for
`Gem::Security::DIGEST_ALGORITHM` and `Gem::Security::DIGEST_NAME`.
------------------------------------------------------------------------
r63850 | kazu | 2018-07-04 21:45:46 +0900 (Wed, 04 Jul 2018) | 4 lines

Skip more rubygems tests when openssl is missing

Some tests are already skipped, but some tests are not.
So latter should be skipped too.
------------------------------------------------------------------------
r63849 | naruse | 2018-07-04 19:59:36 +0900 (Wed, 04 Jul 2018) | 4 lines

Revert "Optimize Time.utc"

This reverts commit r63848.
It breaks tests.
------------------------------------------------------------------------
r63848 | naruse | 2018-07-04 19:06:51 +0900 (Wed, 04 Jul 2018) | 15 lines

Optimize Time.utc

Time.utc uses timegmw() and it uses leap second information.
If the given time is larger than known_leap_seconds_limit, it calls
find_time_t, which uses localtime(3) and calls stat(2) in it.

This patch avoid it by setting known_leap_seconds_limit to 0 if the timezone doesn't have leapsecond information (if no leap second is found "now", I assume the timezone doesn't have leapsecond information).

Before:
% time ./miniruby --disable-gem -e'time = Time.now; year = time.year; month = time.month; day = time.day; hour = time.hour; min = time.min; sec = time.sec + time.subsec; i = 0; while i < 100000; ::Time.utc(year, month, day, hour, min, sec); i += 1; end'
./miniruby --disable-gem   0.35s user 0.19s system 99% cpu 0.542 total

After:
% time ./miniruby --disable-gem -e'time = Time.now; year = time.year; month = time.month; day = time.day; hour = time.hour; min = time.min; sec = time.sec + time.subsec; i = 0; while i < 100000; ::Time.utc(year, month, day, hour, min, sec); i += 1; end'
./miniruby --disable-gem   0.23s user 0.00s system 99% cpu 0.233 total
------------------------------------------------------------------------
r63847 | normal | 2018-07-04 10:26:36 +0900 (Wed, 04 Jul 2018) | 3 lines

internal.h (rb_warning_string): use PRINTF_ARGS

Let compilers do a little extra validation for us
------------------------------------------------------------------------
r63846 | normal | 2018-07-04 10:26:31 +0900 (Wed, 04 Jul 2018) | 7 lines

thread_pthread.c: pass rb_vm_t to timer_thread_sleep

I love `container_of' for generic data structures, but
in this case it's unnecessary and slightly harder-to-read.

This will make "Timeout in VM" slightly easier-to-read:
https://bugs.ruby-lang.org/issues/14859
------------------------------------------------------------------------
r63845 | nobu | 2018-07-04 08:56:11 +0900 (Wed, 04 Jul 2018) | 8 lines

vm.c: simplified core#hash_merge_kwd

* vm.c (core_hash_merge_kwd): simplified to merge the second hash
  into the first hash.

* compile.c (compile_array): call core#hash_merge_kwd with 2
  hashes always, by passing an new empty hash to at the first
  iteration.
------------------------------------------------------------------------
r63844 | normal | 2018-07-04 06:29:18 +0900 (Wed, 04 Jul 2018) | 4 lines

mjit.h: avoid signed pointer comparisons (fix for 32-bit)

ptrdiff_t is a signed type, use uintptr_t instead for unsigned
comparisons.
------------------------------------------------------------------------
r63843 | svn | 2018-07-04 00:25:50 +0900 (Wed, 04 Jul 2018) | 1 line

* 2018-07-04
------------------------------------------------------------------------
r63842 | kazu | 2018-07-04 00:25:49 +0900 (Wed, 04 Jul 2018) | 5 lines

Fix compile error

signal.c:69:10: error: variably modified 'signm' at file scope
     char signm[LONGEST_SIGNAME + 1];
          ^
------------------------------------------------------------------------
r63841 | nobu | 2018-07-03 22:34:56 +0900 (Tue, 03 Jul 2018) | 6 lines

signal.c: packed signals

* signal.c (signals): pack signal names instead of references.

* signal.c (signm2signo): also reject too long signal name.
  [ruby-core:87767] [Bug #14893]
------------------------------------------------------------------------
r63840 | nobu | 2018-07-03 22:25:59 +0900 (Tue, 03 Jul 2018) | 1 line

adjust indent [ci skip]
------------------------------------------------------------------------
r63839 | naruse | 2018-07-03 20:10:45 +0900 (Tue, 03 Jul 2018) | 4 lines

skip test_localtime_zone if force_tz_test is false

For example Solaris
https://rubyci.org/logs/rubyci.s3.amazonaws.com/unstable10x/ruby-trunk/log/20180703T091803Z.fail.html.gz
------------------------------------------------------------------------
r63838 | kazu | 2018-07-03 20:01:06 +0900 (Tue, 03 Jul 2018) | 3 lines

[DOC] Use https: instead of  git: [ci skip]

ref r63801, r61199
------------------------------------------------------------------------
r63837 | normal | 2018-07-03 18:06:28 +0900 (Tue, 03 Jul 2018) | 5 lines

vm.c (rb_source_location): check for NULL cfp->iseq

rb_vm_get_sourceline returns zero if cfp->iseq is NULL,
so rb_iseq_path should not try to follow NULL cfp->iseq,
either.
------------------------------------------------------------------------
r63836 | normal | 2018-07-03 17:30:16 +0900 (Tue, 03 Jul 2018) | 11 lines

thread_pthread.c (native_thread_destroy): clear native TSD pointer

mwrap <https://80x24.org/mwrap/> interposes malloc functions and
checks for GVL existence to determine Ruby source locations of
malloc calls.  pthread_getattr_np (from get_stack) may call
realloc to get the CPU set size; so when using the thread-cache,
ruby_thread_has_gvl_p() may hit a false positive on reused
threads with lingering rb_thread_t in thread-specific data.

This was causing mwrap to call rb_source_location_cstr() and
crash because it was pointed to a zero ec->cfp->iseq.
------------------------------------------------------------------------
r63835 | nobu | 2018-07-03 14:12:52 +0900 (Tue, 03 Jul 2018) | 12 lines

cont.c: handle errors for getcontext()

It may raise an error in a certain security configuration.
It is very likely to trigger a segmentation fault if `getcontext()` failed silently
and we just let it keep going.

Related to https://bugs.ruby-lang.org/issues/14883
[Fix GH-1903]

Based on the patch from Lion Yang <lion@aosc.io>

From: Lion Yang <lion@aosc.io>
------------------------------------------------------------------------
r63834 | nobu | 2018-07-03 13:43:27 +0900 (Tue, 03 Jul 2018) | 3 lines

fake.rb.in: duplicated RUBYOPT

* template/fake.rb.in: removed duplicated options in RUBYOPT.
------------------------------------------------------------------------
r63833 | nobu | 2018-07-03 13:43:25 +0900 (Tue, 03 Jul 2018) | 6 lines

rubyopt_spec.rb: skip -v in RUBYOPT examples

* spec/ruby/command_line/rubyopt_spec.rb: skip -v in RUBYOPT
  examples when CROSS_COMPILING is set by fake.rb.  the version
  number by -v is printed before loading libraries by -r options,
  so setting RUBY_DESCRIPTION in fake.rb has no effect.
------------------------------------------------------------------------
r63832 | nobu | 2018-07-03 09:49:32 +0900 (Tue, 03 Jul 2018) | 6 lines

configure.ac: [DOC] refine help messages

cflags, cppflags, and cxxflags are additional flags to auto
configured flags, and ignored when the their respective autoconf
default variables are given.
[ci skip]
------------------------------------------------------------------------
r63831 | normal | 2018-07-03 09:29:06 +0900 (Tue, 03 Jul 2018) | 3 lines

test/ruby/test_signal.rb: speedup some test by disabling RubyGems

test_signame_delivered is reduced from 1.0s to 0.1s
------------------------------------------------------------------------
r63830 | svn | 2018-07-03 08:14:53 +0900 (Tue, 03 Jul 2018) | 1 line

* 2018-07-03
------------------------------------------------------------------------
r63829 | normal | 2018-07-03 08:14:52 +0900 (Tue, 03 Jul 2018) | 5 lines

process.c (waitpid_nogvl): start timer thread polling for lossy SIGCHLD

For systems with lossy SIGCHLD, an infinitely sleeping timer
thread needs to be aware of rb_waitpid callers in the first
place before it can check and reset polling status.
------------------------------------------------------------------------
r63828 | ngoto | 2018-07-02 22:50:53 +0900 (Mon, 02 Jul 2018) | 12 lines

Makefile.in: ARCH_FLAG may contain "-m64" etc.

* Makefile.in (mjit_config.h): ARCH_FLAG may contain "-m64", "-m32",
  "-march=i486" and so on, but the change made with r63232 only
  supports "-arch AAA -arch BBB" mainly used on Mac OS X.
  To solve the issue, ARCH_FLAG is parsed and the architectures
  specified in "-arch XXX" are added to $archs and the rest is
  stored to $arch_flag. The $arch_flag is defined as MJIT_ARCHFLAG
  if $archs is empty or the target architecture is not listed in $arch.
  Fix build failure on Solaris 10 with ./configure CFLAGS="-m64".
  [Bug #14876] [ruby-dev:50583]

------------------------------------------------------------------------
r63827 | kazu | 2018-07-02 20:11:39 +0900 (Mon, 02 Jul 2018) | 1 line

Use PRI_PIDT_PREFIX for results of getpid()
------------------------------------------------------------------------
r63823 | nobu | 2018-07-02 16:46:38 +0900 (Mon, 02 Jul 2018) | 4 lines

time.c: [DOC] Time#localtime

* time.c: state that Time#localtime does nothing when nothing
  changes.  [ruby-core:87675] [Bug #14880]
------------------------------------------------------------------------
r63822 | nobu | 2018-07-02 16:42:24 +0900 (Mon, 02 Jul 2018) | 4 lines

set up mjit.on at initialization

* ruby.c (cmdline_options_init): set up mjit.on flag by
  MJIT_FORCE_ENABLE in the initialization function.
------------------------------------------------------------------------
r63821 | svn | 2018-07-02 10:50:24 +0900 (Mon, 02 Jul 2018) | 1 line

* 2018-07-02
------------------------------------------------------------------------
r63820 | usa | 2018-07-02 10:50:23 +0900 (Mon, 02 Jul 2018) | 6 lines

get rid of a compiler warning of VC

* mjit.c (exec_prcess): use PRI_PIDT_PREFIX for pid.

* win32/Makefile.sub (PRI_PIDT_PREFIX): force to "I".

------------------------------------------------------------------------
r63816 | ktsj | 2018-07-01 17:12:14 +0900 (Sun, 01 Jul 2018) | 1 line

NEWS: add NEWS entry about Kernel#then [Feature #14594]
------------------------------------------------------------------------
r63815 | ktsj | 2018-07-01 17:12:13 +0900 (Sun, 01 Jul 2018) | 3 lines

lib/.document: add csv

lib/csv.rb was divided into lib/csv/*.
------------------------------------------------------------------------
r63814 | kazu | 2018-07-01 10:38:18 +0900 (Sun, 01 Jul 2018) | 1 line

Fix a typo [ci skip]
------------------------------------------------------------------------
r63813 | kazu | 2018-07-01 10:38:16 +0900 (Sun, 01 Jul 2018) | 1 line

Remove unused variable
------------------------------------------------------------------------
r63812 | svn | 2018-07-01 10:38:14 +0900 (Sun, 01 Jul 2018) | 1 line

* 2018-07-01
------------------------------------------------------------------------
r63811 | kazu | 2018-07-01 10:38:14 +0900 (Sun, 01 Jul 2018) | 4 lines

[DOC] newer codes recommend to use spaces only

[Bug #14246]
[ci skip]
------------------------------------------------------------------------
r63810 | eregon | 2018-06-30 22:53:10 +0900 (Sat, 30 Jun 2018) | 6 lines

Fix spec/ruby/command_line/rubylib_spec.rb for use with make test-spec

* Current code clears ENV['RUBYLIB'], but on Windows it's needed when
  running from build 'src' (or running make test-spec).
* Patch by MSP-Greg, from https://github.com/ruby/spec/pull/607.
* Imported manually to fix CI on Windows, without needing a full sync.
------------------------------------------------------------------------
r63803 | nobu | 2018-06-30 20:56:54 +0900 (Sat, 30 Jun 2018) | 4 lines

use sigsetjmp on macOS

SIGCHLD is used internally since r63758, the signal masks need to
be restored.
------------------------------------------------------------------------
r63802 | normal | 2018-06-30 17:38:36 +0900 (Sat, 30 Jun 2018) | 3 lines

fix r63799 ("test/ruby/test_rubyoptions.rb: improve diagnostics for failures")

CI machines are faster than mine :x
------------------------------------------------------------------------
r63801 | kazu | 2018-06-30 17:11:16 +0900 (Sat, 30 Jun 2018) | 1 line

[DOC] Use https: instead of http:, git: [ci skip]
------------------------------------------------------------------------
r63800 | kazu | 2018-06-30 17:10:58 +0900 (Sat, 30 Jun 2018) | 1 line

[DOC] Update URL of rurema [ci skip]
------------------------------------------------------------------------
r63799 | normal | 2018-06-30 16:53:31 +0900 (Sat, 30 Jun 2018) | 4 lines

test/ruby/test_rubyoptions.rb: improve diagnostics for failures

rubyci.org OSX CI instances seem to hang on this, but I'm not
sure why...
------------------------------------------------------------------------
r63798 | normal | 2018-06-30 16:52:51 +0900 (Sat, 30 Jun 2018) | 3 lines

test/ruby/test_optimization.rb: increase timeout

For slow systems...
------------------------------------------------------------------------
r63797 | normal | 2018-06-30 15:11:33 +0900 (Sat, 30 Jun 2018) | 5 lines

process.c: attempt to reap spawnvp (win32) result from mjit

Basically in win32, mjit.c seems to work directly on spawnvp
result while normal Ruby code wraps process handles to look
like *nix PIDs.  I'm only guessing, here...
------------------------------------------------------------------------
r63796 | normal | 2018-06-30 12:50:52 +0900 (Sat, 30 Jun 2018) | 5 lines

mjit: provide more diagnostics for waitpid failures

Also, enable check for defined(_WIN32) macro for SIGCHLD_LOSSY, too.

[Bug #14867]
------------------------------------------------------------------------
r63795 | normal | 2018-06-30 09:51:57 +0900 (Sat, 30 Jun 2018) | 6 lines

use SIGCHLD_LOSSY to enable waitpid polling mode

Some systems lack SIGCHLD or have incomplete SIGCHLD
implementations.  So enable polling mode for them.

[ruby-core:87705] [Bug #14867]
------------------------------------------------------------------------
r63794 | normal | 2018-06-30 07:20:12 +0900 (Sat, 30 Jun 2018) | 6 lines

test_thread.rb (test_thread_interrupt_for_killed_thread): reprieve for MJIT

With MJIT enabled, the exit (from SIGTERM) may take a long time
to complete.  Prevent EnvUtil.invoke_ruby from falling back to
other signals (SIGABRT) when Process.wait takes longer than the
default 1s reprieve.
------------------------------------------------------------------------
r63793 | normal | 2018-06-30 07:13:02 +0900 (Sat, 30 Jun 2018) | 5 lines

signal.c: use ATOMIC_EXCHANGE for sigchld_hit

sig_atomic_t may not be sufficient for multi-threaded
applications if the sighandler runs on a different CPU
than timer thread.
------------------------------------------------------------------------
r63792 | svn | 2018-06-30 06:01:24 +0900 (Sat, 30 Jun 2018) | 1 line

* 2018-06-30
------------------------------------------------------------------------
r63791 | normal | 2018-06-30 06:01:23 +0900 (Sat, 30 Jun 2018) | 5 lines

test/lib/test/unit/assertions.rb (assert_in_out_err): disable gems

RubyGems loading is still a bottleneck at startup and this speeds up
test/ruby/test_rubyoptions.rb test from 15s => 3.5s on the fastest
machine I have access to.
------------------------------------------------------------------------
r63790 | normal | 2018-06-29 17:51:33 +0900 (Fri, 29 Jun 2018) | 4 lines

process.c: handle errno correctly in non-SIGCHLD path

It's a bit redundant, but we optimize for platforms with
SIGCHLD, not without.
------------------------------------------------------------------------
r63789 | normal | 2018-06-29 16:52:24 +0900 (Fri, 29 Jun 2018) | 7 lines

process.c (waitpid_nogvl): check interrupts before sleeping

We may be interrupted by another thread after setting ubf,
but before we re-acquire interrupt_lock again to sleep on
w->cond.

This should fix test_wait_interrupt in test/ruby/test_process.rb
------------------------------------------------------------------------
r63788 | shyouhei | 2018-06-29 13:56:07 +0900 (Fri, 29 Jun 2018) | 2 lines

improve C0 coverage of insns.def

------------------------------------------------------------------------
r63787 | nobu | 2018-06-29 12:28:26 +0900 (Fri, 29 Jun 2018) | 1 line

rethrow the caught exception as-is
------------------------------------------------------------------------
r63786 | normal | 2018-06-29 11:53:11 +0900 (Fri, 29 Jun 2018) | 7 lines

test_process.rb (test_wait_exception): check assertion sooner

To diagnose f.puts => EPIPE failures in CI(*).  I'm not sure
what's wrong and can't reproduce EPIPE even with my slow laptop
from 2005.

(*) http://ci.rvm.jp/results/trunk_gcc5@silicon-docker/1058203
------------------------------------------------------------------------
r63785 | normal | 2018-06-29 11:21:08 +0900 (Fri, 29 Jun 2018) | 3 lines

process.c: fix typo in non-SIGCHLD waitpid :x

I expect this to fix [Bug #14873]
------------------------------------------------------------------------
r63784 | svn | 2018-06-29 08:47:00 +0900 (Fri, 29 Jun 2018) | 1 line

* 2018-06-29
------------------------------------------------------------------------
r63783 | nobu | 2018-06-29 08:46:59 +0900 (Fri, 29 Jun 2018) | 4 lines

rb_enc_alias

`rb_encdb`-prefixed functions are only for internal use.
use rb_enc_alias instead.
------------------------------------------------------------------------
r63782 | yui-knk | 2018-06-28 23:33:28 +0900 (Thu, 28 Jun 2018) | 3 lines

ast.c: Fix defs

* ast.c (node_children): Add mid to children
------------------------------------------------------------------------
r63781 | mame | 2018-06-28 23:18:56 +0900 (Thu, 28 Jun 2018) | 3 lines

Revert "rb_enc_alias"

This reverts commit r63779 which made test-spec fail.
------------------------------------------------------------------------
r63780 | nobu | 2018-06-28 22:22:13 +0900 (Thu, 28 Jun 2018) | 5 lines

Use nd_X shorthand for annotation

[Fix GH-1901]

From: hkdnet <satoko.itse@gmail.com>
------------------------------------------------------------------------
r63779 | nobu | 2018-06-28 22:18:52 +0900 (Thu, 28 Jun 2018) | 4 lines

rb_enc_alias

`rb_encdb`-prefixed functions are only for internal use.
use rb_enc_alias instead.
------------------------------------------------------------------------
r63778 | nobu | 2018-06-28 18:59:35 +0900 (Thu, 28 Jun 2018) | 1 line

fix feature name and removed a duplicate condition
------------------------------------------------------------------------
r63777 | ko1 | 2018-06-28 17:35:48 +0900 (Thu, 28 Jun 2018) | 20 lines

check enc_capable.

* encoding.c (rb_enc_capable): make it extern to check enc_capable.
  enc_index can be set to limited types such as T_STRING, T_REGEX
  and so on. This function check an object is this kind of types.

* include/ruby/encoding.h: ditto.

* encoding.c (enc_set_index): check a given object is enc_capable.

* include/ruby/encoding.h (PUREFUNC):

* marshal.c (encoding_name): check `rb_enc_capable` first.

* marshal.c (r_ivar): ditto. If it is not enc_capable, it should be
  malformed data.

* spec/ruby/optional/capi/encoding_spec.rb: remove tests depending
  on the wrong feature: all objects can set enc_index.

------------------------------------------------------------------------
r63776 | nobu | 2018-06-28 16:34:36 +0900 (Thu, 28 Jun 2018) | 4 lines

symbol.c: dsymbol initial encoding

* symbol.c (dsymbol_alloc): set encoding directly.  no need to
  check existing encoding in rb_enc_associate.
------------------------------------------------------------------------
r63775 | a_matsuda | 2018-06-28 12:48:52 +0900 (Thu, 28 Jun 2018) | 6 lines

Fix typo of file path [ci skip]

Patch by: yuuji.yaginuma <yuuji.yaginuma@gmail.com>

https://github.com/ruby/ruby/pull/1900
[Fix GH-1900]
------------------------------------------------------------------------
r63774 | normal | 2018-06-28 03:27:58 +0900 (Thu, 28 Jun 2018) | 5 lines

tests: increase timeouts and speedup some slow tests

I'm still using the computer from 2005, so enabling MJIT makes
some tests take longer.  For test_deadlock_by_signal_at_forking
I got it down to 135s to 89s by disabling RubyGems.
------------------------------------------------------------------------
r63773 | svn | 2018-06-28 00:56:56 +0900 (Thu, 28 Jun 2018) | 1 line

* 2018-06-28
------------------------------------------------------------------------
r63772 | hsbt | 2018-06-28 00:56:55 +0900 (Thu, 28 Jun 2018) | 7 lines

Added guard condition for old ruby about RubyVM::MJIT.

  Test libraries under the test/lib is used with default gems in
  their repositories. default gems may support old ruby like
  Ruby 2.5. When default gems invoke test libraries of Ruby core
  with old ruby, they raised
  `uninitialized constant RubyVM::MJIT (NameError)`
------------------------------------------------------------------------
r63771 | nobu | 2018-06-27 23:00:34 +0900 (Wed, 27 Jun 2018) | 1 line

use the prefixed macro
------------------------------------------------------------------------
r63770 | nobu | 2018-06-27 22:42:49 +0900 (Wed, 27 Jun 2018) | 1 line

use rb_pid_t instead of pid_t
------------------------------------------------------------------------
r63769 | eregon | 2018-06-27 22:41:29 +0900 (Wed, 27 Jun 2018) | 1 line

Update to ruby/spec@98c7d74
------------------------------------------------------------------------
r63768 | eregon | 2018-06-27 21:30:05 +0900 (Wed, 27 Jun 2018) | 1 line

Update to ruby/spec@a454137
------------------------------------------------------------------------
r63767 | eregon | 2018-06-27 20:37:31 +0900 (Wed, 27 Jun 2018) | 3 lines

Update to ruby/spec@41068a6

* Only small fixes to specs from CRuby to review the diff more easily.
------------------------------------------------------------------------
r63766 | eregon | 2018-06-27 20:37:19 +0900 (Wed, 27 Jun 2018) | 1 line

Update to ruby/mspec@7074b56
------------------------------------------------------------------------
r63765 | ko1 | 2018-06-27 19:36:49 +0900 (Wed, 27 Jun 2018) | 6 lines

remove assertion for hidden objects.

* vm_insnhelper.h (PUSH): r63763 increase "PUSH()" op and it reveals that
  there are hidden objects (at least T_IMEMO/iseq objects) are located
  on VM stack. Remove this check and I'll revisit it later.

------------------------------------------------------------------------
r63764 | normal | 2018-06-27 19:09:33 +0900 (Wed, 27 Jun 2018) | 9 lines

process.c (waitpid_wait): do not set ECHILD prematurely

It is possible to have both MJIT and normal child processes
alive, so we cannot set ECHILD based on such a guess.  We can
still elide waitpid(PID <= 0) calls if we have callers in
vm->waiting_pids, however.

For specs, ensure Process.waitall does not leak MJIT
PIDs to Rubyspace.
------------------------------------------------------------------------
r63763 | shyouhei | 2018-06-27 18:28:09 +0900 (Wed, 27 Jun 2018) | 11 lines

give up insn attr handles_frame

I introduced this mechanism in r62051 to speed things up. Later it
was reported that the change causes problems.  I searched for
workarounds but nothing seemed appropriate.  I hereby officially
give it up.  The idea to move ADD_PC around was a mistake.

Fixes [Bug #14809] and [Bug #14834].

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

------------------------------------------------------------------------
r63762 | normal | 2018-06-27 17:24:10 +0900 (Wed, 27 Jun 2018) | 5 lines

signal.c: fix braino in fake_grantfd

[Bug #14871]

Is neon down?  I missed ruby-core notifications on this.
------------------------------------------------------------------------
r63761 | normal | 2018-06-27 15:01:33 +0900 (Wed, 27 Jun 2018) | 3 lines

s/pid_t/rb_pid_t/

Some platforms do not have pid_t :x
------------------------------------------------------------------------
r63760 | normal | 2018-06-27 12:16:59 +0900 (Wed, 27 Jun 2018) | 3 lines

Revert "spec: skip Process wait specs on MJIT"

This reverts r63731 (commit 359dd59db2512d801bb983f98bede4fc598f139a).
------------------------------------------------------------------------
r63759 | normal | 2018-06-27 12:16:54 +0900 (Wed, 27 Jun 2018) | 3 lines

Revert "test_process.rb: skip tests for Bug 14867"

This reverts r63740 (commit 042395a7f7262464265ce70cdffbe1812aa145d3).
------------------------------------------------------------------------
r63758 | normal | 2018-06-27 12:14:30 +0900 (Wed, 27 Jun 2018) | 38 lines

hijack SIGCHLD handler for internal use

Use a global SIGCHLD handler to guard all callers of rb_waitpid.
To work safely with multi-threaded programs, we introduce a
VM-wide waitpid_lock to be acquired BEFORE fork/vfork spawns the
process.  This is to be combined with the new ruby_waitpid_locked
function used by mjit.c in a non-Ruby thread.

Ruby-level SIGCHLD handlers registered with Signal.trap(:CHLD)
continues to work as before and there should be no regressions
in any existing use cases.

Splitting the wait queues for PID > 0 and groups (PID <= 0)
ensures we favor PID > 0 callers.

The disabling of SIGCHLD in rb_f_system is longer necessary,
as we use deferred signal handling and no longer make ANY
blocking waitpid syscalls in other threads which could "beat"
the waitpid call made by rb_f_system.

We prevent SIGCHLD from firing in normal Ruby Threads and only
enable it in the timer-thread, to prevent spurious wakeups
from in test/-ext-/gvl/test_last_thread.rb with MJIT enabled.

I've tried to guard as much of the code for RUBY_SIGCHLD==0
using C "if" statements rather than CPP "#if" so to reduce
the likelyhood of portability problems as the compiler will
see more code.

We also work to suppress false-positives from
Process.wait(-1, Process::WNOHANG) to quiets warnings from
spec/ruby/core/process/wait2_spec.rb with MJIT enabled.

Lastly, we must implement rb_grantpt for ext/pty.  We need a
MJIT-compatible way of supporting grantpt(3) which may spawn
the `pt_chown' binary and call waitpid(2) on it.

[ruby-core:87605] [Ruby trunk Bug#14867]
------------------------------------------------------------------------
r63757 | mame | 2018-06-27 11:37:26 +0900 (Wed, 27 Jun 2018) | 7 lines

Revert "bootstraptest/runner: speed up assert_finish by avoiding sleep"

This reverts commit r63754.
Many CI servers still use old ruby as base ruby which does not support
read_nonblock.

https://rubyci.org/logs/www.rubyist.net/~akr/chkbuild/debian/ruby-trunk/log/20180627T013100Z.fail.html.gz
------------------------------------------------------------------------
r63756 | shyouhei | 2018-06-27 10:10:02 +0900 (Wed, 27 Jun 2018) | 4 lines

refactor move logics out of insns.def

This is a pure refactoring.  I see no difference in this change.

------------------------------------------------------------------------
r63755 | shyouhei | 2018-06-27 09:57:16 +0900 (Wed, 27 Jun 2018) | 4 lines

move function declarations from insns.def to internal.h

Just avoid being loose.

------------------------------------------------------------------------
r63754 | normal | 2018-06-27 08:44:00 +0900 (Wed, 27 Jun 2018) | 4 lines

bootstraptest/runner: speed up assert_finish by avoiding sleep

We may use IO.select to watch for process exit.  This speeds up
"make test" by 2 seconds for me.
------------------------------------------------------------------------
r63753 | svn | 2018-06-27 00:56:09 +0900 (Wed, 27 Jun 2018) | 1 line

* 2018-06-27
------------------------------------------------------------------------
r63752 | k0kubun | 2018-06-27 00:56:08 +0900 (Wed, 27 Jun 2018) | 6 lines

test: skip 2 major unstable tests with MJIT

for CI with cppflags=-DMJIT_FORCE_ENABLE.

Since I have no idea to fix this immediately, let me skip this for now
and take a look later.
------------------------------------------------------------------------
r63751 | k0kubun | 2018-06-25 23:15:26 +0900 (Mon, 25 Jun 2018) | 3 lines

mjit_compile.inc.erb: drop unnecessary variable

It never becomes `dispatched: true` with the current code.
------------------------------------------------------------------------
r63750 | watson1978 | 2018-06-25 22:18:44 +0900 (Mon, 25 Jun 2018) | 4 lines

test_range.rb: add tests to improve coverage

This patch will improve the result of line coverage from 91.3% to 95.0%.
[Fix GH-1899]
------------------------------------------------------------------------
r63749 | naruse | 2018-06-25 21:11:31 +0900 (Mon, 25 Jun 2018) | 3 lines

increase body size

To try to block writing on travis.
------------------------------------------------------------------------
r63748 | normal | 2018-06-25 16:57:39 +0900 (Mon, 25 Jun 2018) | 5 lines

mjit.c: hide path search error behind verbose()

Before r63744, we let execvp(3) fail instead and it was quiet.
The verbosity was causing test_search to fail in
test/ruby/test_rubyoptions.rb when PATH is set to /tmp.
------------------------------------------------------------------------
r63747 | shyouhei | 2018-06-25 12:14:48 +0900 (Mon, 25 Jun 2018) | 2 lines

comma at the end of enum is a C99ism

------------------------------------------------------------------------
r63746 | normal | 2018-06-25 11:52:34 +0900 (Mon, 25 Jun 2018) | 5 lines

mjit.c: avoid signed pointer comparisons (fix for 32-bit)

ptrdiff_t is a signed type, use uintptr_t instead for unsigned
comparisons.  This is needed to allow MJIT tests to pass on
32-bit x86 GNU/Linux.
------------------------------------------------------------------------
r63745 | normal | 2018-06-25 11:52:29 +0900 (Mon, 25 Jun 2018) | 10 lines

mjit.c: set PIC flags on clang for FreeBSD and glibc

This seems required on FreeBSD 11.1 (clang 4.0.0) and
Debian stretch (clang 3.8.1) for shared libraries.

Note: Not checking __linux__ because there are statically-linked
Linux distros (I don't know if they can support MJIT).  But
glibc doesn't support static linking, so we guard on that.

Maybe other platforms will need this, too.
------------------------------------------------------------------------
r63744 | normal | 2018-06-25 10:06:15 +0900 (Mon, 25 Jun 2018) | 8 lines

mjit.c: avoid execvp PATH lookup in vfork-ed child

execvp(3) is not async-signal-safe and may alter libc internal
states (e.g. those used by malloc).  However execv(3) is
async-signal-safe as of POSIX.1-2008.

So perform the PATH lookup in the parent and use execv(3)
in the child.
------------------------------------------------------------------------
r63743 | svn | 2018-06-25 07:08:16 +0900 (Mon, 25 Jun 2018) | 1 line

* 2018-06-25
------------------------------------------------------------------------
r63742 | normal | 2018-06-25 07:08:15 +0900 (Mon, 25 Jun 2018) | 9 lines

UNIXSocket#recv_io: trigger GC when out of FDs

Make this behavior is consistent with our other FD-allocating
methods.

EMFILE and ENFILE are not documented nor can I trigger them when
using UNIXSocket#recv_io.  However, ENOMEM is documented, and
I've triggered EMSGSIZE on FreeBSD and truncated messages when
an EMFILE condition is hit on my system.
------------------------------------------------------------------------
r63741 | normal | 2018-06-24 21:36:44 +0900 (Sun, 24 Jun 2018) | 7 lines

process.c (ruby_fork_ruby): fix race in signal handling

We must block signals before stopping timer-thread, otherwise
signal handing may be delayed until (and if) another signal
is received after timer-thread is restarted.

[ruby-core:87622] [Bug #14868] [Bug #13916]
------------------------------------------------------------------------
r63740 | k0kubun | 2018-06-24 20:07:44 +0900 (Sun, 24 Jun 2018) | 1 line

test_process.rb: skip tests for Bug 14867
------------------------------------------------------------------------
r63739 | normal | 2018-06-24 19:30:48 +0900 (Sun, 24 Jun 2018) | 4 lines

process.c (after_fork_ruby): make it a proper function

Improves readability to me, and there's no point in using
macros for this with decent compilers.
------------------------------------------------------------------------
r63738 | mame | 2018-06-24 18:31:09 +0900 (Sun, 24 Jun 2018) | 6 lines

test/net/http/test_httpresponse.rb: add testcases for net/httpresponse

This change adds testcases for Response#inspect and #code_type, and
improves line coverage of lib/net/http/response.rb (91.8 % to 92.94 %).

A patch from @owlworks.  https://github.com/ruby/ruby/pull/1898
------------------------------------------------------------------------
r63737 | mame | 2018-06-24 18:31:07 +0900 (Sun, 24 Jun 2018) | 10 lines

lib/prime.rb: remove unused methods

This change removes TrialDivision#cache, TrialDivision#primes, and
TrialDivision#primes_so_far.

TrialDivision class is undocumented officially, so this class is used
only internally.  Yugui san moved prime library from mathn to prime in
2008, and then she might forget to delete these methods.

A patch from @shio-phys.  https://github.com/ruby/prime/pull/4
------------------------------------------------------------------------
r63736 | svn | 2018-06-24 18:31:07 +0900 (Sun, 24 Jun 2018) | 1 line

* 2018-06-24
------------------------------------------------------------------------
r63735 | mame | 2018-06-24 18:31:06 +0900 (Sun, 24 Jun 2018) | 4 lines

test/test_prime.rb: add testcases of prime library

This change improves line coverage of prime.rb from 86% to 99%.
A patch from @shio-phys.  https://github.com/ruby/prime/pull/3
------------------------------------------------------------------------
r63734 | k0kubun | 2018-06-23 23:11:19 +0900 (Sat, 23 Jun 2018) | 8 lines

mjit.c: disable calling JIT-ed code

when TracePoint is enabled. We're cancelling JIT-ed code execution AFTER
each instruction, but there is no guard before the first insn of method.

To prevent spoiling performance, I don't want to modify the JIT-ed code
to fix this. So this commit replaces `mjit_enabled` check with `mjit_call_p`
check.
------------------------------------------------------------------------
r63733 | tarui | 2018-06-23 22:58:51 +0900 (Sat, 23 Jun 2018) | 4 lines

gc.c (ruby_mimmalloc): add initialize code for USE_GC_MALLOC_OBJ_INFO_DETAILS

We often had SEGV in ruby_xfree when USE_GC_MALLOC_OBJ_INFO_DETAILS is 1

------------------------------------------------------------------------
r63732 | k0kubun | 2018-06-23 22:41:06 +0900 (Sat, 23 Jun 2018) | 9 lines

mjit.c: unify the variable name with method name

`RubyVM::MJIT.enabled?`.

It's set to be TRUE even before initialization is finished.
So it was actually not "mjit initialized predicate".

This flag is also used to check whether JIT-ed code should be called
or not, but I'm going to split the responsibility to another flag.
------------------------------------------------------------------------
r63731 | k0kubun | 2018-06-23 17:29:20 +0900 (Sat, 23 Jun 2018) | 4 lines

spec: skip Process wait specs on MJIT

until [Bug #14867] is fixed. I want to start running CI with MJIT
enabled before fixing the problem.
------------------------------------------------------------------------
r63730 | k0kubun | 2018-06-23 16:21:12 +0900 (Sat, 23 Jun 2018) | 12 lines

mjit.c: initial cygwin support

thread_pthread.c: Drop pthread_attr_setscope usage. It seems that,
at least on Linux and macOS, PTHREAD_SCOPE_PROCESS is not supported
and thus PTHREAD_SCOPE_SYSTEM should be used by default.

Let's just stop calling this until we find some platform that needs
`pthread_attr_setscope(&attr, PTHREAD_SCOPE_SYSTEM)`.

[Misc #14854]

From: fd0 (Daisuke Fujimura)
------------------------------------------------------------------------
r63729 | ktsj | 2018-06-23 13:57:49 +0900 (Sat, 23 Jun 2018) | 1 line

[DOC] Add call signature for {Array,Hash}#any?
------------------------------------------------------------------------
r63728 | ktsj | 2018-06-23 13:56:49 +0900 (Sat, 23 Jun 2018) | 5 lines

test/ruby/test_settracefunc.rb: fix NoMethodError

* test/ruby/test_settracefunc.rb (test_trace_point_raising_exception_in_bmethod_call):
  this test run in separate process, so #target_thread? is not defined and it doesn't
  need target thread check.
------------------------------------------------------------------------
r63727 | ktsj | 2018-06-23 13:52:58 +0900 (Sat, 23 Jun 2018) | 6 lines

vm.c: fix infinite loop

* vm.c: use EXEC_EVENT_HOOK_AND_POP_FRAME. While exception handling, if an exception
  is raised in hooks, need to pop current frame and raise this raised exception by hook.

[ruby-dev:50582] [Bug #14865]
------------------------------------------------------------------------
r63726 | ktsj | 2018-06-23 13:45:57 +0900 (Sat, 23 Jun 2018) | 1 line

vm.c: fix typo in function name
------------------------------------------------------------------------
r63725 | svn | 2018-06-23 12:47:55 +0900 (Sat, 23 Jun 2018) | 1 line

* 2018-06-23
------------------------------------------------------------------------
r63724 | normal | 2018-06-23 12:47:54 +0900 (Sat, 23 Jun 2018) | 5 lines

thread_pthread.c (native_sleep): do not clear unblock.arg

It is unnecessary to clear unblock.arg once unblock.func is
cleared, and unblock_function_clear in thread.c doesn't
touch it, either.
------------------------------------------------------------------------
r63723 | naruse | 2018-06-22 20:57:06 +0900 (Fri, 22 Jun 2018) | 1 line

remove debug print
------------------------------------------------------------------------
r63722 | naruse | 2018-06-22 20:10:56 +0900 (Fri, 22 Jun 2018) | 3 lines

check net.core.wmem_default and max instead of tcp

https://travis-ci.org/ruby/ruby/jobs/395416137
------------------------------------------------------------------------
r63721 | naruse | 2018-06-22 19:53:03 +0900 (Fri, 22 Jun 2018) | 3 lines

show net.ipv4.tcp_wmem to debug failure on travis

https://travis-ci.org/ruby/ruby/builds/395318841
------------------------------------------------------------------------
r63720 | normal | 2018-06-22 17:47:12 +0900 (Fri, 22 Jun 2018) | 7 lines

dir.c: define O_CLOEXEC for older systems

SuSE 10 has openat(), but not O_CLOEXEC

Reported-by: wangpeiwen

[ruby-core:87591] [Bug #14864]
------------------------------------------------------------------------
r63719 | normal | 2018-06-22 15:17:15 +0900 (Fri, 22 Jun 2018) | 4 lines

thread.c (sleep_timespec): avoid needless update w/o spuriuos check

No point in wasting cycles updating the timespec when not
checking on spurious wakeups.
------------------------------------------------------------------------
r63718 | nobu | 2018-06-22 13:13:02 +0900 (Fri, 22 Jun 2018) | 11 lines

remove DISABLE_RUBYGEMS from config files

* configure.ac: removed DISABLE_RUBYGEMS macro from config.h, not
  to rebuild everything when the flag changed.

* configure.ac, win32/configure.bat: make USE_RUBYGEMS lowercase.

* tool/mkconfig.rb: remove RUBYGEMS stuff from rbconfig.rb, not to
  reconfigure and rebuild all extension libraries.

* Makefile.in (CPPFLAGS): enable/disable Rubygems by USE_RUBYGEMS.
------------------------------------------------------------------------
r63717 | mame | 2018-06-22 12:07:24 +0900 (Fri, 22 Jun 2018) | 1 line

test/ruby/test_range.rb: add a test for endless range's min with comparison
------------------------------------------------------------------------
r63716 | mame | 2018-06-22 11:58:40 +0900 (Fri, 22 Jun 2018) | 4 lines

range.c: Range#last and #max raises a RangeError if it is endless

Also, Range#min raises an error if it is endless and a comparison method
is specified.
------------------------------------------------------------------------
r63715 | mame | 2018-06-22 11:58:39 +0900 (Fri, 22 Jun 2018) | 3 lines

range.c: Range#size now returns Float::INFINITY if it is endless

Fixes [Bug #14699]
------------------------------------------------------------------------
r63714 | mame | 2018-06-22 11:58:37 +0900 (Fri, 22 Jun 2018) | 3 lines

range.c: Range#to_a now raises RangeError if it is endless

Fixes [Bug #14845]
------------------------------------------------------------------------
r63713 | normal | 2018-06-22 11:43:51 +0900 (Fri, 22 Jun 2018) | 4 lines

vm_core.h (rb_vm_t): make sleeper non-volatile

vm->sleeper is never modified in signal handlers or without GVL,
so there's no need for volatile hocus-pocus.
------------------------------------------------------------------------
r63712 | svn | 2018-06-22 11:32:32 +0900 (Fri, 22 Jun 2018) | 1 line

* 2018-06-22
------------------------------------------------------------------------
r63711 | normal | 2018-06-22 11:32:30 +0900 (Fri, 22 Jun 2018) | 4 lines

thread_sync.c (rb_mutex_lock): fix deadlock

* thread_sync.c (rb_mutex_lock): fix deadlock
  [ruby-core:87467] [Bug #14841]
------------------------------------------------------------------------
r63710 | k0kubun | 2018-06-21 23:04:05 +0900 (Thu, 21 Jun 2018) | 3 lines

mjit.c: RubyVM::MJIT.pause / RubyVM::MJIT.resume

[Feature #14830]
------------------------------------------------------------------------
r63709 | normal | 2018-06-21 08:38:21 +0900 (Thu, 21 Jun 2018) | 4 lines

thread_pthread.c: fix non-sleepy timer-thread with fork

This fixes bootstraptest/test_fork.rb for systems with
sleepy timer thread disabled.
------------------------------------------------------------------------
r63708 | normal | 2018-06-21 08:38:16 +0900 (Thu, 21 Jun 2018) | 6 lines

test/ruby/test_io.rb: fix timing sensitive test

For systems with sleepy timer thread disabled, the signal
handler does not fire soon enough and we need to ensure the
signal is received before we check its value.  So use a
self-pipe here.
------------------------------------------------------------------------
r63707 | svn | 2018-06-21 03:10:10 +0900 (Thu, 21 Jun 2018) | 1 line

* 2018-06-21
------------------------------------------------------------------------
r63706 | ko1 | 2018-06-21 03:10:09 +0900 (Thu, 21 Jun 2018) | 1 line

add assertion to vm_search_method()
------------------------------------------------------------------------
r63705 | hsbt | 2018-06-20 21:51:38 +0900 (Wed, 20 Jun 2018) | 3 lines

ConditionVariable and Queue is not standard library.

  They are located under the Thread class.
------------------------------------------------------------------------
r63704 | yui-knk | 2018-06-20 21:40:59 +0900 (Wed, 20 Jun 2018) | 4 lines

test_ast.rb: Remove a needless line

`RubyVM::AST.parse_file` was fixed to raise `SyntaxError`
by r63602. So this line is needless.
------------------------------------------------------------------------
r63703 | yui-knk | 2018-06-20 21:11:25 +0900 (Wed, 20 Jun 2018) | 3 lines

test_ast.rb: Fix an argument of `grep`, child is a `RubyVM::AST::Node`

Yusuke Endoh pointed out coverage of ast module is very low. Thanks!
------------------------------------------------------------------------
r63702 | nobu | 2018-06-20 20:14:08 +0900 (Wed, 20 Jun 2018) | 1 line

skip when group name is not found
------------------------------------------------------------------------
r63701 | ko1 | 2018-06-20 16:53:29 +0900 (Wed, 20 Jun 2018) | 8 lines

Introduce `USE_GC_MALLOC_OBJ_INFO_DETAILS`. [Feature #14857]

* include/ruby/defines.h: introduce `USE_GC_MALLOC_OBJ_INFO_DETAILS`
  to show malloc statistics by replace ruby_xmalloc() and so on with
  macros.

* gc.c (struct malloc_obj_info): introduced to save per-malloc information.

------------------------------------------------------------------------
r63700 | hsbt | 2018-06-20 16:16:25 +0900 (Wed, 20 Jun 2018) | 1 line

Thread is always provided at current ruby version.
------------------------------------------------------------------------
r63699 | svn | 2018-06-20 08:20:37 +0900 (Wed, 20 Jun 2018) | 1 line

* 2018-06-20
------------------------------------------------------------------------
r63698 | normal | 2018-06-20 08:20:36 +0900 (Wed, 20 Jun 2018) | 13 lines

lib/drb/extservm.rb (service): do not return `false'

invoke_service_command may set entries in @servers to `false',
making it incompatible with the intended use of the
safe navigation operator.

This caused occasional DRb test failures, but they were hidden
with automatic retry.

[ruby-core:87524] [Bug #14856]

Fixes: r53111 ("use safe navigation operator")
	commit 059c9c1cf371e049c7481c78b76e9620da52757f [GH-1142]
------------------------------------------------------------------------
r63697 | nobu | 2018-06-19 17:45:17 +0900 (Tue, 19 Jun 2018) | 1 line

describe about NameError by #private_constant
------------------------------------------------------------------------
r63696 | nobu | 2018-06-19 17:15:52 +0900 (Tue, 19 Jun 2018) | 5 lines

variable.c: fix receiver on private constant

* variable.c (rb_const_search): fix NameError :receiver attribute
  on private constant, should raise with the included module, not
  the ICLASS.
------------------------------------------------------------------------
r63695 | normal | 2018-06-19 16:12:43 +0900 (Tue, 19 Jun 2018) | 3 lines

gc.c (gc_verify_heap_pages): fix no-op on heap_eden->pages

Shouldn't affect production use, but good to fix regardless :>
------------------------------------------------------------------------
r63694 | ko1 | 2018-06-19 11:46:10 +0900 (Tue, 19 Jun 2018) | 8 lines

NULL class Data_Wrap_Struct is not allowed.

* spec/ruby/optional/capi/typed_data_spec.rb: same as r63692.

* spec/ruby/optional/capi/ext/typed_data_spec.c: ditto.

* vm_insnhelper.h (PUSH): re-enable assertion to check hidden objects.

------------------------------------------------------------------------
r63693 | svn | 2018-06-19 08:19:39 +0900 (Tue, 19 Jun 2018) | 1 line

* 2018-06-19
------------------------------------------------------------------------
r63692 | nobu | 2018-06-19 08:19:38 +0900 (Tue, 19 Jun 2018) | 4 lines

Removed unobservable behavior

The klass for Data_Wrap_Struct can be NULL, but it MUST NOT appear
in the Ruby level.  It is only for the C level implementation.
------------------------------------------------------------------------
r63688 | ko1 | 2018-06-18 17:30:03 +0900 (Mon, 18 Jun 2018) | 1 line

remvoe assertion because rubyspec hit this assert
------------------------------------------------------------------------
r63687 | ko1 | 2018-06-18 16:41:22 +0900 (Mon, 18 Jun 2018) | 5 lines

hidden objects should not be pushed.

* vm_insnhelper.h (PUSH): hidden objects (klass == 0) should not be pushed
  to a VM value stack. Add assertion for it.

------------------------------------------------------------------------
r63686 | svn | 2018-06-18 00:42:36 +0900 (Mon, 18 Jun 2018) | 1 line

* 2018-06-18
------------------------------------------------------------------------
r63685 | kazu | 2018-06-18 00:42:35 +0900 (Mon, 18 Jun 2018) | 1 line

Remove needless closed?
------------------------------------------------------------------------
r63684 | nobu | 2018-06-17 19:17:39 +0900 (Sun, 17 Jun 2018) | 4 lines

openssl_missing.h: constified

* ext/openssl/openssl_missing.h (IMPL_KEY_ACCESSOR{2,3}):
  constified obj argument getters.
------------------------------------------------------------------------
r63683 | normal | 2018-06-17 12:27:45 +0900 (Sun, 17 Jun 2018) | 4 lines

thread_pthread.c: microptimize vm->gvl.waiting checks

"gvl.waiting" is volatile, so the compiler won't perform
these optimizations for us.
------------------------------------------------------------------------
r63682 | normal | 2018-06-17 11:56:28 +0900 (Sun, 17 Jun 2018) | 5 lines

thread_pthread.c: fix non-sleepy timer thread build

I guess everybody has poll() and fcntl() nowadays, as
the non-sleepy timer thread build has been broken for
years, now.
------------------------------------------------------------------------
r63681 | nobu | 2018-06-17 11:42:46 +0900 (Sun, 17 Jun 2018) | 1 line

EXTOBJS should be included in DLDOBJS
------------------------------------------------------------------------
r63680 | nobu | 2018-06-17 11:41:26 +0900 (Sun, 17 Jun 2018) | 4 lines

share Float 0

* complex.c (RFLOAT_0): share the 0.0 object on non-flonum
  platforms.
------------------------------------------------------------------------
r63679 | nobu | 2018-06-17 11:40:32 +0900 (Sun, 17 Jun 2018) | 5 lines

Makefile.in: MJIT_DLDFLAGS

* Makefile.in (mjit_config.h): needs -arch flag to link, as well
  as precompiling the header, when compiling for i386 on x86_64
  mac.
------------------------------------------------------------------------
r63678 | nobu | 2018-06-17 11:37:32 +0900 (Sun, 17 Jun 2018) | 9 lines

refine Integer#** and Float#**

* complex.c (rb_dbl_complex_polar): utility function, which
  returns more precise value in right angle cases.

* bignum.c (rb_big_pow): use rb_dbl_complex_polar().

* numeric.c (rb_float_pow, fix_pow): create a Complex by polar
  form.
------------------------------------------------------------------------
r63677 | nobu | 2018-06-17 10:24:25 +0900 (Sun, 17 Jun 2018) | 4 lines

compare with correct values

* spec/ruby/shared/rational/exponent.rb: compare with
  mathematically expected values without errors.
------------------------------------------------------------------------
r63676 | nobu | 2018-06-17 10:07:27 +0900 (Sun, 17 Jun 2018) | 4 lines

refine Integer#**

* numeric.c (fix_pow): calculate the denominator, exponent of
  self.
------------------------------------------------------------------------
r63675 | svn | 2018-06-17 08:22:44 +0900 (Sun, 17 Jun 2018) | 1 line

* 2018-06-17
------------------------------------------------------------------------
r63674 | nobu | 2018-06-17 08:22:42 +0900 (Sun, 17 Jun 2018) | 1 line

mjit.c: measure time more precisely
------------------------------------------------------------------------
r63673 | svn | 2018-06-16 17:27:57 +0900 (Sat, 16 Jun 2018) | 1 line

* 2018-06-16
------------------------------------------------------------------------
r63672 | normal | 2018-06-16 17:27:56 +0900 (Sat, 16 Jun 2018) | 9 lines

thread.c (timeout_prepare): common function

I can't seem to reproduce the maybe-uninitialized warning on
gcc 7 or 8 on Debian sid (7.3.0-16 / 8-20180425-1 r259628),
so the guard from r62305 is dropped.

* thread.c (timeout_prepare): hoist out from do_select
  (do_select): ditto
  (rb_wait_for_single_fd): use timeout_prepare
------------------------------------------------------------------------
r63671 | nobu | 2018-06-15 19:35:13 +0900 (Fri, 15 Jun 2018) | 4 lines

gettimeofday is obsolete

* test/ruby/test_process.rb gettimeofday is obsolete in SUSv4, and
  may not be available in the future.
------------------------------------------------------------------------
r63670 | nobu | 2018-06-15 19:15:40 +0900 (Fri, 15 Jun 2018) | 1 line

win32/Makefile.sub: gettimeofday is defined in win32.c
------------------------------------------------------------------------
r63669 | mame | 2018-06-15 17:53:17 +0900 (Fri, 15 Jun 2018) | 1 line

Remove flip-flop usages from build scripts
------------------------------------------------------------------------
r63668 | mame | 2018-06-15 17:53:16 +0900 (Fri, 15 Jun 2018) | 1 line

Remove warnings of flip-flop deprecation from tests and specs
------------------------------------------------------------------------
r63667 | mame | 2018-06-15 17:53:15 +0900 (Fri, 15 Jun 2018) | 3 lines

parse.y: Deprecate flip-flops

Ref #5400
------------------------------------------------------------------------
r63666 | kazu | 2018-06-15 09:19:05 +0900 (Fri, 15 Jun 2018) | 1 line

Update obsoleted URLs of supported platforms [ci skip]
------------------------------------------------------------------------
r63665 | svn | 2018-06-15 09:06:34 +0900 (Fri, 15 Jun 2018) | 1 line

* 2018-06-15
------------------------------------------------------------------------
r63664 | nobu | 2018-06-15 09:06:33 +0900 (Fri, 15 Jun 2018) | 5 lines

Bootstrapping ruby runtime might not have RubyVM::MJIT defined.

[Fix GH-1891]

From: U-DESKTOP-RLT5UQ8\moriyoshi <mozo@mozo.jp>
------------------------------------------------------------------------
r63663 | nobu | 2018-06-14 22:10:25 +0900 (Thu, 14 Jun 2018) | 8 lines

prefer clock_gettime

* configure.ac: clock_gettime or gettimeofday must exist.

* process.c (rb_clock_gettime): prefer clock_gettime over
  gettimeofday, as the latter is obsolete in SUSv4.

* random.c (fill_random_seed): ditto.
------------------------------------------------------------------------
r63662 | kazu | 2018-06-14 20:12:49 +0900 (Thu, 14 Jun 2018) | 1 line

README.ja.md: Add link to downloads [ci skip]
------------------------------------------------------------------------
r63661 | usa | 2018-06-14 18:01:38 +0900 (Thu, 14 Jun 2018) | 6 lines

Get rid of warnings of test/spec

* lib/net/http/exceptions.rb: revert a part of r63590.  to deprecate
  Net::ProtoServerError seems to be wrong.
  see [ruby-core:87488] [Feature#14688]

------------------------------------------------------------------------
r63660 | nobu | 2018-06-14 16:09:02 +0900 (Thu, 14 Jun 2018) | 6 lines

bignum.c: get rid of redefined method

* bignum.c (int_pow_tmp3): get rid of redefined Integer#> on
  internal calculations, as well as the GMP version.

* bignum.c (rb_int_powm): ditto.
------------------------------------------------------------------------
r63659 | usa | 2018-06-14 15:41:09 +0900 (Thu, 14 Jun 2018) | 6 lines

HTTPServerException is deprecated

* spec/ruby/library/net/http/HTTPClientException_spec.rb: add.
* spec/ruby/library/net/http/HTTPServerException_spec.rb: check deprecated message.
* spec/ruby/library/net/http/httpresponse/*_spec.rb: use HTTPClientException instead of HTTPServerException.

------------------------------------------------------------------------
r63658 | mame | 2018-06-14 15:36:40 +0900 (Thu, 14 Jun 2018) | 4 lines

test/rubygems/test_gem_dependency_installer.rb: Avoid Dir.chdir + block

This caused a warning "conflicting chdir during another chdir block"
during "make test-all".
------------------------------------------------------------------------
r63657 | nobu | 2018-06-14 12:18:10 +0900 (Thu, 14 Jun 2018) | 1 line

.gdbinit: expand RBASIC macro for old gdb on mac
------------------------------------------------------------------------
r63656 | svn | 2018-06-14 06:58:55 +0900 (Thu, 14 Jun 2018) | 1 line

* properties.
------------------------------------------------------------------------
r63655 | svn | 2018-06-14 06:58:55 +0900 (Thu, 14 Jun 2018) | 1 line

* append newline at EOF.
------------------------------------------------------------------------
r63654 | eregon | 2018-06-14 06:58:54 +0900 (Thu, 14 Jun 2018) | 3 lines

Update to ruby/spec@4bb0f25

* Specs added by TruffleRuby.
------------------------------------------------------------------------
r63653 | svn | 2018-06-14 06:41:47 +0900 (Thu, 14 Jun 2018) | 1 line

* properties.
------------------------------------------------------------------------
r63652 | eregon | 2018-06-14 06:41:45 +0900 (Thu, 14 Jun 2018) | 1 line

Update to ruby/spec@4bc7a2b
------------------------------------------------------------------------
r63651 | svn | 2018-06-14 06:17:48 +0900 (Thu, 14 Jun 2018) | 1 line

* 2018-06-14
------------------------------------------------------------------------
r63650 | eregon | 2018-06-14 06:17:48 +0900 (Thu, 14 Jun 2018) | 5 lines

Fix condition in Kernel#warn when using uplevel

* It causes SEGV on `warn("foo", uplevel: 100)`.
* Found in a ruby/spec added by @andrykonchin in
  https://github.com/ruby/spec/pull/605
------------------------------------------------------------------------
r63649 | mame | 2018-06-13 20:00:28 +0900 (Wed, 13 Jun 2018) | 4 lines

Revert "range.c: prohibit `(1..nil)`"

This reverts commit a44c010764a16ae09aaed49d76eec055ca0057c8.
Refs #14845.
------------------------------------------------------------------------
r63648 | kazu | 2018-06-13 19:27:17 +0900 (Wed, 13 Jun 2018) | 3 lines

Remove sunsetting FTP site

ref #14842
------------------------------------------------------------------------
r63647 | normal | 2018-06-13 19:00:46 +0900 (Wed, 13 Jun 2018) | 8 lines

thread.c: use flags for sleep_* functions

Same thing as https://bugs.ruby-lang.org/issues/14798
My easily-confused mind gets function call ordering confused
easily:

	sleep_forever(..., TRUE, FALSE);
	sleep_forever(..., FALSE, TRUE);
------------------------------------------------------------------------
r63646 | mame | 2018-06-13 18:04:32 +0900 (Wed, 13 Jun 2018) | 7 lines

range.c: prohibit `(1..nil)`

Now endless range can be created by either a literal `(1..)` or explicit
range creation `Range.new(1, nil)`.  [Bug #14845]

This change is intended for "early failure"; for example,
`(1..var).to_a` causes out of memory if `var` is inadvertently nil.
------------------------------------------------------------------------
r63645 | mame | 2018-06-13 13:51:43 +0900 (Wed, 13 Jun 2018) | 4 lines

Make VM_INSN_INFO_TABLE_IMPL=1 work

rb_iseq_insns_info_decode_positions is used only when
VM_INSN_INFO_TABLE_IMPL=2.
------------------------------------------------------------------------
r63644 | ko1 | 2018-06-13 11:50:21 +0900 (Wed, 13 Jun 2018) | 4 lines

add "print_flags" gdb command.

* .gdbinit (print_flags): added to show raw FLAGS info for objects.

------------------------------------------------------------------------
r63643 | nobu | 2018-06-13 10:21:59 +0900 (Wed, 13 Jun 2018) | 4 lines

bignum.c: call functions directly

* bignum.c (int_pow_tmp{1,2,3}): call dedicated functions directly
  for internal calculations, instead of method calls.
------------------------------------------------------------------------
r63642 | nobu | 2018-06-13 10:04:33 +0900 (Wed, 13 Jun 2018) | 4 lines

bignum.c: refine pow

* bignum.c (rb_big_pow): make Complex and Rational instances from
  calculated results by API functions.
------------------------------------------------------------------------
r63641 | svn | 2018-06-13 05:22:44 +0900 (Wed, 13 Jun 2018) | 1 line

* 2018-06-13
------------------------------------------------------------------------
r63640 | stomar | 2018-06-13 05:22:43 +0900 (Wed, 13 Jun 2018) | 6 lines

lib/securerandom.rb: improve docs

* lib/securerandom.rb: [DOC] add alphanumeric example to module docs.
  [Fix GH-1812]

From: Justin Bull <me@justinbull.ca>
------------------------------------------------------------------------
r63639 | kazu | 2018-06-12 23:36:32 +0900 (Tue, 12 Jun 2018) | 3 lines

Remove needless lines

Because both assert_equal and assert_nil do not pass at the same time.
------------------------------------------------------------------------
r63638 | kazu | 2018-06-12 23:36:30 +0900 (Tue, 12 Jun 2018) | 1 line

Use `&.` instead of modifier if
------------------------------------------------------------------------
r63637 | stomar | 2018-06-12 18:42:39 +0900 (Tue, 12 Jun 2018) | 5 lines

doc/signals.rdoc: fix typo

[Fix GH-1889]

From: yuuji.yaginuma <yuuji.yaginuma@gmail.com>
------------------------------------------------------------------------
r63636 | nobu | 2018-06-12 09:39:14 +0900 (Tue, 12 Jun 2018) | 4 lines

win32.c: precise time

* win32/win32.c (filetime_split, clock_gettime): keep the
  precision as possible as the FILETIME format.
------------------------------------------------------------------------
r63635 | nobu | 2018-06-12 08:34:11 +0900 (Tue, 12 Jun 2018) | 4 lines

intern.h: suppress warnings

* include/ruby/intern.h (rb_fd_select): turned into an inline
  function, to suppress -Waddress warnings.
------------------------------------------------------------------------
r63634 | nobu | 2018-06-12 08:33:35 +0900 (Tue, 12 Jun 2018) | 4 lines

ruby.c: making hidden objects

* ruby.c (add_modules): make hidden objects by particular
  functions.
------------------------------------------------------------------------
r63633 | svn | 2018-06-12 05:16:28 +0900 (Tue, 12 Jun 2018) | 1 line

* 2018-06-12
------------------------------------------------------------------------
r63632 | stomar | 2018-06-12 05:16:27 +0900 (Tue, 12 Jun 2018) | 1 line

string.c: [DOC] grammar fixes
------------------------------------------------------------------------
r63631 | kazu | 2018-06-11 23:13:56 +0900 (Mon, 11 Jun 2018) | 1 line

Use `&.` instead of modifier if and remove needless closed?
------------------------------------------------------------------------
r63630 | hsbt | 2018-06-11 20:32:10 +0900 (Mon, 11 Jun 2018) | 1 line

Copy gemspec from github repository and keep .document file for rdoc.
------------------------------------------------------------------------
r63629 | hsbt | 2018-06-11 20:17:30 +0900 (Mon, 11 Jun 2018) | 1 line

Added webrick.rb to cleanup target.
------------------------------------------------------------------------
r63628 | svn | 2018-06-11 16:42:29 +0900 (Mon, 11 Jun 2018) | 1 line

* 2018-06-11
------------------------------------------------------------------------
r63627 | hsbt | 2018-06-11 16:42:28 +0900 (Mon, 11 Jun 2018) | 1 line

Added entries of recent updates for gemification.
------------------------------------------------------------------------
r63625 | yui-knk | 2018-06-10 16:01:53 +0900 (Sun, 10 Jun 2018) | 1 line

NEWS: Add TracePoint#parameters which was introduced by r63562
------------------------------------------------------------------------
r63624 | nobu | 2018-06-10 15:33:15 +0900 (Sun, 10 Jun 2018) | 8 lines

random.c: fix need_secure flags

* random.c (fill_random_seed): do not need to be secure, to get
  rid of blocking at the start-up time.
  [ruby-core:87462] [Bug #14837]

* random.c (random_raw_seed): expected to be a cryptographically
  secure, as documented.
------------------------------------------------------------------------
r63623 | yui-knk | 2018-06-10 15:22:15 +0900 (Sun, 10 Jun 2018) | 24 lines

parse.y: Fix locations of none and mid-rule actions

When an empty rule or a mid-rule action is reduced,
`YYLLOC_DEFAULT` is called with the third parameter to be zero.
If we use `RUBY_SET_YYLLOC_OF_NONE` to set their locations,
sometimes the end position of NODE indicates a blank.
For example, `a.b ;` generates `NODE_CALL (line: 1, location: (1,0)-(1,4))*`,
whose end position indicates a blank.

This is because of the following reasons:

* `NODE_CALL` is created when `primary_value call_op operation2 opt_paren_args` is
  reduced to `method_call`.
* `opt_paren_args` is `none`.
* `yylex` is called and `lex.pbeg` moves before `none` is reduced, so
  the beginning position of `none` does not match with the end position of `operation2`.

To fix locations, use `YYRHSLOC(Rhs, 0)` in `YYLLOC_DEFAULT`
(0 "refers to the symbol just before the reduction").

By this change, the bottom of the location stack would be referenced,
so initialize the bottom with `RUBY_SET_YYLLOC_OF_NONE` in `%initial-action`.

Ref: https://www.gnu.org/software/bison/manual/html_node/Location-Default-Action.html#Location-Default-Action
------------------------------------------------------------------------
r63622 | nobu | 2018-06-10 15:00:45 +0900 (Sun, 10 Jun 2018) | 4 lines

doc/extension.rdoc: Fix small copy+paste mistake
[Fix GH-1884]

From: Lars Kanis <lars@greiz-reinsdorf.de>
------------------------------------------------------------------------
r63621 | yui-knk | 2018-06-10 14:02:26 +0900 (Sun, 10 Jun 2018) | 30 lines

parse.y: Fix locations of NODE_RESCUE

* parse.y (new_bodystmt): Fix locations of NODE_RESCUE
  to end with nd_else or nd_resq. Before this commit,
  locations of NODE_RESCUE included locations of nd_ensr
  of NODE_ENSURE which is a parent node of NODE_RESCUE.

  e.g. The location of the end of NODE_RESCUE is fixed:

  ```
  def a
    :b
  rescue
    :c
  ensure
    :d
  end
  ```

  * Before

  ```
  NODE_RESCUE (line: 2, location: (2,2)-(6,4))
  ```

  * After

  ```
  NODE_RESCUE (line: 3, location: (2,2)-(5,0))
  ```
------------------------------------------------------------------------
r63620 | kazu | 2018-06-10 12:10:13 +0900 (Sun, 10 Jun 2018) | 1 line

Use `&.` instead of modifier if
------------------------------------------------------------------------
r63619 | ktsj | 2018-06-10 09:30:57 +0900 (Sun, 10 Jun 2018) | 1 line

gems/bundled_gems: update to power_assert 1.1.2
------------------------------------------------------------------------
r63618 | svn | 2018-06-10 01:05:39 +0900 (Sun, 10 Jun 2018) | 1 line

* 2018-06-10
------------------------------------------------------------------------
r63617 | kazu | 2018-06-10 01:05:38 +0900 (Sun, 10 Jun 2018) | 5 lines

Revert "Use `&.` instead of modifier if"

This reverts commit 9d015aa91cc3ec45e41be58fd836fb7f6655a624.

Because tool/extlibs.rb runs with BASERUBY that may be ruby < 2.3
------------------------------------------------------------------------
r63616 | kazu | 2018-06-09 10:55:31 +0900 (Sat, 09 Jun 2018) | 1 line

Use `&.` instead of modifier if
------------------------------------------------------------------------
r63615 | naruse | 2018-06-09 02:20:20 +0900 (Sat, 09 Jun 2018) | 4 lines

write_timeout doc upates [skip ci]

From: MSP-Greg <MSP-Greg@users.noreply.github.com>
fix https://github.com/ruby/ruby/pull/1885
------------------------------------------------------------------------
r63614 | svn | 2018-06-09 01:32:25 +0900 (Sat, 09 Jun 2018) | 1 line

* 2018-06-09
------------------------------------------------------------------------
r63613 | naruse | 2018-06-09 01:32:24 +0900 (Sat, 09 Jun 2018) | 3 lines

assert_raise(Net::ReadTimeout) on Windows [Bug #14829]

From: MSP-Greg <MSP-Greg@users.noreply.github.com>
------------------------------------------------------------------------
r63612 | kazu | 2018-06-08 22:19:02 +0900 (Fri, 08 Jun 2018) | 1 line

Re-add Matrix to doc/standard_library.rdoc [ci skip]
------------------------------------------------------------------------
r63611 | nobu | 2018-06-08 20:03:39 +0900 (Fri, 08 Jun 2018) | 3 lines

ast.c: fix calls

* ast.c (node_children): fix the member for method IDs as nd_mid.
------------------------------------------------------------------------
r63610 | nobu | 2018-06-08 19:45:01 +0900 (Fri, 08 Jun 2018) | 7 lines

[Docs] Improve documentation of String#lines

* Document about optional getline arguments
* Add examples, especially for the demonstration of `chomp: true`
[Fix GH-1886]

From: Koki Takahashi <hakatasiloving@gmail.com>
------------------------------------------------------------------------
r63609 | nobu | 2018-06-08 19:42:48 +0900 (Fri, 08 Jun 2018) | 1 line

common.mk: dependency of node_name.inc
------------------------------------------------------------------------
r63608 | hsbt | 2018-06-08 17:46:52 +0900 (Fri, 08 Jun 2018) | 1 line

Removed needless extension for require.
------------------------------------------------------------------------
r63607 | usa | 2018-06-08 15:15:23 +0900 (Fri, 08 Jun 2018) | 2 lines

th is nil

------------------------------------------------------------------------
r63606 | svn | 2018-06-08 08:18:17 +0900 (Fri, 08 Jun 2018) | 1 line

* 2018-06-08
------------------------------------------------------------------------
r63605 | yui-knk | 2018-06-08 08:18:16 +0900 (Fri, 08 Jun 2018) | 1 line

node.c: Fix format of NODE_OP_ASGN1 and NODE_OP_ASGN2
------------------------------------------------------------------------
r63604 | nobu | 2018-06-07 23:46:25 +0900 (Thu, 07 Jun 2018) | 4 lines

ast.c: refine AST#children

* ast.c (node_children): refined RubyVM::AST#children to include
  symbols (variables, methods, classes, etc).
------------------------------------------------------------------------
r63603 | nobu | 2018-06-07 23:40:39 +0900 (Thu, 07 Jun 2018) | 1 line

ast.c: adjust indent
------------------------------------------------------------------------
r63602 | yui-knk | 2018-06-07 23:04:49 +0900 (Thu, 07 Jun 2018) | 5 lines

ast.c: Fix to raise `SyntaxError`

* ast.c: Fix to raise `SyntaxError` when `RubyVM::AST.parse`
  or `RubyVM::AST.parse_file` fail to parse input.
* test/ruby/test_ast.rb: Add test cases for invalid syntax.
------------------------------------------------------------------------
r63601 | hsbt | 2018-06-07 21:10:24 +0900 (Thu, 07 Jun 2018) | 3 lines

Promote Matrix to default gems.

  The upstream repository is https://github.com/ruby/matrix.
------------------------------------------------------------------------
r63600 | kazu | 2018-06-07 21:06:15 +0900 (Thu, 07 Jun 2018) | 1 line

Fix typos [ci skip]
------------------------------------------------------------------------
r63599 | hsbt | 2018-06-07 19:13:00 +0900 (Thu, 07 Jun 2018) | 3 lines

Promote OpenStruct to default gems.

  Upstream repository is https://github.com/ruby/ostruct.
------------------------------------------------------------------------
r63598 | naruse | 2018-06-07 15:18:23 +0900 (Thu, 07 Jun 2018) | 5 lines

skip write_timeout test on Windows

This test is about write_timeout.
To ensure it really raised Net::WriteTimeout, skip this test on Windows,
whose write returns immediately even for large data.
------------------------------------------------------------------------
r63597 | usa | 2018-06-07 11:37:44 +0900 (Thu, 07 Jun 2018) | 7 lines

Some platforms immediately returns from Socket#write

* test/net/http/test_http.rb (test_timeout_during_HTTP_session_write): on some
  platforms such as Windows immediately returns from Socket#write, and have to
  wait to read its response.  So, we can not handle Net::WriteTimeout and should
  handle Net::ReadTimeout instead.

------------------------------------------------------------------------
r63596 | normal | 2018-06-07 10:14:09 +0900 (Thu, 07 Jun 2018) | 4 lines

iseq.h (struct iseq_compile_data): remove cached_const field

Nobody uses it, and "git log -p -Scached_const" shows it's ever
been used in public history.
------------------------------------------------------------------------
r63595 | svn | 2018-06-07 05:57:49 +0900 (Thu, 07 Jun 2018) | 1 line

* 2018-06-07
------------------------------------------------------------------------
r63594 | normal | 2018-06-07 05:57:48 +0900 (Thu, 07 Jun 2018) | 14 lines

rb_vm_insn_addr2insn: use st to perform addr2insn mapping

The current VM_INSTRUCTION_SIZE is 198, so the linear search
painful during a major GC phase.

I noticed rb_vm_insn_addr2insn2 showing up at the top of some
profiles while working on some malloc-related stuff, so I
decided to attack it.

Most notably, the benchmark/bm_vm3_gc.rb improves by over 40%:

  https://80x24.org/spew/20180602220554.GA9991@whir/raw

[ruby-core:87361] [Feature #14814]
------------------------------------------------------------------------
r63593 | k0kubun | 2018-06-06 23:36:56 +0900 (Wed, 06 Jun 2018) | 6 lines

mjit.c: unify wording between comments and variables

Some comments say "stop", others say "finish".

I'm going to add code which dynamically stops MJIT worker, rather than
finishing it forever. So I'm thinking `stop` is more appropreate for it.
------------------------------------------------------------------------
r63592 | nobu | 2018-06-06 23:01:43 +0900 (Wed, 06 Jun 2018) | 4 lines

math.c: adjust cbrt

* math.c (math_cbrt): refine the approximation result on boundary
  values by an iteration of Newton-Raphson method.
------------------------------------------------------------------------
r63591 | naruse | 2018-06-06 21:13:16 +0900 (Wed, 06 Jun 2018) | 14 lines

Use `Net::HTTPClientException` instead of `Net::HTTPServerException`

`Net::HTTPServerException` has been deprecated since r63590. [Bug #14688]
And `net/http/responses.rb` uses the deprecated constant, so Ruby warns of the deprecation.

Example:

```bash
$ ruby -r net/http -e ''
/home/pocke/.rbenv/versions/trunk/lib/ruby/2.6.0/net/http/responses.rb:22: warning: constant Net::HTTPServerException is deprecated
```

This change suppresses the warning.
From: Masataka Pocke Kuwabara <kuwabara@pocke.me>
------------------------------------------------------------------------
r63590 | naruse | 2018-06-06 18:01:04 +0900 (Wed, 06 Jun 2018) | 1 line

Add Net::HTTPClientException [Bug #14688]
------------------------------------------------------------------------
r63589 | naruse | 2018-06-06 17:39:36 +0900 (Wed, 06 Jun 2018) | 1 line

fix r63587
------------------------------------------------------------------------
r63588 | ko1 | 2018-06-06 17:34:39 +0900 (Wed, 06 Jun 2018) | 1 line

fix r63587 with temporal patch to pass the tests. please re-fix it.
------------------------------------------------------------------------
r63587 | naruse | 2018-06-06 17:03:47 +0900 (Wed, 06 Jun 2018) | 1 line

Introduce write_timeout to Net::HTTP [Feature #13396]
------------------------------------------------------------------------
r63586 | yui-knk | 2018-06-06 15:14:21 +0900 (Wed, 06 Jun 2018) | 10 lines

ast.c: Change tabs to spaces

* ast.c: I created a new C source code file with tabs and spaces mixed
  format by mistake. Currently we move to spaces only.
  Surely we agreed not to batch update. But ast.c is a new
  source code. So please forgive me to change the format before
  many changes are committed this file.
  I'm sorry about my mistake.

  ref [Bug #14246]
------------------------------------------------------------------------
r63585 | normal | 2018-06-06 10:12:23 +0900 (Wed, 06 Jun 2018) | 4 lines

test/io/console/test_io_console.rb: fix for systems where PTY is not defined

[ruby-core:87420] [Bug #14828]
Thanks-to: MSP-Greg (Greg L)
------------------------------------------------------------------------
r63584 | normal | 2018-06-06 07:32:41 +0900 (Wed, 06 Jun 2018) | 1 line

test/lib/jit_support.rb: spelling: s/skiped/skipped/
------------------------------------------------------------------------
r63583 | normal | 2018-06-06 07:28:49 +0900 (Wed, 06 Jun 2018) | 4 lines

test/io/console/test_io_console.rb: ignore TTOU on FreeBSD

I'm not entirely sure why, but SIGTTOU pauses the test
when running test-all in parallel.
------------------------------------------------------------------------
r63582 | normal | 2018-06-06 07:01:43 +0900 (Wed, 06 Jun 2018) | 5 lines

encoding.c: remove rb_gc_mark_encodings

rb_gc_mark_encodings has been empty for a decade
(since r17875 / 28b216ac45262819f8bc7be0b1417a707974f94b).
Just remove it and its only caller in gc.c
------------------------------------------------------------------------
r63581 | normal | 2018-06-06 06:19:50 +0900 (Wed, 06 Jun 2018) | 6 lines

test/dtrace/helper.rb: support systemtap in dtrace tests

For the current cases, a few string substitions is enough to
make dtrace(1) scripts work with stap(1).  For more complex
scripts (maybe in the future), we may pass a hash with
implementation-specific scripts.
------------------------------------------------------------------------
r63580 | normal | 2018-06-06 06:19:45 +0900 (Wed, 06 Jun 2018) | 7 lines

test/dtrace: enable Tracepoint for function calls

Since [Feature #14104], "trace" instructions are no
longer emitted by default, so we must enable them explicitly
for function tracing to work.

[ruby-core:85965]
------------------------------------------------------------------------
r63579 | normal | 2018-06-06 06:19:40 +0900 (Wed, 06 Jun 2018) | 4 lines

test/dtrace/test_method_cache.rb: avoid spewing too much

Don't output method cache clearing at startup since
it causes dtrace to drop output and break the test.
------------------------------------------------------------------------
r63578 | normal | 2018-06-06 06:19:36 +0900 (Wed, 06 Jun 2018) | 4 lines

test/dtrace/test_array_create.rb: require line number

Nowadays we create empty arrays in the parse/compile
phase which gave us lineno==0.
------------------------------------------------------------------------
r63577 | normal | 2018-06-06 06:19:31 +0900 (Wed, 06 Jun 2018) | 6 lines

test/dtrace/helper: fix check for miniruby

RbConfig::TOPDIR points to my installation prefix on my FreeBSD
and GNU/Linux systems, so there's no way miniruby exists, there.
In case we don't have miniruby, --disable=gems anyways to reduce
dtrace overhead.
------------------------------------------------------------------------
r63576 | normal | 2018-06-06 05:46:56 +0900 (Wed, 06 Jun 2018) | 6 lines

io.c: fix compilation when IOV_MAX is not defined

GNU/Hurd has writev(2) but does not define IOV_MAX
[ruby-core:87417] [Bug #14827]

Reported-by: Paul Sonnenschein
------------------------------------------------------------------------
r63575 | normal | 2018-06-06 05:16:21 +0900 (Wed, 06 Jun 2018) | 14 lines

gc.c: reduce parameters for gc_start and garbage_collect

Every time I look at gc.c, I get confused by argument ordering:

	gc_start(..., TRUE, TRUE, FALSE, ...)
	gc_start(..., FALSE, FALSE, FALSE, ... )

While we do not have kwargs in C, we can use flags to improve readability:

	gc_start(...,
		GPR_FLAG_FULL_MARK | GPR_FLAG_IMMEDIATE_MARK |
		GPR_FLAG_IMMEDIATE_SWEEP | ...)

[ruby-core:87311] [Misc #14798]
------------------------------------------------------------------------
r63574 | svn | 2018-06-06 04:53:10 +0900 (Wed, 06 Jun 2018) | 1 line

* 2018-06-06
------------------------------------------------------------------------
r63573 | normal | 2018-06-06 04:53:09 +0900 (Wed, 06 Jun 2018) | 5 lines

gc.c: reduce #ifdefs around GC_ENABLE_*

We may add gc_*_continue calls in a few more places, and adding
more #ifdefs around those is ugly.  For now, this makes the
heap_prepare function look better.
------------------------------------------------------------------------
r63572 | ngoto | 2018-06-05 23:16:50 +0900 (Tue, 05 Jun 2018) | 6 lines

include/ruby/missing.h: defined(__cplusplus) before using __cplusplus

* include/ruby/missing.h (isinf, isnan): For non-C++ programs,
  defined(__cplusplus) may be needed before using __cplusplus.
  [Bug #14816]

------------------------------------------------------------------------
r63571 | shyouhei | 2018-06-05 15:50:20 +0900 (Tue, 05 Jun 2018) | 15 lines

`int isnan(double)` is a POSIXism

- `isnan` is something relatively new.  We need to provide one for
  those systems without it.  However:
- X/Open defines `int isnan(double)`. Note the `int`.
- C99 defines `isnan(x)` to be a macro.
- C++11 nukes them all, undefines all the "masking macro"s, and
  defines its own `bool isnan(double)`.  Note the `bool`.
- In C++, `int isnan(double)` and `bool isnan(double)` are
  incompatible.
- So the mess.

[Bug #14816][ruby-core:87364]
further reading: https://developers.redhat.com/blog/2016/02/29/why-cstdlib-is-more-complicated-than-you-might-think/

------------------------------------------------------------------------
r63570 | yui-knk | 2018-06-05 09:48:12 +0900 (Tue, 05 Jun 2018) | 1 line

test_ast.rb: Add test cases of heredoc columns
------------------------------------------------------------------------
r63569 | normal | 2018-06-05 09:37:05 +0900 (Tue, 05 Jun 2018) | 8 lines

gc.c: zero check for malloc_limit_max to initialization

Repeatedly checking for malloc_limit_max in gc_reset_malloc_info
is unnecessary, check and set it once during initialization
in ruby_gc_set_params to simplify the hotter path

* gc.c (gc_reset_malloc_info): remove zero check
  (ruby_gc_set_params): treat malloc_limit_max==0 as SIZE_MAX
------------------------------------------------------------------------
r63568 | yui-knk | 2018-06-05 09:18:29 +0900 (Tue, 05 Jun 2018) | 5 lines

Move a test file

* test/-ext-/ast/test_ast.rb: This test file
  has not depended C extension since r63534,
  so move to 'test/ruby/'.
------------------------------------------------------------------------
r63567 | svn | 2018-06-05 08:26:04 +0900 (Tue, 05 Jun 2018) | 1 line

* 2018-06-05
------------------------------------------------------------------------
r63566 | normal | 2018-06-05 08:26:03 +0900 (Tue, 05 Jun 2018) | 5 lines

String#uminus dedupes unconditionally

[Feature #14478] [ruby-core:85669]

Thanks-to: Sam Saffron <sam.saffron@gmail.com>
------------------------------------------------------------------------
r63565 | svn | 2018-06-04 06:06:26 +0900 (Mon, 04 Jun 2018) | 1 line

* 2018-06-04
------------------------------------------------------------------------
r63564 | normal | 2018-06-04 06:06:26 +0900 (Mon, 04 Jun 2018) | 6 lines

benchmark/driver.rb: add CPU time measurement targets

"Real" time is too unstable on my systems, hopefully counting
only CPU time can gain more reliable benchmark results.

[ruby-core:87362] [Feature #14815]
------------------------------------------------------------------------
r63563 | svn | 2018-06-03 14:10:43 +0900 (Sun, 03 Jun 2018) | 1 line

* properties.
------------------------------------------------------------------------
r63562 | mame | 2018-06-03 14:10:41 +0900 (Sun, 03 Jun 2018) | 8 lines

Add TracePoint#parameters

It can be used to get the parameters' information of method and block.
There was no way to get block parameters.
It was possible but ineffective to get method parameters via Method
object: `tp.defined_class.method(tp.method_id).parameters`
TracePoint#parameters allows us to get the information easily.
[Feature #14694]
------------------------------------------------------------------------
r63561 | svn | 2018-06-03 08:05:46 +0900 (Sun, 03 Jun 2018) | 1 line

* 2018-06-03
------------------------------------------------------------------------
r63560 | hsbt | 2018-06-03 08:05:45 +0900 (Sun, 03 Jun 2018) | 3 lines

Promote Prime library to default gems.

  * Its upstream is https://github.com/ruby/prime.
------------------------------------------------------------------------
r63559 | hsbt | 2018-06-02 22:57:48 +0900 (Sat, 02 Jun 2018) | 3 lines

Promote Logger to default gems.

  * Its upstream is https://github.com/ruby/logger.
------------------------------------------------------------------------
r63558 | hsbt | 2018-06-02 22:55:54 +0900 (Sat, 02 Jun 2018) | 1 line

Fixed wrong variable name.
------------------------------------------------------------------------
r63557 | nobu | 2018-06-02 21:17:16 +0900 (Sat, 02 Jun 2018) | 1 line

gmake.mk: update in the source directory properly
------------------------------------------------------------------------
r63556 | svn | 2018-06-02 17:36:01 +0900 (Sat, 02 Jun 2018) | 1 line

* properties.
------------------------------------------------------------------------
r63555 | hsbt | 2018-06-02 17:36:00 +0900 (Sat, 02 Jun 2018) | 1 line

Added test for default gems validation.
------------------------------------------------------------------------
r63554 | nobu | 2018-06-02 16:50:18 +0900 (Sat, 02 Jun 2018) | 4 lines

enum.c: bignum counter

* enum.c (imemo_count_up, imemo_count_value): promote the counter
  value to a bignum on overflow.  [Bug #14805]
------------------------------------------------------------------------
r63553 | hsbt | 2018-06-02 16:04:28 +0900 (Sat, 02 Jun 2018) | 1 line

Fixed wrong require path
------------------------------------------------------------------------
r63552 | hsbt | 2018-06-02 15:02:51 +0900 (Sat, 02 Jun 2018) | 3 lines

Promote REXML to default gems.

  * upstream repostiory is https://github.com/ruby/rexml
------------------------------------------------------------------------
r63551 | nobu | 2018-06-02 11:39:34 +0900 (Sat, 02 Jun 2018) | 12 lines

enum.c: mitigate overflows

* enum.c (enum_count): convert counters to Integer as unsigned
  long, instead of long, to mitigate overflows.
  [ruby-core:87348] [Bug #14805]

* enum.c (ary_inject_op): ditto.

* enum.c (each_with_index_i): ditto, instead of int.

* enum.c (find_index_i, find_index_iter_i): ditto, instead of
  unsigned int.
------------------------------------------------------------------------
r63550 | hsbt | 2018-06-02 10:14:24 +0900 (Sat, 02 Jun 2018) | 3 lines

Promote RSS library to default gems.

  Its upstream was moved to https://github.com/ruby/rss.
------------------------------------------------------------------------
r63549 | naruse | 2018-06-02 09:51:43 +0900 (Sat, 02 Jun 2018) | 1 line

memo->u3.cnt is long not int [Bug #14805]
------------------------------------------------------------------------
r63548 | normal | 2018-06-02 06:56:11 +0900 (Sat, 02 Jun 2018) | 9 lines

Initialize condattr_monotonic via pthread_condattr_init

Some operating systems will work without calling
pthread_condattr_init, but some won't (such as OpenBSD). Prior
to r63238, pthread_condattr_init was always called before
calling pthread_condattr_setclock.

From: Jeremy Evans <code@jeremyevans.net>
[ruby-core:87345] [Ruby trunk Bug#14807]
------------------------------------------------------------------------
r63547 | svn | 2018-06-02 06:23:21 +0900 (Sat, 02 Jun 2018) | 1 line

* 2018-06-02
------------------------------------------------------------------------
r63546 | normal | 2018-06-02 06:23:20 +0900 (Sat, 02 Jun 2018) | 11 lines

gc.c: reduce size slightly by making MEMOP_TYPE_MALLOC zero

Most (if not all) architectures have instructions for comparing
against zero, allowing compilers to generate more compact code.

Other MEMOP_TYPE_* enum values are not compared in hot paths,
but MEMOP_TYPE_MALLOC is checked in objspace_malloc_increase

   text	   data	    bss	    dec	    hex	filename
  84088	    264	   3664	  88016	  157d0	gc-before.o
  83784	    264	   3664	  87712	  156a0	gc.o
------------------------------------------------------------------------
r63545 | hsbt | 2018-06-01 22:10:37 +0900 (Fri, 01 Jun 2018) | 1 line

Added missing dependency for ast.c.
------------------------------------------------------------------------
r63544 | knu | 2018-06-01 16:13:38 +0900 (Fri, 01 Jun 2018) | 12 lines

Skip colliding filenames in LIBRUBY_ALIASES

This allows user to specify any name in `--with-so-name` that might
cause a name clash with LIBRUBY_ALIASES on the platform.

Without this, for example, configuring with `--with-soname=ruby
--enable-shared` on macOS would end up running `ln -sf libruby.dylib
libruby.dylib` only to fail with the following error in installation:

```
make[2]: stat: libruby.dylib: Too many levels of symbolic links
```
------------------------------------------------------------------------
r63543 | nobu | 2018-06-01 15:53:26 +0900 (Fri, 01 Jun 2018) | 7 lines

string.c: trivial optimizations

* string.c (rb_str_aset): prefer BUILTIN_TYPE over TYPE after
  SPECIAL_CONST_P check.

* string.c (rb_str_start_with): prefer RB_TYPE_P over switch by
  TYPE.
------------------------------------------------------------------------
r63542 | svn | 2018-06-01 15:37:15 +0900 (Fri, 01 Jun 2018) | 1 line

* 2018-06-01
------------------------------------------------------------------------
r63541 | nobu | 2018-06-01 15:37:14 +0900 (Fri, 01 Jun 2018) | 4 lines

string.c: doc for [Feature #13712]

* string.c (rb_str_start_with): [DOC] start_with? example with
  regexp.
------------------------------------------------------------------------
r63540 | nobu | 2018-05-31 18:30:49 +0900 (Thu, 31 May 2018) | 6 lines

vm_args.c: refined warning splat to var

* vm_args.c (setup_parameters_complex): refine the warning message
  for a splat hash which was passed to a single variable instead
  of keyword arguments.  this behavior will be changed when the
  "real" keyword argument is introduced in the future.
------------------------------------------------------------------------
r63538 | nobu | 2018-05-31 16:10:39 +0900 (Thu, 31 May 2018) | 4 lines

fix the condition

* test/ruby/test_rubyoptions.rb: Process.wait with WNOHANG returns
  nil while the target process is alive.
------------------------------------------------------------------------
r63537 | nobu | 2018-05-31 15:57:47 +0900 (Thu, 31 May 2018) | 4 lines

test_rubyoptions.rb: relax timeout

* test/ruby/test_rubyoptions.rb: wait for setting process title
  until the child process dies, in the case of extra heavy loads.
------------------------------------------------------------------------
r63536 | yui-knk | 2018-05-31 15:25:58 +0900 (Thu, 31 May 2018) | 1 line

NEWS: Add RubyVM::AST
------------------------------------------------------------------------
r63535 | yui-knk | 2018-05-31 15:24:19 +0900 (Thu, 31 May 2018) | 1 line

Undef RubyVM::AST::Node.new
------------------------------------------------------------------------
r63534 | yui-knk | 2018-05-31 15:13:06 +0900 (Thu, 31 May 2018) | 8 lines

Define AST module under RubyVM [experimental]

* ext/-test-/ast/ast.c: Rename to ast.c
  and define AST module under RubyVM.
* common.mk: compile ast.c.
* ext/-test-/ast/extconf.rb: Don't need this file anymore.
* inits.c (rb_call_inits): Call Init_ast to setup AST module.
* test/-ext-/ast/test_ast.rb: Follow up the namespace change.
------------------------------------------------------------------------
r63533 | svn | 2018-05-31 14:49:57 +0900 (Thu, 31 May 2018) | 1 line

* 2018-05-31
------------------------------------------------------------------------
r63532 | yui-knk | 2018-05-31 14:49:56 +0900 (Thu, 31 May 2018) | 1 line

ast.c: Do not taint TOPLEVEL_BINDING
------------------------------------------------------------------------
r63531 | hsbt | 2018-05-30 22:03:47 +0900 (Wed, 30 May 2018) | 1 line

Ignore bundler assertions on ruby core test suite.
------------------------------------------------------------------------
r63530 | svn | 2018-05-30 22:01:37 +0900 (Wed, 30 May 2018) | 1 line

* properties.
------------------------------------------------------------------------
r63529 | svn | 2018-05-30 22:01:37 +0900 (Wed, 30 May 2018) | 1 line

* remove trailing spaces.
------------------------------------------------------------------------
r63528 | hsbt | 2018-05-30 22:01:35 +0900 (Wed, 30 May 2018) | 6 lines

Merge RubyGems 3.0.0.beta1.

  * It drop to support < Ruby 2.2
  * Cleanup deprecated methods and classes.
  * Mark obsoleted methods to deprecate.
  * and other enhancements.
------------------------------------------------------------------------
r63527 | normal | 2018-05-30 20:49:06 +0900 (Wed, 30 May 2018) | 3 lines

NEWS: clarify item about built-in thread cache

[Feature #14757]
------------------------------------------------------------------------
r63526 | nobu | 2018-05-30 18:13:21 +0900 (Wed, 30 May 2018) | 1 line

Workaround for old LibreSSL
------------------------------------------------------------------------
r63525 | matz | 2018-05-30 17:24:52 +0900 (Wed, 30 May 2018) | 2 lines

object.c: Add a new alias `then` to `Kernel#yield_self`; [Feature #14594]

------------------------------------------------------------------------
r63524 | svn | 2018-05-30 08:28:51 +0900 (Wed, 30 May 2018) | 1 line

* 2018-05-30
------------------------------------------------------------------------
r63523 | nobu | 2018-05-30 08:28:50 +0900 (Wed, 30 May 2018) | 4 lines

fake.rb: fix RUBY_DESCRIPTION for MJIT

* template/fake.rb.in: switch RUBY_DESCRIPTION at runtime
  depending on the MJIT status.
------------------------------------------------------------------------
r63522 | nobu | 2018-05-29 17:47:07 +0900 (Tue, 29 May 2018) | 3 lines

fake.rb: fix RUBY_DESCRIPTION for MJIT

* template/fake.rb.in: reflect MJIT to RUBY_DESCRIPTION.
------------------------------------------------------------------------
r63521 | nobu | 2018-05-29 17:46:36 +0900 (Tue, 29 May 2018) | 5 lines

spec/ruby: revert r63503 and r63508

When RUBY_DESCRIPTION has `+JIT` already, it will be doubled.
Just fake.rb.in always has copied `RUBY_DESCRIPTION`, regardless
MJIT is enabled or not.  `BOOTSTRAPRUBY` is not involved.
------------------------------------------------------------------------
r63520 | k0kubun | 2018-05-29 11:48:38 +0900 (Tue, 29 May 2018) | 7 lines

mjit_compile.c: drop catch table handling

The loop for `vm_exce_handle_exception` doesn't trigger `mjit_exec`, so
I don't think this code is no longer needed.

This was needed in development of original version of this JIT, but it
seems not needed from the beginning (r62189) at Ruby repository.
------------------------------------------------------------------------
r63519 | yui-knk | 2018-05-29 10:58:57 +0900 (Tue, 29 May 2018) | 5 lines

Unused macro and field

* node.h (nd_cnt, struct RNode): nd_cnt has been unused
  since r60239, and also cnt field.
* .gdbinit (nd_cnt): ditto
------------------------------------------------------------------------
r63518 | yui-knk | 2018-05-29 10:40:01 +0900 (Tue, 29 May 2018) | 4 lines

Unused macro

* node.h (nd_noex): nd_noex has been unused since r24128.
* .gdbinit (nd_noex): ditto
------------------------------------------------------------------------
r63517 | yui-knk | 2018-05-29 10:19:06 +0900 (Tue, 29 May 2018) | 4 lines

Unused macro

* node.h (nd_frml): nd_frml has been unused since r34134.
* .gdbinit (nd_frml): ditto
------------------------------------------------------------------------
r63516 | normal | 2018-05-29 10:18:06 +0900 (Tue, 29 May 2018) | 5 lines

NEWS: add item about built-in thread cache

This change may impact design of future programs and obviate
thread pools in many cases, so it's worth a mention.
Anyways, this seems stable since r63499 [Feature #14757]
------------------------------------------------------------------------
r63515 | yui-knk | 2018-05-29 10:00:54 +0900 (Tue, 29 May 2018) | 4 lines

Unused macro

* node.h (nd_argc): nd_argc has been unused since r24128.
* .gdbinit (nd_argc): ditto
------------------------------------------------------------------------
r63514 | nobu | 2018-05-29 00:35:08 +0900 (Tue, 29 May 2018) | 5 lines

time.rb: fix parsing time zone in iso8601

* lib/time.rb (Time.xmlschema): the minute in time zone designator
  can be omitted together with the preceding colon.
  [ruby-core:87277] [Bug #14790]
------------------------------------------------------------------------
r63513 | svn | 2018-05-29 00:19:39 +0900 (Tue, 29 May 2018) | 1 line

* 2018-05-29
------------------------------------------------------------------------
r63512 | nobu | 2018-05-29 00:19:38 +0900 (Tue, 29 May 2018) | 4 lines

time.rb: fix parsing time zone in iso8601

* lib/time.rb (Time.xmlschema): a colon in time zone designator
  can be omitted.  [ruby-core:87277] [Bug #14790]
------------------------------------------------------------------------
r63511 | yui-knk | 2018-05-28 23:24:14 +0900 (Mon, 28 May 2018) | 5 lines

Unused macro and field

* node.h (nd_cfnc, struct RNode): nd_cfnc has been unused
  since r49938, and also cfunc field.
* .gdbinit (nd_cfnc): ditto
------------------------------------------------------------------------
r63510 | svn | 2018-05-28 09:42:33 +0900 (Mon, 28 May 2018) | 1 line

* 2018-05-28
------------------------------------------------------------------------
r63509 | hsbt | 2018-05-28 09:42:32 +0900 (Mon, 28 May 2018) | 1 line

Merge etc gemspec from github repository.
------------------------------------------------------------------------
r63508 | eregon | 2018-05-27 18:52:04 +0900 (Sun, 27 May 2018) | 1 line

Specs must keep working on older versions and other implementations
------------------------------------------------------------------------
r63507 | k0kubun | 2018-05-27 16:33:18 +0900 (Sun, 27 May 2018) | 3 lines

jit_support.rb: debug check_support stderr

rubyci freebsd11zfs doesn't pass this check. I want to know the stderr.
------------------------------------------------------------------------
r63506 | k0kubun | 2018-05-27 14:52:43 +0900 (Sun, 27 May 2018) | 4 lines

st.c: remove redundant export declaration

rb_hash_bulk_insert is added to official C API in r63488. It's no longer
exported only for MJIT.
------------------------------------------------------------------------
r63505 | svn | 2018-05-27 14:47:44 +0900 (Sun, 27 May 2018) | 1 line

* 2018-05-27
------------------------------------------------------------------------
r63504 | k0kubun | 2018-05-27 14:47:43 +0900 (Sun, 27 May 2018) | 10 lines

jit_support.rb: cahce JIT support check

* Before
make test-all -C .ruby-svn TESTS="../test/ruby/test_jit.rb"  22.40s user 5.38s system 91% cpu 30.196 total

* After
make test-all -C .ruby-svn TESTS="../test/ruby/test_jit.rb"  12.91s user 3.33s system 91% cpu 17.648 total

Also, this makes it easier to check if JIT is actually tested, by
showing warning on stderr.
------------------------------------------------------------------------
r63503 | k0kubun | 2018-05-24 23:32:05 +0900 (Thu, 24 May 2018) | 10 lines

spec/ruby: fix RUBY_DESCRIPTION check with JIT enabled

`make test-spec` adds `-r./$(arch)-fake` to pass header options.
But the $(arch)-fake.rb unexpectedly modifies RUBY_DESCRIPTION and it
always drops +JIT from it since the fake.rb is built with BOOTSTRAPRUBY,
which can be miniruby. miniruby can't find MJIT header and thus
mjit_init_p is always FALSE.

So, to pass `make test-spec` with JIT enabled, we can't use
RUBY_DESCRIPTION.
------------------------------------------------------------------------
r63502 | k0kubun | 2018-05-24 22:25:40 +0900 (Thu, 24 May 2018) | 3 lines

test_rubyoptions.rb: RbConfig::CONFIG['cppflags'] can be nil

not '' at least on AppVeyor
------------------------------------------------------------------------
r63501 | k0kubun | 2018-05-24 21:57:40 +0900 (Thu, 24 May 2018) | 4 lines

test_rubyoptions.rb: allow passing test_verbose

with -DMJIT_FORCE_ENABLE. With -DMJIT_FORCE_ENABLE, absence of --jit
doesn't mean JIT disabled.
------------------------------------------------------------------------
r63500 | nobu | 2018-05-24 15:15:43 +0900 (Thu, 24 May 2018) | 1 line

mjit.c: use remove_file in clean_so_file too
------------------------------------------------------------------------
r63499 | normal | 2018-05-24 11:52:46 +0900 (Thu, 24 May 2018) | 4 lines

thread_pthread.c: avoid reading th pointer for thread cache

I suspect GC may free the rb_thread_t (th) pointer by the time
we call register_cached_thread_and_wait.
------------------------------------------------------------------------
r63498 | normal | 2018-05-24 06:16:56 +0900 (Thu, 24 May 2018) | 54 lines

thread_pthread.c: enable thread cache by default

Since r62466 ("thread_pthread.c: shorten and fix thread cache implementation"),
our thread cache is no longer buggy with programs using fork.
This makes significant improvements in vm_thread_alive_check1
and vm_thread_create_join benchmarks and does not introduce
regressions.

Unlike old thread cache, I've changed the cache to only last 3
seconds since per-thread setup in most programs rarely takes
more than a few milliseconds to re-establish things like network
connections.  This is configurable by changing the THREAD_CACHE_TIME
variable.

I hope this allows users to simplify their code by removing the
need for thread pools in many cases.

vm_thread_alive_check1 10.872   0.150
vm_thread_close         1.988   2.027
vm_thread_condvar1      0.751   0.767
vm_thread_condvar2      0.744   0.752
vm_thread_create_join   5.296   2.343
vm_thread_mutex1        1.911   1.892
vm_thread_mutex2        1.902   1.896
vm_thread_mutex3        2.389   2.313
vm_thread_pass          0.271   0.272
vm_thread_pass_flood    0.175   0.179
vm_thread_pipe          0.460   0.436
vm_thread_queue         0.453   0.446
vm_thread_sized_queue   0.547   0.547
vm_thread_sized_queue2  1.417   1.413
vm_thread_sized_queue3  1.410   1.426
vm_thread_sized_queue4  0.787   0.791

Speedup ratio: compare with the result of `trunk' (greater is better)
name    built
vm_thread_alive_check1 72.456
vm_thread_close         0.981
vm_thread_condvar1      0.979
vm_thread_condvar2      0.990
vm_thread_create_join   2.260
vm_thread_mutex1        1.010
vm_thread_mutex2        1.003
vm_thread_mutex3        1.033
vm_thread_pass          0.994
vm_thread_pass_flood    0.980
vm_thread_pipe          1.055
vm_thread_queue         1.016
vm_thread_sized_queue   0.999
vm_thread_sized_queue2  1.003
vm_thread_sized_queue3  0.989
vm_thread_sized_queue4  0.995

[ruby-core:87030] [Feature #14757]
------------------------------------------------------------------------
r63497 | normal | 2018-05-24 05:58:46 +0900 (Thu, 24 May 2018) | 5 lines

benchmark/bm_*erb*: fix for --measure=size/peak in driver.rb

benchmark/memory_wrapper.rb will Kernel#load these
scripts, preventing DATA from being initialized, so
use heredoc instead.
------------------------------------------------------------------------
r63496 | svn | 2018-05-24 00:58:54 +0900 (Thu, 24 May 2018) | 1 line

* 2018-05-24
------------------------------------------------------------------------
r63495 | ngoto | 2018-05-24 00:58:53 +0900 (Thu, 24 May 2018) | 8 lines

ext/pty/pty.c: I_FIND before I_PUSH if possible

* ext/pty/pty.c: Check whether each STREAMS module is already pushed
  or not by using I_FIND ioctl call, before pushing it by using I_PUSH.
  Solved test failure on Solaris. On a Solaris 10 machine, ioctl I_PUSH
  "ldterm" twice was the cause of duplicated "\r".
  [Bug #14786] [ruby-dev:50552]

------------------------------------------------------------------------
r63494 | ko1 | 2018-05-23 15:56:08 +0900 (Wed, 23 May 2018) | 19 lines

remove VM_ENV_DATA_INDEX_ENV_PROC.

* vm_core.h (VM_ENV_DATA_INDEX_ENV_PROC): ep[VM_ENV_DATA_INDEX_ENV_PROC] is
  allocated to mark a Proc which is created from iseq block.
  However, `lep[0]` keeps Proc object itself as a block handler (Proc).
  So we don't need to keep it.

* vm_core.h (VM_ENV_PROCVAL): ditto.

* vm.c (vm_make_env_each): do not need to keep blockprocval as special value.

* vm.c (vm_block_handler_escape): simply return Proc value.

* proc.c (proc_new):  we don't need to check Env because a Proc type block
  handler is a Proc object itself.
  [Bug #14782]

* test/ruby/test_proc.rb: add a test for [Bug #14782]

------------------------------------------------------------------------
r63493 | normal | 2018-05-23 14:51:43 +0900 (Wed, 23 May 2018) | 3 lines

internal.h: export ruby_sized_* for systems w/o malloc_usable_size

[ruby-core:87232]
------------------------------------------------------------------------
r63492 | k0kubun | 2018-05-23 00:48:58 +0900 (Wed, 23 May 2018) | 5 lines

test_jit.rb: propagate suspicious stderr

of child ruby process to parent stderr using `Kernel#warn`.

This fixes a warning in {set,get}classvariable as well.
------------------------------------------------------------------------
r63491 | svn | 2018-05-23 00:39:35 +0900 (Wed, 23 May 2018) | 1 line

* 2018-05-23
------------------------------------------------------------------------
r63490 | k0kubun | 2018-05-23 00:39:34 +0900 (Wed, 23 May 2018) | 1 line

mjit.c: show error message on remove failure
------------------------------------------------------------------------
r63489 | usa | 2018-05-22 21:24:43 +0900 (Tue, 22 May 2018) | 2 lines

rename temporary dummy target

------------------------------------------------------------------------
r63488 | naruse | 2018-05-22 16:31:36 +0900 (Tue, 22 May 2018) | 4 lines

export rb_hash_bulk_insert

msgpack-ruby requests this function public because they want to
create a hash with bulk key value pairs.
------------------------------------------------------------------------
r63487 | normal | 2018-05-22 10:58:47 +0900 (Tue, 22 May 2018) | 4 lines

string.c: MAYBE_UNUSED to suppress warnings for `old`

Building with HAVE_MALLOC_USABLE_SIZE currently makes
SIZED_REALLOC_N ignore the old size arg.
------------------------------------------------------------------------
r63486 | normal | 2018-05-22 10:42:21 +0900 (Tue, 22 May 2018) | 3 lines

gc.c: use RUBY_DEFAULT_FREE instead of open-coded constant

Improves readability and makes future changes easier
------------------------------------------------------------------------
r63485 | normal | 2018-05-22 10:13:08 +0900 (Tue, 22 May 2018) | 4 lines

string.c: size hints for free and realloc calls

Another part of the plan to reduce dependencies on malloc_usable_size:
https://bugs.ruby-lang.org/issues/10238
------------------------------------------------------------------------
r63484 | normal | 2018-05-22 09:44:22 +0900 (Tue, 22 May 2018) | 4 lines

parse.y: use ruby_sized_xfree and SIZED_REALLOC_N

Another part of the plan to reduce dependencies on malloc_usable_size
which costs us speed: https://bugs.ruby-lang.org/issues/10238
------------------------------------------------------------------------
r63483 | normal | 2018-05-22 06:40:54 +0900 (Tue, 22 May 2018) | 5 lines

load.c: use ruby_sized_xfree for calloc-ed RArray VALUE

IMHO, this increases readability, too, since it's not
immediately clear that the object is on the malloc heap
and not a regular Ruby object.
------------------------------------------------------------------------
r63482 | svn | 2018-05-22 06:21:25 +0900 (Tue, 22 May 2018) | 1 line

* 2018-05-22
------------------------------------------------------------------------
r63481 | normal | 2018-05-22 06:21:23 +0900 (Tue, 22 May 2018) | 4 lines

array.c: use ruby_sized_free and SIZED_REALLOC_N

Part of the plan to reduce dependencies on malloc_usable_size
which costs us speed: https://bugs.ruby-lang.org/issues/10238
------------------------------------------------------------------------
r63480 | k0kubun | 2018-05-21 23:32:55 +0900 (Mon, 21 May 2018) | 4 lines

mjit.h: skip accessing mjit_opts if JIT-ed

We want to skip checking `mjit_opts.wait` for already JIT-ed case.
Optcarrot is slightly improved like 65.20 fps -> 66.60 fps.
------------------------------------------------------------------------
r63479 | usa | 2018-05-21 21:36:22 +0900 (Mon, 21 May 2018) | 2 lines

mention about `goruby` target in help

------------------------------------------------------------------------
r63478 | usa | 2018-05-21 21:32:40 +0900 (Mon, 21 May 2018) | 2 lines

now can do `make goruby`

------------------------------------------------------------------------
r63477 | nobu | 2018-05-21 21:25:45 +0900 (Mon, 21 May 2018) | 4 lines

ruby.c: localize a variable

* ruby.c (ruby_init_loadpath_safe): moved libdir to the block
  where it is used.
------------------------------------------------------------------------
r63476 | nobu | 2018-05-21 21:24:47 +0900 (Mon, 21 May 2018) | 6 lines

ruby.c: runtime_libruby_path

* ruby.c (runtime_libruby_path): hoisted out platform dependent
  routine to get the loaded runtime library path.
  cygwin_conv_path does path separator and WCHAR to UTF-8
  conversions too.
------------------------------------------------------------------------
r63475 | usa | 2018-05-21 15:20:24 +0900 (Mon, 21 May 2018) | 2 lines

added `f` for 1 byte FizzBuzz because Hexagony has such feature

------------------------------------------------------------------------
r63474 | shyouhei | 2018-05-21 09:41:57 +0900 (Mon, 21 May 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.


------------------------------------------------------------------------
r63473 | usa | 2018-05-21 03:36:53 +0900 (Mon, 21 May 2018) | 2 lines

goruby build was broken

------------------------------------------------------------------------
r63472 | usa | 2018-05-21 03:36:42 +0900 (Mon, 21 May 2018) | 2 lines

should propagate V to sub make

------------------------------------------------------------------------
r63471 | usa | 2018-05-21 03:13:08 +0900 (Mon, 21 May 2018) | 2 lines

goruby build was broken

------------------------------------------------------------------------
r63470 | svn | 2018-05-21 03:09:37 +0900 (Mon, 21 May 2018) | 1 line

* 2018-05-21
------------------------------------------------------------------------
r63469 | usa | 2018-05-21 03:09:36 +0900 (Mon, 21 May 2018) | 2 lines

get rid of unused variable warning.

------------------------------------------------------------------------
r63468 | yui-knk | 2018-05-19 12:43:00 +0900 (Sat, 19 May 2018) | 6 lines

iseq.c: Fix segfault when debug is not 0

* iseq.c (get_insn_info_succinct_bitvector): If
  VM_CHECK_MODE is 0, `body->insns_info.positions` is
  freed in `rb_iseq_insns_info_encode_positions`.
  Print `position` only when VM_CHECK_MODE is set.
------------------------------------------------------------------------
r63467 | yui-knk | 2018-05-19 11:47:26 +0900 (Sat, 19 May 2018) | 1 line

vm_core.h: Remove duplicate declaration
------------------------------------------------------------------------
r63466 | svn | 2018-05-19 09:22:40 +0900 (Sat, 19 May 2018) | 1 line

* 2018-05-19
------------------------------------------------------------------------
r63465 | nobu | 2018-05-19 09:22:39 +0900 (Sat, 19 May 2018) | 5 lines

fileutils.rb: split fu_windows?

* lib/fileutils.rb (FileUtils::StreamUtils_#fu_windows?): select
  the method definition for each platforms, and dropped supports
  for deprecated platforms.
------------------------------------------------------------------------
r63464 | normal | 2018-05-18 17:40:16 +0900 (Fri, 18 May 2018) | 9 lines

Revert "gc.c: use monotonic counters for objspace_malloc_increase"

There were major size regressions I failed to notice before in:

	bm_array_sample_100k__6k
	bm_array_sample_100k___10k
	bm_array_sample_100k___50k

This reverts commit r63463 / 14fb10a9ec41c77a91a778ca2f705c1897958afb
------------------------------------------------------------------------
r63463 | normal | 2018-05-18 17:29:28 +0900 (Fri, 18 May 2018) | 16 lines

gc.c: use monotonic counters for objspace_malloc_increase

atomic_sub_nounderflow is expensive and objspace_malloc_increase
was showing up near the top of some `perf` profiles.  The new
implementation allows the compiler to inline and eliminate
some branches from objspace_malloc_increase.

Furthermore, we do not need atomics for oldmalloc_increase

This consistently improves bm_so_count_words benchmark by
around 10% on my hardware.

name	built
so_count_words	1.107

[ruby-core:87096] [Feature #14767]
------------------------------------------------------------------------
r63462 | normal | 2018-05-18 17:01:07 +0900 (Fri, 18 May 2018) | 15 lines

thread.c (rb_wait_for_single_fd): do not leak EINTR on timeout

We must not leak EINTR to users in case a signal hits a
ppoll/select caller right when (or just before) the timeout
expires.  In other words, the timeout should take precedence
over the -1 result from ppoll or select.

We also try one more time in case of EINTR with a zero timeout,
since technically the syscall finished before timing out if
it returns EINTR.

Regression appeared in r62457
("thread.c (update_timespec): use timespec_update_expire",
 commit e6bf0128add103730d8c96727f3ed4dab95088e4)
and is not in any stable release of Ruby.
------------------------------------------------------------------------
r63461 | hsbt | 2018-05-18 10:39:13 +0900 (Fri, 18 May 2018) | 3 lines

Merge RubyGems 2.7.7

  see release details here: https://blog.rubygems.org/2018/05/18/2.7.7-released.html
------------------------------------------------------------------------
r63460 | nobu | 2018-05-18 09:40:06 +0900 (Fri, 18 May 2018) | 1 line

tool: fixed shadowing variables
------------------------------------------------------------------------
r63459 | nobu | 2018-05-18 09:38:00 +0900 (Fri, 18 May 2018) | 1 line

tool: removed unused variables
------------------------------------------------------------------------
r63458 | nobu | 2018-05-18 09:37:59 +0900 (Fri, 18 May 2018) | 4 lines

redmine-backporter.rb: suppress a warning [ci skip]

* tool/redmine-backporter.rb (StringScanner.readline): use `true`
  to suppress a "literal in condition" warning.
------------------------------------------------------------------------
r63457 | nobu | 2018-05-18 09:36:24 +0900 (Fri, 18 May 2018) | 5 lines

parse.y: relax literal in condition warnings

* parse.y (cond0): do not warn literal boolean (true and false) in
  condition expressions, as they are often used as infinite loops,
  deactivated code block, etc.
------------------------------------------------------------------------
r63456 | svn | 2018-05-18 02:11:08 +0900 (Fri, 18 May 2018) | 1 line

* 2018-05-18
------------------------------------------------------------------------
r63455 | k0kubun | 2018-05-18 02:11:07 +0900 (Fri, 18 May 2018) | 9 lines

_mjit_compile_send.erb: disable attr_reader inline

for now, which was committed in r63333.

Currently trunk's JIT seems to have some wrong behaviors, and this is
the most suspicious culprit of them for now. In the future, I may have
a strict test environment to detect the cause, but there's no enough
time to test this until preview2. So let me revert this and see how it
goes after this.
------------------------------------------------------------------------
r63454 | nobu | 2018-05-17 21:36:33 +0900 (Thu, 17 May 2018) | 5 lines

rb_parser_printf declaration

* node.h (rb_parser_printf): delcare as PRINTF_ARGS.

* parse.y (parser_token_value_print): cast to adjust to %c.
------------------------------------------------------------------------
r63453 | nobu | 2018-05-17 19:46:21 +0900 (Thu, 17 May 2018) | 4 lines

range.c: === by cover?

* range.c (range_eqq): switch `Range#===` to use `cover?` instead
  of `include?`.  [Feature #14575]
------------------------------------------------------------------------
r63452 | naruse | 2018-05-17 16:40:01 +0900 (Thu, 17 May 2018) | 16 lines

http_proxy setting should respect both parent domain and subdomain

URI::Generic: Respect no_proxy for both parent domain and
subdomains It is now possible to add just the subdomains for proxy bypass. In
a setting where the main domain needs to go through proxy while the
subdomains don't, it is now possible to just add the subdomains to the
no_proxy list.
The assumption that subdomains and the parent domain should
behave the same wrt no_proxy has been removed.

eg: Adding .example.com in no_proxy would allow example.com
to go through the proxy.

From: Harsimran Singh Maan <maan.harry@gmail.com>
fix https://github.com/ruby/ruby/pull/1748
[Bug #14345]
------------------------------------------------------------------------
r63451 | normal | 2018-05-17 13:20:33 +0900 (Thu, 17 May 2018) | 7 lines

vm_trace: implement postponed_jobs as st_table

st_table allows the use of st_shift to act as an order-preserving
queue while allowing fast lookups to prevent duplicate jobs.

In typical Ruby apps, this table will only have one entry
for gc_finalize_deferred_register.
------------------------------------------------------------------------
r63450 | normal | 2018-05-17 12:48:32 +0900 (Thu, 17 May 2018) | 9 lines

vm_trace: remove rb_postponed_job_t->flags

This field has been taking up space for 5 years and never used.
Save 8kb of memory on x86-64 for now.  If we ever care about
this flag, we'll simply re-add it.

* vm_trace.c (rb_postponed_job_struct): remove flags
  (postponed_job_register): comment out flags assignment
  [ruby-core:87052] [Misc #14764]
------------------------------------------------------------------------
r63449 | normal | 2018-05-17 12:48:27 +0900 (Thu, 17 May 2018) | 1 line

vm_trace.c: spelling fix: PJRR_SUCESS => PJRR_SUCCESS
------------------------------------------------------------------------
r63448 | normal | 2018-05-17 06:54:42 +0900 (Thu, 17 May 2018) | 6 lines

thread: reduce GET_THREAD calls

This allows native_sleep to use less stack (80 -> 64 bytes on
x86-64) for GVL_UNLOCK_BEGIN/END.  For future APIs, we will pass
`ec` or `th` around anyways, so the BLOCKING_REGION change
should be beneficial in the future.
------------------------------------------------------------------------
r63447 | normal | 2018-05-17 05:39:30 +0900 (Thu, 17 May 2018) | 6 lines

gc.c: use ccan/list

This seems to improve the readability of gc.c a small amount
and it doesn't have any measurable performance impact.

[ruby-core:87067] [Misc #14762]
------------------------------------------------------------------------
r63446 | svn | 2018-05-17 03:55:29 +0900 (Thu, 17 May 2018) | 1 line

* 2018-05-17
------------------------------------------------------------------------
r63445 | stomar | 2018-05-17 03:55:28 +0900 (Thu, 17 May 2018) | 4 lines

lib/optparse.rb: improve docs

* lib/optparse.rb: [DOC] simplify shell prompt in examples;
  other minor improvements.
------------------------------------------------------------------------
r63444 | ngoto | 2018-05-16 20:06:30 +0900 (Wed, 16 May 2018) | 6 lines

configure.ac: move the checks of _XOPEN_SOURCE on Solaris

* configure.ac (solaris*): Move the checks of _XOPEN_SOURCE to the
  location before r63443, to cover non-GCC compilers on Solaris.
  This partly reverts r63443.

------------------------------------------------------------------------
r63443 | ngoto | 2018-05-16 13:11:20 +0900 (Wed, 16 May 2018) | 11 lines

configure.ac: move checks of -std=gnu99 and _XOPEN_SOURCE on Solaris

* configure.ac (ansi_options): On Solaris, "-std=gnu99" should be
  appended to CPPFLAGS instead of warnflags and strict_warnflags,
  because the flag affects existance of functions and macros.

* configure.ac (solaris*): Check _XOPEN_SOURCE just after checking
  "-std=gnu99" on Solaris. Because _XOPEN_SOURCE also affects existance
  of many functions and macros, it is good to define it earlier.
  The check is simplified to use AC_TRY_COMPILE with RUBY_WERROR_FLAG.

------------------------------------------------------------------------
r63442 | ngoto | 2018-05-16 12:57:50 +0900 (Wed, 16 May 2018) | 2 lines

configure.ac: revert r63438

------------------------------------------------------------------------
r63441 | nobu | 2018-05-16 10:40:44 +0900 (Wed, 16 May 2018) | 4 lines

iseq body local variables

* compile.c, iseq.c: extract body and param.keyword in iseq as
  local variables.
------------------------------------------------------------------------
r63440 | nobu | 2018-05-16 10:31:28 +0900 (Wed, 16 May 2018) | 4 lines

fileutils.rb: remove code for OS/2 emx

* lib/fileutils.rb (FileUtils#mv): remove code for OS/2 emx, its
  support has been dropped yeas ago.
------------------------------------------------------------------------
r63439 | svn | 2018-05-16 05:48:24 +0900 (Wed, 16 May 2018) | 1 line

* 2018-05-16
------------------------------------------------------------------------
r63438 | ngoto | 2018-05-16 05:48:23 +0900 (Wed, 16 May 2018) | 5 lines

Change logic to check _XOPEN_SOURCE on Solaris

* configure.ac: Change logic to check _XOPEN_SOURCE on Solaris.
  With _XOPEN_SOURCE, "-std=gnu99" may also be added to CPPFLAGS.

------------------------------------------------------------------------
r63437 | ngoto | 2018-05-15 23:31:47 +0900 (Tue, 15 May 2018) | 7 lines

Split TestThread#test_join_limits into peaces

* test/ruby/test_thread.rb (TestThread#test_join_limit_*): Split
  TestThread#test_join_limits for investigating hang-up on Solaris.
  Each method tests only a single limit value.
  [ruby-core:87045] [Bug #14761]

------------------------------------------------------------------------
r63436 | nobu | 2018-05-15 19:51:07 +0900 (Tue, 15 May 2018) | 1 line

signal.c: follow up r63435
------------------------------------------------------------------------
r63435 | normal | 2018-05-15 19:11:32 +0900 (Tue, 15 May 2018) | 6 lines

vm_core.h (rb_execution_context_t): interrupt_mask size to match interrupt_flag

rb_atomic_t is 32-bit on 64-bit platforms (including the popular
x86-64 Linux), so save 4 bytes on this structure.  This doesn't
result in any final size reduction due to padding, yet, but
future changes are possible to shrink rb_execution_context_t
------------------------------------------------------------------------
r63434 | hsbt | 2018-05-15 19:10:33 +0900 (Tue, 15 May 2018) | 3 lines

Added workaround to fileutils for `make btest` without rbconfig.

  Followed up r63430.
------------------------------------------------------------------------
r63433 | nobu | 2018-05-15 17:08:24 +0900 (Tue, 15 May 2018) | 4 lines

configure.ac: maybe with jemalloc

* configure.ac (--with-jemalloc): accept `maybe` (other than `yes`
  and `no`), check for jemalloc and use it if possible.
------------------------------------------------------------------------
r63432 | nobu | 2018-05-15 16:46:55 +0900 (Tue, 15 May 2018) | 5 lines

generic_erb.rb: get rid of fileutils

* tool/generic_erb.rb: get rid of FileUtils.touch, not to depend
  on fileutils.rb which will depend on rbconfig.rb which does not
  exist when creating encdb.h.
------------------------------------------------------------------------
r63431 | nobu | 2018-05-15 16:45:24 +0900 (Tue, 15 May 2018) | 1 line

share :cause variable
------------------------------------------------------------------------
r63430 | hsbt | 2018-05-15 14:53:18 +0900 (Tue, 15 May 2018) | 6 lines

Retry to merge fileutils-1.1.0.

  * Revert "Revert "Merge fileutils-1.1.0.""
    This reverts commit 84bb8e81c25d4d7d6020c3acfbbc36e9064200fa.

  * Added workaround for make mjit-headers
------------------------------------------------------------------------
r63429 | shyouhei | 2018-05-15 13:35:58 +0900 (Tue, 15 May 2018) | 7 lines

-Wno-cast-function-type

GCC 8.1+ introduced this warning in -Weverything.  It does
shed some lights on something, but rather annoying than
useful ATM.  Might be a subject to revert this option in a
future.

------------------------------------------------------------------------
r63428 | mame | 2018-05-15 13:16:08 +0900 (Tue, 15 May 2018) | 10 lines

Revert "Merge fileutils-1.1.0."

This reverts commit 99da3d2570e110d3024039102205f6d64174bf5e.
The change caused the following build failure:

```
.../ruby/lib/fileutils.rb:88:in `require': cannot load such file -- rbconfig (LoadError)
uncommon.mk:987: recipe for target 'encdb.h' failed
make: *** [encdb.h] Error 1
```
------------------------------------------------------------------------
r63427 | normal | 2018-05-15 12:49:21 +0900 (Tue, 15 May 2018) | 14 lines

thread.c: enable ppoll for FreeBSD 11.0 and later

FreeBSD 11.0+ supports ppoll, so we may use it after accounting
for portability differences in how it treats POLLOUT vs POLLHUP
events as mutually exclusive (as documented in the FreeBSD
poll(2) manpage).

For waiting on high-numbered single FDs, this should put
FreeBSD on equal footing with Linux and should allow cheaper
FD readiness checking with sleepy GC in the future.

* thread.c (USE_POLL, POLLERR_SET): define for FreeBSD 11.0+
  (rb_wait_for_single_fd): return all requested events on POLLERR_SET
  io.c (USE_POLL): define for FreeBSD 11.0+
------------------------------------------------------------------------
r63426 | normal | 2018-05-15 10:29:14 +0900 (Tue, 15 May 2018) | 3 lines

-test-/wait_for_single_fd: fix -Wformat-security warning

Oops
------------------------------------------------------------------------
r63425 | hsbt | 2018-05-15 10:22:36 +0900 (Tue, 15 May 2018) | 4 lines

Merge fileutils-1.1.0.

  This version was migrated JRuby paches.
  https://github.com/ruby/fileutils/pull/18
------------------------------------------------------------------------
r63424 | svn | 2018-05-15 09:08:34 +0900 (Tue, 15 May 2018) | 1 line

* properties.
------------------------------------------------------------------------
r63423 | normal | 2018-05-15 09:08:33 +0900 (Tue, 15 May 2018) | 5 lines

test_io_wait_uncommon: new test for uncommon file types

This should make portability problems more apparent when we try
using ppoll with rb_wait_for_single_fd on FreeBSD or other
non-Linux platforms.
------------------------------------------------------------------------
r63422 | normal | 2018-05-15 08:51:39 +0900 (Tue, 15 May 2018) | 3 lines

test_wait_for_single_fd.rb: remove with_pipe helper

IO.pipe natively accepts a block, nowadays.
------------------------------------------------------------------------
r63421 | normal | 2018-05-15 08:51:35 +0900 (Tue, 15 May 2018) | 8 lines

test_wait_for_single_fd: ensure this works with kqueue

Regardless of future features, this needs to work with
kqueue descriptors across platforms.

Today this will be useful for 3rd-party libraries using
kqueue.  In the future, Ruby may use kqueue natively
and we shall ensure we can wait on it.
------------------------------------------------------------------------
r63420 | normal | 2018-05-15 08:42:10 +0900 (Tue, 15 May 2018) | 1 line

test_wait_for_single_fd.rb: relax test for newer FreeBSD
------------------------------------------------------------------------
r63419 | svn | 2018-05-15 08:40:57 +0900 (Tue, 15 May 2018) | 1 line

* 2018-05-15
------------------------------------------------------------------------
r63418 | normal | 2018-05-15 08:40:55 +0900 (Tue, 15 May 2018) | 13 lines

io.c: cleanup copy_stream wait-for-single-fd cases

Avoid paying unnecessary setup and teardown cost for rb_fdset_t
on platforms (Linux) with good poll() support.  This simplifies
code makes future changes (perhaps for sleepy GC) easier.

* io.c (struct copy_stream_struct): remove rb_fdset_t fds
  (nogvl_wait_for_single_fd): implement with select for non-poll case
  (maygvl_copy_stream_wait_read): remove duplicate definition
  (nogvl_copy_stream_wait_write): remove #ifdef
  (copy_stream_body): remove rb_fd_set calls
  (copy_stream_finalize): remove rb_fd_term call
  (rb_io_s_copy_stream): remove rb_fd_init
------------------------------------------------------------------------
r63417 | nobu | 2018-05-14 17:33:14 +0900 (Mon, 14 May 2018) | 4 lines

error.c: check redefined backtrace result

* error.c (rb_get_backtrace): check the result of `backtrace` even
  if the method is redefined.  [ruby-core:87013] [Bug #14756]
------------------------------------------------------------------------
r63416 | hsbt | 2018-05-14 15:39:40 +0900 (Mon, 14 May 2018) | 1 line

Update test-unit 3.2.8 for bundled gems.
------------------------------------------------------------------------
r63415 | svn | 2018-05-14 12:30:05 +0900 (Mon, 14 May 2018) | 1 line

* 2018-05-14
------------------------------------------------------------------------
r63414 | shyouhei | 2018-05-14 12:30:03 +0900 (Mon, 14 May 2018) | 4 lines

RSTRING_PTR is not guaranteed to be char*-aligned

This commit eliminates (char **)RSTRING_PTR(...) like usages.

------------------------------------------------------------------------
r63413 | yui-knk | 2018-05-13 21:31:38 +0900 (Sun, 13 May 2018) | 7 lines

compile.c: Fix segfault when VM_INSN_INFO_TABLE_IMPL is not 2

* compile.c (ibf_dump_iseq_each): Fix a range of a conditional.
  `positions` is only used when VM_INSN_INFO_TABLE_IMPL is 2.
  And always `dump_body` is expected to be initialized by
  `iseq->body`. For example, `dump_body->insns_info.size` is
  used in `ibf_dump_insns_info_positions`.
------------------------------------------------------------------------
r63412 | svn | 2018-05-13 10:18:34 +0900 (Sun, 13 May 2018) | 1 line

* 2018-05-13
------------------------------------------------------------------------
r63411 | nobu | 2018-05-13 10:18:33 +0900 (Sun, 13 May 2018) | 5 lines

optparse.rb: Remove redundant `.freeze`

[Fix GH-1873]

From: Masataka Pocke Kuwabara <kuwabara@pocke.me>
------------------------------------------------------------------------
r63410 | nobu | 2018-05-12 23:41:24 +0900 (Sat, 12 May 2018) | 7 lines

optparse.rb: [DOC] about into: option

* lib/optparse.rb: add documentation for "into" option of #parse
  and family, which stores options to a Hash.
  [ruby-core:87004] [Misc #14753]

From: pocke (Masataka Kuwabara) <kuwabara@pocke.me>
------------------------------------------------------------------------
r63409 | nobu | 2018-05-12 18:13:45 +0900 (Sat, 12 May 2018) | 4 lines

irb.rb: update `_`

* lib/irb.rb (IRB::Irb#eval_input): update `_` after exception.
  [ruby-core:86989] [Bug #14749]
------------------------------------------------------------------------
r63408 | nobu | 2018-05-12 18:09:23 +0900 (Sat, 12 May 2018) | 4 lines

fix TestInputMethod

* test/irb/test_context.rb (TestInputMethod#initialize): fix typos
  and increment `line_no` only when not reaching the end.
------------------------------------------------------------------------
r63407 | kou | 2018-05-12 18:06:00 +0900 (Sat, 12 May 2018) | 8 lines

rss: Add option Hash support to RSS::Parser.parse

Available options:

  * :validate
  * :ignore_unknown_element
  * :parser_class

------------------------------------------------------------------------
r63406 | rhe | 2018-05-12 16:33:53 +0900 (Sat, 12 May 2018) | 15 lines

openssl: merge changes in v2.1.1

Commits in upstream repository since v2.1.0 can be found at:

	https://github.com/ruby/openssl/compare/v2.1.0...v2.1.1

----------------------------------------------------------------
Kazuki Yamaguchi (7):
      test/utils: disable Thread's report_on_exception in start_server
      cipher: validate iterations argument for Cipher#pkcs5_keyivgen
      extconf.rb: fix build with LibreSSL 2.7.0
      test/test_pkey_rsa: fix test failure with OpenSSL 1.1.1
      test/test_ssl_session: set client protocol version explicitly
      Ruby/OpenSSL 2.0.8
      Ruby/OpenSSL 2.1.1
------------------------------------------------------------------------
r63405 | nobu | 2018-05-12 10:26:39 +0900 (Sat, 12 May 2018) | 5 lines

io.c: fix typo and phrase [ci skip]

[Fix GH-1872]

From: Leon M. George <leon@georgemail.eu>
------------------------------------------------------------------------
r63404 | nobu | 2018-05-12 10:24:18 +0900 (Sat, 12 May 2018) | 4 lines

iseq.c: iseq body local variables

* iseq.c: extract body and param.keyword in iseq as local
  variables.
------------------------------------------------------------------------
r63403 | nobu | 2018-05-12 10:24:16 +0900 (Sat, 12 May 2018) | 4 lines

iseq.c: refactoring rb_iseq_free

* iseq.c (rb_iseq_free): call mjit_free_iseq only if iseq->body is
  not NULL too, as the function accesses the body.
------------------------------------------------------------------------
r63402 | stomar | 2018-05-12 05:07:32 +0900 (Sat, 12 May 2018) | 3 lines

lib/securerandom.rb: improve docs

* lib/securerandom.rb: [DOC] drop unnecessary `p' from code examples.
------------------------------------------------------------------------
r63401 | ngoto | 2018-05-12 02:21:37 +0900 (Sat, 12 May 2018) | 7 lines

configure.ac: remove ineffective check on Solaris with GCC

* configure.ac (solaris): Remove ineffective check for -std=iso9899:1999
  on Solaris with GCC. The "-std=iso9899:1999" was replaced by
  "-std=gnu99" by the commit r54895. The check is no longer effective
  after that, and two years have passed without error reports.

------------------------------------------------------------------------
r63400 | ngoto | 2018-05-12 01:47:38 +0900 (Sat, 12 May 2018) | 8 lines

transform_mjit_header.rb: workaround for Solaris 10 with old GCC

* tool/transform_mjit_header.rb (MJITHeader.conflicting_types?):
  Add workaround for Solaris 10 with old GCC (4.6.2), that is
  essentially the same as for AIX (commit r62326), but probably
  due to different GCC versions, different error message is shown.
  [Bug #14751] [ruby-dev:50541]

------------------------------------------------------------------------
r63399 | svn | 2018-05-12 00:46:21 +0900 (Sat, 12 May 2018) | 1 line

* 2018-05-12
------------------------------------------------------------------------
r63398 | ngoto | 2018-05-12 00:46:21 +0900 (Sat, 12 May 2018) | 7 lines

mkmf.rb: set cppflags

* ext/mkmf.rb (configuration): set the default cppflags, which is
  referred from the default CPPFLAGS, for extension libraries.
  This fixes build failure of ext/zlib on Solaris 10.
  [Bug #14746] [ruby-dev:50539]

------------------------------------------------------------------------
r63397 | nobu | 2018-05-11 22:01:36 +0900 (Fri, 11 May 2018) | 5 lines

fix potential memory leaks

* parse.y (primary, new_args_tail, local_tbl): keep the order;
  allocate an empty imemo first then xmalloc, to get rid of
  potential memory leak when allocation imemo failed.
------------------------------------------------------------------------
r63396 | shugo | 2018-05-11 21:39:23 +0900 (Fri, 11 May 2018) | 4 lines

net/imap: Fix ArgumentError in send_string_data

Thanks to ShockwaveNN (Pavel Lobashov) for reporting the bug.
[ruby-core:86990] [Bug #14750]
------------------------------------------------------------------------
r63395 | svn | 2018-05-11 21:12:59 +0900 (Fri, 11 May 2018) | 1 line

* 2018-05-11
------------------------------------------------------------------------
r63394 | kazu | 2018-05-11 21:12:57 +0900 (Fri, 11 May 2018) | 1 line

Use `&.` instead of modifier if
------------------------------------------------------------------------
r63393 | yui-knk | 2018-05-10 18:49:55 +0900 (Thu, 10 May 2018) | 1 line

node.c: Fix format and example of NODE_OPCALL
------------------------------------------------------------------------
r63392 | normal | 2018-05-10 17:54:26 +0900 (Thu, 10 May 2018) | 47 lines

variable.c: fix multiple autoload with identical file (again)

We need to ensure autoload declarations pointing to the same
feature (aka "file") can wait on each other to avoid deadlock
situations.

So, reorganize autoload data structures to maintain a
feature => autoload_data_i mapping, and have module constant
tables point to the new autoload_const struct instead of
directly to autoload_data_i.  This allows multiple
autoload_const structs to refer to the SAME autoload_data_i
struct, and with it, the on-stack autoload_state.waitq.

The end result is different constants can share the same waitq
(tied to the feature name), and not deadlock each other during
loading.

Thanks to Eugene Kenny for the bug report and reproducible test case.

Reported-by: Eugene Kenny <elkenny@gmail.com>

* variable.c (autoload_featuremap): new global
  (struct autoload_const): new per-const struct
  (struct autoload_state): reference autoload_const instead of autoload_data_i
  (struct autoload_data_i): remove per-const
  (autoload_i_mark): delete from autoload_featuremap if unreferenced
  (autoload_c_mark): new dmark callback
  (autoload_c_free): new dfree callback
  (autoload_c_memsize): new memsize callback
  (autoload_const_type): new data type
  (get_autoload_data): set autoload_const as well
  (rb_autoload_str): use new data structures
  (autoload_delete): cleanup from autoload_featuremap
  (check_autoload_required): adjust for new internals
  (rb_autoloading_value): ditto
  (struct autoload_const_set_args): remove, redundant with autoload_const
  (const_tbl_update): adjust for new internals
  (autoload_const_set): ditto
  (autoload_require): ditto
  (autoload_reset): ditto
  (rb_autoload_load): ditto
  (rb_const_set): ditto
  (current_autoload_data): ditto
  (set_const_visibility): ditto
* test/ruby/test_autoload.rb (test_autoload_same_file): new test
  (test_no_leak): new test
  [ruby-core:86935] [Bug #14742]
------------------------------------------------------------------------
r63391 | yui-knk | 2018-05-10 15:34:20 +0900 (Thu, 10 May 2018) | 21 lines

parse.y: Fix locations of NODE_NIL in endless ranges.

* parse.y: Fix to start with the end of dots.

  e.g. The locations of the NODE_NIL is fixed:

  ```
  1..
  ```

  * Before

  ```
  NODE_NIL (line: 1, location: (1,0)-(1,3))
  ```

  * After

  ```
  NODE_NIL (line: 1, location: (1,3)-(1,3))
  ```
------------------------------------------------------------------------
r63390 | normal | 2018-05-10 14:10:13 +0900 (Thu, 10 May 2018) | 5 lines

revert r63387 and r63389 for now

I can't reproduce the problem on my 32-bit machine, and I have
connectivity problems to my 64-bit systems at the moment.
Will revisit in a few hours hopefully.
------------------------------------------------------------------------
r63389 | normal | 2018-05-10 13:18:28 +0900 (Thu, 10 May 2018) | 6 lines

variable.c: fix autoload object lifetimes and leak

We must not call normal Hash methods inside GC free callback,
either, however identity hash may be used.

[ruby-core:86935] [Bug #14742]
------------------------------------------------------------------------
r63388 | shyouhei | 2018-05-10 11:54:04 +0900 (Thu, 10 May 2018) | 5 lines

RSTRING_PTR is not guaranteed to be char*-aligned

We need to ensure aligned memory access by allocating
another memory region.

------------------------------------------------------------------------
r63387 | normal | 2018-05-10 10:19:20 +0900 (Thu, 10 May 2018) | 46 lines

variable.c: fix multiple autoload with identical file

We need to ensure autoload declarations pointing to the same
feature (aka "file") can wait on each other to avoid deadlock
situations.

So, reorganize autoload data structures to maintain a
feature => autoload_data_i mapping, and have module constant
tables point to the new autoload_const struct instead of
directly to autoload_data_i.  This allows multiple
autoload_const structs to refer to the SAME autoload_data_i
struct, and with it, the on-stack autoload_state.waitq.

The end result is different constants can share the same waitq
(tied to the feature name), and not deadlock each other during
loading.

Thanks to Eugene Kenny for the bug report and reproducible test case.

Reported-by: Eugene Kenny <elkenny@gmail.com>

* variable.c (autoload_featuremap): new global
  (struct autoload_const): new per-const struct
  (struct autoload_state): reference autoload_const instead of autoload_data_i
  (struct autoload_data_i): remove per-const
  (autoload_i_mark): delete from autoload_featuremap if unreferenced
  (autoload_c_mark): new dmark callback
  (autoload_c_free): new dfree callback
  (autoload_c_memsize): new memsize callback
  (autoload_const_type): new data type
  (get_autoload_data): set autoload_const as well
  (rb_autoload_str): use new data structures
  (autoload_delete): cleanup from autoload_featuremap
  (check_autoload_required): adjust for new internals
  (rb_autoloading_value): ditto
  (struct autoload_const_set_args): remove, redundant with autoload_const
  (const_tbl_update): adjust for new internals
  (autoload_const_set): ditto
  (autoload_require): ditto
  (autoload_reset): ditto
  (rb_autoload_load): ditto
  (rb_const_set): ditto
  (current_autoload_data): ditto
  (set_const_visibility): ditto
* test/ruby/test_autoload.rb (test_autoload_same_file): new test
  [ruby-core:86935] [Bug #14742]
------------------------------------------------------------------------
r63386 | yui-knk | 2018-05-10 09:23:23 +0900 (Thu, 10 May 2018) | 1 line

node.c: Fix typos
------------------------------------------------------------------------
r63385 | nobu | 2018-05-10 02:40:04 +0900 (Thu, 10 May 2018) | 10 lines

fix potential memory leaks

* gc.c (rb_alloc_tmp_buffer_with_count): keep the order; allocate
  an empty imemo first then xmalloc, to get rid of potential
  memory leak when allocation imemo failed.

* parse.y (rb_parser_malloc, rb_parser_calloc, rb_parser_realloc):
  ditto.

* process.c (rb_execarg_allocate_dup2_tmpbuf): ditto.
------------------------------------------------------------------------
r63384 | k0kubun | 2018-05-10 02:19:23 +0900 (Thu, 10 May 2018) | 5 lines

_mjit_compile_pc_and_sp: re-commit r63360

reverting r63379 (revert of r63360).

The cause of error seems to be r63350. See r63382.
------------------------------------------------------------------------
r63383 | nobu | 2018-05-10 02:17:06 +0900 (Thu, 10 May 2018) | 4 lines

compile.c: suppress a warning

* compile.c (iseq_peephole_optimize): initialize dniobj first, to
  suppress a false warning by gcc 8.1.0.
------------------------------------------------------------------------
r63382 | k0kubun | 2018-05-10 02:11:07 +0900 (Thu, 10 May 2018) | 6 lines

_mjit_compile_send.erb: revert r63350

Revert "_mjit_compile_send.erb: inline recursive call"

I reverted r63360 in r63379, but the errors were reproductive from
r63350. So I need to revert this.
------------------------------------------------------------------------
r63381 | svn | 2018-05-10 01:12:42 +0900 (Thu, 10 May 2018) | 1 line

* 2018-05-10
------------------------------------------------------------------------
r63380 | nobu | 2018-05-10 01:12:41 +0900 (Thu, 10 May 2018) | 4 lines

iseq.h: fix argument order

* iseq.h (ISEQ_ORIGINAL_ISEQ_ALLOC): the order of ruby_xmalloc2
  arguments is `count` and `element size`.
------------------------------------------------------------------------
r63379 | k0kubun | 2018-05-09 22:09:01 +0900 (Wed, 09 May 2018) | 8 lines

_mjit_compile_pc_and_sp.erb: revert r63360

Revert "_mjit_compile_pc_and_sp.erb: make sure no uninitialized"

This triggered some `NoMethodError`s which seem to be caused by the
commit like: https://travis-ci.org/k0kubun/mjit-test/builds/376416934

I'll add tests and fix it later...
------------------------------------------------------------------------
r63378 | kazu | 2018-05-09 21:51:14 +0900 (Wed, 09 May 2018) | 1 line

Use `&.` instead of modifier if
------------------------------------------------------------------------
r63377 | hsbt | 2018-05-09 20:44:30 +0900 (Wed, 09 May 2018) | 1 line

Use hard-coded file list instead of Dir.glob.
------------------------------------------------------------------------
r63376 | hsbt | 2018-05-09 20:44:06 +0900 (Wed, 09 May 2018) | 3 lines

Revert "Use hard-coded vesion number for CI broken."

This reverts commit f5fef0a80d597f40c2d1a8cc8079bf190039fd6f.
------------------------------------------------------------------------
r63375 | shyouhei | 2018-05-09 18:53:19 +0900 (Wed, 09 May 2018) | 6 lines

align jmp_buf to VALUE

This ec->machine.regs is marked by GC. However jmp_buf is
not defined by us.  There are chances of unaligned access.
We should force it VALUE-aligned.

------------------------------------------------------------------------
r63374 | hsbt | 2018-05-09 18:35:12 +0900 (Wed, 09 May 2018) | 3 lines

Use hard-coded vesion number for CI broken.

  https://rubyci.org/logs/rubyci.s3.amazonaws.com/ubuntu/ruby-trunk/log/20180509T063003Z.fail.html.gz
------------------------------------------------------------------------
r63373 | shyouhei | 2018-05-09 16:46:11 +0900 (Wed, 09 May 2018) | 6 lines

RSTRING_PTR is not guaranteed to be VALUE-aligned

Don't abuse struct RString to hold arbitrary memory region.
Thanks to @mame we now have rb_imemo_alloc_auto_free_pointer
so use it instead.

------------------------------------------------------------------------
r63372 | mame | 2018-05-09 16:11:59 +0900 (Wed, 09 May 2018) | 1 line

Rename imemo_alloc with imemo_tmpbuf
------------------------------------------------------------------------
r63371 | mame | 2018-05-09 16:08:53 +0900 (Wed, 09 May 2018) | 8 lines

gc.c (rb_imemo_alloc_new): split for each purpose

imemo_alloc is used for three purposes: auto-free pointer (alternative
of alloca), alloc_tmp_buffer, and heap allocation for bison.
To make it clear, this change introduces three functions:
rb_imemo_alloc_auto_free_pointer,
rb_imemo_alloc_auto_free_maybe_mark_buffer, and
rb_imemo_alloc_parser_heap.
------------------------------------------------------------------------
r63370 | shyouhei | 2018-05-09 15:55:11 +0900 (Wed, 09 May 2018) | 7 lines

type func(); is different from type func(void);

If a function declarator includes no parameter list, that doesn't
mean the function takes zero parameter. rb_ast_new here does take
zero parameter, so it should be explicitly prototypes as (void).


------------------------------------------------------------------------
r63369 | mame | 2018-05-09 15:12:17 +0900 (Wed, 09 May 2018) | 5 lines

gc.c (rb_imemo_alloc_new): improve the API interface

rb_imemo_alloc_new returns rb_imemo_alloc_t*, but took VALUEs, which is
inconsistent.  To make the intention clear, it now takes only a pointer
to the buffer.
------------------------------------------------------------------------
r63368 | shyouhei | 2018-05-09 14:42:06 +0900 (Wed, 09 May 2018) | 5 lines

RSTRING_PTR is not guaranteed to be VALUE-aligned (retry)

Don't abuse struct RString to hold arbitrary memory region.
Raw pointer should just suffice.

------------------------------------------------------------------------
r63367 | hsbt | 2018-05-09 13:45:59 +0900 (Wed, 09 May 2018) | 1 line

Fixed file structure for csv.gemspec.
------------------------------------------------------------------------
r63366 | svn | 2018-05-09 13:39:18 +0900 (Wed, 09 May 2018) | 1 line

* properties.
------------------------------------------------------------------------
r63365 | svn | 2018-05-09 13:39:17 +0900 (Wed, 09 May 2018) | 1 line

* append newline at EOF.
------------------------------------------------------------------------
r63364 | hsbt | 2018-05-09 13:39:16 +0900 (Wed, 09 May 2018) | 1 line

Merge csv-1.0.2 from upstream.
------------------------------------------------------------------------
r63363 | shyouhei | 2018-05-09 11:42:22 +0900 (Wed, 09 May 2018) | 2 lines

revert r63362 due to test failure. Sorry!

------------------------------------------------------------------------
r63362 | shyouhei | 2018-05-09 11:36:34 +0900 (Wed, 09 May 2018) | 5 lines

RSTRING_PTR is not guaranteed to be VALUE-aligned

Don't abuse struct RString to hold arbitrary memory region.
use rb_alloc_tmp_buffer for that purpose.

------------------------------------------------------------------------
r63361 | svn | 2018-05-09 00:06:12 +0900 (Wed, 09 May 2018) | 1 line

* 2018-05-09
------------------------------------------------------------------------
r63360 | k0kubun | 2018-05-09 00:06:11 +0900 (Wed, 09 May 2018) | 43 lines

_mjit_compile_pc_and_sp.erb: make sure no uninitialized

area on VM stack to prevent SEGV on GC. GC may mark every value in VM
stack.

Unfortunately I couldn't write a test for it... So let me explain the
situation.

SEGV example:
https://gist.github.com/k0kubun/c7cea2b5761ffdff29ec79ea1a8f7f91

```
$ ruby --dump=insns -e 'def oct(num, len); "%0#{len}o" % num; end'
== disasm: #<ISeq:oct@-e:1 (1,0)-(1,41)> (catch: FALSE)
local table (size: 2, argc: 2 [opts: 0, rest: -1, post: 0, block: -1, kw: -1@-1, kwrest: -1])
[ 2] num@0<Arg> [ 1] len@1<Arg>
0000 putobject                    "%0"                                (   1)[LiCa]
0002 getlocal_WC_0                len@1
0004 dup
0005 checktype                    T_STRING
0007 branchif                     14
0009 dup
0010 opt_send_without_block       <callinfo!mid:to_s, argc:0, FCALL|ARGS_SIMPLE>, <callcache>
0013 tostring
0014 putobject                    "o"
0016 concatstrings                3
0018 getlocal_WC_0                num@0
0020 opt_mod                      <callinfo!mid:%, argc:1, ARGS_SIMPLE>, <callcache>
0023 leave                        [Re]
```

Prior to this commit, after arguments are pushed on 0010, stacks were:
VM stack: [uninitialized, uninitialized, len]
JIT stack: ["%0", len, len]

And then, when GC is invoked on 0016, VM stack will be [uninitialized, uninitialized]
and those uninitialized values will be marked by GC.

With this commit, after arguments are pushed on 0010, stacks will be:
VM stack: [len]
JIT stack: ["%0", len, len]

And VM stack will be [] on 0016.
------------------------------------------------------------------------
r63359 | nobu | 2018-05-08 19:58:56 +0900 (Tue, 08 May 2018) | 5 lines

vm_eval.c: eval_string_protect wrapper

* vm_eval.c (eval_string_protect): cast data instead of the
  function pointer, to suppress "cast between incompatible
  function types" warning by gcc 8.1.
------------------------------------------------------------------------
r63358 | shyouhei | 2018-05-08 18:09:12 +0900 (Tue, 08 May 2018) | 4 lines

rb_ary_dig, rb_hash_dig: nobody is using them outside.

mark them static.

------------------------------------------------------------------------
r63357 | ko1 | 2018-05-08 15:53:54 +0900 (Tue, 08 May 2018) | 4 lines

fix type mismatch.

* cont.c (fiber_context_create): `func` should accept variable args.

------------------------------------------------------------------------
r63356 | hsbt | 2018-05-08 11:07:53 +0900 (Tue, 08 May 2018) | 1 line

Merge rdoc-6.0.4 from upstream.
------------------------------------------------------------------------
r63355 | nobu | 2018-05-08 09:01:16 +0900 (Tue, 08 May 2018) | 1 line

cont.c: host out context setup
------------------------------------------------------------------------
r63354 | kazu | 2018-05-08 09:00:13 +0900 (Tue, 08 May 2018) | 1 line

Remove unreachable break
------------------------------------------------------------------------
r63353 | kazu | 2018-05-08 09:00:12 +0900 (Tue, 08 May 2018) | 1 line

Modify spaces [ci skip]
------------------------------------------------------------------------
r63352 | nobu | 2018-05-08 08:52:48 +0900 (Tue, 08 May 2018) | 1 line

cont.c: wrapper function
------------------------------------------------------------------------
r63351 | nobu | 2018-05-08 08:14:07 +0900 (Tue, 08 May 2018) | 4 lines

cont.c: refined error message

* cont.c (fiber_machine_stack_alloc): refined the error message on
  failure at setting a guard page.
------------------------------------------------------------------------
r63350 | k0kubun | 2018-05-08 01:16:59 +0900 (Tue, 08 May 2018) | 50 lines

_mjit_compile_send.erb: inline recursive call

mjit_compile.c: propagate funcname to compile_insn

test_jit.rb: add test covering this behavior

* Benchmark

```
require 'benchmark_driver'

Benchmark.driver(runner: :time, repeat_count: 4) do |x|
  x.prelude %{
    def fib(x)
      return x if x == 0 || x == 1
      fib(x-1) + fib(x-2)
    end
  }
  x.report 'fib(40)'
  x.loop_count 1

  x.rbenv(
    'before,--jit',
    'before',
    'after,--jit',
    'after',
  )
  x.verbose
end
```

```
before,--jit: ruby 2.6.0dev (2018-05-08 trunk 63349) +JIT [x86_64-linux]
before: ruby 2.6.0dev (2018-05-08 trunk 63349) [x86_64-linux]
after,--jit: ruby 2.6.0dev (2018-05-08 trunk 63349) +JIT [x86_64-linux]
last_commit=_mjit_compile_send.erb: inline recursive call
after: ruby 2.6.0dev (2018-05-08 trunk 63349) [x86_64-linux]
last_commit=_mjit_compile_send.erb: inline recursive call
Calculating -------------------------------------
                     before,--jit      before  after,--jit       after
             fib(40)        2.886       8.685        2.562       8.800 s -       1.000 times

Comparison:
                          fib(40)
         after,--jit:         2.6 s
        before,--jit:         2.9 s - 1.13x  slower
              before:         8.7 s - 3.39x  slower
               after:         8.8 s - 3.44x  slower

```
------------------------------------------------------------------------
r63349 | kazu | 2018-05-08 00:08:46 +0900 (Tue, 08 May 2018) | 3 lines

Remove needless require [ci skip]

already require on top
------------------------------------------------------------------------
r63348 | svn | 2018-05-08 00:07:52 +0900 (Tue, 08 May 2018) | 1 line

* 2018-05-08
------------------------------------------------------------------------
r63347 | kazu | 2018-05-08 00:07:51 +0900 (Tue, 08 May 2018) | 1 line

Use `&.` instead of modifier if and remove needless closed?
------------------------------------------------------------------------
r63346 | kazu | 2018-05-07 23:44:55 +0900 (Mon, 07 May 2018) | 1 line

Fix a typo [ci skip]
------------------------------------------------------------------------
r63345 | svn | 2018-05-07 15:59:55 +0900 (Mon, 07 May 2018) | 1 line

* 2018-05-07
------------------------------------------------------------------------
r63344 | nobu | 2018-05-07 15:59:55 +0900 (Mon, 07 May 2018) | 5 lines

cont.c: machine stack cache condition

* cont.c (fiber_store, rb_fiber_terminate): separate the condition
  to cache machine stacks, which is not directly restricted to the
  platforms, and may be used on Windows too in the future.
------------------------------------------------------------------------
r63343 | svn | 2018-05-06 18:53:35 +0900 (Sun, 06 May 2018) | 1 line

* 2018-05-06
------------------------------------------------------------------------
r63342 | nobu | 2018-05-06 18:53:33 +0900 (Sun, 06 May 2018) | 24 lines

optparse: Suppress warnings

Ruby warns "instance variable `@version` not initialized" for optparse when it receives `--version` option.

`test.rb`

```ruby
require 'optparse'
Version = '1'
OptionParser.new.parse(ARGV)
```

```
$ ruby -w test.rb --version
/home/pocke/.rbenv/versions/2.5.1/lib/ruby/2.5.0/optparse.rb:1168: warning: instance variable @version not initialized
/home/pocke/.rbenv/versions/2.5.1/lib/ruby/2.5.0/optparse.rb:1175: warning: instance variable @release not initialized
test 1
```

This change will suppress the warnings.

[Fix GH-1871]

From: Masataka Pocke Kuwabara <kuwabara@pocke.me>
------------------------------------------------------------------------
r63341 | nobu | 2018-05-05 12:12:20 +0900 (Sat, 05 May 2018) | 7 lines

securerandom.rb: [DOC] require in examples

* lib/securerandom.rb: added `require 'securerandom'` to each
  example, to state these methods are defined in this library and
  require it explicitly.  [ruby-core:85933] [Bug #14576]

[ci skip]
------------------------------------------------------------------------
r63340 | shyouhei | 2018-05-05 00:20:17 +0900 (Sat, 05 May 2018) | 2 lines

forgot to add INT2FIX (sorry!)

------------------------------------------------------------------------
r63339 | shyouhei | 2018-05-05 00:18:42 +0900 (Sat, 05 May 2018) | 7 lines

passing rb_thread_sleep to rb_protect is IMHO dangerous

rb_thread_sleep's argument is int, while rb_protect expects the function
to take VALUE. Depending on ABI this could be a problem.

We should wrap rb_thread_sleep here.

------------------------------------------------------------------------
r63338 | svn | 2018-05-05 00:03:37 +0900 (Sat, 05 May 2018) | 1 line

* 2018-05-05
------------------------------------------------------------------------
r63337 | shyouhei | 2018-05-05 00:03:37 +0900 (Sat, 05 May 2018) | 5 lines

nobody is using the return value of rb_io_fptr_finalize

However this function is listed in ruby/io.h.  We cannot but
define a new, void-returning variant to use instead.

------------------------------------------------------------------------
r63336 | kazu | 2018-05-04 22:30:25 +0900 (Fri, 04 May 2018) | 1 line

Use `&.` instead of modifier if
------------------------------------------------------------------------
r63335 | svn | 2018-05-04 15:12:14 +0900 (Fri, 04 May 2018) | 1 line

* 2018-05-04
------------------------------------------------------------------------
r63334 | nobu | 2018-05-04 15:12:12 +0900 (Fri, 04 May 2018) | 5 lines

object.c: raise on long invalid float string

* object.c (rb_cstr_to_dbl_raise): check long invalid float
  string more precisely when truncating insignificant part.
  [ruby-core:86800] [Bug #14729]
------------------------------------------------------------------------
r63333 | k0kubun | 2018-05-03 17:47:32 +0900 (Thu, 03 May 2018) | 14 lines

_mjit_compile_send.erb: retry inlining attr_reader

This reverts r63249 (revert r63212) and fixes a bug in it. The test to
prevent the bug is added as well.

vm_insnhelper.c: add `index` argument to vm_getivar. The argument is
created so that MJIT can pass the value of `cc->aux.index` on compilation
time.  The cache invalidation in _mjit_compile_send_guard.erb is only
working for the cache value on compilation time.
Note: As `index` is always passed as constant and it's force-inlined,
the performance of `vm_getivar` won't be degraded in VM.

_mjit_compile_send_guard.erb: New. Used to invalidate inlined values of cc.
common.mk: update dependencies for _mjit_compile_send_guard.erb
------------------------------------------------------------------------
r63332 | k0kubun | 2018-05-03 16:09:51 +0900 (Thu, 03 May 2018) | 5 lines

mjit_compile.c: skip generating unnecessary goto

after return or longjmp. This is mainly for skipping the check of stack
size in such cases, which shouldn't be checked because it does never
happen.
------------------------------------------------------------------------
r63331 | k0kubun | 2018-05-03 12:08:21 +0900 (Thu, 03 May 2018) | 6 lines

mjit_compile.c: verify stack size agreement

between branches.

mjit_compile.inc.erb: move the compiled_for_pos reference to
mjit_compile.c
------------------------------------------------------------------------
r63330 | normal | 2018-05-03 10:24:09 +0900 (Thu, 03 May 2018) | 4 lines

Revert "ext/cgi/escape: preserve String subclass in result"

This reverts commit 6afea14043b0c0e603f26c89ae0d043f65852668 r63328
I misread the original bug report and got results flipped.
------------------------------------------------------------------------
r63329 | k0kubun | 2018-05-03 09:52:30 +0900 (Thu, 03 May 2018) | 5 lines

mjit_compile.inc.erb: verify stack consistency

on JIT compilation. r63092 was risky without this check.

mjit_compile.c: update comment about stack consistency check
------------------------------------------------------------------------
r63328 | normal | 2018-05-03 08:18:55 +0900 (Thu, 03 May 2018) | 8 lines

ext/cgi/escape: preserve String subclass in result

* ext/cgi/escape/escape.c (optimized_escape_html): use rb_str_new_with_class
  (optimized_unescape_html): ditto
  (optimized_escape): ditto
  (optimized_unescape): ditto
* test/cgi/test_cgi_util.rb (test_escape_string_subclass): new test
  [ruby-core:86847] [Bug #14732]
------------------------------------------------------------------------
r63327 | k0kubun | 2018-05-03 01:27:33 +0900 (Thu, 03 May 2018) | 1 line

test_jit.rb: test local variables
------------------------------------------------------------------------
r63326 | k0kubun | 2018-05-03 01:04:26 +0900 (Thu, 03 May 2018) | 1 line

test_jit.rb: test opt_aref_with again
------------------------------------------------------------------------
r63325 | k0kubun | 2018-05-03 00:41:43 +0900 (Thu, 03 May 2018) | 3 lines

test_jit.rb: make it possible to automatically find

untested insns. Resolved some warnings.
------------------------------------------------------------------------
r63324 | svn | 2018-05-03 00:12:55 +0900 (Thu, 03 May 2018) | 1 line

* 2018-05-03
------------------------------------------------------------------------
r63323 | k0kubun | 2018-05-03 00:12:55 +0900 (Thu, 03 May 2018) | 3 lines

test_jit.rb: verify tested insns

and fix some untested insns
------------------------------------------------------------------------
r63322 | nobu | 2018-05-02 22:37:18 +0900 (Wed, 02 May 2018) | 5 lines

object.c: fix exponent with underscore

* object.c (rb_cstr_to_dbl_raise): do not ignore exponent part
  when the input string longer than internal buffer contains
  underscore(s).  [ruby-core:86836] [Bug #14731]
------------------------------------------------------------------------
r63321 | k0kubun | 2018-05-02 22:11:53 +0900 (Wed, 02 May 2018) | 4 lines

test_jit.rb: add missing dependency

The test works with make test-all, but I sometimes want to do a thing like:
`.ruby-svn/ruby -Itest/lib test/ruby/test_jit.rb -n test_clean_so`
------------------------------------------------------------------------
r63320 | k0kubun | 2018-05-02 21:55:57 +0900 (Wed, 02 May 2018) | 7 lines

compile.c: mark catch_except_p of iseq

which has throw insn, not only ancestor iseqs of it.
I think we should remove catch_except_p flag and try to simplify the
catch table itself, to prevent similar bugs in the future.

test_jit.rb: add test to prevent the bug
------------------------------------------------------------------------
r63319 | mame | 2018-05-02 11:07:26 +0900 (Wed, 02 May 2018) | 1 line

common.mk: Update dependencies on tool/ruby_vm scripts
------------------------------------------------------------------------
r63318 | mame | 2018-05-02 09:57:50 +0900 (Wed, 02 May 2018) | 1 line

tool/ruby_vm/views/_insn_name_info.erb: Auto-detect the longest insn name
------------------------------------------------------------------------
r63317 | mame | 2018-05-02 09:57:47 +0900 (Wed, 02 May 2018) | 4 lines

iseq.c (rb_iseq_disasm_insn): Change the width of insn names

Currently "trace_opt_send_without_block" (28 letters) is the longest
insn.
------------------------------------------------------------------------
r63316 | svn | 2018-05-02 05:55:40 +0900 (Wed, 02 May 2018) | 1 line

* 2018-05-02
------------------------------------------------------------------------
r63315 | normal | 2018-05-02 05:55:39 +0900 (Wed, 02 May 2018) | 11 lines

cont.c: cleanup needless cast

It seems like leftover development step from r59557
("refactoring Fiber status").

I will make fiber_status use BITFIELD macro in a future
commit.

* cont.c (struct rb_fiber_struct): drop const from fiber_status
  (fiber_status_set): remove cast
  [ruby-core:86788] [Misc #14720]
------------------------------------------------------------------------
r63314 | normal | 2018-05-01 17:35:19 +0900 (Tue, 01 May 2018) | 4 lines

use list_head_init instead of open-coding it

While we cannot use LIST_HEAD since r63312, we can at
least use list_head_init to make our code more readable.
------------------------------------------------------------------------
r63313 | nobu | 2018-05-01 15:55:43 +0900 (Tue, 01 May 2018) | 6 lines

ast.c: use enum in switch for warnings

* ext/-test-/ast/ast.c (node_children): use enum instead of int
  for not-handled enumeration value in switch warnings.

* ext/-test-/ast/ast.c (node_children): fix the rb_bug message.
------------------------------------------------------------------------
r63312 | shyouhei | 2018-05-01 13:41:10 +0900 (Tue, 01 May 2018) | 14 lines

LIST_HEAD as a local variable is a C99ism.

Address of a variable whose storage duration is `auto` is _not_ a
compile time constant, according to ISO 9899 section 6.4.
LIST_HEAD takes such thing.  You can't use it to declare local
variables.

Interestingly, address of a static variable _is_ a compile time
constant.  So a declaration like `static LIST_HEAD..` is
completely legal even in C90.

In C99 and newer, this is not a constraint violation.


------------------------------------------------------------------------
r63311 | kou | 2018-05-01 12:12:37 +0900 (Tue, 01 May 2018) | 2 lines

rexml: Suppress warnings

------------------------------------------------------------------------
r63310 | normal | 2018-05-01 08:53:55 +0900 (Tue, 01 May 2018) | 4 lines

test/thread/test_cv.rb: test CV usability inside forked child

* test/thread/test_cv.rb (def test_condvar_fork): new test
  [Bug #14725]
------------------------------------------------------------------------
r63309 | normal | 2018-05-01 08:47:21 +0900 (Tue, 01 May 2018) | 6 lines

thread_sync.c (condvar_ptr): reset fork_gen after forking

Otherwise the condition variable waiter list will always
be empty, which is wrong :x

[Bug #14725] [Bug #14634]
------------------------------------------------------------------------
r63308 | svn | 2018-05-01 08:12:03 +0900 (Tue, 01 May 2018) | 1 line

* 2018-05-01
------------------------------------------------------------------------
r63307 | normal | 2018-05-01 08:12:03 +0900 (Tue, 01 May 2018) | 1 line

thread.c (vm_living_thread_num): constify vm arg
------------------------------------------------------------------------
r63306 | kazu | 2018-04-30 19:01:08 +0900 (Mon, 30 Apr 2018) | 1 line

Use `&.` instead of modifier if
------------------------------------------------------------------------
r63305 | kou | 2018-04-30 15:54:13 +0900 (Mon, 30 Apr 2018) | 2 lines

NEWS: Add recent REXML changes

------------------------------------------------------------------------
r63304 | nobu | 2018-04-30 11:17:03 +0900 (Mon, 30 Apr 2018) | 7 lines

io.c: workaround for EPROTOTYPE

* io.c (internal_write_func, internal_writev_func): retry at
  unexpected EPROTOTYPE on macOS, to get rid of a kernel bug.
  [ruby-core:86690] [Bug #14713]

* ext/socket/init.c (rsock_{sendto,send,write}_blocking): ditto.
------------------------------------------------------------------------
r63303 | svn | 2018-04-30 09:28:31 +0900 (Mon, 30 Apr 2018) | 1 line

* 2018-04-30
------------------------------------------------------------------------
r63302 | nobu | 2018-04-30 09:28:30 +0900 (Mon, 30 Apr 2018) | 1 line

io.c: reuse internal_write_func
------------------------------------------------------------------------
r63301 | usa | 2018-04-29 22:45:11 +0900 (Sun, 29 Apr 2018) | 3 lines

* spec/ruby/command_line/dash_upper_i_spec.rb: skip symlink on Windows like
  other specs.

------------------------------------------------------------------------
r63300 | knu | 2018-04-29 20:15:41 +0900 (Sun, 29 Apr 2018) | 13 lines

Remove the teeny part from the shared library name on macOS

This will prevent macOS users from having to rebuild all extension
libraries every time they upgrade ruby to a new teeny release.

Before:
- libruby.2.6.0.dylib
- libruby.2.6.dylib -> libruby.2.6.0.dylib
- libruby.dylib -> libruby.2.6.0.dylib

After:
- libruby.2.6.dylib
- libruby.dylib -> libruby.2.6.dylib
------------------------------------------------------------------------
r63299 | nobu | 2018-04-29 16:12:56 +0900 (Sun, 29 Apr 2018) | 1 line

range.c: optimize range_each for Bignum
------------------------------------------------------------------------
r63298 | k0kubun | 2018-04-29 12:20:31 +0900 (Sun, 29 Apr 2018) | 19 lines

_mjit_compile_send.erb: fix pointer conversion warning

/var/folders/b0/9hgj_tyx10zgkcbyx3_j2dlr0000gn/T//_ruby_mjit_p72619u0.c:37:58: warning: incompatible integer to pointer
      conversion passing 'long' to parameter of type 'const struct rb_call_info *' [-Wint-conversion]
        vm_caller_setup_arg_block(ec, reg_cfp, &calling, 0x7ff6b2e10ca0, 0x7ff6b3847108, FALSE);
                                                         ^~~~~~~~~~~~~~
/Users/kokubun/.rbenv/versions/ruby-svn/include/ruby-2.6.0/x86_64-darwin16/rb_mjit_min_header-2.6.0.h:15613:66: note:
      passing argument to parameter 'ci' here
     struct rb_calling_info *calling, const struct rb_call_info *ci, rb_iseq_t *blockiseq, const int is_super)
                                                                 ^
/var/folders/b0/9hgj_tyx10zgkcbyx3_j2dlr0000gn/T//_ruby_mjit_p72619u0.c:37:74: warning: incompatible integer to pointer
      conversion passing 'long' to parameter of type 'rb_iseq_t *' (aka 'struct rb_iseq_struct *') [-Wint-conversion]
        vm_caller_setup_arg_block(ec, reg_cfp, &calling, 0x7ff6b2e10ca0, 0x7ff6b3847108, FALSE);
                                                                         ^~~~~~~~~~~~~~
/Users/kokubun/.rbenv/versions/ruby-svn/include/ruby-2.6.0/x86_64-darwin16/rb_mjit_min_header-2.6.0.h:15613:81: note:
      passing argument to parameter 'blockiseq' here
     struct rb_calling_info *calling, const struct rb_call_info *ci, rb_iseq_t *blockiseq, const int is_super)
                                                                                ^
2 warnings generated.
------------------------------------------------------------------------
r63297 | nobu | 2018-04-29 08:31:32 +0900 (Sun, 29 Apr 2018) | 4 lines

range.c: endless symbol range

* range.c (range_each): shortcirtuit endless symbol range too, as
  well as `#step`.
------------------------------------------------------------------------
r63296 | eregon | 2018-04-29 08:04:56 +0900 (Sun, 29 Apr 2018) | 3 lines

Generalize the check to MRI in the -I spec

* The current check seems to fail with AppVeyor.
------------------------------------------------------------------------
r63295 | eregon | 2018-04-29 05:37:20 +0900 (Sun, 29 Apr 2018) | 1 line

Ignore the extension of miniruby on Windows in the -I spec
------------------------------------------------------------------------
r63294 | svn | 2018-04-29 04:50:10 +0900 (Sun, 29 Apr 2018) | 1 line

* properties.
------------------------------------------------------------------------
r63293 | eregon | 2018-04-29 04:50:06 +0900 (Sun, 29 Apr 2018) | 1 line

Update to ruby/spec@6f38a82
------------------------------------------------------------------------
r63292 | svn | 2018-04-29 04:49:25 +0900 (Sun, 29 Apr 2018) | 1 line

* 2018-04-29
------------------------------------------------------------------------
r63291 | eregon | 2018-04-29 04:49:24 +0900 (Sun, 29 Apr 2018) | 1 line

Update to ruby/mspec@b5b13de
------------------------------------------------------------------------
r63290 | nobu | 2018-04-28 20:16:54 +0900 (Sat, 28 Apr 2018) | 7 lines

string.c: adjust to rb_str_upto_each

* range.c (range_each_func): adjust the signature of the callback
  function to rb_str_upto_each, and exit the loop if the callback
  returned non-zero.

* string.c (rb_str_upto_endless_each): ditto.
------------------------------------------------------------------------
r63289 | k0kubun | 2018-04-28 18:22:07 +0900 (Sat, 28 Apr 2018) | 3 lines

test_open3.rb: let test_popen2 work with --jit

test/lib/jit_support.rb: add .remove_mjit_logs to normalize stderr
------------------------------------------------------------------------
r63288 | k0kubun | 2018-04-28 18:11:25 +0900 (Sat, 28 Apr 2018) | 1 line

test_rubyoptions.rb: let all tests work with --jit
------------------------------------------------------------------------
r63287 | k0kubun | 2018-04-28 18:02:56 +0900 (Sat, 28 Apr 2018) | 4 lines

test_bug_reporter.rb: make it work with --jit

test_rubyoptions.rb: replace gsub with sub because it's suboptimal for
this
------------------------------------------------------------------------
r63286 | k0kubun | 2018-04-28 17:52:24 +0900 (Sat, 28 Apr 2018) | 1 line

test_rubyoptions.rb: let test_verbose work w/ --jit
------------------------------------------------------------------------
r63285 | k0kubun | 2018-04-28 17:41:19 +0900 (Sat, 28 Apr 2018) | 3 lines

test_parallel.rb: extend timeout for --jit-wait

testing. 10s was long enough for my machine, but not for travis.
------------------------------------------------------------------------
r63284 | k0kubun | 2018-04-28 17:24:44 +0900 (Sat, 28 Apr 2018) | 4 lines

test_ftp.rb: extend read_timeout for --jit-wait

testing. I'm running `make test-all RUN_OPTS='--jit-wait'` and the
read_timeout was too slow for it.
------------------------------------------------------------------------
r63283 | nobu | 2018-04-28 16:31:32 +0900 (Sat, 28 Apr 2018) | 6 lines

range.c: each on endless range

* range.c (range_each): endless range begins with string-like
  object should iterate from the converted result string, as well
  as `#each` on a string-end range or `#step` method on an endless
  range, i.e., `begin.succ` should not be called.
------------------------------------------------------------------------
r63282 | normal | 2018-04-28 15:23:43 +0900 (Sat, 28 Apr 2018) | 5 lines

thread_sync.c: remove "volatile" qualifiers

I may store ->ec in rb_mutex_t instead of ->th to support green
thread.  For now, "volatile" is useless for thread-safety
anyways and we're not dealing with *jmp or signals with mutex.
------------------------------------------------------------------------
r63281 | normal | 2018-04-28 15:00:39 +0900 (Sat, 28 Apr 2018) | 5 lines

thread_sync.c: remove unused list_heads

I forgot to clean these up in r63215

* thread_sync.c (szqueue_list, queue_list, condvar_list): remove
------------------------------------------------------------------------
r63280 | hsbt | 2018-04-28 10:47:58 +0900 (Sat, 28 Apr 2018) | 6 lines

Merge Pysch 3.0.3.pre1.

  I added the following additional commits from 3.0.3.pre1:
    * https://github.com/ruby/psych/pull/356
    * https://github.com/ruby/psych/pull/357
    * https://github.com/ruby/psych/pull/359
------------------------------------------------------------------------
r63279 | nobu | 2018-04-28 10:45:52 +0900 (Sat, 28 Apr 2018) | 7 lines

mjit_config.h: expand min header name

* Makefile.in, win32/Makefile.sub (mjit_config.h): expand min
  header name, including the version number and the suffix.

* mjit.c (init_header_filename): the version number and the suffix
  are now included in the header name.
------------------------------------------------------------------------
r63278 | kou | 2018-04-28 10:36:18 +0900 (Sat, 28 Apr 2018) | 23 lines

rexml: disable XPath 1.0 compatible "#{ELEMENT_NAME}" processing by default

It breaks backward compatibility than I thought. So it's disabled by
default. It means that REXML's XPath processor isn't compatible with
XPath 1.0. But it will be acceptable for users.

We can enable it by specifying "strict: true" to
REXML::XPathParser.new explicitly.

* lib/rexml/xpath.rb,
  lib/rexml/xpath_parser.rb: Accept "strict: true" option.

* test/rexml/test_contrib.rb,
  test/rexml/xpath/test_base.rb: Use not XPath 1.0 compatible behavior.

* test/rexml/test_jaxen.rb: Use XPath 1.0 compatible behavior.

* test/rss/test_1.0.rb,
  test/rss/test_dublincore.rb,
  spec/ruby/library/rexml/element/namespace_spec.rb,
  spec/ruby/library/rexml/element/namespaces_spec.rb,
  spec/ruby/library/rexml/element/prefixes_spec.rb: Enable again.

------------------------------------------------------------------------
r63277 | svn | 2018-04-28 05:25:50 +0900 (Sat, 28 Apr 2018) | 1 line

* 2018-04-28
------------------------------------------------------------------------
r63276 | stomar | 2018-04-28 05:25:49 +0900 (Sat, 28 Apr 2018) | 1 line

NEWS: fix typos
------------------------------------------------------------------------
r63275 | nobu | 2018-04-27 22:14:09 +0900 (Fri, 27 Apr 2018) | 1 line

iseq.c: consistent rb_bug messages
------------------------------------------------------------------------
r63274 | nobu | 2018-04-27 22:14:08 +0900 (Fri, 27 Apr 2018) | 5 lines

mjit.c: remove undef

* mjit.c (clean_so_file): removed unnecessary undef of `Sleep`
  which is redfined as rb_w32_sleep.  eventually, retry loop with
  sleep has been removed.
------------------------------------------------------------------------
r63273 | nobu | 2018-04-27 16:39:00 +0900 (Fri, 27 Apr 2018) | 7 lines

mjit.c: clean so file on Windows

* mjit.c (dlclose): use FreeLibrary to manage the reference count
  on the loaded module properly.

* mjit.c (clean_so_file): clean shared object file after unloaded,
  in-use files cannot be removed on Windows.
------------------------------------------------------------------------
r63272 | nobu | 2018-04-27 14:20:40 +0900 (Fri, 27 Apr 2018) | 6 lines

mjit.c: fix cc arguments

* mjit.c (CC_LIBS): MJIT_LIBS is used only on Windows.

* mjit.c (compile_c_to_so): moved source and shared object files
  to simplify indexes.
------------------------------------------------------------------------
r63271 | nobu | 2018-04-27 14:20:40 +0900 (Fri, 27 Apr 2018) | 4 lines

ruby.c: moved libdir

* ruby.c (ruby_init_loadpath_safe): moved libdir name inside
  LOAD_RELATIVE.
------------------------------------------------------------------------
r63270 | nobu | 2018-04-27 13:36:34 +0900 (Fri, 27 Apr 2018) | 4 lines

ruby.c: fix compilation error

* ruby.c (ruby_init_loadpath_safe): fix compilation error when
  ENABLE_MULTIARCH but not universal binary.
------------------------------------------------------------------------
r63269 | nobu | 2018-04-27 11:02:29 +0900 (Fri, 27 Apr 2018) | 7 lines

mjit.c: prefix and archdir in init

* ruby.c (ruby_init_loadpath_safe): store prefix and archlibdir
  paths.

* mjit.c (compile_c_to_so, init_header_filename): use just one
  library path on Windows.
------------------------------------------------------------------------
r63268 | nobu | 2018-04-27 10:58:29 +0900 (Fri, 27 Apr 2018) | 5 lines

rbinstall.rb: fix timing to read stub

* tool/rbinstall.rb ($script_installer.stub): read stub file on
  demand.  as `$cmdtype` is set to "exe" in parse_args, it is not
  set yet when `$script_installer` is defined.
------------------------------------------------------------------------
r63267 | tenderlove | 2018-04-27 09:13:51 +0900 (Fri, 27 Apr 2018) | 5 lines

Revert "Fix use of `rb_profile_frames` start parameter"

This reverts commit r63265.

ko1 said I should not have committed this! I'm sorry!
------------------------------------------------------------------------
r63266 | svn | 2018-04-27 07:49:01 +0900 (Fri, 27 Apr 2018) | 1 line

* 2018-04-27
------------------------------------------------------------------------
r63265 | tenderlove | 2018-04-27 07:49:00 +0900 (Fri, 27 Apr 2018) | 12 lines

Fix use of `rb_profile_frames` start parameter

rb_profile_frames was always behaving as if the value given for the
start parameter was 0.

The reason for this was that it would check if (start > 0) { then
continue without updating the control frame pointer or anything other
than decrementing start.

[ruby-core:86147] [Bug #14607]

Co-authored-by: Dylan Thacker-Smith <Dylan.Smith@shopify.com>
------------------------------------------------------------------------
r63264 | nobu | 2018-04-26 21:36:27 +0900 (Thu, 26 Apr 2018) | 5 lines

win32/Makefile.sub: LIBDIR_BASENAME

* mjit.c (init_header_filename): support LIBDIR_BASENAME.

* win32/Makefile.sub (config.h): ditto.
------------------------------------------------------------------------
r63263 | nobu | 2018-04-26 21:36:26 +0900 (Thu, 26 Apr 2018) | 1 line

ruby.c (ruby_init_loadpath_safe): constify
------------------------------------------------------------------------
r63262 | svn | 2018-04-26 09:12:36 +0900 (Thu, 26 Apr 2018) | 1 line

* 2018-04-26
------------------------------------------------------------------------
r63261 | nobu | 2018-04-26 09:12:35 +0900 (Thu, 26 Apr 2018) | 5 lines

test_numeric.rb: loose precision assertion

* test/ruby/test_numeric.rb (TestNumeric#test_step): remove a
  loose precision assertion, as Float cannot keep complete
  precision.  [ruby-core:86684] [Bug #14712]
------------------------------------------------------------------------
r63260 | kazu | 2018-04-25 23:00:47 +0900 (Wed, 25 Apr 2018) | 1 line

[DOC] Fix capitallizing [ci skip]
------------------------------------------------------------------------
r63259 | nobu | 2018-04-25 20:56:58 +0900 (Wed, 25 Apr 2018) | 5 lines

common.rb: unused constant

* lib/uri/common.rb (URI::HTML5ASCIIINCOMPAT): remove the constant
  which has been unused since r40460, and wrong since r49069 due
  to the operator precedence.  [ruby-core:86678] [Bug #14711]
------------------------------------------------------------------------
r63258 | eregon | 2018-04-25 17:16:09 +0900 (Wed, 25 Apr 2018) | 1 line

Avoid "should_not raise_error" in Thread#raise spec
------------------------------------------------------------------------
r63257 | eregon | 2018-04-25 17:15:58 +0900 (Wed, 25 Apr 2018) | 3 lines

Fix style in Thread#raise spec

* Add space after { and before }.
------------------------------------------------------------------------
r63256 | eregon | 2018-04-25 17:11:01 +0900 (Wed, 25 Apr 2018) | 3 lines

Use Thread.pass in loop{} to check interrupts more often

* The spec now runs in ~5ms vs ~100ms before.
------------------------------------------------------------------------
r63255 | nobu | 2018-04-25 15:45:05 +0900 (Wed, 25 Apr 2018) | 5 lines

compile.c: fix unconditional branch optimization

* compile.c (iseq_peephole_optimize): add dummy `putnil` after a
  `jump` replacing an unconditional branch, to adjust removed
  `dup`.  [ruby-core:86666] [Bug #14708]
------------------------------------------------------------------------
r63254 | svn | 2018-04-25 05:32:00 +0900 (Wed, 25 Apr 2018) | 1 line

* 2018-04-25
------------------------------------------------------------------------
r63253 | normal | 2018-04-25 05:31:59 +0900 (Wed, 25 Apr 2018) | 10 lines

eval.c (ruby_setup): disable THP on Linux

Transparent Huge Pages (THP) decrease the effectiveness of
CoW-friendly GC because it decreases page granularity.  That is,
a forked process dirtying one bit of CoW-shared memory can
trigger a copy of a huge page (2MB on x86-64) instead of a smaller,
standard page (4K).

* eval.c (ruby_setup): disable THP on Linux
  [ruby-core:86651] [Feature #14705]
------------------------------------------------------------------------
r63252 | nobu | 2018-04-24 21:25:46 +0900 (Tue, 24 Apr 2018) | 5 lines

string.c: fix scanned substring with `\K`

* string.c (scan_once): fix the matched substring with `\K`, the
  beginning of that string may differ from the matched position.
  [ruby-core:86663] [Bug #14707]
------------------------------------------------------------------------
r63251 | nobu | 2018-04-24 08:46:26 +0900 (Tue, 24 Apr 2018) | 4 lines

rescue Errno::EPROTOTYPE

* test/webrick/test_httpserver.rb (test_gigantic_request_header):
  Errno::EPROTOTYPE is sometimes raised on Mac OS X 10.10.
------------------------------------------------------------------------
r63250 | svn | 2018-04-24 01:20:46 +0900 (Tue, 24 Apr 2018) | 1 line

* 2018-04-24
------------------------------------------------------------------------
r63249 | k0kubun | 2018-04-24 01:20:45 +0900 (Tue, 24 Apr 2018) | 6 lines

revert r63212

except test_jit.rb.

In some situations, this generates a wrong code. I'll add a test for it
later but let me revert this to make it work for now.
------------------------------------------------------------------------
r63248 | nobu | 2018-04-23 21:51:18 +0900 (Mon, 23 Apr 2018) | 4 lines

compile.c: copy a short insn with leave

* compile.c (iseq_peephole_optimize): copy not only `leave`, with
  a non-operand instruction, which are not longer than `jump`.
------------------------------------------------------------------------
r63247 | kazu | 2018-04-23 21:09:21 +0900 (Mon, 23 Apr 2018) | 1 line

[DOC] URI::Generic#port returns Integer [ci skip]
------------------------------------------------------------------------
r63246 | nobu | 2018-04-23 18:52:23 +0900 (Mon, 23 Apr 2018) | 4 lines

compile.c: insn before pop

* compile.c (iseq_peephole_optimize): more eliminatable
  instructions before `pop` without side effects.
------------------------------------------------------------------------
r63245 | normal | 2018-04-23 14:54:06 +0900 (Mon, 23 Apr 2018) | 4 lines

test/ruby/test_io.rb: add extra Thread#join to delay close

Maybe this fixes some CI failures.  Also, use different timeouts
for each item for hopefully easier diagnosis.
------------------------------------------------------------------------
r63244 | nobu | 2018-04-23 11:07:11 +0900 (Mon, 23 Apr 2018) | 5 lines

thread_pthread.c: fallback to CLOCK_REALTIME

* thread_pthread.c (Init_native_thread): fallback to the default
  CLOCK_REALTIME when failed to set to CLOCK_MONOTONIC, e.g. on
  Solaris.  [Misc #14497]
------------------------------------------------------------------------
r63243 | normal | 2018-04-23 06:21:06 +0900 (Mon, 23 Apr 2018) | 6 lines

net/imap: set SO_KEEPALIVE on TCP sockets

Otherwise connections (commonly on IDLE, but it could be any
command) may never receive notifications of link errors.

[ruby-core:86628] [Feature #14703]
------------------------------------------------------------------------
r63242 | stomar | 2018-04-23 04:41:06 +0900 (Mon, 23 Apr 2018) | 4 lines

sprintf.c: fix typo

* sprintf.c: [DOC] fix typo.
  Patch by Lazarus Lazaridis (iridakos).  [Fix GH-1789]
------------------------------------------------------------------------
r63241 | ko1 | 2018-04-23 01:33:49 +0900 (Mon, 23 Apr 2018) | 2 lines

Same as the last commit (comment out tests for CI).

------------------------------------------------------------------------
r63240 | svn | 2018-04-23 01:03:10 +0900 (Mon, 23 Apr 2018) | 1 line

* 2018-04-23
------------------------------------------------------------------------
r63239 | ko1 | 2018-04-23 01:03:09 +0900 (Mon, 23 Apr 2018) | 9 lines

Skip some tests to make CI healthy.

r63236 (or r63237) introduces test failures and CI shows errors.
This commit makes skipping these tests.  Please revert this commit
after tests (and rubyspec) work fine.

Failure log example:
https://gist.github.com/ko1/8456cf25fe35a696bd33ac86135092e4

------------------------------------------------------------------------
r63238 | normal | 2018-04-22 21:09:07 +0900 (Sun, 22 Apr 2018) | 7 lines

thread*: all condvars are monotonic

There's no reason to use CLOCK_REALTIME for any condvars in Ruby.
Indeed, we initialized all condvars with RB_CONDATTR_CLOCK_MONOTONIC
anyway; so simplify our code and reduce ifdefs.

[ruby-core:85639] [Misc #14497]
------------------------------------------------------------------------
r63237 | kou | 2018-04-22 18:38:06 +0900 (Sun, 22 Apr 2018) | 37 lines

rexml: Fix XPath bug of //#{ELEMENT_NAME}[#{POSITION}]

The position should be counted for each nodeset but the previous
implementation counts position for union-ed nodeset.

For example, "/a/*/*[1]" should be matched to "<c1/>" and "<c2/>" with
the following XML.

    <a>
      <b>
        <c1/>
      </b>
      <b>
        <c2/>
      </b>
    </a>

But the previous implementation just returns only "<c1/>".

* lib/rexml/element.rb (REXML::Attributes#each_attribute):
  Support Enumerator for no block use.

* lib/rexml/element.rb (REXML::Attributes#each):
  Support Enumerator for no block use.

* lib/rexml/functions.rb (REXML::Functions.string):
  Support NaN again.

* lib/rexml/xpath_parser.rb: Re-implement "Step" evaluator.
  It should evaluate "AxisSpecifier", "NodeTest" and "Predicate" in one
  step to respect position for each nodeset.

* test/rexml/test_jaxen.rb: Enable more tests. Remained tests should
  be also enabled but it'll not be near future.

* test/rexml/xpath/test_base.rb: Fix expected value.

------------------------------------------------------------------------
r63236 | kou | 2018-04-22 17:09:04 +0900 (Sun, 22 Apr 2018) | 31 lines

rexml: Fix XPath bug of /#{ELEMENT_NAME}

It doesn't mean that all elements which name "ELEMENT_NAME" with any
namespace URI including null namespace URI. It means that all elements
which name "ELEMENT_NAME" with null namespace URI.

https://www.w3.org/TR/1999/REC-xpath-19991116/#NT-NodeTest

> if the QName does not have a prefix, then the namespace URI is null
> (this is the same way attribute names are expanded).

We need to use "*[local-name()='#{ELEMENT_NAME}']" for all elements
which name "ELEMENT_NAME" with any namespace URI including null
namespace URI in XPath 1.0. But it's inconvenient. So this change
includes "*:#{LOCAL_NAME}" syntax support that is introduced since
XPath 2.0.

* lib/rexml/parsers/xpathparser.rb: Support "*:#{LOCAL_NAME}" syntax that
  is introduced since XPath 2.0.

* lib/rexml/xpath_parser.rb:
  * Fix namespace URI processing for "#{ELEMENT_NAME}". Now,
    "#{ELEMENT_NAME}" doesn't accept elements with null namespace URI.
  * Add "*:#{LOCAL_NAME}" support.

* test/rexml/test_contrib.rb,
  test/rexml/test_core.rb,
  test/rexml/xpath/test_base.rb: Follow this change.

* test/rexml/test_jaxen.rb: Fix namespace processing.

------------------------------------------------------------------------
r63235 | k0kubun | 2018-04-22 13:01:23 +0900 (Sun, 22 Apr 2018) | 3 lines

mjit_compile.c: comment the intention of r63092 [ci skip]

It's for "leave" instruction.
------------------------------------------------------------------------
r63234 | nobu | 2018-04-22 09:47:56 +0900 (Sun, 22 Apr 2018) | 1 line

made *.cmd excutable
------------------------------------------------------------------------
r63233 | nobu | 2018-04-22 09:46:08 +0900 (Sun, 22 Apr 2018) | 1 line

made *.cmd excutable
------------------------------------------------------------------------
r63232 | nobu | 2018-04-22 09:02:56 +0900 (Sun, 22 Apr 2018) | 5 lines

Makefile.in: MJIT_ARCHFLAG

* Makefile.in (mjit_config.h): separate MJIT_ARCHFLAG for each
  architecture on universal binary.  cannot use precompiled-header
  with multiple -arch options.
------------------------------------------------------------------------
r63231 | normal | 2018-04-22 08:32:18 +0900 (Sun, 22 Apr 2018) | 9 lines

test/ruby/test_io.rb: try to diagnose stuck test_recycled_fd_close

I can't reproduce the problem myself, but gets loop seems ought
to give more useful information for tracking down where we're
stuck, at least.

Followup-to: r63217

cf. http://ci.rvm.jp/results/trunk-test@frontier/804284
------------------------------------------------------------------------
r63230 | nobu | 2018-04-22 08:02:21 +0900 (Sun, 22 Apr 2018) | 4 lines

mjit.c: check pch status

* mjit.c (mjit_add_iseq_to_process, mjit_get_iseq_func): check if
  pch failed before timedout.
------------------------------------------------------------------------
r63229 | svn | 2018-04-22 05:04:06 +0900 (Sun, 22 Apr 2018) | 1 line

* 2018-04-22
------------------------------------------------------------------------
r63228 | stomar | 2018-04-22 05:04:05 +0900 (Sun, 22 Apr 2018) | 16 lines

Improve docs for URI library

* lib/uri/generic.rb: [DOC] fix invalid example code to make it
  syntax highlighted; drop unnecessary `puts', `p'; adapt to current
  inspect format without Object id; do not display unnecessary return
  values in examples; fix or prevent unintended description lists;
  fix broken RDoc; fix grammar and typos.

* lib/uri.rb: ditto.
* lib/uri/common.rb: ditto.
* lib/uri/file.rb: ditto.
* lib/uri/ftp.rb: ditto.
* lib/uri/http.rb: ditto.
* lib/uri/ldap.rb: ditto.
* lib/uri/mailto.rb: ditto.
* lib/uri/rfc2396_parser.rb: ditto.
------------------------------------------------------------------------
r63227 | k0kubun | 2018-04-21 22:15:43 +0900 (Sat, 21 Apr 2018) | 5 lines

test_jit.rb: follow the change of instruction

in r63225. Not strictly needed but to avoid confusion.

The JIT compiler itself seems working fine.
------------------------------------------------------------------------
r63226 | nobu | 2018-04-21 19:52:53 +0900 (Sat, 21 Apr 2018) | 4 lines

compile.c: optimize checktype

* compile.c (optimize_checktype): optimize `checktype` instruction
  on a literal.
------------------------------------------------------------------------
r63225 | nobu | 2018-04-21 19:52:52 +0900 (Sat, 21 Apr 2018) | 4 lines

insns.def: checktype

* insns.def (checktype): split branchiftype to checktype and
  branchif, to make branch condition negation possible.
------------------------------------------------------------------------
r63224 | nobu | 2018-04-21 16:48:36 +0900 (Sat, 21 Apr 2018) | 4 lines

compile.c: renamed macro arguments

* compile.c (INSERT_BEFORE_INSN, INSERT_BEFORE_INSN1): rename
  argument `prev` as `next`.
------------------------------------------------------------------------
r63223 | kou | 2018-04-21 15:45:42 +0900 (Sat, 21 Apr 2018) | 2 lines

rexml: Enable more tests

------------------------------------------------------------------------
r63222 | kou | 2018-04-21 15:43:58 +0900 (Sat, 21 Apr 2018) | 6 lines

rexml: Fix XPath concat() implementation

* lib/rexml/functions.rb (REXML::Functions.concat): Implement.

* test/rexml/test_jaxen.rb: Enable one more test.

------------------------------------------------------------------------
r63221 | kou | 2018-04-21 15:39:43 +0900 (Sat, 21 Apr 2018) | 10 lines

rexml: Fix XPath string() implementation

* lib/rexml/functions.rb( REXML::Functions.string):
  * Support context node.
  * Fix implementation for document node to remove out of root nodes.
  * Support processing instruction node.
  * Improve implementation for integer to omit decimals.

* test/rexml/test_jaxen.rb: Enable processing instruction test.

------------------------------------------------------------------------
r63220 | kou | 2018-04-21 15:21:41 +0900 (Sat, 21 Apr 2018) | 4 lines

rexml: Make more readable

test/rexml/test_jaxen.rb: Use more meaningful name.

------------------------------------------------------------------------
r63219 | kou | 2018-04-21 15:21:02 +0900 (Sat, 21 Apr 2018) | 5 lines

rexml: Fix a test bug

test/rexml/test_jaxen.rb: Fix wrong assert_raise usage. Note that this code
isn't used yet.

------------------------------------------------------------------------
r63218 | kou | 2018-04-21 15:18:08 +0900 (Sat, 21 Apr 2018) | 4 lines

rexml: Make more readable

test/rexml/xpath/test_base.rb: Use here document for readability.

------------------------------------------------------------------------
r63217 | normal | 2018-04-21 13:02:41 +0900 (Sat, 21 Apr 2018) | 3 lines

test/ruby/test_io.rb: add closing recycled FD test

Followup-to: r63216
------------------------------------------------------------------------
r63216 | normal | 2018-04-21 12:12:36 +0900 (Sat, 21 Apr 2018) | 27 lines

io.c: do not use rb_notify_fd_close close on recycled FD

It is unsafe to release GVL and call rb_notify_fd_close after
close(2) on any given FD.  FDs (file descriptor) may be recycled
in other threads immediately after close() to point to a different
file description.  Note the distinction between "file description"
and "file descriptor".

th-1                           | th-2
-------------------------------+---------------------------------------
io_close_fptr                  |
  rb_notify_fd_close(fd)       |
  fptr_finalize_flush          |
    close(fd)                  |
  rb_thread_schedule           |
                               | fd reused (via pipe/open/socket/etc)
  rb_notify_fd_close(fd)       |
                               | sees "stream closed" exception
			       |   for DIFFERENT file description

* thread.c (rb_thread_io_blocking_region): adjust comment for list_del
* thread.c (rb_notify_fd_close): give busy list to caller
* thread.c (rb_thread_fd_close): loop on busy list
* io.c (io_close_fptr): do not call rb_thread_fd_close on invalid FD
* io.c (io_reopen): use rb_thread_fd_close

Fixes: r57422 ("io.c: close before wait")
------------------------------------------------------------------------
r63215 | normal | 2018-04-21 07:53:37 +0900 (Sat, 21 Apr 2018) | 30 lines

thread_sync: redo r62934 to use fork_gen

Instead of maintaining linked-lists to store all
rb_queue/rb_szqueue/rb_condvar structs; store only a fork_gen
serial number to simplify management of these items.

This reduces initialization costs and avoids the up-front cost
of resetting all Queue/SizedQueue/ConditionVariable objects at
fork while saving 8 bytes per-structure on 64-bit.  There are no
savings on 32-bit.

* thread.c (rb_thread_atfork_internal): remove rb_thread_sync_reset_all call
* thread_sync.c (rb_thread_sync_reset_all): remove
* thread_sync.c (queue_live): remove
* thread_sync.c (queue_free): remove
* thread_sync.c (struct rb_queue): s/live/fork_gen/
* thread_sync.c (queue_data_type): use default free
* thread_sync.c (queue_alloc): remove list_add
* thread_sync.c (queue_fork_check): new function
* thread_sync.c (queue_ptr): call queue_fork_check
* thread_sync.c (szqueue_free): remove
* thread_sync.c (szqueue_data_type): use default free
* thread_sync.c (szqueue_alloc): remove list_add
* thread_sync.c (szqueue_ptr):  check fork_gen via queue_fork_check
* thread_sync.c (struct rb_condvar): s/live/fork_gen/
* thread_sync.c (condvar_free): remove
* thread_sync.c (cv_data_type): use default free
* thread_sync.c (condvar_ptr): check fork_gen
* thread_sync.c (condvar_alloc): remove list_add
  [ruby-core:86316] [Bug #14634]
------------------------------------------------------------------------
r63214 | svn | 2018-04-21 06:38:28 +0900 (Sat, 21 Apr 2018) | 1 line

* 2018-04-21
------------------------------------------------------------------------
r63213 | normal | 2018-04-21 06:38:27 +0900 (Sat, 21 Apr 2018) | 11 lines

simplify altstack and enable reuse with thread cache

Instead of allocating and registering the altstack in different
places, do it together to reduce code and improve readability.
When thread cache is enabled, storing altstack in rb_thread_t
is wasteful and we may reuse altstack in the same pthread.

This also lets us clearly allow use of xmalloc to allow GC to
recover from ENOMEM.

[ruby-core:85621] [Feature #14487]
------------------------------------------------------------------------
r63212 | k0kubun | 2018-04-20 22:42:08 +0900 (Fri, 20 Apr 2018) | 63 lines

_mjit_compile_send.erb: inline attr_reader call

_mjit_compile_send_guard.erb: carve out the shared logic to invalidate
inlined method call

common.mk: update dependency for this change

test_jit.rb: add test for attr_reader optimization

* Benchmark

```
require 'benchmark_driver'

Benchmark.driver do |x|
  x.prelude %{
    class C
      attr_reader :a
      def initialize
        @a = 1
      end
    end

    o = C.new

    def l o
      i = 0
      while i < 1000000
        o.a
        i += 1
      end
    end
  }
  x.report 'aread', %{ l o }
  x.loop_count 1000

  x.rbenv 'before', 'before,--jit', 'after,--jit'
  x.verbose
end
```

```
before: ruby 2.6.0dev (2018-04-20 trunk 63211) [x86_64-linux]
before,--jit: ruby 2.6.0dev (2018-04-20 trunk 63211) +JIT [x86_64-linux]
after,--jit: ruby 2.6.0dev (2018-04-20 trunk 63211) +JIT [x86_64-linux]
last_commit=_mjit_compile_send.erb: inline attr_reader call
Calculating -------------------------------------
                         before  before,--jit  after,--jit
               aread     54.597       122.894      218.574 i/s -      1.000k times in 18.316102s 8.137089s 4.575106s

Comparison:
                            aread
         after,--jit:       218.6 i/s
        before,--jit:       122.9 i/s - 1.78x  slower
              before:        54.6 i/s - 4.00x  slower

```

* Optcarrot

A little made faster?

fps: 71.35 -> 72.11
------------------------------------------------------------------------
r63211 | hsbt | 2018-04-20 16:10:53 +0900 (Fri, 20 Apr 2018) | 4 lines

Update latest bundled gems:

  did_you_mean: 1.2.1
  rake: 12.3.1
------------------------------------------------------------------------
r63210 | normal | 2018-04-20 12:22:26 +0900 (Fri, 20 Apr 2018) | 20 lines

variable.c: fix thread + fork errors in autoload

This is fairly non-intrusive bugfix to prevent children
from trying to reach into thread stacks of the parent.
I will probably reuse this idea and redo r62934, too
(same bug).

* vm_core.h (typedef struct rb_vm_struct): add fork_gen counter
* thread.c (rb_thread_atfork_internal): increment fork_gen
* variable.c (struct autoload_data_i): store fork_gen
* variable.c (check_autoload_data): remove (replaced with get_...)
* variable.c (get_autoload_data): check fork_gen when retrieving
* variable.c (check_autoload_required): use get_autoload_data
* variable.c (rb_autoloading_value): ditto
* variable.c (rb_autoload_p): ditto
* variable.c (current_autoload_data): ditto
* variable.c (autoload_reset): reset fork_gen, adjust indent
* variable.c (rb_autoload_load): set fork_gen when setting state
* test/ruby/test_autoload.rb (test_autoload_fork): new test
  [ruby-core:86410] [Bug #14634]
------------------------------------------------------------------------
r63209 | nobu | 2018-04-20 09:25:30 +0900 (Fri, 20 Apr 2018) | 1 line

vm_core.h: adjust indent [ci skip]
------------------------------------------------------------------------
r63208 | nobu | 2018-04-20 09:23:01 +0900 (Fri, 20 Apr 2018) | 4 lines

range.c: step in bignum

* range.c (range_step): honor step in bignum addition.
  [Feature #12912]
------------------------------------------------------------------------
r63207 | nobu | 2018-04-20 09:10:46 +0900 (Fri, 20 Apr 2018) | 4 lines

range.c: fix fixnum loop condition

* range.c (range_step): FIXABLE + FIXABLE never overflow, but may
  not be FIXABLE.  [Feature #12912]
------------------------------------------------------------------------
r63206 | nobu | 2018-04-20 08:46:55 +0900 (Fri, 20 Apr 2018) | 3 lines

fiddle/test_import.rb: fix warnings by rubygems

[Bug #14686]
------------------------------------------------------------------------
r63205 | nobu | 2018-04-20 08:35:39 +0900 (Fri, 20 Apr 2018) | 4 lines

fiddle/import.rb: suppress warning

* ext/fiddle/lib/fiddle/import.rb: suppress exception report when
  $DEBUG is enabled.  [ruby-core:86536] [Bug #14686]
------------------------------------------------------------------------
r63204 | kou | 2018-04-20 06:34:40 +0900 (Fri, 20 Apr 2018) | 8 lines

rexml: Fix a XPath bug that white spaces aren't ignored

lib/rexml/parsers/xpathparser.rb: Ignore white spaces in relative
location path.

test/rexml/xpath/test_base.rb: Add more test patterns and use more
debug friendly assertion style.

------------------------------------------------------------------------
r63203 | kou | 2018-04-20 05:51:07 +0900 (Fri, 20 Apr 2018) | 4 lines

rexml: Fix wrong assertion

test/rexml/xpath/test_base.rb: Use constant value for the expected value.

------------------------------------------------------------------------
r63202 | kou | 2018-04-20 05:49:53 +0900 (Fri, 20 Apr 2018) | 5 lines

rexml: Use more debug friendly assertion style

test/rexml/xpath/test_base.rb: Expand loop assertion and stop to checking
just the first value.

------------------------------------------------------------------------
r63201 | kou | 2018-04-20 05:48:28 +0900 (Fri, 20 Apr 2018) | 5 lines

rexml: Use more debug friendly assertion style

test/rexml/xpath/test_base.rb: Stop to use separated assertions for
checking array value.

------------------------------------------------------------------------
r63200 | kou | 2018-04-20 05:45:16 +0900 (Fri, 20 Apr 2018) | 4 lines

rexml: Make more readable

test/rexml/xpath/test_base.rb: Use here document for XML.

------------------------------------------------------------------------
r63199 | k0kubun | 2018-04-20 01:57:59 +0900 (Fri, 20 Apr 2018) | 8 lines

_mjit_compile_send.erb: simplify control flow

to introduce additional optimization for another `cc->me->def->type`
later. I carved out the `cc->me->def->type == VM_METHOD_TYPE_ISEQ`
part because I wanted to check other types as well.

mjit_compile.c: drop get_iseq_if_available and define simplified version
of it, has_valid_method_type.
------------------------------------------------------------------------
r63198 | k0kubun | 2018-04-20 01:19:48 +0900 (Fri, 20 Apr 2018) | 9 lines

internal.h: use the same declaration as definition

range.c: cast the function type to meet the declaration

This change is for fixing build error on AppVeyor:
https://ci.appveyor.com/project/ruby/ruby/build/1.0.8177

string.c
../string.c(4330) : error C4028: formal parameter 2 different from declaration
------------------------------------------------------------------------
r63197 | mame | 2018-04-20 00:23:34 +0900 (Fri, 20 Apr 2018) | 1 line

Adds "endless range" to NEWS
------------------------------------------------------------------------
r63196 | mame | 2018-04-20 00:19:00 +0900 (Fri, 20 Apr 2018) | 3 lines

Prefer CONST_ID to static global IDs

Just refactoring.
------------------------------------------------------------------------
r63195 | mame | 2018-04-20 00:18:57 +0900 (Fri, 20 Apr 2018) | 1 line

range.c: Make Range#bsearch support endless ranges
------------------------------------------------------------------------
r63194 | mame | 2018-04-20 00:18:53 +0900 (Fri, 20 Apr 2018) | 1 line

Make Range#min, max, include?, cover?, and === to support endless range
------------------------------------------------------------------------
r63193 | svn | 2018-04-20 00:18:51 +0900 (Fri, 20 Apr 2018) | 1 line

* 2018-04-20
------------------------------------------------------------------------
r63192 | mame | 2018-04-20 00:18:50 +0900 (Fri, 20 Apr 2018) | 7 lines

Introduce endless range [Feature#12912]

Typical usages:
```
p ary[1..]          # drop the first element; identical to ary[1..-1]
(1..).each {|n|...} # iterate forever from 1; identical to 1.step{...}
```
------------------------------------------------------------------------
r63191 | naruse | 2018-04-19 16:28:40 +0900 (Thu, 19 Apr 2018) | 1 line

pack/unpack M only handles LF line breaks [Feature #14352]
------------------------------------------------------------------------
r63190 | nobu | 2018-04-19 16:05:39 +0900 (Thu, 19 Apr 2018) | 4 lines

dir.c: warning for NUL

* dir.c (rb_push_glob): warn NUL-separated glob patterns.
  [Feature #14643]
------------------------------------------------------------------------
r63189 | svn | 2018-04-19 14:55:43 +0900 (Thu, 19 Apr 2018) | 1 line

* 2018-04-19
------------------------------------------------------------------------
r63188 | nobu | 2018-04-19 14:55:42 +0900 (Thu, 19 Apr 2018) | 5 lines

Add slice method to ENV like Hash#slice

[Feature #14559]

From:    Benoit Tigeot <benoit@hopsandfork.com>
------------------------------------------------------------------------
r63187 | nobu | 2018-04-18 12:51:19 +0900 (Wed, 18 Apr 2018) | 7 lines

win32.c: fix CSI sequences to delete

* win32/win32.c (constat_apply): CSI 'J' and 'K' are defaulted to
  1, not 0.  [ruby-core:86560] [Bug #14691]

* win32/win32.c (constat_apply): "delete before cursor" sequences
  include the cursor position.
------------------------------------------------------------------------
r63186 | stomar | 2018-04-18 04:52:10 +0900 (Wed, 18 Apr 2018) | 5 lines

lib/uri/generic.rb: fix error in docs for URI::Generic#opaque

* lib/uri/generic.rb: [DOC] fix description of URI::Generic#opaque,
  and add an example. According to RFC2396, opaque path components do not
  use the slash "/" character, as opposed to hierarchical path components.
------------------------------------------------------------------------
r63185 | stomar | 2018-04-18 04:49:51 +0900 (Wed, 18 Apr 2018) | 4 lines

lib/uri/ldap.rb: fix errors in docs for URI::LDAP

* lib/uri/ldap.rb: [DOC] fix errors in example code
  for URI::LDAP.build and URI::LDAP.new.
------------------------------------------------------------------------
r63184 | stomar | 2018-04-18 04:47:57 +0900 (Wed, 18 Apr 2018) | 5 lines

lib/uri/file.rb: fix errors in docs for URI::File.build

* lib/uri/file.rb: [DOC] fix description and example for URI::File.build;
  for file URIs the path component must be absolute, escaping of
  absolute paths is only done for URI::FTP.
------------------------------------------------------------------------
r63183 | svn | 2018-04-18 04:46:26 +0900 (Wed, 18 Apr 2018) | 1 line

* 2018-04-18
------------------------------------------------------------------------
r63182 | stomar | 2018-04-18 04:46:25 +0900 (Wed, 18 Apr 2018) | 5 lines

lib/uri/file.rb: improve docs for URI::File

* lib/uri/file.rb: [DOC] fix invalid example code for URI::File.build
  to make it syntax highlighted; drop unnecessary `puts';
  fix unintended description list; fix typos.
------------------------------------------------------------------------
r63181 | mame | 2018-04-17 17:52:25 +0900 (Tue, 17 Apr 2018) | 1 line

test/ruby/test_super.rb: Remove unused assertions
------------------------------------------------------------------------
r63180 | mame | 2018-04-17 17:47:58 +0900 (Tue, 17 Apr 2018) | 1 line

The test for TracePoint with thread had never worked correctly
------------------------------------------------------------------------
r63179 | mame | 2018-04-17 17:47:56 +0900 (Tue, 17 Apr 2018) | 1 line

The test for TracePoint#raised_exception had never worked correctly
------------------------------------------------------------------------
r63178 | mame | 2018-04-17 17:47:56 +0900 (Tue, 17 Apr 2018) | 1 line

Remove the old disabled assertions for 1.8/1.9
------------------------------------------------------------------------
r63177 | mame | 2018-04-17 17:26:20 +0900 (Tue, 17 Apr 2018) | 1 line

Enable the assertions that had been disabled for historical reason
------------------------------------------------------------------------
r63176 | mame | 2018-04-17 17:26:19 +0900 (Tue, 17 Apr 2018) | 1 line

Remove the assertions that have no meaning
------------------------------------------------------------------------
r63175 | mame | 2018-04-17 17:18:58 +0900 (Tue, 17 Apr 2018) | 1 line

Remove the disabled old tests for Ruby 1.8/1.9 feature change
------------------------------------------------------------------------
r63174 | mame | 2018-04-17 17:18:57 +0900 (Tue, 17 Apr 2018) | 1 line

Use assert(false) for the path that is expected unreachable
------------------------------------------------------------------------
r63173 | mame | 2018-04-17 17:18:56 +0900 (Tue, 17 Apr 2018) | 3 lines

test/date/test_date_base.rb: removed

It depends upon calendar.so which is not bundled.
------------------------------------------------------------------------
r63172 | mame | 2018-04-17 16:03:44 +0900 (Tue, 17 Apr 2018) | 3 lines

test/csv/test_features.rb: enable accidentally-disabled assertions

CSV.new does not yield the instance.
------------------------------------------------------------------------
r63171 | mame | 2018-04-17 15:38:08 +0900 (Tue, 17 Apr 2018) | 1 line

test/zlib/test_zlib.rb (test_path): enable the accidentally-disabled assertion
------------------------------------------------------------------------
r63170 | nobu | 2018-04-17 13:12:57 +0900 (Tue, 17 Apr 2018) | 3 lines

string.c: suppress warning

* string.c (str_undump): get rid of warning C4129 by VC.
------------------------------------------------------------------------
r63169 | svn | 2018-04-17 10:22:27 +0900 (Tue, 17 Apr 2018) | 1 line

* 2018-04-17
------------------------------------------------------------------------
r63168 | nobu | 2018-04-17 10:22:26 +0900 (Tue, 17 Apr 2018) | 6 lines

parse.y: fix cmdarg in command_args

* parse.y (call_args): fix invalid CMDARG state after command_args
  followed by tLBRACE_ARG.  [ruby-core:86551] [Bug #14690]

From: Ilya Bylich <ibylich@gmail.com>
------------------------------------------------------------------------
r63167 | nobu | 2018-04-16 21:46:08 +0900 (Mon, 16 Apr 2018) | 4 lines

compile.c: align range

* compile.c (ibf_dump_object_struct): align range elements.
  [ruby-core:86548] [Bug #14689]
------------------------------------------------------------------------
r63166 | k0kubun | 2018-04-16 19:20:15 +0900 (Mon, 16 Apr 2018) | 8 lines

[DOC] Fix links of cve [ci skip]

`http://www.cve.mitre.org/` seem to move `http://cve.mitre.org/`.
I can't access `http://www.cve.mitre.org/`.

[Fix GH-1857]

From: willnet <netwillnet@gmail.com>
------------------------------------------------------------------------
r63165 | nobu | 2018-04-16 17:54:03 +0900 (Mon, 16 Apr 2018) | 4 lines

parse.y: `else` indent

* parse.y (keyword_else): warn less-indented `else` than `case`.
  [ruby-core:86492] [Bug #14674]
------------------------------------------------------------------------
r63164 | nobu | 2018-04-16 16:12:06 +0900 (Mon, 16 Apr 2018) | 4 lines

string.c: fix dumped suffix

* string.c (rb_str_dump): get rid of an error on evaling with
  frozen-string-literal enabled.  [ruby-core:86539] [Bug #14687]
------------------------------------------------------------------------
r63163 | svn | 2018-04-16 15:37:43 +0900 (Mon, 16 Apr 2018) | 1 line

* 2018-04-16
------------------------------------------------------------------------
r63162 | nobu | 2018-04-16 15:37:42 +0900 (Mon, 16 Apr 2018) | 5 lines

string.c: fix checking order

* string.c (str_undump): check for suffix before if Unicode escape
  conflicts with it.  the message "but used force_encoding" sounds
  strange when it is not used.
------------------------------------------------------------------------
r63161 | stomar | 2018-04-15 01:51:34 +0900 (Sun, 15 Apr 2018) | 1 line

thread_sync.c: [DOC] fix typo
------------------------------------------------------------------------
r63160 | stomar | 2018-04-15 01:50:42 +0900 (Sun, 15 Apr 2018) | 1 line

string.c: [DOC] fix typo
------------------------------------------------------------------------
r63159 | stomar | 2018-04-15 01:50:06 +0900 (Sun, 15 Apr 2018) | 1 line

gc.c: [DOC] fix typo
------------------------------------------------------------------------
r63158 | stomar | 2018-04-15 01:49:27 +0900 (Sun, 15 Apr 2018) | 1 line

process.c: [DOC] fix grammar
------------------------------------------------------------------------
r63157 | stomar | 2018-04-15 01:48:40 +0900 (Sun, 15 Apr 2018) | 1 line

man/ruby.1: [DOC] fix grammar
------------------------------------------------------------------------
r63156 | stomar | 2018-04-15 01:47:59 +0900 (Sun, 15 Apr 2018) | 1 line

lib/fileutils.rb: [DOC] fix typos and grammar
------------------------------------------------------------------------
r63155 | stomar | 2018-04-15 01:46:58 +0900 (Sun, 15 Apr 2018) | 1 line

error.c: [DOC] minor fixes
------------------------------------------------------------------------
r63154 | stomar | 2018-04-15 01:45:46 +0900 (Sun, 15 Apr 2018) | 4 lines

random.c: improve docs for Random.bytes

* random.c: [DOC] improve language and RDoc markup in Random.bytes docs;
  also adjust call-seq style of Random.bytes and Random#bytes.
------------------------------------------------------------------------
r63153 | svn | 2018-04-15 01:43:43 +0900 (Sun, 15 Apr 2018) | 1 line

* 2018-04-15
------------------------------------------------------------------------
r63152 | stomar | 2018-04-15 01:43:42 +0900 (Sun, 15 Apr 2018) | 4 lines

complex.c: improve docs for Complex#{finite?,infinite?}

* complex.c: [DOC] correct term "real value" to "real part", and same
  for imaginary part, in documentation for Complex#{finite?,infinite?}.
------------------------------------------------------------------------
r63151 | naruse | 2018-04-14 23:05:38 +0900 (Sat, 14 Apr 2018) | 4 lines

Extend timeout

On armv7 environment, the timeout is too short
http://rubyci.s3.amazonaws.com/scw-9d6766/ruby-trunk/log/20180319T191706Z.diff.html.gz
------------------------------------------------------------------------
r63150 | nobu | 2018-04-14 22:05:52 +0900 (Sat, 14 Apr 2018) | 7 lines

irb.rb: restore the last error

* lib/irb.rb (eval_input): restore the last error `$!`, as the
  previous result.  [Feature #14684]

* lib/irb/context.rb (evaluate): add `exception` keyword argument
  to set the last error.
------------------------------------------------------------------------
r63149 | nobu | 2018-04-14 21:49:30 +0900 (Sat, 14 Apr 2018) | 1 line

irb/{context,workspace}.rb: use local_variable_set
------------------------------------------------------------------------
r63148 | nobu | 2018-04-14 21:36:05 +0900 (Sat, 14 Apr 2018) | 1 line

irb/context.rb: using input-method
------------------------------------------------------------------------
r63147 | tenderlove | 2018-04-14 06:36:51 +0900 (Sat, 14 Apr 2018) | 10 lines

Add write barrier calls for direct marking objects.

This commit adds write barriers for objects marked from `rb_iseq_mark`.
r62851 introduced direct marking from iseqs to:

* keyword arg default values
* catch table iseqs
* VALUEs embedded in encoded instructions

This patch adds missing write barrier calls to those references.
------------------------------------------------------------------------
r63146 | nobu | 2018-04-14 03:11:22 +0900 (Sat, 14 Apr 2018) | 4 lines

irb.rb: backtrace order

* lib/irb.rb (handle_exception): show backtrace from the topmost
  if stdout is not a tty.
------------------------------------------------------------------------
r63145 | svn | 2018-04-14 03:06:36 +0900 (Sat, 14 Apr 2018) | 1 line

* 2018-04-14
------------------------------------------------------------------------
r63144 | nobu | 2018-04-14 03:06:35 +0900 (Sat, 14 Apr 2018) | 1 line

irb.rb: hoist out handle_exception
------------------------------------------------------------------------
r63143 | nobu | 2018-04-13 15:26:30 +0900 (Fri, 13 Apr 2018) | 4 lines

file.c: chardev is loadable

* file.c (ruby_is_fd_loadable): allow character devices to load,
  e.g., `ruby /dev/null` exits successfully.
------------------------------------------------------------------------
r63142 | svn | 2018-04-13 07:13:10 +0900 (Fri, 13 Apr 2018) | 1 line

* 2018-04-13
------------------------------------------------------------------------
r63141 | nobu | 2018-04-13 07:13:09 +0900 (Fri, 13 Apr 2018) | 4 lines

parse.y: `when` indent

* parse.y (k_when): warn less-indented `when` than `case`.
  [ruby-core:86492] [Bug #14674]
------------------------------------------------------------------------
r63140 | svn | 2018-04-12 23:24:07 +0900 (Thu, 12 Apr 2018) | 1 line

* properties.
------------------------------------------------------------------------
r63139 | kazu | 2018-04-12 23:24:06 +0900 (Thu, 12 Apr 2018) | 3 lines

[DOC] Add win32/README.win32 to .document

see https://github.com/ruby/docs.ruby-lang.org/issues/56
------------------------------------------------------------------------
r63138 | nobu | 2018-04-12 21:01:51 +0900 (Thu, 12 Apr 2018) | 1 line

assert indents of `case` and `end`
------------------------------------------------------------------------
r63137 | nobu | 2018-04-12 18:34:54 +0900 (Thu, 12 Apr 2018) | 4 lines

error.c: fix for DRb

* error.c (name_err_init_attr): hide the receiver object from
  Marshal, as DRb depends on it.
------------------------------------------------------------------------
r63136 | nobu | 2018-04-12 12:48:48 +0900 (Thu, 12 Apr 2018) | 12 lines

error.c: super in method_missing

* error.c (nometh_err_initialize): do not shirtcut rb_call_super,
  to push proper control frame.  [ruby-dev:50522] [Bug #14670]

* error.c (rb_nomethod_err_new): allocate and initialize a new
  NoMethodError instance.

* vm_eval.c (rb_make_no_method_exception): create a new exception
  instance directly without method calls, to prevent influence of
  ruby level method definitions, which can cause an unpredictable
  behavior, e.g., infinite recursion.
------------------------------------------------------------------------
r63135 | svn | 2018-04-12 12:40:17 +0900 (Thu, 12 Apr 2018) | 1 line

* 2018-04-12
------------------------------------------------------------------------
r63134 | nobu | 2018-04-12 12:40:16 +0900 (Thu, 12 Apr 2018) | 5 lines

marshaltestlib.rb: use clean object for exception

* test/ruby/marshaltestlib.rb (test_exception): use separate
  clean object to raise an exception.  TestCase instance often has
  modules included.
------------------------------------------------------------------------
r63133 | nobu | 2018-04-11 17:03:43 +0900 (Wed, 11 Apr 2018) | 6 lines

eval_error.c: fix loop on exception in message

* error.c (rb_get_message): accessor to the message.

* eval_error.c (rb_ec_error_print): handle exceptions on fetching
  the message.  [Bug #14566]
------------------------------------------------------------------------
r63132 | svn | 2018-04-11 00:29:17 +0900 (Wed, 11 Apr 2018) | 1 line

* 2018-04-11
------------------------------------------------------------------------
r63131 | kazu | 2018-04-11 00:29:16 +0900 (Wed, 11 Apr 2018) | 3 lines

Try to fix some broken links

see https://github.com/ruby/docs.ruby-lang.org/issues/56
------------------------------------------------------------------------
r63130 | nobu | 2018-04-10 09:41:47 +0900 (Tue, 10 Apr 2018) | 7 lines

symbol.c: non-ASCII constant names

* symbol.c (rb_sym_constant_char_p): support for non-ASCII
  constant names.  [Feature #13770]

* object.c (rb_mod_const_get, rb_mod_const_defined): support for
  non-ASCII constant names.
------------------------------------------------------------------------
r63129 | svn | 2018-04-10 01:00:50 +0900 (Tue, 10 Apr 2018) | 1 line

* 2018-04-10
------------------------------------------------------------------------
r63128 | kou | 2018-04-10 01:00:49 +0900 (Tue, 10 Apr 2018) | 7 lines

rexml: Fix a XPath bug of -

[Bug #14600]

* lib/rexml/parsers/xpathparser.rb: Fix a bug that "N-M" requires a space
  before "-".

------------------------------------------------------------------------
r63127 | nobu | 2018-04-09 21:39:59 +0900 (Mon, 09 Apr 2018) | 6 lines

parse.y: [DOC] Ripper.dedent_string is internal

* parse.y (parser_dedent_string): stated that Ripper.dedent_string
  is for internal use only.

[ci skip]
------------------------------------------------------------------------
r63126 | nobu | 2018-04-09 20:09:30 +0900 (Mon, 09 Apr 2018) | 4 lines

parse.y: extra error message after no digits

* parse.y (no_digits): return tINTEGER instead of unexpected
  end-of-input, to get rid of extra error messages.
------------------------------------------------------------------------
r63125 | nobu | 2018-04-09 18:59:36 +0900 (Mon, 09 Apr 2018) | 1 line

test_literal.rb: use assert_syntax_error
------------------------------------------------------------------------
r63124 | shyouhei | 2018-04-09 12:24:21 +0900 (Mon, 09 Apr 2018) | 5 lines

offsetof(type, foo.bar) is (arguably) a GCCism

clang -Wextended-offsetof warns this line.
CF: http://www.open-std.org/jtc1/sc22/wg14/www/docs/n2031.htm

------------------------------------------------------------------------
r63123 | shyouhei | 2018-04-09 11:40:12 +0900 (Mon, 09 Apr 2018) | 4 lines

Prefer alignof() over _Alignof()

to allow C++ programs include <ruby.h>. [Bug #14668]

------------------------------------------------------------------------
r63122 | svn | 2018-04-09 04:39:39 +0900 (Mon, 09 Apr 2018) | 1 line

* 2018-04-09
------------------------------------------------------------------------
r63121 | stomar | 2018-04-09 04:39:38 +0900 (Mon, 09 Apr 2018) | 4 lines

parse.y: fix docs for Ripper.dedent_string

* parse.y: [DOC] fix return type in call-seq of Ripper.dedent_string,
  clarify the method's behavior.
------------------------------------------------------------------------
r63120 | nobu | 2018-04-08 20:17:45 +0900 (Sun, 08 Apr 2018) | 1 line

compile.c: disable debug prints on sparc
------------------------------------------------------------------------
r63119 | nobu | 2018-04-08 20:12:17 +0900 (Sun, 08 Apr 2018) | 1 line

compile.c: fix an exception argument
------------------------------------------------------------------------
r63118 | nobu | 2018-04-08 17:28:40 +0900 (Sun, 08 Apr 2018) | 1 line

compile.c: suppress warnings
------------------------------------------------------------------------
r63117 | nobu | 2018-04-08 17:20:11 +0900 (Sun, 08 Apr 2018) | 1 line

compile.c: align ibf_object_header
------------------------------------------------------------------------
r63116 | nobu | 2018-04-08 16:42:23 +0900 (Sun, 08 Apr 2018) | 1 line

compile.c: debug prints in ibf_load_object
------------------------------------------------------------------------
r63115 | kazu | 2018-04-08 16:31:46 +0900 (Sun, 08 Apr 2018) | 7 lines

[DOC] `*` in glob matches `\n` too [ci skip]

```
File.fnmatch("a*b", "a\nb") # => true
/\Aa.*b\z/x.match?("a\nb")  # => false
/\Aa.*b\z/mx.match?("a\nb") # => true
```
------------------------------------------------------------------------
r63114 | svn | 2018-04-08 14:22:50 +0900 (Sun, 08 Apr 2018) | 1 line

* 2018-04-08
------------------------------------------------------------------------
r63113 | nobu | 2018-04-08 14:22:49 +0900 (Sun, 08 Apr 2018) | 1 line

compile.c: align IBF dumped data
------------------------------------------------------------------------
r63112 | nobu | 2018-04-07 22:03:35 +0900 (Sat, 07 Apr 2018) | 7 lines

Remove outdated example from Numeric documentation

Since 2.5, Numeric instances can be cloned and duplicated.

[Fix GH-1850]

From: Miguel Landaeta <miguel@miguel.cc>
------------------------------------------------------------------------
r63111 | nobu | 2018-04-07 18:44:30 +0900 (Sat, 07 Apr 2018) | 4 lines

compile.c: refine debug prints

* compile.c (ibf_load_iseq_complete): use alternate hexadecimal
  form for offset.
------------------------------------------------------------------------
r63110 | nobu | 2018-04-07 12:48:45 +0900 (Sat, 07 Apr 2018) | 1 line

test/ruby/test_iseq.rb: hexdump to diff
------------------------------------------------------------------------
r63109 | nobu | 2018-04-07 12:48:44 +0900 (Sat, 07 Apr 2018) | 6 lines

Use assert_include

For better failure message:

- by assert_operator: Expected "X" to be include? "Y"
- by assert_include: Expected "X" to include "Y"
------------------------------------------------------------------------
r63108 | stomar | 2018-04-07 05:50:28 +0900 (Sat, 07 Apr 2018) | 1 line

tool/ruby_vm/scripts/insns2vm.rb: fix typo in r62064
------------------------------------------------------------------------
r63107 | svn | 2018-04-07 00:06:53 +0900 (Sat, 07 Apr 2018) | 1 line

* 2018-04-07
------------------------------------------------------------------------
r63106 | kazu | 2018-04-07 00:06:52 +0900 (Sat, 07 Apr 2018) | 1 line

Use assert_operator instead of assert
------------------------------------------------------------------------
r63105 | svn | 2018-04-06 22:25:12 +0900 (Fri, 06 Apr 2018) | 1 line

* 2018-04-06
------------------------------------------------------------------------
r63104 | nobu | 2018-04-06 22:25:11 +0900 (Fri, 06 Apr 2018) | 1 line

symbol.h: remove stale symbol deleted at r47913
------------------------------------------------------------------------
r63103 | nobu | 2018-04-05 22:13:00 +0900 (Thu, 05 Apr 2018) | 4 lines

compile.c: fix positions encode

* compile.c (ibf_load_iseq_each): iseq_size necessary to encode
  positions is set in ibf_load_code().  [Bug #14660]
------------------------------------------------------------------------
r63102 | nobu | 2018-04-05 21:46:46 +0900 (Thu, 05 Apr 2018) | 4 lines

compile.c: do not dump pointers

* compile.c (ibf_dump_iseq_each): ensure succ_index_table pointer
  field to be 0.
------------------------------------------------------------------------
r63101 | nobu | 2018-04-05 21:03:36 +0900 (Thu, 05 Apr 2018) | 4 lines

compile.c: clear padding

* compile.c (IBF_ZERO): clear padding of struct not to include
  garbages in dumped binary data.
------------------------------------------------------------------------
r63100 | mame | 2018-04-05 18:48:16 +0900 (Thu, 05 Apr 2018) | 4 lines

lib/rubygems/test_case.rb: take over @gem_prelude_index

Gem::TestCase normalizes each path in $LOAD_PATH, which deleted the flag
of @gem_prelude_index.
------------------------------------------------------------------------
r63099 | nobu | 2018-04-05 16:04:39 +0900 (Thu, 05 Apr 2018) | 5 lines

compile.c: do not dump pointers

* compile.c (ibf_dump_iseq_each): do not dump succ_index_table
  pointer.  positions are dumped as integer arrays.  pointer
  values are meaningless outside the process.
------------------------------------------------------------------------
r63098 | nobu | 2018-04-05 16:00:08 +0900 (Thu, 05 Apr 2018) | 4 lines

compile.c: zero fill

* compile.c (ibf_dump_align): fill padding with zero, instead of
  resizing only, not to leave garbages.
------------------------------------------------------------------------
r63097 | mame | 2018-04-05 10:05:16 +0900 (Thu, 05 Apr 2018) | 1 line

`make test-all COVERAGE=true` supports directory-separated build
------------------------------------------------------------------------
r63096 | usa | 2018-04-05 00:44:56 +0900 (Thu, 05 Apr 2018) | 4 lines

* test/test_tempfile.rb (test_{new,create}_traversal_dir): should not assume `t`
  is always set.  if `t` is nil, `NoMethodError` will be raised and the real
  cause will be hidden.

------------------------------------------------------------------------
r63095 | svn | 2018-04-05 00:26:12 +0900 (Thu, 05 Apr 2018) | 1 line

* 2018-04-05
------------------------------------------------------------------------
r63094 | mame | 2018-04-05 00:26:11 +0900 (Thu, 05 Apr 2018) | 3 lines

test/test_tempfile.rb: close a file object created by Tempfile.create

To stop a "Leaked file descriptor" warning.
------------------------------------------------------------------------
r63093 | mame | 2018-04-04 23:02:59 +0900 (Wed, 04 Apr 2018) | 4 lines

bignum.c: Bignum#fdiv avoids double division when divisor is bignum

`Rational(int, bignum).to_f` sometimes returned a wrong result because
`Bignum#div` casted its divisor to double.  [Bug #14637] [ruby-core:86330]
------------------------------------------------------------------------
r63092 | k0kubun | 2018-04-04 22:17:01 +0900 (Wed, 04 Apr 2018) | 17 lines

mjit_compile.c: disable stack consistency check

This should be basically safe because VM already does this check.
I don't think JIT-ed code, which should be specially optimized, should
still do this.

* Benchmark

Calculating -------------------------------------
                         before  before,--jit  after,--jit
           optcarrot     53.851        68.050       71.641 fps

Comparison:
                        optcarrot
         after,--jit:        71.6 fps
        before,--jit:        68.1 fps - 1.05x  slower
              before:        53.9 fps - 1.33x  slower
------------------------------------------------------------------------
r63091 | nobu | 2018-04-04 20:00:39 +0900 (Wed, 04 Apr 2018) | 3 lines

iseq.c: indent iseq dump

* iseq.c (rb_iseq_disasm): indent catch_table iseq entries.
------------------------------------------------------------------------
r63090 | ko1 | 2018-04-04 17:19:28 +0900 (Wed, 04 Apr 2018) | 11 lines

refactoring r63073.

* cont.c (root_fiber_alloc): call `ConvertThreadToFiber()` here.

  `rb_fiber_t` for root_fiber is allocated before running Threads.
  Fiber objects wrapping this rb_fiber_t for root_fiber are created
  when root Fiber object is required explicitly (for example, Fiber
  switching and so on). We can put calling `ConvertThreadToFiber()`.
  In other words, we can pending `ConvertThreadToFiber()`
  until Fiber objects are created.

------------------------------------------------------------------------
r63089 | yui-knk | 2018-04-04 16:46:06 +0900 (Wed, 04 Apr 2018) | 3 lines

gc.c: Fix a typo

Pointed by hkdnet <satoko.itse@gmail.com>
------------------------------------------------------------------------
r63088 | kou | 2018-04-04 15:53:57 +0900 (Wed, 04 Apr 2018) | 9 lines

rexml: Fix a XPath bug of /child::node()
    
[Bug #14600]
    
* lib/rexml/xpath_parser.rb: Fix a bug that "/child::node()" returns
  XML declaration and text nodes out of root element.

* test/rexml/test_jaxen.rb: Enable more tests.

------------------------------------------------------------------------
r63087 | kou | 2018-04-04 15:51:07 +0900 (Wed, 04 Apr 2018) | 2 lines

rexml: Add codes for debugging XPath logic

------------------------------------------------------------------------
r63086 | kou | 2018-04-04 15:36:06 +0900 (Wed, 04 Apr 2018) | 7 lines

rexml: Fix a XPath bug of function()/path
    
[Bug #14600]
    
* lib/rexml/functions.rb: Fix a bug that "function()/path" always returns
  nothing.

------------------------------------------------------------------------
r63085 | ko1 | 2018-04-04 14:00:52 +0900 (Wed, 04 Apr 2018) | 5 lines

use Queue for inter-thread synchronization.

* test/ruby/test_bignum.rb (test_interrupt_during_to_s): should not use
  "while" synchronization, but should use Queue.

------------------------------------------------------------------------
r63084 | nobu | 2018-04-04 13:28:47 +0900 (Wed, 04 Apr 2018) | 1 line

iseq.c: strip trailing spaces in dump
------------------------------------------------------------------------
r63083 | kou | 2018-04-04 12:27:20 +0900 (Wed, 04 Apr 2018) | 9 lines

rexml: Fix a XPath bug of @attribute/parent

[Bug #14600]
    
* lib/rexml/functions.rb: Fix a bug that "@attribute/parent" doesn't
  return element of its attribute.

* test/rexml/test_jaxen.rb: Enable more tests.

------------------------------------------------------------------------
r63082 | kou | 2018-04-04 12:26:01 +0900 (Wed, 04 Apr 2018) | 7 lines

rexml: Fix a  XPath bug of $variable

[Bug #14600]
    
* lib/rexml/functions.rb: Fix a bug that "$variable" returns
  node instead of ndoe set.

------------------------------------------------------------------------
r63081 | nobu | 2018-04-04 01:54:27 +0900 (Wed, 04 Apr 2018) | 5 lines

test_fiber.rb: fix test_create_fiber_in_new_thread

* test/ruby/test_fiber.rb (test_create_fiber_in_new_thread):
  prefix to run, and get the result value not only waiting.
  [Bug #14642]
------------------------------------------------------------------------
r63080 | nobu | 2018-04-04 01:50:17 +0900 (Wed, 04 Apr 2018) | 6 lines

Fix typo

[Bug #14642]
[Fix GH-1855]

From: MSP-Greg <MSP-Greg@users.noreply.github.com>
------------------------------------------------------------------------
r63079 | kou | 2018-04-04 00:51:08 +0900 (Wed, 04 Apr 2018) | 9 lines

rexml: Fix a XPath bug of name(node-set)

[Bug #14600]
    
* lib/rexml/functions.rb: Fix a bug that "name(node-set)" returns
  element instead of element name.
  
* test/rexml/test_jaxen.rb: Enable more tests.

------------------------------------------------------------------------
r63078 | svn | 2018-04-04 00:42:01 +0900 (Wed, 04 Apr 2018) | 1 line

* 2018-04-04
------------------------------------------------------------------------
r63077 | k0kubun | 2018-04-04 00:42:00 +0900 (Wed, 04 Apr 2018) | 10 lines

mjit.c: add class serial of singleton class

for toplevel self.

Toplevel self's class is not `Object` but `#<Class:Object>`.
This commit allows to inline method call setup for toplevel methods.
I've thought r63053 works but it doesn't...

I actually want to add all singleton classes but I'm not sure what's the
good way for it. I assumed that using ObjectSpace.each_object is suboptimal.
------------------------------------------------------------------------
r63076 | nobu | 2018-04-03 20:27:00 +0900 (Tue, 03 Apr 2018) | 1 line

adjust indent [ci skip]
------------------------------------------------------------------------
r63075 | nobu | 2018-04-03 19:50:47 +0900 (Tue, 03 Apr 2018) | 1 line

Reproducible test for [Feature#14370] @ [Bug #14660]
------------------------------------------------------------------------
r63074 | ko1 | 2018-04-03 19:22:45 +0900 (Tue, 03 Apr 2018) | 2 lines

repatch r62966 and r62969.

------------------------------------------------------------------------
r63073 | ko1 | 2018-04-03 19:21:47 +0900 (Tue, 03 Apr 2018) | 21 lines

Fix Fiber with Thread issue on Windows [Bug #14642]

* cont.c (rb_threadptr_root_fiber_setup): divide into two functions:
  * rb_threadptr_root_fiber_setup_by_parent(): called by the parent thread.
  * rb_threadptr_root_fiber_setup_by_child(): called by the created thread.

  `rb_threadptr_root_fiber_setup()` is called by the parent thread and
  set fib->fib_handle by ConvertThreadToFiber() on the parent thread on
  Windows enveironment.
  This means that root_fib->fib_handle of child thread is initialized
  with parent thread's Fiber handle. Furthermore, second call of
  `ConvertThreadToFiber()` for the same thread fails.

  This patch solves this weird situateion. However, maybe we can make more
  clean code.

* thread.c (thread_start_func_2): call
  `rb_threadptr_root_fiber_setup_by_child()` at thread initialize routine.

* vm.c (th_init): call `rb_threadptr_root_fiber_setup_by_parent()`.

------------------------------------------------------------------------
r63072 | nobu | 2018-04-03 17:29:51 +0900 (Tue, 03 Apr 2018) | 1 line

Honor --silent option
------------------------------------------------------------------------
r63071 | nobu | 2018-04-03 17:29:50 +0900 (Tue, 03 Apr 2018) | 1 line

Fixed unmatched quotes and brackets
------------------------------------------------------------------------
r63070 | nobu | 2018-04-03 17:10:32 +0900 (Tue, 03 Apr 2018) | 1 line

adjust indent [ci skip]
------------------------------------------------------------------------
r63069 | naruse | 2018-04-03 16:54:18 +0900 (Tue, 03 Apr 2018) | 3 lines

Revert r62966 and r62969

It breaks mswin's test-all
------------------------------------------------------------------------
r63068 | nobu | 2018-04-03 15:57:44 +0900 (Tue, 03 Apr 2018) | 5 lines

proc.c: fix segfault when no singleton class

* proc.c (rb_obj_singleton_method): bail out if the receiver does
  not have the singleton class without accessing the origin class
  not to segfault.  [Bug #14658]
------------------------------------------------------------------------
r63067 | nobu | 2018-04-03 15:57:43 +0900 (Tue, 03 Apr 2018) | 6 lines

Fix Kernel#singleton_method with Module#Prepend

* proc.c (rb_obj_singleton_method): search the method entry from
  the origin class, for fix prepended modules.  [Bug #14658]

From: Vasiliy Ermolovich <younash@gmail.com>
------------------------------------------------------------------------
r63066 | nobu | 2018-04-03 15:25:10 +0900 (Tue, 03 Apr 2018) | 1 line

removed never used variable
------------------------------------------------------------------------
r63065 | svn | 2018-04-03 14:56:17 +0900 (Tue, 03 Apr 2018) | 1 line

* 2018-04-03
------------------------------------------------------------------------
r63064 | hsbt | 2018-04-03 14:56:16 +0900 (Tue, 03 Apr 2018) | 1 line

Support upstream directory structure for ruby/csv.
------------------------------------------------------------------------
r63063 | nobu | 2018-04-02 21:39:01 +0900 (Mon, 02 Apr 2018) | 3 lines

Win32API.rb: use uplevel option to warn

Also warns always regardless $VERBOSE.
------------------------------------------------------------------------
r63062 | nobu | 2018-04-02 20:39:10 +0900 (Mon, 02 Apr 2018) | 5 lines

error.c: prepend "warning: " always

* error.c (rb_warn_m): prepend the string "warning: " if uplevel
  keyword is given, even if caller file and line information are
  not available.
------------------------------------------------------------------------
r63061 | nobu | 2018-04-02 13:44:35 +0900 (Mon, 02 Apr 2018) | 4 lines

Improve mkmf error message

* lib/mkmf.rb: Improve the error message when ruby.h is missing,
  to suggest installing separate packages.  [Feature #14656]
------------------------------------------------------------------------
r63060 | nobu | 2018-04-02 13:20:07 +0900 (Mon, 02 Apr 2018) | 5 lines

Keep feature names loaded in the block

* lib/rubygems/test_case.rb (Gem::TestCase#save_loaded_features):
  keep feature names for rubygem libraries loaded in the block.
  c.f. rubygems/rubygems#2261
------------------------------------------------------------------------
r63059 | nobu | 2018-04-02 12:30:30 +0900 (Mon, 02 Apr 2018) | 6 lines

Fix typo on URI.hierarchical? [ci skip]

* lib/uri/generic.rb (hierarchical?): [DOC] Fix typo in the
  description.  [Fix GH-1851]

From: Harry Llewelyn <advocation@gmail.com>
------------------------------------------------------------------------
r63058 | svn | 2018-04-02 01:17:53 +0900 (Mon, 02 Apr 2018) | 1 line

* 2018-04-02
------------------------------------------------------------------------
r63057 | kou | 2018-04-02 01:17:52 +0900 (Mon, 02 Apr 2018) | 10 lines

Start re-enabling Jaxen tests

[Bug #14600]
Reported by MSP-Greg. Thanks!!!

* lib/rexml/xpath_parser.rb: Fix a bug that "following_siblings::*[N]"
  doesn't work.

* test/rexml/test_jaxen.rb: Enable only axis test for now.

------------------------------------------------------------------------
r63056 | nobu | 2018-04-01 22:16:14 +0900 (Sun, 01 Apr 2018) | 5 lines

test_time_tz.rb: Lisbon tzdata fix

* test/ruby/test_time_tz.rb (gen_variational_zdump_test): Update
  Lisbon zdump data, which fixed the 1912-01-01 transition for
  Portugual and its colonies.  [Bug #14655]
------------------------------------------------------------------------
r63055 | nobu | 2018-04-01 22:02:11 +0900 (Sun, 01 Apr 2018) | 5 lines

test_time_tz.rb: Kiritimati tzdata fix

* test/ruby/test_time_tz.rb (gen_zdump_test): fix the expected
  data at the Kiritimati's skip of New Year's Eve 1994.
  [Bug #14655]
------------------------------------------------------------------------
r63054 | nobu | 2018-04-01 11:00:36 +0900 (Sun, 01 Apr 2018) | 5 lines

test_time_tz.rb: Kiritimati tzdata fix

* test/ruby/test_time_tz.rb (TestTimeTZ#test_pacific_kiritimati):
  fix the expected data at the skip of New Year's Eve 1994.
  [Bug #14655]
------------------------------------------------------------------------
r63053 | k0kubun | 2018-04-01 10:41:55 +0900 (Sun, 01 Apr 2018) | 4 lines

mjit.c: make Object's class serial valid in JIT

Without this change, we couldn't inline method call setup for methods
which are defined in the top level.
------------------------------------------------------------------------
r63052 | svn | 2018-04-01 00:48:59 +0900 (Sun, 01 Apr 2018) | 1 line

* 2018-04-01
------------------------------------------------------------------------
r63051 | nobu | 2018-04-01 00:48:59 +0900 (Sun, 01 Apr 2018) | 3 lines

compile.c: compile_evstr

* compile.c (compile_evstr): extract from iseq_compile_each.
------------------------------------------------------------------------
r63050 | nobu | 2018-04-01 00:48:57 +0900 (Sun, 01 Apr 2018) | 4 lines

compile.c: end_label

* compile.c (compile_if): branch to end_label is not used if
  else_seq is not used.
------------------------------------------------------------------------
r63048 | naruse | 2018-03-31 22:48:32 +0900 (Sat, 31 Mar 2018) | 1 line

Resurvey performance of RDoc by frozen_string_literal: true [Bug #14654]
------------------------------------------------------------------------
r63047 | nobu | 2018-03-31 20:11:31 +0900 (Sat, 31 Mar 2018) | 1 line

use requrie_relative
------------------------------------------------------------------------
r63046 | nobu | 2018-03-31 19:34:16 +0900 (Sat, 31 Mar 2018) | 5 lines

use require_relative

* spec/ruby/core/file/ftype_spec.rb: use require_relative which
  resolves symbolic links consistently to git rid of constant
  re-definition warnings.
------------------------------------------------------------------------
r63045 | nobu | 2018-03-31 15:05:04 +0900 (Sat, 31 Mar 2018) | 6 lines

file_types.rb: use the current terminal device

* spec/ruby/core/file/fixtures/file_types.rb (configure_types):
  try the current standard input terminal device first to get rid
  of a race condition.  other terminal devices may be used by
  other processes and disposed during the test.
------------------------------------------------------------------------
r63044 | kazu | 2018-03-31 11:29:19 +0900 (Sat, 31 Mar 2018) | 1 line

test/lib/leakchecker.rb: Add check_verbose
------------------------------------------------------------------------
r63043 | svn | 2018-03-31 00:08:53 +0900 (Sat, 31 Mar 2018) | 1 line

* 2018-03-31
------------------------------------------------------------------------
r63042 | k0kubun | 2018-03-31 00:08:52 +0900 (Sat, 31 Mar 2018) | 3 lines

test_jit.rb: loosen CC check condition

see also: r63037. Probably it was not enough.
------------------------------------------------------------------------
r63041 | nobu | 2018-03-30 22:48:16 +0900 (Fri, 30 Mar 2018) | 4 lines

dir.c: Dir.glob example

* dir.c (dir_s_glob): [DOC] added an example of Dir.glob using
  pattern list.  [ci skip]
------------------------------------------------------------------------
r63040 | nobu | 2018-03-30 14:15:07 +0900 (Fri, 30 Mar 2018) | 5 lines

compile.c: do not dump unused callinfos

* compile.c (compile_if): rewind callinfo indexes used in
  unreachable paths, to get rid of dumping unused callinfos.
  [ruby-core:86399] [Bug #14553]
------------------------------------------------------------------------
r63039 | svn | 2018-03-30 11:52:13 +0900 (Fri, 30 Mar 2018) | 1 line

* 2018-03-30
------------------------------------------------------------------------
r63038 | nobu | 2018-03-30 11:52:12 +0900 (Fri, 30 Mar 2018) | 5 lines

ruby.1: [DOC] options to exit [ci skip]

* man/ruby.1: `--copyright` and `--version` quit immediately, and
  also `--verbose` if no scripts are given.
  [ruby-core:86391] [Bug #14633]
------------------------------------------------------------------------
r63037 | k0kubun | 2018-03-29 21:37:31 +0900 (Thu, 29 Mar 2018) | 5 lines

test_jit.rb: loosen debug log check

We couldn't catch log with
https://gist.github.com/ko1/0fdc6a8d4add70cd8648000b16a3da38#file-brlog-trunk_gcc6-20180329-003723-L370
because the error message started with "gcc-6:".
------------------------------------------------------------------------
r63034 | nobu | 2018-03-29 14:56:04 +0900 (Thu, 29 Mar 2018) | 4 lines

dir.c: do not assume NUL terminator

* dir.c (rb_push_glob): do not assume string is NUL terminated
  always, shared substring may not in the future.
------------------------------------------------------------------------
r63033 | nobu | 2018-03-29 12:42:32 +0900 (Thu, 29 Mar 2018) | 3 lines

Use only CMDARG/COND _PUSH/POP for cmdarg/cond management.

From: Ilya Bylich <ibylich@gmail.com>
------------------------------------------------------------------------
r63032 | nobu | 2018-03-29 10:33:25 +0900 (Thu, 29 Mar 2018) | 1 line

parse.y: remove `p->` from bitstack traces
------------------------------------------------------------------------
r63031 | svn | 2018-03-29 09:05:46 +0900 (Thu, 29 Mar 2018) | 1 line

* 2018-03-29
------------------------------------------------------------------------
r63030 | nobu | 2018-03-29 09:05:45 +0900 (Thu, 29 Mar 2018) | 5 lines

array.c: yield blockarg in collect

* array.c (rb_ary_collect): yield in block argument semantics
  always to splat array elements to lambda, for the backward
  compatibility.  [ruby-core:86362] [Bug #14639]
------------------------------------------------------------------------
r63008 | usa | 2018-03-28 22:27:35 +0900 (Wed, 28 Mar 2018) | 7 lines

get rid of test error/failure on Windows introduced at r62955

* lib/webrick/httpresponse.rb (send_body_io): use seek if NotImplementedError
  is raised in IO.copy_stream with offset.

* lib/webrick/httpservlet/filehandler.rb (multipart_body): ditto.

------------------------------------------------------------------------
r63000 | nobu | 2018-03-28 20:30:27 +0900 (Wed, 28 Mar 2018) | 4 lines

unixsocket.c: abstract namespace

* ext/socket/unixsocket.c (unixsock_path_value): fix r62991 for
  Linux abstract namespace.
------------------------------------------------------------------------
r62993 | nobu | 2018-03-28 19:22:57 +0900 (Wed, 28 Mar 2018) | 4 lines

Use Regexp#match? in time.rb for conditionals
[Fix GH-1852]

From: Bart <bartdewater@gmail.com>
------------------------------------------------------------------------
r62992 | nobu | 2018-03-28 19:12:17 +0900 (Wed, 28 Mar 2018) | 4 lines

pack.c: fix underflow

* pack.c (pack_unpack_internal): get rid of underflow.
  https://hackerone.com/reports/298246
------------------------------------------------------------------------
r62991 | nobu | 2018-03-28 19:08:57 +0900 (Wed, 28 Mar 2018) | 4 lines

unixsocket.c: check NUL bytes

* ext/socket/unixsocket.c (rsock_init_unixsock): check NUL bytes.
  https://hackerone.com/reports/302997
------------------------------------------------------------------------
r62990 | hsbt | 2018-03-28 19:03:03 +0900 (Wed, 28 Mar 2018) | 3 lines

Ignore file separator from tmpfile/tmpdir name.

From: SHIBATA Hiroshi <hsbt@ruby-lang.org>
------------------------------------------------------------------------
r62989 | nobu | 2018-03-28 18:58:52 +0900 (Wed, 28 Mar 2018) | 7 lines

dir.c: check NUL bytes

* dir.c (GlobPathValue): should be used in rb_push_glob only.
  other methods should use FilePathValue.
  https://hackerone.com/reports/302338

* dir.c (rb_push_glob): expand GlobPathValue
------------------------------------------------------------------------
r62969 | nobu | 2018-03-28 17:48:52 +0900 (Wed, 28 Mar 2018) | 1 line

adjust indents [ci skip]
------------------------------------------------------------------------
r62968 | normal | 2018-03-28 17:38:26 +0900 (Wed, 28 Mar 2018) | 9 lines

webrick: prevent response splitting and header injection

Original patch by tenderlove (with minor style adjustments).

* lib/webrick/httpresponse.rb (send_header): call check_header
  (check_header): raise on embedded CRLF in header value
* test/webrick/test_httpresponse.rb
  (test_prevent_response_splitting_headers): new test
* (test_prevent_response_splitting_cookie_headers): ditto
------------------------------------------------------------------------
r62967 | normal | 2018-03-28 17:38:21 +0900 (Wed, 28 Mar 2018) | 7 lines

io.c: IO#write without args returns 0

This is consistent with other implementations of .write
in openssl and stringio.

* io.c (io_write_m): return 0 on argc == 0
  [ruby-core:86285] [Bug #14338]
------------------------------------------------------------------------
r62966 | normal | 2018-03-28 17:06:55 +0900 (Wed, 28 Mar 2018) | 23 lines

webrick/httpproxy: stream request and response bodies

Reading entire request or response bodies into memory can lead
to trivial denial-of-service attacks.  Introduce Fibers in both
cases to allow streaming.

WEBrick::HTTPRequest gains a new body_reader method to prepare
itself as a source for IO.copy_stream.  This allows the
WEBrick::HTTPRequest object to be used as the
Net::HTTPGenericRequest#body_stream= arg for Net::HTTP.

For HTTP proxy response bodies, we also use a Fiber to
to make the HTTP request and read the response body.

* lib/webrick/httprequest.rb (body_reader): new method
  (readpartial): ditto
* lib/webrick/httpproxy.rb (perform_proxy_request): use Fiber
  to stream response body
  (do_GET, do_HEAD): adjust call
  (do_POST): adjust call and supply body_reader
* test/webrick/test_httprequest.rb (test_chunked): test
  for IO.copy_stream compatibility
* test/webrick/test_httpproxy.rb (test_big_bodies): new test
------------------------------------------------------------------------
r62965 | normal | 2018-03-28 17:06:49 +0900 (Wed, 28 Mar 2018) | 18 lines

webrick/httpauth/digestauth: stream req.body

WARNING! WARNING! WARNING!  LIKELY BROKEN CHANGE

Pass a proc to WEBrick::HTTPRequest#body to avoid reading a
potentially large request body into memory during
authentication.

WARNING! this will break apps completely which want to do
something with the body besides calculating the MD5 digest
of it.

Also, keep in mind that probably nobody uses "auth-int".
Servers such as Apache, lighttpd, nginx don't seem to
support it; nor does curl when using POST/PUT bodies;
and we didn't have tests for it until now...

* lib/webrick/httpauth/digestauth.rb (_authenticate): stream req.body
------------------------------------------------------------------------
r62964 | normal | 2018-03-28 17:06:44 +0900 (Wed, 28 Mar 2018) | 9 lines

webrick: add test for Digest auth-int

No changes to the actual code, this is a new test for
a feature for which no tests existed.  I don't understand
the Digest authentication code well at all, but this is
necessary for the subsequent change.

* test/webrick/test_httpauth.rb (test_digest_auth_int): new test
  (credentials_for_request): support bodies with POST
------------------------------------------------------------------------
r62963 | normal | 2018-03-28 17:06:39 +0900 (Wed, 28 Mar 2018) | 9 lines

webrick/httprequest: use InputBufferSize for chunked requests

While WEBrick::HTTPRequest#body provides a Proc interface
for streaming large request bodies, clients must not force
the server to use an excessively large chunk size.

* lib/webrick/httprequest.rb (read_chunk_size): limit each
  read and block.call to :InputBufferSize in config.
* test/webrick/test_httpserver.rb (test_big_chunks): new test
------------------------------------------------------------------------
r62962 | normal | 2018-03-28 17:06:34 +0900 (Wed, 28 Mar 2018) | 7 lines

webrick/httprequest: raise correct exception

"BadRequest" alone does not resolve correctly, it is in the
HTTPStatus namespace.

* lib/webrick/httprequest.rb (read_chunked): use correct exception
* test/webrick/test_httpserver.rb (test_eof_in_chunk): new test
------------------------------------------------------------------------
r62961 | normal | 2018-03-28 17:06:28 +0900 (Wed, 28 Mar 2018) | 9 lines

webrick/httpservlet/cgihandler: reduce memory use

WEBrick::HTTPRequest#body can be passed a block to process the
body in chunks.  Use this feature to avoid building a giant
string in memory.

* lib/webrick/httpservlet/cgihandler.rb (do_GET):
  avoid reading entire request body into memory
  (do_POST is aliased to do_GET, so it handles bodies)
------------------------------------------------------------------------
r62960 | normal | 2018-03-28 17:06:23 +0900 (Wed, 28 Mar 2018) | 13 lines

webrick/httprequest: limit request headers size

We use the same 112 KB limit started (AFAIK) by Mongrel, Thin,
and Puma to prevent malicious users from using up all the memory
with a single request.  This also limits the damage done by
excessive ranges in multipart Range: requests.

Due to the way we rely on IO#gets and the desire to keep
the code simple, the actual maximum header may be 4093 bytes
larger than 112 KB, but we're splitting hairs at that point.

* lib/webrick/httprequest.rb: define MAX_HEADER_LENGTH
  (read_header): raise when headers exceed max length
------------------------------------------------------------------------
r62959 | normal | 2018-03-28 17:06:18 +0900 (Wed, 28 Mar 2018) | 9 lines

webrick: use IO.copy_stream for multipart response

Use the new Proc response body feature to generate a multipart
range response dynamically.  We use a flat array to minimize
object overhead as much as possible; as many ranges may fit
into an HTTP request header.

* lib/webrick/httpservlet/filehandler.rb (multipart_body): new method
  (make_partial_content): use multipart_body
------------------------------------------------------------------------
r62958 | normal | 2018-03-28 17:06:13 +0900 (Wed, 28 Mar 2018) | 7 lines

webrick/httpresponse: make ChunkedWrapper copy_stream-compatible

The .write method needs to return the number of bytes written
to avoid confusing IO.copy_stream.

* lib/webrick/httpresponse.rb (ChunkedWrapper#write): return bytes written
  (ChunkedWrapper#<<): return self
------------------------------------------------------------------------
r62957 | normal | 2018-03-28 17:06:08 +0900 (Wed, 28 Mar 2018) | 8 lines

webrick: quiet warning for multi-part ranges

Content-Length is ignored by WEBrick::HTTPResponse even if we
calculate it, so instead we chunk responses to HTTP/1.1 clients
and terminate HTTP/1.0 connections.

* lib/webrick/httpservlet/filehandler.rb (make_partial_content):
  quiet warning
------------------------------------------------------------------------
r62956 | normal | 2018-03-28 17:06:02 +0900 (Wed, 28 Mar 2018) | 7 lines

test/webrick/test_filehandler.rb: stricter multipart range test

We need to ensure we generate compatibile output in
the face of future changes

* test/webrick/test_filehandler.rb (test_make_partial_content):
  check response body
------------------------------------------------------------------------
r62955 | normal | 2018-03-28 17:05:57 +0900 (Wed, 28 Mar 2018) | 10 lines

webrick: use IO.copy_stream for single range response

This is also compatible with range responses generated
by Rack::File (tested with rack 2.0.3).

* lib/webrick/httpresponse.rb (send_body_io): use Content-Range
* lib/webrick/httpservlet/filehandler.rb (make_partial_content):
  use File object for the single range case
* test/webrick/test_filehandler.rb (get_res_body): use send_body
  to test result
------------------------------------------------------------------------
r62954 | normal | 2018-03-28 17:05:52 +0900 (Wed, 28 Mar 2018) | 14 lines

webrick/httpresponse: IO.copy_stream for regular files

Remove the redundant _send_file method since its functionality
is unnecessary with IO.copy_stream.  IO.copy_stream also allows
the use of sendfile under some OSes to speed up copies to
non-TLS sockets.

Testing with "curl >/dev/null" and "ruby -run -e httpd" to
read a 1G file over Linux loopback reveals a reduction from
around ~0.770 to ~0.490 seconds on the client side.

* lib/webrick/httpresponse.rb (send_body_io): use IO.copy_stream
  (_send_file): remove
  [Feature #14237]
------------------------------------------------------------------------
r62953 | normal | 2018-03-28 17:05:46 +0900 (Wed, 28 Mar 2018) | 15 lines

webrick: favor .write over << method

This will make the next change to use IO.copy_stream
easier-to-read.  When we can drop Ruby 2.4 support in a few
years, this will allow us to use writev(2) with multiple
arguments for headers and chunked responses.

* lib/webrick/cgi.rb (write): new wrapper method
  lib/webrick/httpresponse.rb: (send_header): use socket.write
  (send_body_io): ditto
  (send_body_string): ditto
  (send_body_proc): ditto
  (_write_data): ditto
  (ChunkedWrapper#write): ditto
  (_send_file): ditto
------------------------------------------------------------------------
r62952 | nobu | 2018-03-28 16:01:48 +0900 (Wed, 28 Mar 2018) | 5 lines

win32/file.c: relative path with drive letter

* win32/file.c (IS_ABSOLUTE_PATH_P): home directory should not be
  a relative path regardless a drive letter.   PathIsRelativeW
  returns FALSE on such path.  [ruby-core:86356] [Bug #14638]
------------------------------------------------------------------------
r62936 | svn | 2018-03-28 12:18:01 +0900 (Wed, 28 Mar 2018) | 1 line

* 2018-03-28
------------------------------------------------------------------------
r62935 | ko1 | 2018-03-28 12:18:00 +0900 (Wed, 28 Mar 2018) | 7 lines

fix regexp introduced at recent RDoc update (r62924).

* lib/rdoc/text.rb: should escape `-` character.
  Sometimes test fails if `$VERBOSE = 1` with the following warning:

  > text.rb:172: warning: character class has duplicated range: ...

------------------------------------------------------------------------
r62934 | normal | 2018-03-27 18:28:37 +0900 (Tue, 27 Mar 2018) | 9 lines

thread_sync.c: avoid reaching across stacks of dead threads

rb_ensure is insufficient cleanup for fork and we must
reinitialize all waitqueues in the child process.

Unfortunately this increases the footprint of ConditionVariable,
Queue and SizedQueue by 8 bytes on 32-bit (16 bytes on 64-bit).

[ruby-core:86316] [Bug #14634]
------------------------------------------------------------------------
r62933 | nobu | 2018-03-27 10:09:14 +0900 (Tue, 27 Mar 2018) | 4 lines

configure.ac: string literal concatenation

* configure.ac: bail out if string literal concatenation is not
  available, as it is used everywhere now.
------------------------------------------------------------------------
r62932 | nobu | 2018-03-27 09:44:34 +0900 (Tue, 27 Mar 2018) | 4 lines

ruby.c: exit by --version

* ruby.c (usage): stated exiting by `--version` option with
  nothing done.
------------------------------------------------------------------------
r62931 | eregon | 2018-03-27 05:48:21 +0900 (Tue, 27 Mar 2018) | 1 line

Update to ruby/spec@a585ec3
------------------------------------------------------------------------
r62930 | svn | 2018-03-27 05:48:02 +0900 (Tue, 27 Mar 2018) | 1 line

* properties.
------------------------------------------------------------------------
r62929 | eregon | 2018-03-27 05:48:01 +0900 (Tue, 27 Mar 2018) | 1 line

Update to ruby/mspec@8b54bf3
------------------------------------------------------------------------
r62928 | svn | 2018-03-27 01:25:06 +0900 (Tue, 27 Mar 2018) | 1 line

* 2018-03-27
------------------------------------------------------------------------
r62927 | nobu | 2018-03-27 01:25:05 +0900 (Tue, 27 Mar 2018) | 5 lines

ruby.c: fix --verbose description in usage

* ruby.c (usage): fix the description of `--verbose` option, which
  does not print the version number unlike `-v` option.
  [ruby-core:86307] [Bug #14633]
------------------------------------------------------------------------
r62926 | kazu | 2018-03-26 19:18:46 +0900 (Mon, 26 Mar 2018) | 1 line

Fix test error
------------------------------------------------------------------------
r62925 | svn | 2018-03-26 14:56:29 +0900 (Mon, 26 Mar 2018) | 1 line

* remove trailing spaces.
------------------------------------------------------------------------
r62924 | hsbt | 2018-03-26 14:56:26 +0900 (Mon, 26 Mar 2018) | 5 lines

Merge RDoc 6.0.3 from upstream.

  It fixed the several bugs that was found after RDoc 6 releasing.

From: SHIBATA Hiroshi <hsbt@ruby-lang.org>
------------------------------------------------------------------------
r62923 | nobu | 2018-03-26 09:25:16 +0900 (Mon, 26 Mar 2018) | 4 lines

bigdecimal.c: fix missing argument

* ext/bigdecimal/bigdecimal.c (rb_rational_num, rb_rational_den):
  fix missing argc argument for old ruby.
------------------------------------------------------------------------
r62922 | svn | 2018-03-26 09:02:20 +0900 (Mon, 26 Mar 2018) | 1 line

* 2018-03-26
------------------------------------------------------------------------
r62921 | nobu | 2018-03-26 09:02:20 +0900 (Mon, 26 Mar 2018) | 7 lines

Update Complex#infinite? documenation

to state what it really does.

[Fix GH-1848]

From: Christian Bruckmayer <cbruckmayer@suse.com>
------------------------------------------------------------------------
r62920 | nobu | 2018-03-26 09:02:19 +0900 (Mon, 26 Mar 2018) | 7 lines

Update Complex#finite? documentation

to state what it really does.

[Fix GH-1848]

From: Christian Bruckmayer <cbruckmayer@suse.com>
------------------------------------------------------------------------
r62919 | nobu | 2018-03-25 23:06:06 +0900 (Sun, 25 Mar 2018) | 5 lines

assertions for r62914

* test/ruby/test_keyword.rb (test_splat_hash): assertion on
  mandatory and rest arguments.  r62914 is not only for optional
  argument.
------------------------------------------------------------------------
r62914 | nobu | 2018-03-25 11:22:14 +0900 (Sun, 25 Mar 2018) | 5 lines

vm_args.c: warn splat to var

* vm_args.c (setup_parameters_complex): [EXPERIMENTAL] warn when
  splat keyword arguments is passed as a single ordinary argument,
  not as a keyword rest argument.
------------------------------------------------------------------------
r62913 | svn | 2018-03-25 10:52:23 +0900 (Sun, 25 Mar 2018) | 1 line

* 2018-03-25
------------------------------------------------------------------------
r62912 | nobu | 2018-03-25 10:52:22 +0900 (Sun, 25 Mar 2018) | 1 line

extmk.rb: get rid of shadowing outer local variable
------------------------------------------------------------------------
r62910 | nobu | 2018-03-24 23:28:45 +0900 (Sat, 24 Mar 2018) | 4 lines

configure.ac: named blocks

* configure.ac: turned section block comments into named blocks.
  http://c16e.com/1603281120/
------------------------------------------------------------------------
r62908 | nobu | 2018-03-24 20:15:10 +0900 (Sat, 24 Mar 2018) | 4 lines

compile.c: split add_insn_info

* compile.c (add_insn_info, add_adjust_info): split for each
  list->type, to remove unnecessary repeated conditions and casts.
------------------------------------------------------------------------
r62907 | svn | 2018-03-24 20:04:38 +0900 (Sat, 24 Mar 2018) | 1 line

* 2018-03-24
------------------------------------------------------------------------
r62906 | nobu | 2018-03-24 20:04:37 +0900 (Sat, 24 Mar 2018) | 4 lines

compile.c: suppress missing-noreturn

* compile.c (add_insn_info): move return statement to suppress
  missing-noreturn warning.
------------------------------------------------------------------------
r62902 | nobu | 2018-03-23 10:09:57 +0900 (Fri, 23 Mar 2018) | 4 lines

parse.y: k_else in bodystmt

* parse.y (bodystmt): expand opt_else to show the error message at
  the right place.
------------------------------------------------------------------------
r62901 | nobu | 2018-03-23 09:40:08 +0900 (Fri, 23 Mar 2018) | 13 lines

parse.y: else without rescue

* parse.y (bodystmt): [EXPERIMENTAL] make `else` without `rescue`
  a syntax error.  [DevelopersMeeting20180315Japan]

  https://bugs.ruby-lang.org/projects/ruby/wiki/DevelopersMeeting20180315Japan
  https://docs.google.com/document/d/1RT0ijSo8uJ4Awn3CEvuYkjH0TVeXSYgeAFNmVGYC3ak/edit#
  > * do-else-end
  >   https://twitter.com/joker1007/status/974173396006129664
  >   https://twitter.com/joker1007/status/974173641347756032
  >   https://twitter.com/joker1007/status/974176512554369027
  >   Will be SyntaxError in 2.6-preview2
  >   All of begin/do/def (experimental)
------------------------------------------------------------------------
r62900 | svn | 2018-03-23 01:05:05 +0900 (Fri, 23 Mar 2018) | 1 line

* 2018-03-23
------------------------------------------------------------------------
r62899 | nobu | 2018-03-23 01:05:04 +0900 (Fri, 23 Mar 2018) | 1 line

test_exception.rb: assertions with Exception.to_tty?
------------------------------------------------------------------------
r62898 | kazu | 2018-03-22 22:01:17 +0900 (Thu, 22 Mar 2018) | 1 line

sample/timeout.rb: Remove unnecessary increment [ci skip]
------------------------------------------------------------------------
r62897 | naruse | 2018-03-22 20:20:03 +0900 (Thu, 22 Mar 2018) | 5 lines

set UTF-8 if given URI string is ASCII

Now URI is normally UTF-8, and US-ASCII URI string is considered as
escaped a UTF-8 string.
https://github.com/rails/rails/issues/32294
------------------------------------------------------------------------
r62894 | nobu | 2018-03-22 17:26:23 +0900 (Thu, 22 Mar 2018) | 4 lines

error.c: full_message options

* error.c (exc_full_message): add highlight: and reverse: keyword
  options.  [Bug #14324]
------------------------------------------------------------------------
r62893 | naruse | 2018-03-22 16:58:39 +0900 (Thu, 22 Mar 2018) | 1 line

Factor out get_reg_grapheme_cluster
------------------------------------------------------------------------
r62892 | naruse | 2018-03-22 16:58:38 +0900 (Thu, 22 Mar 2018) | 3 lines

fix each_grapheme_cluster's size [Bug #14363]

From: Hugo Peixoto <hugo.peixoto@gmail.com>
------------------------------------------------------------------------
r62891 | naruse | 2018-03-22 16:58:37 +0900 (Thu, 22 Mar 2018) | 3 lines

Revert "each_grapheme_cluster shouldn't return size [Bug #14363]"

This reverts commit r62887.
------------------------------------------------------------------------
r62888 | naruse | 2018-03-22 15:59:54 +0900 (Thu, 22 Mar 2018) | 3 lines

each_grapheme_cluster shouldn't return size [Bug #14363]

From: Stefan Schu{U+00DF}ler <mail@stefanschuessler.de>
------------------------------------------------------------------------
r62887 | nobu | 2018-03-22 15:47:53 +0900 (Thu, 22 Mar 2018) | 4 lines

parse.y: reorder in the place

* parse.y (new_args_tail): reorder required and optional keyword
  argument variable IDs in the place.
------------------------------------------------------------------------
r62882 | nobu | 2018-03-22 01:03:59 +0900 (Thu, 22 Mar 2018) | 8 lines

Docs and tests on URI.hierarchical?, URI.absolute?

Improve code coverage and clarify meaning of hierarchical based on RFC
text.

[Fix GH-1846]

From: Xavier Riley <xavriley@hotmail.com>
------------------------------------------------------------------------
r62881 | nobu | 2018-03-22 01:02:26 +0900 (Thu, 22 Mar 2018) | 7 lines

Improve documentation for 'text '.split

The documentation didn't mention trailing spaces and the
example only demonstrated the case with leading spaces.
[Fix GH-1845]

From: Rodrigo Rosenfeld Rosas <rr.rosas@gmail.com>
------------------------------------------------------------------------
r62879 | svn | 2018-03-22 00:46:16 +0900 (Thu, 22 Mar 2018) | 1 line

* 2018-03-22
------------------------------------------------------------------------
r62878 | nobu | 2018-03-22 00:46:15 +0900 (Thu, 22 Mar 2018) | 6 lines

Remove outdated proc.c binding comment.

Passing a proc as the second argument to eval is no longer supported.
[Fix GH-1843]

From: Tieg Zaharia <tieg.zaharia@gmail.com>
------------------------------------------------------------------------
r62873 | nobu | 2018-03-21 21:40:16 +0900 (Wed, 21 Mar 2018) | 4 lines

parse.y: terminator at continued line

* parse.y (here_document): a continuing line is not the
  terminator.  [ruby-core:86283] [Bug #14621]
------------------------------------------------------------------------
r62872 | nobu | 2018-03-21 19:32:15 +0900 (Wed, 21 Mar 2018) | 5 lines

parse.y: unindent continued line

* parse.y (tokadd_string): stop at continued line in dedented here
  documents, to dedent for each lines before removing escaped
  newlines.  [ruby-core:86236] [Bug #14621]
------------------------------------------------------------------------
r62871 | nobu | 2018-03-21 19:06:23 +0900 (Wed, 21 Mar 2018) | 5 lines

test_iseq.rb: disable load_from_binary

* test/ruby/test_iseq.rb (test_to_binary_with_objects): disable
  load_from_binary right now, r62851 seems having a trouble around
  get_insn_info_succinct_bitvector() yet.
------------------------------------------------------------------------
r62870 | svn | 2018-03-21 11:20:38 +0900 (Wed, 21 Mar 2018) | 1 line

* 2018-03-21
------------------------------------------------------------------------
r62869 | nobu | 2018-03-21 11:20:37 +0900 (Wed, 21 Mar 2018) | 1 line

iseq.c: constfied validate_get_insn_info [ci skip]
------------------------------------------------------------------------
r62861 | nobu | 2018-03-20 22:30:57 +0900 (Tue, 20 Mar 2018) | 1 line

node.c: predicates for special NODEs
------------------------------------------------------------------------
r62857 | shugo | 2018-03-20 18:09:49 +0900 (Tue, 20 Mar 2018) | 6 lines

io.c: Methods of File should not invoke external commands

For security reasons, File.read, File.binread, File.write, File.binwrite,
File.foreach, and File.readlines should not invoke external commands even
if the path starts with the pipe character |.
[ruby-core:84495] [Feature #14245]
------------------------------------------------------------------------
r62856 | nobu | 2018-03-20 17:36:42 +0900 (Tue, 20 Mar 2018) | 8 lines

compile.c: fix ibf_load_code

* compile.c (ibf_load_iseq_each): manage iseq_size to point loaded
  objects in iseq_encoded.  now marking iseq scans iseq_encoded
  directly.

* test/ruby/test_iseq.rb (test_to_binary_with_objects): skip for
  now, but fix argument order of assert_equal.
------------------------------------------------------------------------
r62851 | tenderlove | 2018-03-20 03:21:54 +0900 (Tue, 20 Mar 2018) | 5 lines

Reverting r62775, this should fix i686 builds

We need to mark default values for kwarg methods.  This also fixes
Bootsnap.  IBF iseq loading needed to mark iseqs as "having markable
objects".
------------------------------------------------------------------------
r62844 | svn | 2018-03-20 00:40:33 +0900 (Tue, 20 Mar 2018) | 1 line

* 2018-03-20
------------------------------------------------------------------------
r62843 | usa | 2018-03-20 00:40:32 +0900 (Tue, 20 Mar 2018) | 2 lines

* win32/README.win32: `make up` is only necessary when building from SVN source.

------------------------------------------------------------------------
r62841 | nobu | 2018-03-19 23:12:00 +0900 (Mon, 19 Mar 2018) | 7 lines

parse.y: NUL-terminate ruby_sourcefile

* parse.y (yycompile): in some cases (warning, error, dtrace,...),
  ruby_sourcefile is expected to be NUL-terminated, so ensure it.

* template/prelude.c.tmpl (prelude_name): NUL-terminate to get rid
  of copying static data.
------------------------------------------------------------------------
r62840 | usa | 2018-03-19 22:04:22 +0900 (Mon, 19 Mar 2018) | 5 lines

note that patch is required and need to run make up before make

	* win32/README.win32: patch(1) is required, and running `make up` before
	  `make` is also required.

------------------------------------------------------------------------
r62839 | nobu | 2018-03-19 21:40:34 +0900 (Mon, 19 Mar 2018) | 6 lines

parse.y: push `do` token info

* parse.y (k_rescue, k_ensure): revert r62838.

* parse.y (k_do, k_do_LAMBDA, k_do_block): push token infos of
  `do`.
------------------------------------------------------------------------
r62838 | nobu | 2018-03-19 17:37:12 +0900 (Mon, 19 Mar 2018) | 4 lines

parse.y: ignore do indentations

* parse.y (k_rescue, k_ensure): ignore indentations of `do`, it
  is not at the beginning of line usually.
------------------------------------------------------------------------
r62836 | nobu | 2018-03-19 17:21:26 +0900 (Mon, 19 Mar 2018) | 4 lines

parse.y: mismatched indentations at middle

* parse.y (k_rescue, k_ensure, k_when, k_else, k_elsif): warn
  mismatched indentations at keywords in middle of blocks.
------------------------------------------------------------------------
r62833 | nobu | 2018-03-19 13:08:19 +0900 (Mon, 19 Mar 2018) | 6 lines

compile.c: arg var index

* compile.c (iseq_set_arguments): determine argument variable
  indexes by the order, not by just IDs.  arguments begin with `_`
  can be duplicate, so by-ID index may result in a wrong value.
  [ruby-core:86159] [Bug #14611]
------------------------------------------------------------------------
r62832 | nobu | 2018-03-19 12:16:40 +0900 (Mon, 19 Mar 2018) | 9 lines

parse.y: fix duplicate kwrest

* parse.y (f_kwrest): add the variable name as an argument, as
  well as an internal variable.

* parse.y (new_args_tail): now keyword rest argument variable is
  always placed between keyword arguments and block argument, so
  so just reorder required and optional keyword arguments.  no
  longer kwrest duplicates.
------------------------------------------------------------------------
r62831 | nobu | 2018-03-19 09:32:52 +0900 (Mon, 19 Mar 2018) | 1 line

iseq.c: append local var index to name
------------------------------------------------------------------------
r62830 | svn | 2018-03-19 09:32:52 +0900 (Mon, 19 Mar 2018) | 1 line

* 2018-03-19
------------------------------------------------------------------------
r62829 | nobu | 2018-03-19 09:32:51 +0900 (Mon, 19 Mar 2018) | 1 line

iseq.c: mark kwrest arg
------------------------------------------------------------------------
r62807 | nobu | 2018-03-18 19:41:53 +0900 (Sun, 18 Mar 2018) | 4 lines

compile.c: fix function name [ci skip]

* compile.c (ibf_dump_object_object): fix a probable typo in the
  function name, s/lbf/ibf/.
------------------------------------------------------------------------
r62806 | watson1978 | 2018-03-18 19:28:58 +0900 (Sun, 18 Mar 2018) | 76 lines

Improve CSV performance

If it will not use special variables (like $1, $&, $`...),
it can improve the performance by using Regexp#match? or String#match? instead of Regexp#=~ or String#=~.

This patch is same idea as https://github.com/ruby/ruby/pull/1836

[Fix GH-1842]

## Environment
* OS : Ubuntu 17.10
* Compiler : gcc version 7.2.0
* CPU : Intel(R) Core(TM) i5-3210M CPU @ 2.50GHz
* Memory : 16 GB

## TL;DR
Methods     | Before | After  | Speed up
----------- | ------ | ------ | --------
CSV.foreach | 44.825 | 48.201 | 7.5%
CSV#shift   | 45.200 | 49.584 | 9.7%
CSV.read    | 42.968 | 46.853 | 9.0%
CSV.table   | 10.933 | 11.277 | 3.1%

## Before
```
Calculating -------------------------------------
         CSV.foreach     44.825  ({U+00B1} 0.0%) i/s -    228.000  in   5.086576s
           CSV#shift     45.200  ({U+00B1} 0.0%) i/s -    228.000  in   5.044297s
            CSV.read     42.968  ({U+00B1} 0.0%) i/s -    216.000  in   5.027504s
           CSV.table     10.933  ({U+00B1} 0.0%) i/s -     55.000  in   5.031098s
```

## After
```
Calculating -------------------------------------
         CSV.foreach     48.201  ({U+00B1} 0.0%) i/s -    244.000  in   5.062256s
           CSV#shift     49.584  ({U+00B1} 0.0%) i/s -    248.000  in   5.001652s
            CSV.read     46.853  ({U+00B1} 0.0%) i/s -    236.000  in   5.037044s
           CSV.table     11.277  ({U+00B1} 0.0%) i/s -     57.000  in   5.054694s
```

## Benchmark code
```ruby
require 'csv'
require 'benchmark/ips'

CSV.open("/tmp/file.csv", "w") do |csv|
  csv << ["player", "gameA", "gameB"]
  1000.times do
    csv << ['"Alice"', "84.0", "79.5"]
    csv << ['"Bob"', "20.0", "56.5"]
  end
end

Benchmark.ips do |x|
  x.report "CSV.foreach" do
    CSV.foreach("/tmp/file.csv") do |row|
    end
  end

  x.report "CSV#shift" do
    CSV.open("/tmp/file.csv") do |csv|
      while line = csv.shift
      end
    end
  end

  x.report "CSV.read" do
    CSV.read("/tmp/file.csv")
  end

  x.report "CSV.table" do
    CSV.table("/tmp/file.csv")
  end
end
```
------------------------------------------------------------------------
r62805 | kazu | 2018-03-18 15:54:21 +0900 (Sun, 18 Mar 2018) | 1 line

Remove duplicated `,` [ci skip]
------------------------------------------------------------------------
r62800 | nobu | 2018-03-18 12:40:49 +0900 (Sun, 18 Mar 2018) | 1 line

IBF works only on x86 platforms now
------------------------------------------------------------------------
r62799 | svn | 2018-03-18 00:13:40 +0900 (Sun, 18 Mar 2018) | 1 line

* 2018-03-18
------------------------------------------------------------------------
r62798 | seki | 2018-03-18 00:13:39 +0900 (Sun, 18 Mar 2018) | 2 lines

If host of URI is omitted, make it with IP address. 

------------------------------------------------------------------------
r62796 | nobu | 2018-03-17 20:42:08 +0900 (Sat, 17 Mar 2018) | 4 lines

compile.c: resize to align offsets

* compile.c (ibf_dump_align): resize the dump buffer.
  rb_str_modify_expand expands the buffer but not set the length.
------------------------------------------------------------------------
r62795 | nobu | 2018-03-17 18:41:19 +0900 (Sat, 17 Mar 2018) | 1 line

debugging SEGV on Solaris11s
------------------------------------------------------------------------
r62794 | k0kubun | 2018-03-17 15:41:35 +0900 (Sat, 17 Mar 2018) | 11 lines

Remove unused variables

This fixes following warning:

```
test/logger/test_logger.rb:329: warning: assigned but unused variable - read_read
```

[Fix GH-1840]

From: yuuji.yaginuma <yuuji.yaginuma@gmail.com>
------------------------------------------------------------------------
r62793 | k0kubun | 2018-03-17 15:39:18 +0900 (Sat, 17 Mar 2018) | 7 lines

Add doc for `opt` parameter of IO#reopen [ci skip]

It can be specified from 2.0. Ref: https://bugs.ruby-lang.org/issues/7103

[Fix GH-1841]

From: yuuji.yaginuma <yuuji.yaginuma@gmail.com>
------------------------------------------------------------------------
r62792 | k0kubun | 2018-03-17 15:33:28 +0900 (Sat, 17 Mar 2018) | 3 lines

test_jit.rb: debug cc1 availability

ENV didn't have any useful information.
------------------------------------------------------------------------
r62791 | nobu | 2018-03-17 13:46:26 +0900 (Sat, 17 Mar 2018) | 7 lines

compile.c: align offsets

* compile.c (ibf_dump_align): expand the buffer for alignment.

* compile.c (ibf_dump_iseq_list, ibf_dump_object_list): align as
  ibf_offset_t.  not all processors do not allow unaligned word,
  or larger, access.
------------------------------------------------------------------------
r62790 | nobu | 2018-03-17 13:13:26 +0900 (Sat, 17 Mar 2018) | 4 lines

string.c: [DOC] split with block [ci skip]

* string.c (rb_str_split_m): [DOC] about split with block.
  [Feature #4780]
------------------------------------------------------------------------
r62789 | k0kubun | 2018-03-17 11:37:51 +0900 (Sat, 17 Mar 2018) | 5 lines

misc/ruby-style.el: use spaces for indentation

instead of hard tabs.

[Bug #14246]
------------------------------------------------------------------------
r62788 | nobu | 2018-03-17 11:18:46 +0900 (Sat, 17 Mar 2018) | 5 lines

transform_mjit_header.rb: read output and errors

* tool/transform_mjit_header.rb (MJITHeader.check_code): read
  output and errors than discarding errors.  also cl.exe prints
  the source file name which is a garbage at this time.
------------------------------------------------------------------------
r62787 | nobu | 2018-03-17 11:11:06 +0900 (Sat, 17 Mar 2018) | 1 line

debugging SEGV on Solaris11s
------------------------------------------------------------------------
r62786 | svn | 2018-03-17 11:00:31 +0900 (Sat, 17 Mar 2018) | 1 line

* 2018-03-17
------------------------------------------------------------------------
r62785 | k0kubun | 2018-03-17 11:00:30 +0900 (Sat, 17 Mar 2018) | 9 lines

mjit.c: add timeout for --jit-wait

Sometimes test hangs in `mjit_get_iseq_func` like this:
http://ci.rvm.jp/results/trunk-test@ruby-sky3/659391

It seems that a process waiting in `mjit_get_iseq_func` does no longer
have MJIT worker thread. We don't wait for JIT finish forever. So I
added timeout for the case. I'm not sure why there was no MJIT worker
thread in ruby-sky3 test process though.
------------------------------------------------------------------------
r62781 | nobu | 2018-03-16 23:12:39 +0900 (Fri, 16 Mar 2018) | 1 line

test_weakmap.rb: skip unstable assertion
------------------------------------------------------------------------
r62780 | kazu | 2018-03-16 23:09:40 +0900 (Fri, 16 Mar 2018) | 4 lines

sample/timeout.rb: fix warnings

warning: Object#timeout is deprecated, use Timeout.timeout instead.
[ci skip]
------------------------------------------------------------------------
r62779 | nobu | 2018-03-16 22:37:44 +0900 (Fri, 16 Mar 2018) | 7 lines

re.c: do not escape terminator in Regexp.union

* re.c (rb_reg_str_with_term): change terminator.

* re.c (rb_reg_s_union): terminator in source string does not need
  to be escaped.  terminators are outside of regexp source itself.
  [ruby-core:86149] [Bug #14608]
------------------------------------------------------------------------
r62778 | nobu | 2018-03-16 22:29:27 +0900 (Fri, 16 Mar 2018) | 1 line

debugging SEGV on Solaris11s
------------------------------------------------------------------------
r62777 | nobu | 2018-03-16 21:22:33 +0900 (Fri, 16 Mar 2018) | 1 line

debugging SEGV on Solaris11s
------------------------------------------------------------------------
r62776 | nobu | 2018-03-16 21:06:55 +0900 (Fri, 16 Mar 2018) | 4 lines

test_iseq.rb: skip iseq with coverage

* test/ruby/test_iseq.rb (test_to_binary_with_objects): #to_binary
  does not support iseq compiled with coverage, just skip.
------------------------------------------------------------------------
r62775 | naruse | 2018-03-16 16:59:10 +0900 (Fri, 16 Mar 2018) | 7 lines

Revert "Add direct marking on iseq operands"

This reverts commit r62706.

It causes SEGV on i686-linux (debian) and armv7l-linux-eabihf:
http://www.rubyist.net/~akr/chkbuild/debian/ruby-trunk/log/20180309T204300Z.diff.html.gz
http://rubyci.s3.amazonaws.com/scw-9d6766/ruby-trunk/log/20180309T211706Z.diff.html.gz
------------------------------------------------------------------------
r62774 | naruse | 2018-03-16 16:59:09 +0900 (Fri, 16 Mar 2018) | 3 lines

Revert "Fix error: implicit conversion loses integer precision"

This reverts commit r62708.
------------------------------------------------------------------------
r62773 | naruse | 2018-03-16 16:59:08 +0900 (Fri, 16 Mar 2018) | 3 lines

Revert "Fix warning: cast from pointer to integer of different size"

This reverts commit r62709.
------------------------------------------------------------------------
r62772 | nobu | 2018-03-16 11:27:50 +0900 (Fri, 16 Mar 2018) | 6 lines

compile.c: fix load_from_binary

* compile.c (ibf_load_iseq_each): realpath may be nil.  follow up
  r59709.  [fix https://github.com/Shopify/bootsnap/issues/132]

From: nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>
------------------------------------------------------------------------
r62771 | nobu | 2018-03-16 11:07:43 +0900 (Fri, 16 Mar 2018) | 4 lines

gmake.mk: expand MJIT header rules

* defs/gmake.mk: expand MJIT header file rules for each
  architectures.
------------------------------------------------------------------------
r62770 | nobu | 2018-03-16 10:48:02 +0900 (Fri, 16 Mar 2018) | 5 lines

configure.ac: DLDFLAGS without arch flags

* configure.ac (DLDFLAGS): copy LDFLAGS before adding arch flags.
  multiple arch flags on universal binary make mjit_header.h
  failed.
------------------------------------------------------------------------
r62769 | naruse | 2018-03-16 01:51:34 +0900 (Fri, 16 Mar 2018) | 4 lines

Revert r62617 "compile.c: fix load_from_binary"

It breaks Solaris:
http://rubyci.s3.amazonaws.com/unstable11s/ruby-trunk/log/20180301T012502Z.diff.html.gz
------------------------------------------------------------------------
r62768 | svn | 2018-03-16 01:51:32 +0900 (Fri, 16 Mar 2018) | 1 line

* properties.
------------------------------------------------------------------------
r62767 | naruse | 2018-03-16 01:51:31 +0900 (Fri, 16 Mar 2018) | 8 lines

Introduce URI::File to handle file URI scheme

* the default value of URI::File's authority is "" (localhost).
  Both nil and "localhost" is normalized to "" by default.
* URI::File ignores setting userinfo and port
[Feature #14035]
fix https://github.com/ruby/ruby/pull/1719
fic https://github.com/ruby/ruby/pull/1832
------------------------------------------------------------------------
r62766 | svn | 2018-03-16 00:20:08 +0900 (Fri, 16 Mar 2018) | 1 line

* 2018-03-16
------------------------------------------------------------------------
r62765 | nobu | 2018-03-16 00:20:08 +0900 (Fri, 16 Mar 2018) | 5 lines

configure.ac: fix rb_cv_gcc_compiler_cas

* configure.ac (rb_cv_gcc_compiler_cas): do not use one variable
  for multiple AC_CACHE_CHECK.  in one check, select by different
  values.
------------------------------------------------------------------------
r62764 | mrkn | 2018-03-15 21:01:08 +0900 (Thu, 15 Mar 2018) | 1 line

NEWS: add descriptions of [Feature #12732]
------------------------------------------------------------------------
r62763 | nobu | 2018-03-15 20:08:04 +0900 (Thu, 15 Mar 2018) | 4 lines

string.c: split with block

* string.c (rb_str_split_m): yield each split substrings if the
  block is given, instead of returing the array.  [Feature #4780]
------------------------------------------------------------------------
r62762 | nobu | 2018-03-15 18:58:50 +0900 (Thu, 15 Mar 2018) | 1 line

test_array.rb (test_slice!): moved misplaced test
------------------------------------------------------------------------
r62760 | mrkn | 2018-03-15 16:19:48 +0900 (Thu, 15 Mar 2018) | 7 lines

Add `exception:` keyword in Kernel#Complex()

Support `exception:` keyword argument in `Kernel#Complex()`.
If `exception:` is `false`, `Kernel#Complex()` returns `nil` if the given
value cannot be interpreted as a complex value.
The default value of `exception:` is `true`.
This is part of [Feature #12732].
------------------------------------------------------------------------
r62759 | mrkn | 2018-03-15 16:19:46 +0900 (Thu, 15 Mar 2018) | 7 lines

Add `exception:` keyword in Kernel#Rational()

Support `exception:` keyword argument in `Kernel#Rational()`.
If `exception:` is `false`, `Kernel#Rational()` returns `nil` if the given
value cannot be interpreted as a rational value.
The default value of `exception:` is `true`.
This is part of [Feature #12732].
------------------------------------------------------------------------
r62758 | mrkn | 2018-03-15 16:19:45 +0900 (Thu, 15 Mar 2018) | 7 lines

Add `exception:` keyword in Kernel#Float()

Support `exception:` keyword argument in `Kernel#Float()`.
If `exception:` is `false`, `Kernel#Float()` returns `nil` if the given
value cannot be interpreted as a float value.
The default value of `exception:` is `true`.
This is part of [Feature #12732].
------------------------------------------------------------------------
r62757 | mrkn | 2018-03-15 16:19:43 +0900 (Thu, 15 Mar 2018) | 7 lines

Add `exception:` keyword in Kernel#Integer()

Support `exception:` keyword argument in Kernel#Integer().
If `exception:` is `false`, `Kernel#Integer()` returns `nil` if the given
value cannot be interpreted as an integer value.
The default value of `exception:` is `true`.
This is part of [Feature #12732].
------------------------------------------------------------------------
r62756 | nobu | 2018-03-15 16:15:26 +0900 (Thu, 15 Mar 2018) | 1 line

variable.c: hoisted out overtaken cvar warnings
------------------------------------------------------------------------
r62755 | nobu | 2018-03-15 15:29:04 +0900 (Thu, 15 Mar 2018) | 4 lines

enumerator.c: pretty kwags

* enumerator.c (append_method): pretty format for keyword
  arguments.
------------------------------------------------------------------------
r62754 | ko1 | 2018-03-15 12:55:33 +0900 (Thu, 15 Mar 2018) | 9 lines

use SIGUSR2 to debug.

* test/ruby/test_io.rb: use SIGUSR2 instead of SIGUSR1 to confirm
  unknown SIGUSR1 exception. On parallel testing, sometime
  (1 per some days) SIGUSR1 exception. This fix will make clear which
  signal is a suspect.

  http://ci.rvm.jp/results/trunk-test@ruby-sky3/643893

------------------------------------------------------------------------
r62753 | nobu | 2018-03-15 10:05:00 +0900 (Thu, 15 Mar 2018) | 1 line

win32/configure.bat: stop when setup failed
------------------------------------------------------------------------
r62752 | nobu | 2018-03-15 09:12:17 +0900 (Thu, 15 Mar 2018) | 4 lines

vm.c: refined error message

* vm.c (kw_check_symbol): refined the error message for non-symbol
  key.  [Feature #14603]
------------------------------------------------------------------------
r62751 | svn | 2018-03-15 08:27:11 +0900 (Thu, 15 Mar 2018) | 1 line

* 2018-03-15
------------------------------------------------------------------------
r62750 | tenderlove | 2018-03-15 08:27:10 +0900 (Thu, 15 Mar 2018) | 9 lines

Unconditionally define `TRACE_INSN_P`

`TRACE_INSN_P` doesn't need to know about encoded iseqs, it just needs
to look at decoded iseqs.  We have the decoded iseqs available, so no
reason to look at encoded ones.  This change allows us to clear
`original_iseq` from the iseq struct without any segvs (previously,
clearing `original_iseq` would cause the tests to crash).

* iseq.c (rb_iseq_trace_set): Only use decoded iseq with `TRACE_INSN_P`
------------------------------------------------------------------------
r62749 | nobu | 2018-03-14 23:07:00 +0900 (Wed, 14 Mar 2018) | 4 lines

configure.ac: basic libs

* configure.ac: basic libraries like -lm are necessary for some
  extension libraries on some platforms.
------------------------------------------------------------------------
r62748 | nobu | 2018-03-14 20:55:07 +0900 (Wed, 14 Mar 2018) | 4 lines

test_weakmap.rb: fixing CI failures

* test/ruby/test_weakmap.rb (test_include?): create and release
  the object to be garbage-collected in deeper frame.
------------------------------------------------------------------------
r62747 | nobu | 2018-03-14 11:35:51 +0900 (Wed, 14 Mar 2018) | 5 lines

quote symbols

* sprintf.c (ruby__sfvextra): quote symbols as identifiers.

* string.c (rb_id_quote_unprintable): ditto.
------------------------------------------------------------------------
r62746 | svn | 2018-03-14 00:11:00 +0900 (Wed, 14 Mar 2018) | 1 line

* 2018-03-14
------------------------------------------------------------------------
r62745 | kazu | 2018-03-14 00:10:59 +0900 (Wed, 14 Mar 2018) | 1 line

Fix typos [ci skip]
------------------------------------------------------------------------
r62744 | k0kubun | 2018-03-13 22:03:12 +0900 (Tue, 13 Mar 2018) | 1 line

test/ripper/test_lexer.rb: add test for r62743
------------------------------------------------------------------------
r62743 | k0kubun | 2018-03-13 21:56:04 +0900 (Tue, 13 Mar 2018) | 26 lines

Fix FrozenError on `Ripper.slice`

Currently `Ripper.slice` raises a FrozenError

```ruby
require 'ripper'
p Ripper.slice('foo', 'ident')
```

```
/path/to/g/lib/ruby/2.6.0/ripper/lexer.rb:193:in `concat': can't modify frozen String (FrozenError)
	from /path/to/g/lib/ruby/2.6.0/ripper/lexer.rb:193:in `block in compile'
	from /path/to/g/lib/ruby/2.6.0/ripper/lexer.rb:190:in `scan'
	from /path/to/g/lib/ruby/2.6.0/ripper/lexer.rb:190:in `compile'
	from /path/to/g/lib/ruby/2.6.0/ripper/lexer.rb:169:in `initialize'
	from /path/to/g/lib/ruby/2.6.0/ripper/lexer.rb:151:in `new'
	from /path/to/g/lib/ruby/2.6.0/ripper/lexer.rb:151:in `token_match'
	from /path/to/g/lib/ruby/2.6.0/ripper/lexer.rb:144:in `slice'
	from /tmp/tmp.kb4cnhvum2/test.rb:2:in `<main>'
```

This patch will fix the problem.

[Fix GH-1837]

From: Masataka Pocke Kuwabara <kuwabara@pocke.me>
------------------------------------------------------------------------
r62742 | k0kubun | 2018-03-13 21:32:31 +0900 (Tue, 13 Mar 2018) | 3 lines

mjit_compile.c: remove unintended definition

Actually r62741 defined the macro... It wasn't intentional.
------------------------------------------------------------------------
r62741 | k0kubun | 2018-03-13 21:29:55 +0900 (Tue, 13 Mar 2018) | 7 lines

mjit_compile.c: disable comment_id by default

Doing `rb_ary_aref` to `global_symbols.ids` is not thread-safe and
randomly causes SEGV.
https://gist.github.com/k0kubun/ab60727c6be7c0e777d2b4241f59173c

But it's convenient for development. So I keep it optionally available.
------------------------------------------------------------------------
r62740 | watson1978 | 2018-03-13 18:15:10 +0900 (Tue, 13 Mar 2018) | 109 lines

Improve Pathname performance

If it will not use special variables (like $1, $&, $`...),
it can improve the performance by using Regexp#match? instead of Regexp#=~.
Because Regexp#=~ will generate the objects to special variables by pattern matching.

This patch will replace Regexp#=~ without special variables to Regexp#match?.
(Excludes https://github.com/ruby/ruby/blob/trunk/ext/pathname/lib/pathname.rb#L144-L153)

[Fix GH-1836] [ruby-core:86093] [Bug #14599]

## Environment
* OS : Ubuntu 17.10
* Compiler : gcc version 7.2.0
* CPU : Intel(R) Core(TM) i5-3210M CPU @ 2.50GHz
* Memory : 16 GB

## TL;DR
                            | Before | After  | Speed up
--------------------------- | ------ | ------ | --------
Pathname#absolute?          | 142836 | 198487 | 39.0%
Pathname#cleanpath          |  60706 |  79415 | 30.8%
Pathname#root?              | 603806 | 759157 | 25.7%
Pathname#absolute?          | 142592 | 197859 | 38.8%
Pathname#each_filename      | 115600 | 152982 | 32.3%
Pathname#ascend             |  50494 |  63606 | 26.0%
Pathname#+                  | 100550 | 130372 | 29.7%
Pathname#join               |  46673 |  60994 | 30.7%
Pathname#relative_path_from |  28362 |  37494 | 32.2%

## Before
```
Calculating -------------------------------------
  Pathname#absolute?    142.836k ({U+00B1} 0.1%) i/s -    722.304k in   5.056884s
  Pathname#cleanpath     60.706k ({U+00B1} 0.1%) i/s -    306.764k in   5.053305s
      Pathname#root?    603.806k ({U+00B1} 0.3%) i/s -      3.062M in   5.071696s
  Pathname#absolute?    142.592k ({U+00B1} 0.1%) i/s -    720.846k in   5.055301s
Pathname#each_filename
                        115.600k ({U+00B1} 0.1%) i/s -    586.818k in   5.076292s
     Pathname#ascend     50.494k ({U+00B1} 0.1%) i/s -    255.301k in   5.056049s
          Pathname#+    100.550k ({U+00B1} 0.1%) i/s -    509.630k in   5.068433s
       Pathname#join     46.673k ({U+00B1} 0.1%) i/s -    236.433k in   5.065696s
Pathname#relative_path_from
                         28.362k ({U+00B1} 0.0%) i/s -    143.728k in   5.067640s
```

## After
```
Calculating -------------------------------------
  Pathname#absolute?    198.487k ({U+00B1} 0.1%) i/s -    995.665k in   5.016272s
  Pathname#cleanpath     79.415k ({U+00B1} 0.1%) i/s -    404.406k in   5.092344s
      Pathname#root?    759.157k ({U+00B1} 0.0%) i/s -      3.800M in   5.005072s
  Pathname#absolute?    197.859k ({U+00B1} 0.1%) i/s -    995.720k in   5.032494s
Pathname#each_filename
                        152.982k ({U+00B1} 0.1%) i/s -    775.555k in   5.069607s
     Pathname#ascend     63.606k ({U+00B1} 0.0%) i/s -    320.862k in   5.044560s
          Pathname#+    130.372k ({U+00B1} 0.1%) i/s -    660.856k in   5.068991s
       Pathname#join     60.994k ({U+00B1} 0.1%) i/s -    305.068k in   5.001626s
Pathname#relative_path_from
                         37.494k ({U+00B1} 0.4%) i/s -    189.124k in   5.044146s
```

## Benchmark code
```ruby
require 'pathname'
require 'benchmark/ips'

Benchmark.ips do |x|
  root  = Pathname.new('/')
  path1 = Pathname.new('/path/to/some/file1.rb')
  path2 = Pathname.new('/path/to/some/file2.rb')

  x.report("Pathname#absolute?") do
    path1.absolute?
  end

  x.report("Pathname#cleanpath") do
    Pathname.new('/path/to/some/file.rb').cleanpath
  end

  x.report("Pathname#root?") do
    path1.root?
  end

  x.report("Pathname#absolute?") do
    path1.absolute?
  end

  x.report("Pathname#each_filename") do
    path1.each_filename { |file| }
  end

  x.report("Pathname#ascend") do
    path1.ascend { |path| }
  end

  x.report("Pathname#+") do
    path1 + path2
  end

  x.report("Pathname#join") do
    path1.join("../file3.rb")
  end

  x.report("Pathname#relative_path_from") do
    path1.relative_path_from(root)
  end
end
```
------------------------------------------------------------------------
r62739 | mame | 2018-03-13 17:18:03 +0900 (Tue, 13 Mar 2018) | 6 lines

Add FileUtils#cp_lr

* lib/fileutils.rb: Add FileUtils#cp_lr.  This method creates hard links
  of each file from directory to another directory recursively.
  This patch is based on Thomas Sawyers and Zachary Scott.
  [Feature #4189] [ruby-core:33820]
------------------------------------------------------------------------
r62738 | nobu | 2018-03-13 15:29:02 +0900 (Tue, 13 Mar 2018) | 5 lines

Rename test classes to allow stable test count when running test-all -j

[Fix GH-1763]

From: MSP-Greg <MSP-Greg@users.noreply.github.com>
------------------------------------------------------------------------
r62737 | nobu | 2018-03-13 12:48:56 +0900 (Tue, 13 Mar 2018) | 4 lines

eval_error.c: reset attributes

* eval_error.c (print_errinfo): reset all attributes for each
  lines before newlines.
------------------------------------------------------------------------
r62736 | nobu | 2018-03-13 12:40:10 +0900 (Tue, 13 Mar 2018) | 4 lines

eval_error.c: last newline

* eval_error.c (print_errinfo): do not print an empty line at the
  end when the message ends with a newline.
------------------------------------------------------------------------
r62735 | nobu | 2018-03-13 11:43:04 +0900 (Tue, 13 Mar 2018) | 5 lines

test_enumerator.rb: duplicate assertions

* test/ruby/test_enumerator.rb (test_uniq): remove assertions
  which ared duplicate of lazy enumerator tests in
  test_lazy_enumerator.rb.
------------------------------------------------------------------------
r62734 | nobu | 2018-03-13 11:00:42 +0900 (Tue, 13 Mar 2018) | 5 lines

Add missing class FrozenError to Exception subclasses list documentation

[Fix GH-1818]

From: Miguel Landaeta <miguel@miguel.cc>
------------------------------------------------------------------------
r62733 | nobu | 2018-03-13 10:28:28 +0900 (Tue, 13 Mar 2018) | 1 line

Hash instead of Set
------------------------------------------------------------------------
r62732 | nobu | 2018-03-13 10:28:27 +0900 (Tue, 13 Mar 2018) | 8 lines

Speed up func1.func2 completion by using Set for ignored modules

And thus avoiding Module#name calls. Those are slow, especially in
larger projects, with lots of anonymous modules.

[Fix GH-1798]

From: Dmitry Gutov <dgutov@yandex.ru>
------------------------------------------------------------------------
r62731 | nobu | 2018-03-13 10:00:08 +0900 (Tue, 13 Mar 2018) | 19 lines

Bug Fix Enumerator::Lazy#uniq state for multiple call

* enumerator.c (lazy_uniq_i): create new hash for each calls.
  [Fix GH-1820]

Currently

	2.5.0-preview1 :001 > arr = (0..100).lazy.uniq{|i| i % 10}
	 => #<Enumerator::Lazy: #<Enumerator::Lazy: 0..100>:uniq>
	2.5.0-preview1 :002 > arr.to_a
	 => [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
	2.5.0-preview1 :003 > arr.to_a
	 => []

Expected

arr.to_a to always return same output

From: Anmol Chopra <anmolchopra@rocketbox.in>
------------------------------------------------------------------------
r62730 | svn | 2018-03-13 00:19:38 +0900 (Tue, 13 Mar 2018) | 1 line

* 2018-03-13
------------------------------------------------------------------------
r62729 | nobu | 2018-03-13 00:19:37 +0900 (Tue, 13 Mar 2018) | 4 lines

assertions.rb: parentheses

* test/lib/test/unit/assertions.rb (assert_not_all): fix missing
  parentheses.
------------------------------------------------------------------------
r62728 | nobu | 2018-03-12 22:04:28 +0900 (Mon, 12 Mar 2018) | 4 lines

eval_error.c: fix underflow

* eval_error.c (print_errinfo): get rid of negative string length.
  [ruby-core:86086] [Bug #14598]
------------------------------------------------------------------------
r62727 | nobu | 2018-03-12 16:55:17 +0900 (Mon, 12 Mar 2018) | 6 lines

ripper: fix escaped space

* parse.y: use tSP same as ripper instead of tSPACE.
  [ruby-core:86080] [Bug #14597]

* ext/ripper/eventids2.c: tSP is defined in ripper.c now.
------------------------------------------------------------------------
r62726 | svn | 2018-03-12 15:54:44 +0900 (Mon, 12 Mar 2018) | 1 line

* 2018-03-12
------------------------------------------------------------------------
r62725 | nobu | 2018-03-12 15:54:43 +0900 (Mon, 12 Mar 2018) | 7 lines

Fix setting method visibility on method wrapped with prepend

Ignore prepended modules when looking for already defined methods on a
class to set the visibility on.
[Fix GH-1834]

From: Dylan Thacker-Smith <Dylan.Smith@shopify.com>
------------------------------------------------------------------------
r62724 | nobu | 2018-03-11 21:19:08 +0900 (Sun, 11 Mar 2018) | 8 lines

parse.y: fix interpolated string literal dedent

* parse.y (heredoc_dedent): fix interpolated string literal dedent,
  remove indentations from only nodes with the newline flag.
  [ruby-core:85983] [Bug #14584]

* parse.y (here_document): set the newline flag on literal string
  nodes starting at the beginning of line.
------------------------------------------------------------------------
r62723 | nobu | 2018-03-11 21:12:08 +0900 (Sun, 11 Mar 2018) | 1 line

parse.y: reduce duplicate code
------------------------------------------------------------------------
r62722 | k0kubun | 2018-03-11 18:47:28 +0900 (Sun, 11 Mar 2018) | 5 lines

test_jit.rb: show debugging output on stderr

instead of stdout.

We would not capture the output as test results.
------------------------------------------------------------------------
r62721 | k0kubun | 2018-03-11 18:36:08 +0900 (Sun, 11 Mar 2018) | 1 line

test_jit.rb: fix typo
------------------------------------------------------------------------
r62720 | k0kubun | 2018-03-11 18:32:48 +0900 (Sun, 11 Mar 2018) | 8 lines

test_jit.rb: add debugging output

Sometimes gcc fails to exec cc1 like this:
https://gist.github.com/ko1/c3db8b193e9cc65c39c541e10d957509

I'm not sure why it happens at all. Please let me add this debugging
output to inspect the random failure on CI for now.
I'll remove this after we confirm it's not helpful.
------------------------------------------------------------------------
r62719 | svn | 2018-03-11 09:05:14 +0900 (Sun, 11 Mar 2018) | 1 line

* 2018-03-11
------------------------------------------------------------------------
r62718 | nobu | 2018-03-11 09:05:12 +0900 (Sun, 11 Mar 2018) | 5 lines

re.c: fixed escaped multibyte char

* re.c (unescape_nonascii): escaped multibyte character should be
  copied as-is, just with checking if the encoding matches.
  https://twitter.com/sakuro/status/972014409986883584
------------------------------------------------------------------------
r62717 | k0kubun | 2018-03-10 23:52:12 +0900 (Sat, 10 Mar 2018) | 33 lines

compile.c: mark all ISeq ancestors as catch_except_p

This change assumes that continuously reading `parent_iseq` from block
ISeq would reach non-block ISeq finally.

test/ruby/test_jit.rb: add test that catches 2-depth exception

Combination of r62654 and r62678 caused following error in this test.

-e:12:in `wrapper': Stack consistency error (sp: 14, bp: 13) (fatal)
== disasm: #<ISeq:wrapper@-e:10 (10,0)-(12,3)> (catch: FALSE)===========
local table (size: 2, argc: 2 [opts: 0, rest: -1, post: 0, block: -1, kw: -1@-1, kwrest: -1])
[ 2] paths<Arg> [ 1] prefixes<Arg>
0000 putself                                                          (  11)[LiCa]
0001 getlocal_WC_0    paths
0003 getlocal_WC_0    prefixes
0005 opt_send_without_block <callinfo!mid:catch_true, argc:2, FCALL|ARGS_SIMPLE>, <callcache>
0008 leave                                                            (  12)[Re]

As you can see, it says `catch: FALSE`, but obviously it catches
exception raised from `return path`.

As of r62655, it was kind of intentional because I only cared about
expiration of JIT-ed frame and I've thought calling `vm_exec` is only
needed once for it. So r62654 was NOT actually checking if it may catch
exception.

But for r62678, obviously we should set catch_except_p=TRUE for all
ISeqs which may catch exception. Otherwise catch table lookup would
fail.

With this bugfix, code generated by r62655 might be worse, but at least
while loop can be marked as `catch: FALSE` as expected.
------------------------------------------------------------------------
r62716 | nobu | 2018-03-10 20:26:54 +0900 (Sat, 10 Mar 2018) | 1 line

signal.c: refine error messages
------------------------------------------------------------------------
r62715 | nobu | 2018-03-10 19:36:35 +0900 (Sat, 10 Mar 2018) | 4 lines

signal.c: check NUL bytes

* signal.c (trap_signm): check NUL bytes explicitly before raising
  "unsupported signal" ArgumentError.
------------------------------------------------------------------------
r62714 | k0kubun | 2018-03-10 16:05:32 +0900 (Sat, 10 Mar 2018) | 8 lines

mjit.c: keep mutex unlocked on destroy

`mjit_finish` may destroy mutex even while it's still locked by
`worker` by race condition. That would result in the following error:
[BUG] pthread_mutex_destroy: Device or resource busy (EBUSY)

Actually I couldn't get a core dump for it and reproduce it multiple
times. So I'm not sure this fixes the issue which I faced or not.
------------------------------------------------------------------------
r62713 | suke | 2018-03-10 15:46:01 +0900 (Sat, 10 Mar 2018) | 1 line

ext/win32ole/win32ole.c: fix typo. [ci skip]
------------------------------------------------------------------------
r62710 | suke | 2018-03-10 11:16:30 +0900 (Sat, 10 Mar 2018) | 1 line

* ext/win32ole/win32ole.c: fix url of ActiveState. Thanks to Kazuhiro Nishiyama. [ci skip]
------------------------------------------------------------------------
r62709 | kazu | 2018-03-10 09:34:24 +0900 (Sat, 10 Mar 2018) | 8 lines

Fix warning: cast from pointer to integer of different size

```
.../ruby/iseq.c: In function 'rb_vm_insn_null_translator':
.../ruby/iseq.c:137:12: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast]
     return (int)addr;
            ^
```
------------------------------------------------------------------------
r62708 | kazu | 2018-03-10 09:33:11 +0900 (Sat, 10 Mar 2018) | 8 lines

Fix error: implicit conversion loses integer precision

http://ci.rvm.jp/results/trunk_clang_50@silicon-docker/627906
```
iseq.h:41:36: error: implicit conversion loses integer precision: 'rb_num_t' (aka 'unsigned long') to 'int' [-Werror,-Wshorten-64-to-32]
    int cnt = iseq->body->variable.flip_count;
        ~~~   ~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~
```
------------------------------------------------------------------------
r62707 | svn | 2018-03-10 05:11:46 +0900 (Sat, 10 Mar 2018) | 1 line

* 2018-03-10
------------------------------------------------------------------------
r62706 | tenderlove | 2018-03-10 05:11:45 +0900 (Sat, 10 Mar 2018) | 35 lines

Add direct marking on iseq operands

Directly marking iseq operands allows us to eliminate the "mark array"
stored on ISEQ objects, which will reduce the amount of memory ISEQ
objects consume.  This patch changes the iseq mark function to:

* Directly marks ISEQ operands
* Iterate over and mark child ISEQs

It also introduces two flags on the ISEQ object.  In order to mark
instruction operands, we have to disassemble the instructions and find
the instruction parameters and types.  Instructions may also be
translated to jump addresses.  Instruction sequences may get marked by
the GC *while* they're mid flight (being compiled).  The
`ISEQ_TRANSLATED` flag is used to indicate whether or not the
instructions have been translated to jump addresses so that when we
decode the instructions we know whether or not we need to go from jump
location back to original instruction or not.

Not all ISEQ objects have any markable objects embedded in their
instructions.  We can detect whether or not an ISEQ has markable objects
in the instructions at compile time.  If the instructions contain
markable objects, we set a flag `ISEQ_MARKABLE_ISEQ` on the ISEQ object.
This means that during the mark phase, we can skip decompilation if the
flag is *not* set.  In other words, we can avoid decompilation of we
know in advance there is nothing to mark.

`once` instructions have an operand that contains the result of a
one-time compilation of a regex.  Before this patch, that operand was
called an "inline cache", even though the struct was actually an "inline
storage".  This patch changes the operand to be an "inline storage" so
that we can differentiate between caches that need marking (the inline
storage) and caches that don't need marking (inline cache).

[ruby-core:84909]
------------------------------------------------------------------------
r62705 | nobu | 2018-03-09 13:24:48 +0900 (Fri, 09 Mar 2018) | 7 lines

configure.ac: --disable-mathn option

* Makefile.in, win32/Makefile.sub: move CANONICALIZATION_FOR_MATHN
  from config.h which affects all extension libraries to XCFLAGS
  for the core only.

* configure.ac: added --disable-mathn option.
------------------------------------------------------------------------
r62704 | nobu | 2018-03-09 12:57:34 +0900 (Fri, 09 Mar 2018) | 4 lines

math.c: calling order

* math.c (math_log, rb_math_log): inverted calling order, to
  remove unused argument.
------------------------------------------------------------------------
r62703 | nobu | 2018-03-09 12:51:04 +0900 (Fri, 09 Mar 2018) | 1 line

Removed useless assertions [ci skip]
------------------------------------------------------------------------
r62702 | nobu | 2018-03-09 12:02:08 +0900 (Fri, 09 Mar 2018) | 3 lines

rational.c: removed redundant conditions

Fixnums can be compared by object values themselves only.
------------------------------------------------------------------------
r62701 | nobu | 2018-03-09 11:06:39 +0900 (Fri, 09 Mar 2018) | 5 lines

complex.c: removed redundant conditions

Fixnums can be compared by object values themselves only.
Addition/subtraction/mulplication of fixnum 0 do not affect the
sign.
------------------------------------------------------------------------
r62700 | nobu | 2018-03-09 10:51:25 +0900 (Fri, 09 Mar 2018) | 1 line

complex.c: removed already unused macros
------------------------------------------------------------------------
r62699 | svn | 2018-03-09 01:07:55 +0900 (Fri, 09 Mar 2018) | 1 line

* 2018-03-09
------------------------------------------------------------------------
r62698 | naruse | 2018-03-09 01:07:54 +0900 (Fri, 09 Mar 2018) | 4 lines

Raise ArgumentError if host component is nil

From: oss92 <mohamed.o.alnagdy@gmail.com>
fix https://github.com/ruby/ruby/pull/1278
------------------------------------------------------------------------
r62697 | kazu | 2018-03-08 22:00:04 +0900 (Thu, 08 Mar 2018) | 1 line

Fix a typo [ci skip]
------------------------------------------------------------------------
r62696 | svn | 2018-03-08 18:38:02 +0900 (Thu, 08 Mar 2018) | 1 line

* 2018-03-08
------------------------------------------------------------------------
r62695 | naruse | 2018-03-08 18:38:01 +0900 (Thu, 08 Mar 2018) | 5 lines

fix error if the input is mixed Unicode and percent-escapes

Reported by kivikakk (Ashe Connor) with tests and doc fix
Patch based on mame and fix by naruse
[Bug #14586]
------------------------------------------------------------------------
r62693 | k0kubun | 2018-03-07 23:35:28 +0900 (Wed, 07 Mar 2018) | 15 lines

transform_mjit_header.rb: inline ivar operations

* Optcarrot

before,--jit: ruby 2.6.0dev (2018-03-07 trunk 62689) +JIT [x86_64-linux]
after,--jit: ruby 2.6.0dev (2018-03-07 trunk 62689) +JIT [x86_64-linux]
last_commit=transform_mjit_header.rb: inline ivar operations
Calculating -------------------------------------
                     before,--jit  after,--jit
           optcarrot       67.852       69.359 fps

Comparison:
                        optcarrot
         after,--jit:        69.4 fps
        before,--jit:        67.9 fps - 1.02x  slower
------------------------------------------------------------------------
r62689 | nobu | 2018-03-07 21:04:43 +0900 (Wed, 07 Mar 2018) | 4 lines

complex.c: check type

* complex.c (m_cos, m_sin): determine the type by the internal
  type, not by a method.
------------------------------------------------------------------------
r62688 | nobu | 2018-03-07 20:54:07 +0900 (Wed, 07 Mar 2018) | 4 lines

complex.c: check type

* complex.c (nucomp_s_canonicalize_internal): determine the type
  by the internal type, not by a method.
------------------------------------------------------------------------
r62687 | nobu | 2018-03-07 20:49:24 +0900 (Wed, 07 Mar 2018) | 3 lines

complex.c, rational.c: no backref

Since r37702, parsing complex and rational do not use regexp.
------------------------------------------------------------------------
r62686 | nobu | 2018-03-07 20:49:23 +0900 (Wed, 07 Mar 2018) | 1 line

complex.c, rational.c: adjust indent
------------------------------------------------------------------------
r62685 | nobu | 2018-03-07 17:07:24 +0900 (Wed, 07 Mar 2018) | 4 lines

date_core.c: check conversion

* ext/date/date_core.c (offset_to_sec, d_lite_plus): check
  conversion results, to get rid of infinite recursion.
------------------------------------------------------------------------
r62684 | nobu | 2018-03-07 16:56:40 +0900 (Wed, 07 Mar 2018) | 1 line

test_date_arith.rb: needs `test_` prefix
------------------------------------------------------------------------
r62683 | nobu | 2018-03-07 16:43:07 +0900 (Wed, 07 Mar 2018) | 4 lines

object.c: conversions with ID

* object.c (rb_to_integer, rb_check_to_int): convert to Integer
  with method ID.
------------------------------------------------------------------------
r62682 | nobu | 2018-03-07 11:27:18 +0900 (Wed, 07 Mar 2018) | 1 line

complex.c, rational.c: simplified macro conditions
------------------------------------------------------------------------
r62681 | svn | 2018-03-07 00:14:23 +0900 (Wed, 07 Mar 2018) | 1 line

* 2018-03-07
------------------------------------------------------------------------
r62680 | nobu | 2018-03-07 00:14:22 +0900 (Wed, 07 Mar 2018) | 5 lines

vm_insnhelper.c: blockparamproxy in rescue

* vm_insnhelper.c (vm_call_opt_block_call): get block handler from
  the method local frame.  fix segfault at calling the proxy in
  rescue.  http://twitter.com/wannabe53/status/970955247626567680
------------------------------------------------------------------------
r62679 | nobu | 2018-03-06 22:43:54 +0900 (Tue, 06 Mar 2018) | 1 line

test_signal.rb: fix arguments order
------------------------------------------------------------------------
r62678 | k0kubun | 2018-03-06 22:23:22 +0900 (Tue, 06 Mar 2018) | 13 lines

_mjit_compile_pc_and_sp.erb: skip moving pc

on !body->catch_except_p. We need to move pc only when JIT execution is
canceled if the frame does not catch an exception.

_mjit_compile_insn.erb: lazily move pc for such optimized case
_mjit_compile_insn_body.erb: ditto
_mjit_compile_send.erb: ditto

* Optcarrot benchmark (--jit)

Before: 65.31 fps
After: 67.82 fps
------------------------------------------------------------------------
r62677 | k0kubun | 2018-03-06 21:53:19 +0900 (Tue, 06 Mar 2018) | 6 lines

transform_mjit_header.rb: inline VM instructions

* Optcarrot benchmark (--jit)

Before: 62.42 fps
After: 65.31 fps
------------------------------------------------------------------------
r62676 | k0kubun | 2018-03-06 20:46:02 +0900 (Tue, 06 Mar 2018) | 3 lines

transform_mjit_header.rb: drop obsoleted debug code

Now RubyCI is stable for this part. We no longer use this.
------------------------------------------------------------------------
r62675 | nobu | 2018-03-06 18:03:24 +0900 (Tue, 06 Mar 2018) | 5 lines

parse.y: tSPACE for old bison

* parse.y (tSPACE): define a separate token for escaped space, to
  fix `redefining user token number of ' '` error at word list
  separator on bison 2.
------------------------------------------------------------------------
r62674 | nobu | 2018-03-06 14:59:29 +0900 (Tue, 06 Mar 2018) | 1 line

use the reference as failure messages
------------------------------------------------------------------------
r62673 | nobu | 2018-03-06 14:15:57 +0900 (Tue, 06 Mar 2018) | 5 lines

thread.c: deadlock in backtrace

* thread.c (unblock_function_set): check interrupts just once
  during raising exceptions, as they are deferred since r16651.
  [ruby-core:85939] [Bug #14577]
------------------------------------------------------------------------
r62672 | nobu | 2018-03-06 12:31:46 +0900 (Tue, 06 Mar 2018) | 4 lines

resolv.rb: remove rangerand

* lib/resolv.rb (Resolv::DNS.rangerand): rand and random_number
  accept a Range.
------------------------------------------------------------------------
r62671 | nobu | 2018-03-06 11:48:17 +0900 (Tue, 06 Mar 2018) | 16 lines

resolv.rb: close socket

* lib/resolv.rb (UnconnectedUDP#lazy_initialize): store new
  sockets before binding, so the sockets get closed when the
  requester is closing.

* lib/resolv.rb (ConnectedUDP#lazy_initialize): ditto.

* lib/resolv.rb (UnconnectedUDP#close): synchronize to get rid of
  race condition.

* lib/resolv.rb (ConnectedUDP#close): ditto.

[ruby-core:85901] [Bug #14571]

From: quixoten (Devin Christensen) <quixoten@gmail.com>
------------------------------------------------------------------------
r62670 | hsbt | 2018-03-06 09:52:15 +0900 (Tue, 06 Mar 2018) | 1 line

Removed redundant private declaration.
------------------------------------------------------------------------
r62669 | svn | 2018-03-06 07:58:14 +0900 (Tue, 06 Mar 2018) | 1 line

* 2018-03-06
------------------------------------------------------------------------
r62668 | normal | 2018-03-06 07:58:13 +0900 (Tue, 06 Mar 2018) | 11 lines

thread.c: reset waitq of keeping mutexes in child

We must not maintain references to threads in the parent process
in any mutexes held by the child process.

* thread_sync.c (rb_mutex_cleanup_keeping_mutexes): new function
* thread.c (rb_thread_atfork): cleanup keeping mutexes
  [ruby-core:85940] [Bug #14578]

Fixes: r58604 (commit 3586c9e0876e784767a1c1adba9ebc2499fa0ec2)
       ("reduce rb_mutex_t size from 160 to 80 bytes on 64-bit")
------------------------------------------------------------------------
r62664 | kazu | 2018-03-05 21:23:48 +0900 (Mon, 05 Mar 2018) | 1 line

Fix a typo [ci skip]
------------------------------------------------------------------------
r62663 | nobu | 2018-03-05 17:32:46 +0900 (Mon, 05 Mar 2018) | 4 lines

parse.y: named whitespaces

* parse.y: named escaped whitespaces to show unexpected character.
  bare whitespaces should not appear outside of word_list.
------------------------------------------------------------------------
r62662 | nobu | 2018-03-05 16:21:54 +0900 (Mon, 05 Mar 2018) | 6 lines

README.md: removed unnecessary schemes

`mailto:` scheme on text looking like email-address is unnecessary
in Markdown.  [Fix GH-1827]

Co-Authored-By: YoeriH <yoeri90@gmail.com>
------------------------------------------------------------------------
r62661 | nobu | 2018-03-05 15:56:09 +0900 (Mon, 05 Mar 2018) | 11 lines

Tiny Fix for ASYNC BUG error message copying

The previous logic would overwrite the error message, replacing the message with the `fd` number.

This tiny update will print the message in full.

(I'm trying to debug an issue with the timer thread on my machine and the lack of error messages makes it really hard).

[Fix GH-1829]

From: Bo <bo@bowild.com>
------------------------------------------------------------------------
r62660 | nobu | 2018-03-05 10:57:27 +0900 (Mon, 05 Mar 2018) | 4 lines

required paths are real paths

Fix `test-spec` failures when the build directory is a symbolic
link.
------------------------------------------------------------------------
r62659 | nobu | 2018-03-05 10:54:21 +0900 (Mon, 05 Mar 2018) | 4 lines

Makefile.sub: reconfig

* win32/Makefile.sub (reconfig): phony target to force reconfigure
  with previous options.
------------------------------------------------------------------------
r62658 | ko1 | 2018-03-05 10:17:08 +0900 (Mon, 05 Mar 2018) | 4 lines

add prefix to the function name.

* vm.c (handle_exception): rename to vm_exce_handle_exception.

------------------------------------------------------------------------
r62657 | svn | 2018-03-05 00:10:12 +0900 (Mon, 05 Mar 2018) | 1 line

* 2018-03-05
------------------------------------------------------------------------
r62656 | eregon | 2018-03-05 00:09:32 +0900 (Mon, 05 Mar 2018) | 1 line

Update to ruby/spec@c1b568b
------------------------------------------------------------------------
r62655 | k0kubun | 2018-03-04 16:04:40 +0900 (Sun, 04 Mar 2018) | 79 lines

mjit_compile.c: use local variables for stack

if catch_except_p is FALSE. If catch_except_p is TRUE, stack values
should be on VM's stack when exception is thrown and the JIT-ed frame
is re-executed by VM's exception handler. If it's FALSE, the JIT-ed
frame won't be re-executed and don't need to keep values on VM's stack.

Using local variables allows us to reduce cfp->sp motion. Moving cfp->sp
is needed only for insns whose handles_frame? is false. So it improves
performance.

_mjit_compile_insn.erb: Prepare `stack_size` variable for GET_SP,
STACK_ADDR_FROM_TOP, TOPN macros. Share pc and sp motion partial view.
Use cancel handler created in mjit_compile.c.

_mjit_compile_send.erb: ditto. Also, when iseq->body->catch_except_p is
TRUE, this stops to call mjit_exec directly. I described the reason in
vm_insnhelper.h's comment for EXEC_EC_CFP.

_mjit_compile_pc_and_sp.erb: Shared logic for moving sp and pc. As you
can see from thsi file, when status->local_stack_p is TRUE and
insn.handles_frame? is false, moving sp is skipped. But if
insn.handles_frame? is true, values should be rolled back to VM's stack.
common.mk: add dependency for the file

_mjit_compile_insn_body.erb: Set sp value before canceling JIT on
DISPATCH_ORIGINAL_INSN. Replace GET_SP, STACK_ADDR_FROM_TOP, TOPN macros
for the case ocal_stack_p is TRUE and insn.handles_frame? is false.
In that case, values are not available on VM's stack and those macros
should be replaced.

mjit_compile.inc.erb: updated comments of macros which are supported by
JIT compiler. All references to `cfp->sp` should be replaced and thus
INC_SP, SET_SV, PUSH are no longer supported for now, because they are
not used now.

vm_exec.h: moved EXEC_EC_CFP definition to vm_insnhelper.h because it's
tighly coupled to CALL_METHOD.

vm_insnhelper.h: Have revised EXEC_EC_CFP definition moved from vm_exec.h.
Now it triggers mjit_exec for VM, and has the guard for catch_except_p
on JIT-ed code. See comments for details. CALL_METHOD delegates
triggering mjit_exec to EXEC_EC_CFP.

insns.def: Stopped using EXEC_EC_CFP for the case we don't want to
trigger mjit_exec. Those insns (defineclass, opt_call_c_function) are
not supported by JIT and it's safe to use RESTORE_REGS(), NEXT_INSN().
expandarray is changed to pass GET_SP() to replace the macro in
_mjit_compile_insn_body.erb.

vm_insnhelper.c: change to take sp for the above reason.

[close https://github.com/ruby/ruby/pull/1828]

This patch resurrects the performance which was attached in
[Feature #14235].

* Benchmark

Optcarrot (with configuration for benchmark_driver.gem)
https://github.com/benchmark-driver/optcarrot

$ benchmark-driver benchmark.yml --verbose 1 --rbenv 'before;before+JIT::before,--jit;after;after+JIT::after,--jit' --repeat-count 10
before: ruby 2.6.0dev (2018-03-04 trunk 62652) [x86_64-linux]
before+JIT: ruby 2.6.0dev (2018-03-04 trunk 62652) +JIT [x86_64-linux]
after: ruby 2.6.0dev (2018-03-04 local-variable.. 62652) [x86_64-linux]
last_commit=mjit_compile.c: use local variables for stack
after+JIT: ruby 2.6.0dev (2018-03-04 local-variable.. 62652) +JIT [x86_64-linux]
last_commit=mjit_compile.c: use local variables for stack
Calculating -------------------------------------
                         before  before+JIT       after   after+JIT
           optcarrot     53.552      59.680      53.697      63.358 fps

Comparison:
                        optcarrot
           after+JIT:        63.4 fps
          before+JIT:        59.7 fps - 1.06x  slower
               after:        53.7 fps - 1.18x  slower
              before:        53.6 fps - 1.18x  slower
------------------------------------------------------------------------
r62654 | k0kubun | 2018-03-04 16:04:28 +0900 (Sun, 04 Mar 2018) | 8 lines

compile.c: set catch_except_p flag

to be used for MJIT's optimization. It's not used for optimization
in this commit yet.

vm_core.h: added catch_except_p field.

iseq.c: show the flag in ISeq disasm for debugging.
------------------------------------------------------------------------
r62653 | nobu | 2018-03-04 15:24:38 +0900 (Sun, 04 Mar 2018) | 1 line

vm.c: trivial optimization
------------------------------------------------------------------------
r62652 | nobu | 2018-03-04 11:37:22 +0900 (Sun, 04 Mar 2018) | 4 lines

vm.c: handle_exception loop

* vm.c (vm_exec): hoist out handle_exception and loop to rewind
  for each catching frames.
------------------------------------------------------------------------
r62650 | nobu | 2018-03-04 11:09:47 +0900 (Sun, 04 Mar 2018) | 4 lines

vm.c: untangle goto loop

* vm.c (vm_exec): moved code to get rid of cross-jumps across
  branches.
------------------------------------------------------------------------
r62649 | svn | 2018-03-04 10:52:20 +0900 (Sun, 04 Mar 2018) | 1 line

* 2018-03-04
------------------------------------------------------------------------
r62648 | nobu | 2018-03-04 10:52:19 +0900 (Sun, 04 Mar 2018) | 1 line

vm_exec.c: reduced repeated same calls
------------------------------------------------------------------------
r62644 | nobu | 2018-03-03 14:09:32 +0900 (Sat, 03 Mar 2018) | 7 lines

mjit_config.h: MJIT_LDSHARED

* configure.in (MJIT_LDSHARED): define based on LDSHARED with
  replacing CC with MJIT_CC.

* Makefile.in, win32/Makefile.sub (mjit_config.h): instead of the
  default LDSHARED, use MJIT_LDSHARED to link mjit shared objects.
------------------------------------------------------------------------
r62643 | k0kubun | 2018-03-03 13:50:14 +0900 (Sat, 03 Mar 2018) | 46 lines

insns.def: unwrap vm_exec for yield

Outer vm_exec can catch longjmp. We don't need to call vm_exec first
here.

This optimizes JIT-ed yield:

* Benchmark script

```
require 'benchmark_driver'

Benchmark.driver do |x|
  x.prelude %{
    def yielder
      yield + 1
    end
  }
  x.report 'yielder', %{
    yielder { 1 }
  }
  x.loop_count 300_000_000

  x.rbenv 'before', 'before,--jit', 'after', 'after,--jit'
  x.verbose
end
```

* Result

before: ruby 2.6.0dev (2018-03-03 trunk 62642) [x86_64-linux]
before,--jit: ruby 2.6.0dev (2018-03-03 trunk 62642) +JIT [x86_64-linux]
after: ruby 2.6.0dev (2018-03-03 trunk 62642) [x86_64-linux]
last_commit=insns.def: unwrap vm_exec for yield
after,--jit: ruby 2.6.0dev (2018-03-03 trunk 62642) +JIT [x86_64-linux]
last_commit=insns.def: unwrap vm_exec for yield
Calculating -------------------------------------
                         before  before,--jit       after  after,--jit
             yielder    37.214M       29.222M     35.904M      38.035M i/s -    300.000M times in 8.061581s 10.266312s 8.355716s 7.887447s

Comparison:
                          yielder
         after,--jit:  38035121.0 i/s
              before:  37213544.0 i/s - 1.02x  slower
               after:  35903565.7 i/s - 1.06x  slower
        before,--jit:  29221787.6 i/s - 1.30x  slower
------------------------------------------------------------------------
r62642 | svn | 2018-03-03 13:07:03 +0900 (Sat, 03 Mar 2018) | 1 line

* 2018-03-03
------------------------------------------------------------------------
r62641 | k0kubun | 2018-03-03 13:07:02 +0900 (Sat, 03 Mar 2018) | 173 lines

vm.c: add mjit_enable_p flag

to count up total calls properly. Some places (especially CALL_METHOD)
invoke mjit_exec twice for one method call. It would be problematic when
debugging, or possibly it would result in a wrong profiling result.

This commit doesn't have impact for performance:

* Optcarrot benchmark

** before

fps: 59.37757770848619
fps: 56.49998488958699
fps: 59.07900362739362
fps: 58.924749807695996
fps: 57.667905665594894
fps: 57.540021018385254
fps: 59.5518055679647
fps: 55.93831555148311
fps: 57.82685112863262
fps: 59.22391754481736
checksum: 59662

** after

fps: 58.461881158098194
fps: 59.32685183081354
fps: 54.11334310279802
fps: 59.2281560439788
fps: 58.60495705318312
fps: 55.696478648491045
fps: 58.49003452654724
fps: 58.387771929393224
fps: 59.24156772816439
fps: 56.68804731968107
checksum: 59662

* Discourse

Your Results: (note for timings- percentile is first, duration is second in millisecs)

** before (without JIT)

categories_admin:
  50: 16
  75: 17
  90: 24
  99: 37
home_admin:
  50: 20
  75: 20
  90: 24
  99: 42
topic_admin:
  50: 16
  75: 16
  90: 18
  99: 28
categories:
  50: 36
  75: 37
  90: 45
  99: 68
home:
  50: 38
  75: 40
  90: 53
  99: 92
topic:
  50: 14
  75: 15
  90: 17
  99: 26

** after (without JIT)

categories_admin:
  50: 16
  75: 16
  90: 24
  99: 36
home_admin:
  50: 19
  75: 20
  90: 23
  99: 41
topic_admin:
  50: 16
  75: 16
  90: 19
  99: 33
categories:
  50: 35
  75: 36
  90: 44
  99: 61
home:
  50: 38
  75: 40
  90: 52
  99: 101
topic:
  50: 14
  75: 15
  90: 15
  99: 24

** before (with JIT)

categories_admin:
  50: 19
  75: 23
  90: 29
  99: 44
home_admin:
  50: 24
  75: 26
  90: 32
  99: 46
topic_admin:
  50: 20
  75: 22
  90: 27
  99: 44
categories:
  50: 41
  75: 43
  90: 51
  99: 66
home:
  50: 46
  75: 49
  90: 56
  99: 68
topic:
  50: 18
  75: 19
  90: 22
  99: 31

** after (with JIT)

categories_admin:
  50: 18
  75: 21
  90: 28
  99: 42
home_admin:
  50: 23
  75: 25
  90: 31
  99: 51
topic_admin:
  50: 19
  75: 20
  90: 24
  99: 31
categories:
  50: 41
  75: 44
  90: 52
  99: 69
home:
  50: 45
  75: 48
  90: 61
  99: 88
topic:
  50: 19
  75: 20
  90: 24
  99: 33
------------------------------------------------------------------------
r62637 | nobu | 2018-03-02 23:45:28 +0900 (Fri, 02 Mar 2018) | 5 lines

openssl: search winsock

* ext/openssl/extconf.rb: on Windows search winsock library
  always, regardless pkg-config.  direct use of winsock is not
  region of OpenSSL.  [ruby-core:85895] [Bug #14568]
------------------------------------------------------------------------
r62635 | eregon | 2018-03-02 21:56:37 +0900 (Fri, 02 Mar 2018) | 3 lines

Clarify the documentation of the YAML module [Misc #14567]

Based on a patch from Victor Shepelev
------------------------------------------------------------------------
r62633 | nobu | 2018-03-02 20:24:29 +0900 (Fri, 02 Mar 2018) | 1 line

io/console: drop 2.1.0 support [ci skip]
------------------------------------------------------------------------
r62631 | nobu | 2018-03-02 16:53:27 +0900 (Fri, 02 Mar 2018) | 1 line

io/console: drop 2.0.0 support [ci skip]
------------------------------------------------------------------------
r62630 | nobu | 2018-03-02 16:49:20 +0900 (Fri, 02 Mar 2018) | 4 lines

Makefile.sub: need suffix

* win32/Makefile.sub: fix missing suffix of user32.lib.
  [Bug #14422]
------------------------------------------------------------------------
r62629 | nobu | 2018-03-02 16:24:16 +0900 (Fri, 02 Mar 2018) | 4 lines

Makefile.sub: link user32.lib

* win32/Makefile.sub: always link user32.lib which provides a lot
  of very common library functions.  [Bug #14422]
------------------------------------------------------------------------
r62628 | nobu | 2018-03-02 13:36:14 +0900 (Fri, 02 Mar 2018) | 1 line

search winsock libraries explicitly
------------------------------------------------------------------------
r62627 | nobu | 2018-03-02 10:37:53 +0900 (Fri, 02 Mar 2018) | 6 lines

configure.ac: library options to MAINLIBS

* configure.ac (MAINLIBS): moved library options for main program
  and static libruby, and append MAINLIBS to LIBRUBYARG_STATIC, as
  these libraries are not needed for linking to shared libruby.
  [ruby-core:85882] [Bug #14422]
------------------------------------------------------------------------
r62626 | nobu | 2018-03-02 10:16:37 +0900 (Fri, 02 Mar 2018) | 1 line

Makefile.in (ruby.pc): phony target [ci skip]
------------------------------------------------------------------------
r62625 | nobu | 2018-03-02 09:37:28 +0900 (Fri, 02 Mar 2018) | 1 line

configure.ac: fix up r59130
------------------------------------------------------------------------
r62624 | svn | 2018-03-02 07:49:27 +0900 (Fri, 02 Mar 2018) | 1 line

* 2018-03-02
------------------------------------------------------------------------
r62623 | nobu | 2018-03-02 07:49:26 +0900 (Fri, 02 Mar 2018) | 6 lines

MJIT specific flags

Passing options to configure like as `configure MJIT_OPTFLAGS=-O
MJIT_DEBUGFLAGS=-g` overrides options to be used to compile JIT
code, separately from the default options to be used for ruby
itself.
------------------------------------------------------------------------
r62622 | nobu | 2018-03-01 17:26:02 +0900 (Thu, 01 Mar 2018) | 5 lines

compile.c: raise on invalid input

* compile.c (ibf_load_object_unsupported, ibf_load_object_class):
  should raise an exception.  rejection of invalid input is not a
  bug.
------------------------------------------------------------------------
r62621 | nobu | 2018-03-01 16:59:57 +0900 (Thu, 01 Mar 2018) | 5 lines

compile.c: do not truncate VALUE to long

* compile.c (ibf_dump_object_regexp): do not truncate VALUE to
  long.  it makes invalid VALUE on IL32LLP64 platforms where long
  is shorter than VALUE.
------------------------------------------------------------------------
r62620 | nobu | 2018-03-01 13:10:25 +0900 (Thu, 01 Mar 2018) | 5 lines

parse.y: refine assign_in_cond warning

* parse.y (assign_in_cond): refine a warning message for
  assignment of a literal in conditinal expression.
  [ruby-core:85872] [Bug #14562]
------------------------------------------------------------------------
r62619 | nobu | 2018-03-01 12:26:05 +0900 (Thu, 01 Mar 2018) | 1 line

tool/bisect.sh: extracted build part [ci skip]
------------------------------------------------------------------------
r62618 | nobu | 2018-03-01 11:33:15 +0900 (Thu, 01 Mar 2018) | 4 lines

bisect.sh: make srcs in builddir [ci skip]

* tool/bisect.sh: also srcs needs Makefile, must in the build but
  not the source directory.
------------------------------------------------------------------------
r62617 | nobu | 2018-03-01 09:37:47 +0900 (Thu, 01 Mar 2018) | 4 lines

compile.c: fix load_from_binary

* compile.c (ibf_load_iseq_each): realpath may be nil.  follow up
  r59709.  [fix https://github.com/Shopify/bootsnap/issues/132]
------------------------------------------------------------------------
r62616 | svn | 2018-03-01 08:31:43 +0900 (Thu, 01 Mar 2018) | 1 line

* 2018-03-01
------------------------------------------------------------------------
r62615 | nobu | 2018-03-01 08:31:42 +0900 (Thu, 01 Mar 2018) | 5 lines

Revert r61936 "compile.c: use ALLOCV_N"

* compile.c (ibf_dump_object_list): `dump->obj_list` is not fixed
  yet, as new objects are pushed by lbf_dump_object_object.
  fixes crash by buffer overflow.
------------------------------------------------------------------------
r62614 | k0kubun | 2018-02-28 23:31:17 +0900 (Wed, 28 Feb 2018) | 3 lines

NEWS: resurrect ticket number [ci skip]

which was unintentionally dropped at r62612.
------------------------------------------------------------------------
r62613 | nobu | 2018-02-28 22:32:29 +0900 (Wed, 28 Feb 2018) | 3 lines

common.mk: clean timestamp and intermediate header

[ci-skip]
------------------------------------------------------------------------
r62612 | k0kubun | 2018-02-28 21:12:20 +0900 (Wed, 28 Feb 2018) | 8 lines

erb.rb: relax warn level of ERB.new

I changed my mind and thought branching ERB.new in all libraries is too
hard. Code becomes too ugly. I increased the warn level to 2, and the
old initializer will be removed when Ruby 2.5 becomes EOL.
-S option of erb(1) stays in the same policy: will be removed at Ruby 2.7.

NEWS: note about the direction
------------------------------------------------------------------------
r62611 | hsbt | 2018-02-28 20:12:36 +0900 (Wed, 28 Feb 2018) | 1 line

Prefer to use %x instead of backtick.
------------------------------------------------------------------------
r62608 | ko1 | 2018-02-28 16:31:49 +0900 (Wed, 28 Feb 2018) | 6 lines

skip a test if another Thread is running.

* test/ruby/test_time.rb (test_strftime_no_hidden_garbage): this test
  checks no object allocation while specific process, however another
  thread can generate objects.

------------------------------------------------------------------------
r62607 | nobu | 2018-02-28 14:43:53 +0900 (Wed, 28 Feb 2018) | 5 lines

file.c: realpath on special symlink

* file.c (realpath_rec): fallback to symlink path when it is
  accessible but the link target is not actual entry on file
  systems.  [ruby-dev:50487] [Bug #14557]
------------------------------------------------------------------------
r62606 | nobu | 2018-02-28 14:17:01 +0900 (Wed, 28 Feb 2018) | 5 lines

file.c: get rid of useless conversion

* file.c (rb_file_s_stat): File.stat does not accept an IO
  object as trying conversion to path name string first.  skip
  conversion to IO and try stat(2) only.
------------------------------------------------------------------------
r62605 | eregon | 2018-02-28 05:45:59 +0900 (Wed, 28 Feb 2018) | 1 line

Update to ruby/spec@51f301d
------------------------------------------------------------------------
r62604 | eregon | 2018-02-28 05:44:57 +0900 (Wed, 28 Feb 2018) | 3 lines

Remove tool/pull-latest-mspec-spec

* It is now part of mspec in spec/mspec/tool/pull-latest-mspec-spec
------------------------------------------------------------------------
r62603 | svn | 2018-02-28 05:21:26 +0900 (Wed, 28 Feb 2018) | 1 line

* properties.
------------------------------------------------------------------------
r62602 | eregon | 2018-02-28 05:21:25 +0900 (Wed, 28 Feb 2018) | 1 line

Update to ruby/spec@cbe855c
------------------------------------------------------------------------
r62601 | svn | 2018-02-28 05:21:02 +0900 (Wed, 28 Feb 2018) | 1 line

* properties.
------------------------------------------------------------------------
r62600 | eregon | 2018-02-28 05:21:01 +0900 (Wed, 28 Feb 2018) | 1 line

Update to ruby/mspec@d287466
------------------------------------------------------------------------
r62599 | svn | 2018-02-28 01:45:10 +0900 (Wed, 28 Feb 2018) | 1 line

* 2018-02-28
------------------------------------------------------------------------
r62598 | mrkn | 2018-02-28 01:45:09 +0900 (Wed, 28 Feb 2018) | 6 lines

Support two `to_r`-responding args in Rational()

* rational.c (nurat_s_convert): call `to_r` to convert non-Numeric
  objects also if argc == 2 in Rational().

* test/ruby/test_rational.rb: add tests.
------------------------------------------------------------------------
r62597 | nobu | 2018-02-27 23:22:57 +0900 (Tue, 27 Feb 2018) | 1 line

common.mk: added missing dependencies on id.h
------------------------------------------------------------------------
r62596 | hsbt | 2018-02-27 23:08:26 +0900 (Tue, 27 Feb 2018) | 4 lines

[EXPERIMENTAL] Support upload option for s3 package hosting.

  Example:
    $ ruby tool/make-snapshot -archname=snapshot -s3=tmp /tmp trunk
------------------------------------------------------------------------
r62595 | nobu | 2018-02-27 22:28:31 +0900 (Tue, 27 Feb 2018) | 5 lines

random.c: Random.extend Formatter

* random.c (InitVM_Random): extend Random itself by Formatter
  module, as well as the `bytes` method used by the module.
  [Feature #4938]
------------------------------------------------------------------------
r62594 | k0kubun | 2018-02-27 20:12:23 +0900 (Tue, 27 Feb 2018) | 3 lines

Refactor ERB version checking for keyword arguments

Improving code like r62590. See r62529 for details.
------------------------------------------------------------------------
r62593 | nobu | 2018-02-27 17:15:27 +0900 (Tue, 27 Feb 2018) | 1 line

defs/id.def: predefine to_f ID
------------------------------------------------------------------------
r62592 | svn | 2018-02-27 10:17:47 +0900 (Tue, 27 Feb 2018) | 1 line

* 2018-02-27
------------------------------------------------------------------------
r62591 | nobu | 2018-02-27 10:17:46 +0900 (Tue, 27 Feb 2018) | 1 line

complex.c: use predefined IDs
------------------------------------------------------------------------
r62590 | k0kubun | 2018-02-26 23:42:39 +0900 (Mon, 26 Feb 2018) | 72 lines

tool/ruby_vm/helpers/dumper.rb: check ERB version

I could not `make` trunk (62585) without this patch.

```
$ make -j4 && make install
        BASERUBY = /home/pocke/.rbenv/shims/ruby --disable=gems
        CC = gcc
        LD = ld
        LDSHARED = gcc -shared
        CFLAGS = -O3 -ggdb3 -Wall -Wextra -Wno-unused-parameter -Wno-parentheses -Wno-long-long -Wno-missing-field-initializers -Wno-tautological-compare -Wno-parentheses-equality -Wno-constant-logical-operand -Wno-self-assign -Wunused-variable -Werror=implicit-int -Werror=pointer-arith -Werror=write-strings -Werror=declaration-after-statement -Werror=implicit-function-declaration -Werror=deprecated-declarations -Werror=misleading-indentation -Wno-overlength-strings -Wno-packed-bitfield-compat -Wsuggest-attribute=noreturn -Wsuggest-attribute=format -Wmissing-noreturn -Wimplicit-fallthrough=0 -Werror=duplicated-cond -Werror=restrict -std=gnu99  -fPIC
        XCFLAGS = -D_FORTIFY_SOURCE=2 -fstack-protector -fno-strict-overflow -DRUBY_DEVEL=1 -fvisibility=hidden -fexcess-precision=standard -DRUBY_EXPORT
        CPPFLAGS =   -I. -I.ext/include/x86_64-linux -I./include -I. -I./enc/unicode/10.0.0
        DLDFLAGS = -Wl,--compress-debug-sections=zlib -Wl,-soname,libruby.so.2.6  -fstack-protector
        SOLIBS = -lpthread -lgmp -ldl -lcrypt -lm
        LANG = en_GB.UTF-8
        LC_ALL =
        LC_CTYPE =
gcc (GCC) 7.3.0
Copyright (C) 2017 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

generating opt_sc.inc
generating optunifs.inc
generating insns.inc
generating insns_info.inc
Traceback (most recent call last):
        6: from ./tool/insns2vm.rb:9:in `<main>'
        5: from ./tool/insns2vm.rb:9:in `each'
        4: from ./tool/insns2vm.rb:10:in `block in <main>'
        3: from /home/pocke/ghq/github.com/ruby/ruby/tool/ruby_vm/helpers/dumper.rb:98:in `generate'
        2: from /home/pocke/ghq/github.com/ruby/ruby/tool/ruby_vm/helpers/dumper.rb:76:in `do_render'
        1: from /home/pocke/.rbenv/versions/trunk/lib/ruby/2.6.0/erb.rb:873:in `result'
/home/pocke/.rbenv/versions/trunk/lib/ruby/2.6.0/erb.rb:869:in `block in result': no implicit conversion of Hash into Integer (TypeError)
make: *** [Makefile:534: opt_sc.inc] Error 1
make: *** Waiting for unfinished jobs....
Traceback (most recent call last):
        6: from ./tool/insns2vm.rb:9:in `<main>'
        5: from ./tool/insns2vm.rb:9:in `each'
        4: from ./tool/insns2vm.rb:10:in `block in <main>'
        3: from /home/pocke/ghq/github.com/ruby/ruby/tool/ruby_vm/helpers/dumper.rb:98:in `generate'
        2: from /home/pocke/ghq/github.com/ruby/ruby/tool/ruby_vm/helpers/dumper.rb:76:in `do_render'
        1: from /home/pocke/.rbenv/versions/trunk/lib/ruby/2.6.0/erb.rb:873:in `result'
/home/pocke/.rbenv/versions/trunk/lib/ruby/2.6.0/erb.rb:869:in `block in result': no implicit conversion of Hash into Integer (TypeError)
make: *** [Makefile:534: optunifs.inc] Error 1
Traceback (most recent call last):
        6: from ./tool/insns2vm.rb:9:in `<main>'
        5: from ./tool/insns2vm.rb:9:in `each'
        4: from ./tool/insns2vm.rb:10:in `block in <main>'
        3: from /home/pocke/ghq/github.com/ruby/ruby/tool/ruby_vm/helpers/dumper.rb:98:in `generate'
        2: from /home/pocke/ghq/github.com/ruby/ruby/tool/ruby_vm/helpers/dumper.rb:76:in `do_render'
        1: from /home/pocke/.rbenv/versions/trunk/lib/ruby/2.6.0/erb.rb:873:in `result'
/home/pocke/.rbenv/versions/trunk/lib/ruby/2.6.0/erb.rb:869:in `block in result': no implicit conversion of Hash into Integer (TypeError)
Traceback (most recent call last):
        6: from ./tool/insns2vm.rb:9:in `<main>'
        5: from ./tool/insns2vm.rb:9:in `each'
        4: from ./tool/insns2vm.rb:10:in `block in <main>'
        3: from /home/pocke/ghq/github.com/ruby/ruby/tool/ruby_vm/helpers/dumper.rb:98:in `generate'
        2: from /home/pocke/ghq/github.com/ruby/ruby/tool/ruby_vm/helpers/dumper.rb:76:in `do_render'
        1: from /home/pocke/.rbenv/versions/trunk/lib/ruby/2.6.0/erb.rb:873:in `result'
/home/pocke/.rbenv/versions/trunk/lib/ruby/2.6.0/erb.rb:869:in `block in result': no implicit conversion of Hash into Integer (TypeError)
make: *** [Makefile:534: insns.inc] Error 1
make: *** [Makefile:534: insns_info.inc] Error 1
```

I guess this issue is same as https://bugs.ruby-lang.org/projects/ruby-trunk/repository/revisions/62531
So I applied the same change to tool/ruby_vm/helpers/dumper.rb also.

close https://github.com/ruby/ruby/pull/1826

Co-authored-by: Masataka Pocke Kuwabara <kuwabara@pocke.me>
------------------------------------------------------------------------
r62589 | nobu | 2018-02-26 23:39:16 +0900 (Mon, 26 Feb 2018) | 1 line

use convert_type_with_id
------------------------------------------------------------------------
r62588 | nobu | 2018-02-26 23:30:39 +0900 (Mon, 26 Feb 2018) | 1 line

use convert_type_with_id
------------------------------------------------------------------------
r62585 | nobu | 2018-02-26 17:37:02 +0900 (Mon, 26 Feb 2018) | 5 lines

Makefile.in: fix portability issue

* Makefile.in (mjit_config.h): Alternative value with $@ and
  printf without argument are not portable, could fail on some
  platforms.
------------------------------------------------------------------------
r62584 | naruse | 2018-02-26 17:01:05 +0900 (Mon, 26 Feb 2018) | 1 line

r62071 is backported into Ruby 2.5 [Bug #14407]
------------------------------------------------------------------------
r62583 | nobu | 2018-02-26 16:57:16 +0900 (Mon, 26 Feb 2018) | 1 line

make-snapshot: added missing options to usage
------------------------------------------------------------------------
r62582 | mrkn | 2018-02-26 16:57:15 +0900 (Mon, 26 Feb 2018) | 11 lines

Use RB_INTEGER_TYPE_P instead of rb_obj_is_kind_of

For checking whether an object is an Integer, because a subclass of
Integer is meaningless in Ruby, RB_INTEGER_TYPE_P is better than
rb_obj_is_kind_of for speed.

* object.c (rb_to_integer): Use RB_INTEGER_TYPE_P instead of rb_obj_is_kind_of.

* object.c (rb_check_to_integer): ditto.

* range.c (range_max): ditto.
------------------------------------------------------------------------
r62581 | mrkn | 2018-02-26 16:31:10 +0900 (Mon, 26 Feb 2018) | 10 lines

Check the result of to_int in Kernel#Integer

[ruby-core:85813] [Bug #14552]

* object.c (rb_convert_to_integer):
  Check the result of to_int in Kernel#Integer

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

* spec/ruby/core/kernel/Integer_spec.rb: fix examples.
------------------------------------------------------------------------
r62580 | svn | 2018-02-26 15:00:10 +0900 (Mon, 26 Feb 2018) | 1 line

* 2018-02-26
------------------------------------------------------------------------
r62579 | nobu | 2018-02-26 15:00:10 +0900 (Mon, 26 Feb 2018) | 4 lines

make-snapshot: exporting ChangLog with git

* tool/make-snapshot (package): export ChangLog file under the
  exported directory.  Git can work only under a git repository.
------------------------------------------------------------------------
r62578 | nobu | 2018-02-26 15:00:09 +0900 (Mon, 26 Feb 2018) | 1 line

make-snapshot: remove -j option from GNUMAKEFLAGS
------------------------------------------------------------------------
r62577 | nobu | 2018-02-26 15:00:08 +0900 (Mon, 26 Feb 2018) | 4 lines

vcs.rb: .git at export

* tool/vcs.rb (VCS::GIT#export): do not remove .git directory.
  should remove it by after_export.
------------------------------------------------------------------------
r62576 | svn | 2018-02-25 22:52:08 +0900 (Sun, 25 Feb 2018) | 1 line

* properties.
------------------------------------------------------------------------
r62575 | eregon | 2018-02-25 22:52:07 +0900 (Sun, 25 Feb 2018) | 12 lines

Add a new #filter alias for #select

* In Enumerable, Enumerator::Lazy, Array, Hash and Set
  [Feature #13784] [ruby-core:82285]
* Share specs for the various #select#select! methods and
  reuse them for #filter/#filter!.
* Add corresponding filter tests for select tests.
* Update NEWS.

[Fix GH-1824]

From: Alexander Patrick <adp90@case.edu>
------------------------------------------------------------------------
r62574 | nobu | 2018-02-25 22:17:35 +0900 (Sun, 25 Feb 2018) | 1 line

date_parse.c, date_strptime.c: ensure symbols static all
------------------------------------------------------------------------
r62573 | nobu | 2018-02-25 13:49:51 +0900 (Sun, 25 Feb 2018) | 1 line

date_core.c: ensure symbols static all
------------------------------------------------------------------------
r62572 | nobu | 2018-02-25 13:28:11 +0900 (Sun, 25 Feb 2018) | 6 lines

date_core.c: defensive code

* ext/date/date_core.c (f_cmp): check comparison failure.

* ext/date/date_core.c (d_lite_step): deal with the comparison
  result more defensively.  [ruby-core:85796] [Bug #14549]
------------------------------------------------------------------------
r62571 | nobu | 2018-02-25 12:08:40 +0900 (Sun, 25 Feb 2018) | 1 line

guard before noreturn function
------------------------------------------------------------------------
r62570 | k0kubun | 2018-02-25 11:12:25 +0900 (Sun, 25 Feb 2018) | 8 lines

process.c: guard eargp against GC

`rb_str_append` may trigger GC, and in that case eargp might be GCed.
Probably for protecting it, `RB_GC_GUARD(execarg_obj)` can be seen in
other places.

Hoping to fix:
http://ci.rvm.jp/results/trunk_gcc5@silicon-docker/569818
------------------------------------------------------------------------
r62567 | mrkn | 2018-02-25 00:36:09 +0900 (Sun, 25 Feb 2018) | 4 lines

rb_int_powm: call rb_int_pow directly

* bignum.c (rb_int_powm): call rb_int_pow directly instead of calling `**`
  operator.
------------------------------------------------------------------------
r62566 | svn | 2018-02-25 00:06:08 +0900 (Sun, 25 Feb 2018) | 1 line

* 2018-02-25
------------------------------------------------------------------------
r62565 | mrkn | 2018-02-25 00:06:07 +0900 (Sun, 25 Feb 2018) | 1 line

complex.c, rational.c: remove dead code
------------------------------------------------------------------------
r62564 | mrkn | 2018-02-24 23:56:36 +0900 (Sat, 24 Feb 2018) | 3 lines

rational.c: simplify a branch condition

* rational.c (nurat_s_convert): simplify a branch condition.
------------------------------------------------------------------------
r62563 | kazu | 2018-02-24 17:54:19 +0900 (Sat, 24 Feb 2018) | 1 line

lib/erb.rb: Add uplevel to warn
------------------------------------------------------------------------
r62560 | naruse | 2018-02-24 11:58:41 +0900 (Sat, 24 Feb 2018) | 3 lines

Judge ERB version not RUBY_VERSION but ERB.version

On cross compilation, ruby command uses fake RUBY_VERSION.
------------------------------------------------------------------------
r62559 | naruse | 2018-02-24 11:58:39 +0900 (Sat, 24 Feb 2018) | 1 line

On getting changelog, use git-log with --no-notes
------------------------------------------------------------------------
r62558 | nobu | 2018-02-24 11:55:03 +0900 (Sat, 24 Feb 2018) | 1 line

version.h: get rid of duplication
------------------------------------------------------------------------
r62557 | nobu | 2018-02-24 11:48:09 +0900 (Sat, 24 Feb 2018) | 1 line

test for r62555
------------------------------------------------------------------------
r62556 | nobu | 2018-02-24 11:45:12 +0900 (Sat, 24 Feb 2018) | 3 lines

rational.c: removed needless calc

* rational.c (read_num): exp(0) is 1, no need to multiply.
------------------------------------------------------------------------
r62555 | nobu | 2018-02-24 11:08:36 +0900 (Sat, 24 Feb 2018) | 6 lines

rational.c: segfault on Rational exponent

* rational.c (read_num): fix segfault on Rational() with positive
  but less than the length of fractional part exponent.  should be
  negated to convert to divisor which is a reciprocal.
  [ruby-core:85783] [Bug #14547]
------------------------------------------------------------------------
r62553 | nobu | 2018-02-24 10:12:51 +0900 (Sat, 24 Feb 2018) | 9 lines

Improve Array#sample with random documentation

* array.c (rb_ary_sample): Adds examples for the use of the
  optional parameter random for Array#sample and unifies the style
  with the documentation of Array#shuffle.

[Fix GH-1825]

From: Alberto Almagro <alberto.almagro@rakuten.com>
------------------------------------------------------------------------
r62552 | k0kubun | 2018-02-24 10:05:20 +0900 (Sat, 24 Feb 2018) | 4 lines

NEWS: elaborate on JIT for 2.6.0-preview1 [ci skip]

This information is backported from the draft of 2.6.0-preview1 release
note. NEWS for final 2.6.0 release will be different.
------------------------------------------------------------------------
r62551 | nobu | 2018-02-24 10:02:58 +0900 (Sat, 24 Feb 2018) | 7 lines

Fix typo: blcok -> block

Typo in a comment about "evaluator body".

[Fix GH-1824]

From: hkdnet <satoko.itse@gmail.com>
------------------------------------------------------------------------
r62550 | svn | 2018-02-24 09:40:37 +0900 (Sat, 24 Feb 2018) | 1 line

* 2018-02-24
------------------------------------------------------------------------
r62549 | k0kubun | 2018-02-24 09:40:36 +0900 (Sat, 24 Feb 2018) | 1 line

mjit.c: fix deadlock on marking MJIT's ISeq
------------------------------------------------------------------------
r62548 | nobu | 2018-02-23 17:39:03 +0900 (Fri, 23 Feb 2018) | 4 lines

eval_error.c: rb_error_write flags

* eval_error.c (rb_error_write): add highlight and reverse mode
  flags.  defaulted to rb_stderr_tty_p() if Qnil.
------------------------------------------------------------------------
r62547 | nobu | 2018-02-23 17:32:33 +0900 (Fri, 23 Feb 2018) | 6 lines

groups_spec.rb: get rid of limit on macOS

* spec/ruby/core/process/groups_spec.rb: on macOS, getgroups(2)
  has a variant which has no limit but not setgroups(2).  so the
  default groups may exceed the limit.  as the call of setgroups
  is expected to fail here, the content does not matter.
------------------------------------------------------------------------
r62546 | hsbt | 2018-02-23 14:09:11 +0900 (Fri, 23 Feb 2018) | 1 line

Update minitest-5.11.3 on bundled gems.
------------------------------------------------------------------------
r62545 | nobu | 2018-02-23 12:45:55 +0900 (Fri, 23 Feb 2018) | 1 line

Use Process::Tms
------------------------------------------------------------------------
r62544 | nobu | 2018-02-23 11:18:52 +0900 (Fri, 23 Feb 2018) | 1 line

[DOC] missing docs at toplevel
------------------------------------------------------------------------
r62543 | nobu | 2018-02-23 11:16:43 +0900 (Fri, 23 Feb 2018) | 1 line

[DOC] obsolete classes
------------------------------------------------------------------------
r62542 | nobu | 2018-02-23 11:16:42 +0900 (Fri, 23 Feb 2018) | 1 line

[DOC] nodoc internal methods/classes
------------------------------------------------------------------------
r62541 | nobu | 2018-02-23 11:16:41 +0900 (Fri, 23 Feb 2018) | 1 line

[DOC] hide declaration from rdoc
------------------------------------------------------------------------
r62540 | nobu | 2018-02-23 11:16:41 +0900 (Fri, 23 Feb 2018) | 1 line

process.c: deprecated Struct::Tms
------------------------------------------------------------------------
r62536 | eregon | 2018-02-23 00:34:17 +0900 (Fri, 23 Feb 2018) | 1 line

test/ruby/test_rubyoptions.rb: fix typo and only expect +JIT for CRuby
------------------------------------------------------------------------
r62535 | k0kubun | 2018-02-23 00:29:33 +0900 (Fri, 23 Feb 2018) | 1 line

ruby.c: fix typo in r62530
------------------------------------------------------------------------
r62534 | svn | 2018-02-23 00:11:13 +0900 (Fri, 23 Feb 2018) | 1 line

* properties.
------------------------------------------------------------------------
r62533 | k0kubun | 2018-02-23 00:11:12 +0900 (Fri, 23 Feb 2018) | 4 lines

test_rubyoptions.rb: don't test --jit if not supported

test/lib/jit_support.rb: carved out JITSupport
test/ruby/test_jit.rb: ditto
------------------------------------------------------------------------
r62532 | svn | 2018-02-23 00:03:09 +0900 (Fri, 23 Feb 2018) | 1 line

* 2018-02-23
------------------------------------------------------------------------
r62531 | k0kubun | 2018-02-23 00:03:08 +0900 (Fri, 23 Feb 2018) | 18 lines

tool/generic_erb.rb: check ERB version

instead of Ruby's.

When older ERB is installed but Ruby is still 2.6.0, this may cause
error like:

```
Traceback (most recent call last):
    5: from ../src/tool/generic_erb.rb:36:in `<main>'
    4: from ../src/tool/generic_erb.rb:36:in `map'
    3: from ../src/tool/generic_erb.rb:43:in `block in <main>'
    2: from ../src/tool/generic_erb.rb:43:in `block (2 levels) in <main>'
    1: from /opt/local/lib/ruby/2.6.0/erb.rb:873:in `result'
/opt/local/lib/ruby/2.6.0/erb.rb:869:in `block in result': no implicit conversion of Hash into Integer (TypeError)
```

For safety, I changed this to check ERB's version. See also: r62529.
------------------------------------------------------------------------
r62530 | k0kubun | 2018-02-22 23:53:17 +0900 (Thu, 22 Feb 2018) | 34 lines

version.c: show +JIT when --jit is passed

in version output.
version.h: ditto
ruby.c: propagate option for it
common.mk: updated dependency for version.c

mjit.c: overwrites the RUBY_DESCRIPTION to have +JIT when --jit is passed

test/ruby/test_rubyoptions.rb: add test for them

Only `ruby --jit -v` will have "+JIT", but this is intentional.
This may not be convenient for debugging by ticket with `ruby -v`,
but it's convenient for benchmark tools that pass options (--jit)
when showing it. At least such behavior is planned for benchmark_driver.gem
and this behavior is designed for it. Other benchmark tools are
recommended to follow the behavior too if they show version.
RUBY_DESCRIPTION might be useful for it too.

The position of "+JIT" is changed from original proposal because other
platforms like JRuby and TruffleRuby end it with archtecture.
It's made similar to JRuby, but it's upper-cased because Matz made approval
for "+JIT" in the ticket.

Example:
$ ruby -v
ruby 2.6.0dev (2018-02-22 trunk 62529) [x86_64-linux]
$ ruby --jit -v
ruby 2.6.0dev (2018-02-22 trunk 62529) +JIT [x86_64-linux]

After --jit is made default in the future, this output may be removed.
So do not rely on this output if possible.

[Feature #14462]
------------------------------------------------------------------------
r62529 | k0kubun | 2018-02-22 22:28:25 +0900 (Thu, 22 Feb 2018) | 25 lines

erb.rb: deprecate safe_level of ERB.new

Also, as it's in the middle of the list of 4 arguments, 3rd and 4th arguments
(trim_mode, eoutvar) are changed to keyword arguments.
Old ways to specify arguments are deprecated and warned now.

bin/erb: deprecate -S option.

We'll remove all of deprecated ones at Ruby 2.7+.

enc/make_encmake.rb: stopped using deprecated interface
ext/etc/mkconstants.rb: ditto
ext/socket/mkconstants.rb: ditto
sample/ripper/ruby2html.rb: ditto
spec/ruby/library/erb/defmethod/def_erb_method_spec.rb: ditto
spec/ruby/library/erb/new_spec.rb: ditto
test/erb/test_erb.rb: ditto
test/erb/test_erb_command.rb: ditto
tool/generic_erb.rb: ditto
tool/ruby_vm/helpers/dumper.rb: ditto
tool/transcode-tblgen.rb: ditto
lib/rdoc/erbio.rb: ditto
lib/rdoc/generator/darkfish.rb: ditto

[Feature #14256]
------------------------------------------------------------------------
r62528 | nobu | 2018-02-22 21:51:41 +0900 (Thu, 22 Feb 2018) | 6 lines

Fix CMDARG manipulation

* parse.y: Fix CMDARG manipulation. Use CMDARG_P to identify
  keyword_do/keyword_do_block.  [Feature #14506] [Fix GH-1823]

From: Ilya Bylich <ibylich@gmail.com>
------------------------------------------------------------------------
r62526 | nobu | 2018-02-22 16:34:43 +0900 (Thu, 22 Feb 2018) | 5 lines

Ignore rb_mjit_min_header- instead of rb_mjit_header-

[Fix GH-1822]

From: hkdnet <satoko.itse@gmail.com>
------------------------------------------------------------------------
r62525 | nobu | 2018-02-22 16:34:42 +0900 (Thu, 22 Feb 2018) | 5 lines

Ignore /mjit_config.h

[Fix GH-1822]

From: hkdnet <satoko.itse@gmail.com>
------------------------------------------------------------------------
r62524 | nobu | 2018-02-22 14:06:46 +0900 (Thu, 22 Feb 2018) | 1 line

NEWS: fixed unintentional description list [ci skip]
------------------------------------------------------------------------
r62523 | nobu | 2018-02-22 13:55:58 +0900 (Thu, 22 Feb 2018) | 1 line

NEWS: fixed unintentional description list [ci skip]
------------------------------------------------------------------------
r62522 | nobu | 2018-02-22 13:13:02 +0900 (Thu, 22 Feb 2018) | 1 line

NEWS: adjust layout [ci skip]
------------------------------------------------------------------------
r62521 | kou | 2018-02-22 12:33:42 +0900 (Thu, 22 Feb 2018) | 2 lines

Add KeyError, NameError and NoMethodError changes

------------------------------------------------------------------------
r62520 | nobu | 2018-02-22 12:14:39 +0900 (Thu, 22 Feb 2018) | 1 line

NEWS: fixed a typo [ci skip]
------------------------------------------------------------------------
r62519 | nobu | 2018-02-22 10:58:29 +0900 (Thu, 22 Feb 2018) | 4 lines

test_process.rb: assert minimum maxgroups

* test/ruby/test_process.rb (TestProcess#test_maxgroups):
  maxgroups should be one at least.
------------------------------------------------------------------------
r62518 | svn | 2018-02-22 02:06:24 +0900 (Thu, 22 Feb 2018) | 1 line

* 2018-02-22
------------------------------------------------------------------------
r62517 | mame | 2018-02-22 02:06:23 +0900 (Thu, 22 Feb 2018) | 1 line

* NEWS: add NEWS entry about Binding#source_location [Feature #14230]
------------------------------------------------------------------------
r62516 | nobu | 2018-02-21 18:04:48 +0900 (Wed, 21 Feb 2018) | 5 lines

test_process.rb: unlimited getgroups on darwin

* test/ruby/test_process.rb (TestProcess#test_maxgroups): Darwin
  extension of getgroups(2) which is not limited to MAXGROUPS is
  used.
------------------------------------------------------------------------
r62515 | ko1 | 2018-02-21 17:51:49 +0900 (Wed, 21 Feb 2018) | 5 lines

use `--version`.

* benchmark/driver.rb: use `--version` instead of `-v` to get version
  information.

------------------------------------------------------------------------
r62514 | ko1 | 2018-02-21 17:14:51 +0900 (Wed, 21 Feb 2018) | 2 lines

add NEWS entries about [Feature #14318] and [Feature #14330].

------------------------------------------------------------------------
r62513 | hsbt | 2018-02-21 16:12:17 +0900 (Wed, 21 Feb 2018) | 8 lines

Update url with 404 status on LEGAL file.

  * Update redirected and upstream url.
  * Added the Wayback Machine url for missing link.

  [Bug #12762][ruby-dev:49802]

From: SHIBATA Hiroshi <hsbt@ruby-lang.org>
------------------------------------------------------------------------
r62512 | hsbt | 2018-02-21 15:31:39 +0900 (Wed, 21 Feb 2018) | 5 lines

Update maintainers of unmaintained libraries.

  [Misc #14211]

From: SHIBATA Hiroshi <hsbt@ruby-lang.org>
------------------------------------------------------------------------
r62508 | nobu | 2018-02-21 14:37:23 +0900 (Wed, 21 Feb 2018) | 4 lines

test_time_tz.rb: past Japanese DST tzdata fix

* test/ruby/test_time_tz.rb (TestTimeTZ#test_asia_tokyo): fix
  the expected data at the end of DST.  [Bug #14438]
------------------------------------------------------------------------
r62506 | nobu | 2018-02-21 11:21:10 +0900 (Wed, 21 Feb 2018) | 5 lines

test_time_tz.rb: past Japanese DST tzdata fix

* test/ruby/test_time_tz.rb (TestTimeTZ#test_asia_tokyo): follow
  the tzdata 2018 fix of Japanese DST transitions (1948-1951).
  [ruby-core:85373] [Bug #14438]
------------------------------------------------------------------------
r62505 | nobu | 2018-02-21 09:55:22 +0900 (Wed, 21 Feb 2018) | 4 lines

vm_insnhelper.c: no insns_info in jit

* vm_insnhelper.c: instructions info are not used in jit source
  code.  resolved a warning by transform_mjit_header.rb.
------------------------------------------------------------------------
r62504 | nobu | 2018-02-21 09:36:29 +0900 (Wed, 21 Feb 2018) | 1 line

Makefile.in (mjit_config.h): fix duplicated output
------------------------------------------------------------------------
r62503 | svn | 2018-02-21 09:17:54 +0900 (Wed, 21 Feb 2018) | 1 line

* 2018-02-21
------------------------------------------------------------------------
r62502 | nobu | 2018-02-21 09:17:54 +0900 (Wed, 21 Feb 2018) | 4 lines

Makefile.in: empty comment

* Makefile.in (mjit_config.h): add an empty comment if no content,
  to tell the empty content explicitly.
------------------------------------------------------------------------
r62500 | nobu | 2018-02-20 19:08:27 +0900 (Tue, 20 Feb 2018) | 7 lines

error.c: bypass Exception.new

* error.c (rb_exc_new, rb_exc_new_str): instantiate exception
  object directly without Exception.new method call.

Redefinition of class method `new` is an outdated style, and
internal exceptions should not be affected by it.
------------------------------------------------------------------------
r62499 | nobu | 2018-02-20 18:39:41 +0900 (Tue, 20 Feb 2018) | 4 lines

mjit.c: separate call from macro

* mjit.c (convert_unit_to_func): separate a function call from a
  macro, which evaluates the argument multiple times.
------------------------------------------------------------------------
r62498 | nobu | 2018-02-20 18:38:55 +0900 (Tue, 20 Feb 2018) | 4 lines

Signature of rb_uint2inum and rb_int2inum

* include/ruby/ruby.h (rb_int2inum, rb_uint2inum): adjust
  declarations.  [ruby-core:83424] [Bug #14036]
------------------------------------------------------------------------
r62497 | nobu | 2018-02-20 18:26:38 +0900 (Tue, 20 Feb 2018) | 4 lines

random.c: Random.bytes

* random.c (random_s_bytes): new method Random.bytes, which is
  equivalent to Random::DEFAULT.bytes.  [Feature #4938]
------------------------------------------------------------------------
r62496 | nobu | 2018-02-20 18:16:34 +0900 (Tue, 20 Feb 2018) | 3 lines

Makefile.in: fix for Solaris

* Makefile.in (mjit_config.h): expand for each words.
------------------------------------------------------------------------
r62495 | normal | 2018-02-20 17:44:38 +0900 (Tue, 20 Feb 2018) | 12 lines

tool/m4/ruby_replace_type.m4: use AC_CHECK_TYPES for HAVE_* macros

AC_CHECK_TYPE (no "S") does not define HAVE_* macros for types,
so use AC_CHECK_TYPES (with "S") instead.  Without this,
HAVE_CLOCKID_T goes undefined and I can't USE_MONOTONIC_COND in
thread_pthread.c :<

Fixes: r62446 (git 673ae0e3c9cefd693ef82f19a6761e147fc6de93)
	("configure.ac: check clockid_t with necessary headers")

* tool/m4/ruby_replace_type.m4: use AC_CHECK_TYPES for HAVE_* macros
  [ruby-core:85659] [Bug #14494]
------------------------------------------------------------------------
r62494 | nobu | 2018-02-20 17:01:44 +0900 (Tue, 20 Feb 2018) | 5 lines

Signature of rb_uint2big and rb_int2big

* include/ruby/ruby.h (rb_uint2big, rb_int2big): declare with
  uintptr_t and intptr_t instead of VALUE and SIGNED_VALUE
  respectively.  [ruby-core:83424] [Bug #14036]
------------------------------------------------------------------------
r62493 | nobu | 2018-02-20 16:51:22 +0900 (Tue, 20 Feb 2018) | 4 lines

mjit.c: fix compile error

* mjit.c (check_tmpdir): W_OK and S_ISDIR may not defined on
  Windows.
------------------------------------------------------------------------
r62492 | nobu | 2018-02-20 14:32:07 +0900 (Tue, 20 Feb 2018) | 5 lines

mjit.c: prefer $TMPDIR and $TMP

* mjit.c (system_tmpdir): prefer `$TMPDIR` and `$TMP` over system
  defulat temporary directory, if exists, writable, and safe.
  [ruby-core:85651] [Bug #14496]
------------------------------------------------------------------------
r62491 | nobu | 2018-02-20 14:32:06 +0900 (Tue, 20 Feb 2018) | 4 lines

mjit.c: dldflags on mingw

* mjit.c (CC_DLDFLAGS_ARGS): default libraries are necessary on
  Windows.
------------------------------------------------------------------------
r62490 | nobu | 2018-02-20 13:05:42 +0900 (Tue, 20 Feb 2018) | 4 lines

mjit.c: fix memory leak

* mjit.c (system_tmpdir): rb_w32_wstr_to_mbstr returns the pointer
  to `malloc`ed region.  allocate with `xmalloc` instead.
------------------------------------------------------------------------
r62489 | nobu | 2018-02-20 12:15:33 +0900 (Tue, 20 Feb 2018) | 5 lines

vm.c: disable dtrace in jit source

* vm.c: include dummy dtrace probes header in jit header.

* vm_insnhelper.c: probes headers are included by vm.c.
------------------------------------------------------------------------
r62488 | nobu | 2018-02-20 11:37:28 +0900 (Tue, 20 Feb 2018) | 4 lines

common.mk: moved macros to mjit_config.h

* Makefile.in, common.mk, win32/Makefile.sub: moved MJIT macros to
  mjit_config.h from XCFLAGS.
------------------------------------------------------------------------
r62487 | svn | 2018-02-20 10:23:24 +0900 (Tue, 20 Feb 2018) | 1 line

* 2018-02-20
------------------------------------------------------------------------
r62486 | nobu | 2018-02-20 10:23:23 +0900 (Tue, 20 Feb 2018) | 1 line

Makefile.in: function to quote for mjit_config.h
------------------------------------------------------------------------
r62485 | normal | 2018-02-19 18:28:56 +0900 (Mon, 19 Feb 2018) | 1 line

thread_pthread.c: spelling ("cancellation")
------------------------------------------------------------------------
r62484 | normal | 2018-02-19 18:28:51 +0900 (Mon, 19 Feb 2018) | 3 lines

thread_pthread.c: fix thread cache for non-monotonic clock

I noticed this because of https://bugs.ruby-lang.org/issues/14494
------------------------------------------------------------------------
r62480 | nobu | 2018-02-19 15:28:03 +0900 (Mon, 19 Feb 2018) | 1 line

mjit.c: fix a typo [ci skip]
------------------------------------------------------------------------
r62479 | nobu | 2018-02-19 10:45:17 +0900 (Mon, 19 Feb 2018) | 8 lines

Escape MINIRUBY in --make-flags to extmk.rb

If MINIRUBY had arguments, which is the case of cross compiling
they wouldn't be parsed correctly and compiling would fail as a RUBY
without arguments would then be present in the Makefile's in ext/*
[ruby-core:85620] [Bug #14486] [Fix GH-1819]

Author:    Carl Horberg <carl.hoerberg@gmail.com>
------------------------------------------------------------------------
r62478 | normal | 2018-02-19 09:30:43 +0900 (Mon, 19 Feb 2018) | 5 lines

thread_pthread.c (native_thread_create): remove needless attrp

Followup-to: r61719 (commit e8f40bd8f83e1b22ef9c22f0e5d7a1fc0b07f94c)
  ("thread_pthread: remove HAVE_PTHREAD_ATTR_INIT ifdefs")
  [ruby-core:84758] [Misc #14342]
------------------------------------------------------------------------
r62477 | normal | 2018-02-19 09:23:00 +0900 (Mon, 19 Feb 2018) | 3 lines

thread_pthread.c (rb_thread_create_mjit_thread): destroy attr

This is required on some platforms to avoid leaks.
------------------------------------------------------------------------
r62476 | normal | 2018-02-19 08:58:35 +0900 (Mon, 19 Feb 2018) | 3 lines

thread_pthread.c (thread cache): destroy cond after unlock

No need to hold a lock while destroying a condition variable.
------------------------------------------------------------------------
r62475 | normal | 2018-02-19 08:58:30 +0900 (Mon, 19 Feb 2018) | 6 lines

thread_pthread.c (rb_thread_create_mjit): set detach before create

This should be slightly cheaper on NPTL as it does not rely on
atomics to set pd->joinid.   We already use pthread_attr_setdetachstate,
so it won't introduce new problems by using a function we did not
use before.
------------------------------------------------------------------------
r62474 | svn | 2018-02-19 06:03:14 +0900 (Mon, 19 Feb 2018) | 1 line

* 2018-02-19
------------------------------------------------------------------------
r62473 | normal | 2018-02-19 06:03:13 +0900 (Mon, 19 Feb 2018) | 5 lines

thread.c: remove redundant USE_SIGALTSTACK #define

thread.c already includes vm_core.h where USE_SIGALTSTACK is
defined, #include it explicitly (eval_intern.h already includes
it)
------------------------------------------------------------------------
r62469 | nobu | 2018-02-18 18:33:21 +0900 (Sun, 18 Feb 2018) | 4 lines

mjit.c: pch file argument

* mjit.c (compile_c_to_so): pass pch file only when using
  "-include-pch" option.
------------------------------------------------------------------------
r62468 | nobu | 2018-02-18 18:23:47 +0900 (Sun, 18 Feb 2018) | 1 line

adjust indent
------------------------------------------------------------------------
r62467 | kazu | 2018-02-18 17:11:50 +0900 (Sun, 18 Feb 2018) | 1 line

README.ja.md: Mac OS X -> macOS [ci skip]
------------------------------------------------------------------------
r62466 | normal | 2018-02-18 16:54:10 +0900 (Sun, 18 Feb 2018) | 13 lines

thread_pthread.c: shorten and fix thread cache implementation

Update to use ccan/list for constant-time delete on expiry and
avoid malloc.  We must also initialize th->thread_id upon thread
reuse so Thread#name= works immediately upon thread creation.

We must also reinitialize the cache mutex and list_head on
fork like we do with GVL and timer thread mutexes.
While we're at it, use monotonic clock for timeout to avoid
system time changes.

"make exam TESTS='-x test_time_tz'" passes with USE_THREAD_CACHE
enabled (but remains off, here).
------------------------------------------------------------------------
r62465 | nobu | 2018-02-18 15:21:28 +0900 (Sun, 18 Feb 2018) | 5 lines

mjit.c: place DLDFLAGS at last

* mjit.c (compile_c_to_so): place DLDFLAGS at last, as compilers
  other than cl.exee don't care the order of flag arguments,
  usually.
------------------------------------------------------------------------
r62464 | nobu | 2018-02-18 14:12:26 +0900 (Sun, 18 Feb 2018) | 1 line

aclocal.m4: remove ruby_check_va_copy.m4
------------------------------------------------------------------------
r62463 | nobu | 2018-02-18 14:10:52 +0900 (Sun, 18 Feb 2018) | 4 lines

mjit.c: no va_copy

* mjit.c (form_args): do not use va_copy, which cannot detect
  appropriate way to simulate when cross compiling.
------------------------------------------------------------------------
r62462 | normal | 2018-02-18 12:00:33 +0900 (Sun, 18 Feb 2018) | 13 lines

thread.c (thread_join_m): handle negative timeouts correctly

Users may subtract and round into negative values when using
Thread#join, so clamp the timeout to zero to avoid infinite/long
timeouts.

Note: other methods such as Kernel#sleep and IO.select will
raise on negative values, but Thread#join is an outlier *shrug*

This restores Ruby 2.5 (and earlier) behavior.

Fixes: r62182 (commit c915390b9530c31b4665aacf27c1adfc114f768e)
       ("thread.c: avoid FP for Thread#join")
------------------------------------------------------------------------
r62461 | normal | 2018-02-18 12:00:28 +0900 (Sun, 18 Feb 2018) | 7 lines

thread.c (double2timespec): adjust to use NULL for infinity

Using:
  strace ruby -e 'Thread.new { sleep }.join(Float::INFINITY)'

Will show a difference in futex() syscall args (not that I'd
ever advocate Float::INFINITY as a Thread#join arg :P)
------------------------------------------------------------------------
r62460 | usa | 2018-02-18 11:51:31 +0900 (Sun, 18 Feb 2018) | 4 lines

Fixed the order of arguments for cl.exe

* mjit.c (compile_c_to_so): `CC_DLDFLAGS_ARGS` must be after `-link` for cl.exe.

------------------------------------------------------------------------
r62459 | normal | 2018-02-18 11:12:23 +0900 (Sun, 18 Feb 2018) | 5 lines

thread_pthread.c (native_cond_timeout): simplify

Rely on getclockofday for CLOCK_MONOTONIC, avoid needless
variables, and rely on overflow protection from timespec_add
instead of coding our own.
------------------------------------------------------------------------
r62458 | normal | 2018-02-18 11:12:18 +0900 (Sun, 18 Feb 2018) | 3 lines

thread.c: stop updating timespec when timeout is unspecified

No need to waste cycles updating timespecs if there's no expiry.
------------------------------------------------------------------------
r62457 | normal | 2018-02-18 11:12:13 +0900 (Sun, 18 Feb 2018) | 3 lines

thread.c (update_timespec): use timespec_update_expire

Rename "end" as a appropriate for readability.
------------------------------------------------------------------------
r62456 | normal | 2018-02-18 09:38:45 +0900 (Sun, 18 Feb 2018) | 3 lines

thread.c: introduce timespec_cmp for timespec comparisons

This hopefully improves readability when comparing timespecs.
------------------------------------------------------------------------
r62455 | normal | 2018-02-18 09:38:40 +0900 (Sun, 18 Feb 2018) | 4 lines

thread.c (timespec_update_expire): improve naming

Naming the constant timespec as "end" should make it more
apparent is is an absolute time.  Update callers, too.
------------------------------------------------------------------------
r62454 | svn | 2018-02-18 09:38:36 +0900 (Sun, 18 Feb 2018) | 1 line

* 2018-02-18
------------------------------------------------------------------------
r62453 | normal | 2018-02-18 09:38:35 +0900 (Sun, 18 Feb 2018) | 4 lines

ext/fiddle/lib/fiddle/pack.rb: pack "void *" properly on 32-bit

Fixes: r62450 (commit 1aaeeb326e754c5c5db83fbf35f780f729a9dfed)
       ("long long is a C99ism")
------------------------------------------------------------------------
r62452 | kazu | 2018-02-17 23:03:52 +0900 (Sat, 17 Feb 2018) | 1 line

Remove unnecessary `[]`s
------------------------------------------------------------------------
r62451 | shyouhei | 2018-02-17 19:04:22 +0900 (Sat, 17 Feb 2018) | 4 lines

a C source code must end with EOL

cf: ISO 9899 section 5.1.1.2

------------------------------------------------------------------------
r62450 | shyouhei | 2018-02-17 18:51:23 +0900 (Sat, 17 Feb 2018) | 5 lines

long long is a C99ism

so SIZEOF_LONG_LONG is not always available.
We have to check its defined?-ness before using.

------------------------------------------------------------------------
r62449 | nobu | 2018-02-17 16:54:52 +0900 (Sat, 17 Feb 2018) | 4 lines

socket.rb: protected connect_internal

* ext/socket/lib/socket.rb (Addrinfo#connect_internal): make
  protected for Addrinfo#connect_to, instead of private and send.
------------------------------------------------------------------------
r62448 | nobu | 2018-02-17 14:52:21 +0900 (Sat, 17 Feb 2018) | 5 lines

LIBRUBY_A with exts

* Makefile.in, win32/Makefile.sub (LIBRUBY_A): link with extension
  libraries if EXTSTATIC is set, so that static-ruby would work
  too.
------------------------------------------------------------------------
r62447 | nobu | 2018-02-17 14:52:20 +0900 (Sat, 17 Feb 2018) | 4 lines

separate PRE_LIBRUBY_UPDATE

* Makefile.in, win32/Makefile.sub (PRE_LIBRUBY_UPDATE): separate
  definitions without miniruby.
------------------------------------------------------------------------
r62446 | nobu | 2018-02-17 14:22:56 +0900 (Sat, 17 Feb 2018) | 1 line

configure.ac: check clockid_t with necessary headers
------------------------------------------------------------------------
r62445 | nobu | 2018-02-17 10:30:05 +0900 (Sat, 17 Feb 2018) | 1 line

prefixed functions exported for mjit
------------------------------------------------------------------------
r62437 | svn | 2018-02-17 01:04:22 +0900 (Sat, 17 Feb 2018) | 1 line

* 2018-02-17
------------------------------------------------------------------------
r62436 | nagachika | 2018-02-17 01:04:21 +0900 (Sat, 17 Feb 2018) | 4 lines

fix regexp literal warning.

test/rubygems/test_gem_server.rb: eliminate duplicated character class warning.
[Bug #14481]
------------------------------------------------------------------------
r62433 | k0kubun | 2018-02-16 23:45:39 +0900 (Fri, 16 Feb 2018) | 236 lines

mjit.c: fix deadlock on class serial increment

This is reported by @hasimo. Fixing a case like this:

 #0  __lll_lock_wait () at ../sysdeps/unix/sysv/linux/x86_64/lowlevellock.S:135
 #1  0x00007fc7bd824dbd in __GI___pthread_mutex_lock (mutex=mutex@entry=0x55946d294440 <mjit_engine_mutex>) at ../nptl/pthread_mutex_lock.c:80               4
 #2  0x000055946cec54d9 in rb_native_mutex_lock (lock=lock@entry=0x55946d294440 <mjit_engine_mutex>) at thread_pthread.c:211
 #3  0x000055946cde10ca in CRITICAL_SECTION_START (msg=0x55946cfb5423 "mjit_gc_start_hook", level=4) at mjit.c:392
 #4  mjit_gc_start_hook () at mjit.c:412
 #5  0x000055946cda0dfe in gc_enter (event=0x55946cfaf91e "gc_rest", objspace=0x55946da51760) at gc.c:6623
 #6  gc_rest (objspace=objspace@entry=0x55946da51760) at gc.c:6515
 #7  0x000055946cd9f1cf in gc_rest (objspace=0x55946da51760) at gc.c:7841
 #8  objspace_malloc_increase (objspace=objspace@entry=0x55946da51760, new_size=<optimized out>, old_size=old_size@entry=0, type=type@entry=MEMOP_TYPE_MALLOC, mem=0x7fc7a4439010) at gc.c:7842
 #9  0x000055946cda1706 in objspace_malloc_fixup (size=<optimized out>, mem=0x7fc7a4439010, objspace=0x55946da51760) at gc.c:7910
 #10 objspace_xmalloc0 (objspace=0x55946da51760, size=<optimized out>, size@entry=3145728) at gc.c:7939
 #11 0x000055946cda3620 in ruby_xmalloc0 (size=3145728) at gc.c:8006
 #12 ruby_xmalloc (size=size@entry=3145728) at gc.c:8015
 #13 0x000055946ce93f4c in st_init_table_with_size (type=0x55946d28da30 <objhash>, size=<optimized out>) at st.c:602
 #14 0x000055946ce94287 in rebuild_table (tab=tab@entry=0x55946db669f0) at st.c:777
 #15 0x000055946ce963f7 in rebuild_table_if_necessary (tab=0x55946db669f0) at st.c:1139
 #16 st_add_direct_with_hash (hash=8577035585096733536, value=20, key=808451, tab=0x55946db669f0) at st.c:1207
 #17 st_update (tab=0x55946db669f0, key=key@entry=808451, func=<optimized out>, arg=140726472841392) at st.c:1512
 #18 0x000055946cda9e27 in tbl_update (optional_arg=<optimized out>, func=<optimized out>, key=<optimized out>, hash=<optimized out>) at hash.c:561
 #19 rb_hash_aset (hash=94095983218480, key=key@entry=808451, val=val@entry=20) at hash.c:1654
 #20 0x000055946cde243a in mjit_add_class_serial (class_serial=class_serial@entry=404225) at mjit.c:1414                    3
 #21 0x000055946cefcfab in rb_next_class_serial () at vm.c:321
 #22 0x000055946cf48324 in class_alloc (klass=<optimized out>, flags=28) at class.c:178
 #23 rb_include_class_new (module=module@entry=94096115733840, super=0) at class.c:820
 #24 0x000055946cf487ac in include_modules_at (klass=klass@entry=94096135960920, c=<optimized out>, module=<optimized out>, module@entry=94096115734160, search_super=search_super@entry=1) at class.c:913
 #25 0x000055946cf48ac8 in rb_include_module (klass=94096135960920, module=module@entry=94096115734160) at class.c:870
 #26 0x000055946cd84993 in rb_mod_append_features (module=94096115734160, include=<optimized out>) at eval.c:1178
 #27 0x000055946cf06829 in vm_call0_cfunc_with_frame (ci=0x7ffd6f6c9a20, cc=0x7ffd6f6c9ba0, argv=0x7ffd6f6c9ba0, calling=0x7ffd6f6c9a30, ec=0x55946da519c8) at vm_eval.c:87
 #28 vm_call0_cfunc (argv=0x7ffd6f6c9ba0, cc=0x7ffd6f6c9ba0, ci=0x7ffd6f6c9a20, calling=0x7ffd6f6c9a30, ec=0x55946da519c8) at vm_eval.c:102
 #29 vm_call0_body (ec=ec@entry=0x55946da519c8, calling=calling@entry=0x7ffd6f6c9ae0, ci=ci@entry=0x7ffd6f6c9ad0, cc=cc@entry=0x7ffd6f6c9b00, argv=argv@entry=0x7ffd6f6c9ba0) at vm_eval.c:133
 #30 0x000055946cf074b2 in vm_call0 (me=<optimized out>, argv=0x7ffd6f6c9ba0, argc=1, id=4849, recv=94096115734160, ec=0x55946da519c8) at vm_eval.c:60
 #31 rb_call0 (ec=0x55946da519c8, recv=94096115734160, mid=4849, mid@entry=94096135960920, argc=argc@entry=1, argv=argv@entry=0x7ffd6f6c9ba0, scope=scope@entry=CALL_FCALL, self=94096135960920) at vm_eval.c:302
 #32 0x000055946cf07b9b in rb_call (scope=CALL_FCALL, argv=0x7ffd6f6c9ba0, argc=1, mid=94096135960920, recv=<optimized out>) at vm_eval.c:595
 #33 rb_funcallv (recv=<optimized out>, mid=mid@entry=4849, argc=argc@entry=1, argv=argv@entry=0x7ffd6f6c9ba0) at vm_eval.c:825
 #34 0x000055946cd848a7 in rb_mod_include (argc=0, argv=0x7fc7bdb4fce8, module=94096135960920) at eval.c:1203
 #35 0x000055946cefb61f in vm_call_cfunc_with_frame (ci=0x5594710c06b0, cc=<optimized out>, calling=<optimized out>, reg_cfp=0x7fc7bdc4df00, ec=0x55946da519c8) at vm_insnhelper.c:1928
 #36 vm_call_cfunc (ec=0x55946da519c8, reg_cfp=0x7fc7bdc4df00, calling=<optimized out>, ci=0x5594710c06b0, cc=<optimized out>) at vm_insnhelper.c:1944
 #37 0x000055946cf0b5c2 in vm_exec_core (ec=ec@entry=0x55946da519c8, initial=initial@entry=0) at /tmp/ruby-build.20180216151216.13740/ruby-trunk/insns.def:779
 #38 0x000055946cf02f4c in vm_exec (ec=ec@entry=0x55946da519c8) at vm.c:1804
 #39 0x000055946cf035fc in invoke_block (captured=0x7ffd6f6ca0a0, opt_pc=<optimized out>, type=<optimized out>, cref=0x559476c23930, self=94096135960920, iseq=0x559471335ee0, ec=0x55946da519c8) at vm.c:1005
 #40 invoke_iseq_block_from_c (ec=0x55946da519c8, captured=0x7ffd6f6ca0a0, self=94096135960920, argc=<optimized out>, argv=<optimized out>, passed_block_handler=0, cref=0x559476c23930, is_lambda=0) at vm.c:1057
 #41 0x000055946cf04520 in invoke_block_from_c_bh (ec=ec@entry=0x55946da519c8, block_handler=<optimized out>, argc=argc@entry=1, argv=argv@entry=0x7ffd6f6ca108, cref=<optimized out>, is_lambda=<optimized out>, is_lambda@entry=0, force_blockarg=0, passed_block_handler=0) at vm.c:1075
 #42 0x000055946cf04958 in vm_yield_with_cref (is_lambda=0, cref=<optimized out>, argv=0x7ffd6f6ca108, argc=1, ec=0x55946da519c8) at vm.c:1112
 #43 yield_under (under=94096135960920, self=<optimized out>, argc=argc@entry=1, argv=argv@entry=0x7ffd6f6ca108) at vm_eval.c:1572
 #44 0x000055946cf04b12 in rb_mod_module_exec (argc=argc@entry=1, argv=argv@entry=0x7ffd6f6ca108, mod=<optimized out>) at vm_eval.c:1770
 #45 0x000055946ce00fc6 in rb_mod_initialize (module=94096135960920) at object.c:1978
 #46 0x000055946cf06829 in vm_call0_cfunc_with_frame (ci=0x7ffd6f6ca130, cc=0x7fc7bdb4fc98, argv=0x7fc7bdb4fc98, calling=0x7ffd6f6ca140, ec=0x55946da519c8) at vm_eval.c:87
 #47 vm_call0_cfunc (argv=0x7fc7bdb4fc98, cc=0x7fc7bdb4fc98, ci=0x7ffd6f6ca130, calling=0x7ffd6f6ca140, ec=0x55946da519c8) at vm_eval.c:102
 #48 vm_call0_body (ec=ec@entry=0x55946da519c8, calling=calling@entry=0x7ffd6f6ca1f0, ci=ci@entry=0x7ffd6f6ca1e0, cc=cc@entry=0x7ffd6f6ca210, argv=argv@entry=0x7fc7bdb4fc98) at vm_eval.c:133
 #49 0x000055946cf074b2 in vm_call0 (me=<optimized out>, argv=0x7fc7bdb4fc98, argc=0, id=3057, recv=94096135960920, ec=0x55946da519c8) at vm_eval.c:60
 #50 rb_call0 (ec=0x55946da519c8, recv=recv@entry=94096135960920, mid=mid@entry=3057, argc=argc@entry=3057, argv=argv@entry=0x0, scope=scope@entry=CALL_FCALL, self=94095983466120) at vm_eval.c:302
 #51 0x000055946cf07b9b in rb_call (scope=CALL_FCALL, argv=0x0, argc=3057, mid=3057, recv=94096135960920) at vm_eval.c:595
 #52 rb_funcallv (recv=recv@entry=94096135960920, mid=mid@entry=3057, argc=argc@entry=0, argv=argv@entry=0x7fc7bdb4fc98) at vm_eval.c:825
 #53 0x000055946cd89673 in rb_obj_call_init (obj=obj@entry=94096135960920, argc=argc@entry=0, argv=argv@entry=0x7fc7bdb4fc98) at eval.c:1590
 #54 0x000055946ce048a1 in rb_class_s_new (argc=0, argv=0x7fc7bdb4fc98, klass=<optimized out>) at object.c:2153
 #55 0x000055946cefb61f in vm_call_cfunc_with_frame (ci=0x559471339c80, cc=<optimized out>, calling=<optimized out>, reg_cfp=0x7fc7bdc4dfa8, ec=0x55946da519c8) at vm_insnhelper.c:1928
 #56 vm_call_cfunc (ec=0x55946da519c8, reg_cfp=0x7fc7bdc4dfa8, calling=<optimized out>, ci=0x559471339c80, cc=<optimized out>) at vm_insnhelper.c:1944
 #57 0x000055946cf0cb05 in vm_exec_core (ec=ec@entry=0x55946da519c8, initial=initial@entry=0) at /tmp/ruby-build.20180216151216.13740/ruby-trunk/insns.def:716
 #58 0x000055946cf02f4c in vm_exec (ec=ec@entry=0x55946da519c8) at vm.c:1804
 #59 0x000055946cf03274 in invoke_bmethod (ec=ec@entry=0x55946da519c8, iseq=iseq@entry=0x55946f15cbc0, self=self@entry=94096115734640, me=me@entry=0x559475664e28, type=type@entry=572653825, opt_pc=0, captured=0x55947158e8a0) at vm.c:1026
 #60 0x000055946cf03534 in invoke_iseq_block_from_c (ec=0x55946da519c8, captured=0x55947158e8a0, self=94096115734640, argc=<optimized out>, argv=<optimized out>, passed_block_handler=0, cref=0x0, is_lambda=1) at vm.c:1060
 #61 0x000055946cf036ce in invoke_block_from_c_proc (ec=<optimized out>, proc=<optimized out>, self=<optimized out>, argc=1, argv=<optimized out>, passed_block_handler=<optimized out>, is_lambda=<optimized out>) at vm.c:1150
 #62 0x000055946cf03811 in vm_invoke_bmethod (block_handler=<optimized out>, argv=<optimized out>, argc=1, self=<optimized out>, proc=<optimized out>, ec=0x55946da519c8) at vm.c:1175
 #63 vm_call_bmethod_body (ci=<optimized out>, cc=0x55946f625960, argv=<optimized out>, calling=0x7ffd6f6ca9b0, ec=0x55946da519c8) at vm_insnhelper.c:1971
 #64 vm_call_bmethod (ec=0x55946da519c8, cfp=0x7fc7bdc4e0c0, calling=0x7ffd6f6ca9b0, ci=<optimized out>, cc=0x55946f625960) at vm_insnhelper.c:1988
 #65 0x000055946cf03ea3 in vm_call_method (ec=0x55946da519c8, cfp=0x7fc7bdc4e0c0, calling=<optimized out>, ci=<optimized out>, cc=<optimized out>) at vm_insnhelper.c:2417
 #66 0x000055946cf0e63e in vm_exec_core (ec=ec@entry=0x55946da519c8, initial=initial@entry=0) at /tmp/ruby-build.20180216151216.13740/ruby-trunk/insns.def:797
 #67 0x000055946cf02f4c in vm_exec (ec=ec@entry=0x55946da519c8) at vm.c:1804
 #68 0x000055946cf06767 in vm_call0_body (ec=ec@entry=0x55946da519c8, calling=calling@entry=0x7ffd6f6cad00, ci=ci@entry=0x7ffd6f6cacf0, cc=cc@entry=0x7ffd6f6cad20, argv=argv@entry=0x7ffd6f6cadb0) at vm_eval.c:129
 #69 0x000055946cf074b2 in vm_call0 (me=<optimized out>, argv=0x7ffd6f6cadb0, argc=1, id=3681, recv=94096115734640, ec=0x55946da519c8) at vm_eval.c:60
 #70 rb_call0 (ec=0x55946da519c8, recv=recv@entry=94096115734640, mid=3681, argc=argc@entry=1, argv=argv@entry=0x7ffd6f6cad90, scope=scope@entry=CALL_FCALL, self=94095983452880) at vm_eval.c:302
 #71 0x000055946cf07b9b in rb_call (scope=CALL_FCALL, argv=0x7ffd6f6cad90, argc=1, mid=<optimized out>, recv=94096115734640) at vm_eval.c:595
 #72 rb_funcallv (recv=recv@entry=94096115734640, mid=<optimized out>, argc=argc@entry=1, argv=argv@entry=0x7ffd6f6cadb0) at vm_eval.c:825
 #73 0x000055946cf477d2 in rb_class_inherited (super=super@entry=94096115734640, klass=klass@entry=94096135961440) at class.c:625
 #74 0x000055946cf0f796 in vm_declare_class (super=<optimized out>, cbase=94096094868200, flags=<optimized out>, id=847387) at vm_insnhelper.c:3134
 #75 vm_define_class (super=<optimized out>, cbase=<optimized out>, flags=<optimized out>, id=847387) at vm_insnhelper.c:3167
 #76 vm_find_or_create_class_by_id (super=<optimized out>, cbase=<optimized out>, flags=<optimized out>, id=847387) at vm_insnhelper.c:3196
 #77 vm_exec_core (ec=ec@entry=0x55946da519c8, initial=initial@entry=0) at /tmp/ruby-build.20180216151216.13740/ruby-trunk/insns.def:685
 #78 0x000055946cf02f4c in vm_exec (ec=0x55946da519c8) at vm.c:1804
 #79 0x000055946cf118d1 in rb_iseq_eval (iseq=iseq@entry=0x559471f1b548) at vm.c:2046
 #80 0x000055946cdd2164 in rb_load_internal0 (ec=ec@entry=0x55946da519c8, fname=fname@entry=94096135872160, wrap=wrap@entry=0) at load.c:611
 #81 0x000055946cdd41f1 in rb_require_internal (fname=94096135872400, fname@entry=94096135872440, safe=0) at load.c:992
 #82 0x000055946cdd4493 in rb_require_safe (safe=<optimized out>, fname=94096135872440) at load.c:1038
 #83 rb_f_require (obj=<optimized out>, fname=94096135872440) at load.c:820
 #84 0x000055946cefb61f in vm_call_cfunc_with_frame (ci=0x5594708700a0, cc=<optimized out>, calling=<optimized out>, reg_cfp=0x7fc7bdc4e168, ec=0x55946da519c8) at vm_insnhelper.c:1928
 #85 vm_call_cfunc (ec=0x55946da519c8, reg_cfp=0x7fc7bdc4e168, calling=<optimized out>, ci=0x5594708700a0, cc=<optimized out>) at vm_insnhelper.c:1944
 #86 0x000055946cf03ea3 in vm_call_method (ec=0x55946da519c8, cfp=0x7fc7bdc4e168, calling=<optimized out>, ci=<optimized out>, cc=<optimized out>) at vm_insnhelper.c:2417
 #87 0x000055946cf0e63e in vm_exec_core (ec=ec@entry=0x55946da519c8, initial=initial@entry=0) at /tmp/ruby-build.20180216151216.13740/ruby-trunk/insns.def:797
 #88 0x000055946cf02f4c in vm_exec (ec=ec@entry=0x55946da519c8) at vm.c:1804
 #89 0x000055946cf035fc in invoke_block (captured=0x7fc7bdc4e490, opt_pc=<optimized out>, type=<optimized out>, cref=0x0, self=94096096426480, iseq=0x55946e49f0b8, ec=0x55946da519c8) at vm.c:1005
 #90 invoke_iseq_block_from_c (ec=0x55946da519c8, captured=0x7fc7bdc4e490, self=94096096426480, argc=<optimized out>, argv=<optimized out>, passed_block_handler=0, cref=0x0, is_lambda=0) at vm.c:1057
 #91 0x000055946cf04699 in invoke_block_from_c_bh (argc=<optimized out>, passed_block_handler=<optimized out>, cref=<optimized out>, is_lambda=<optimized out>, force_blockarg=<optimized out>, argv=<optimized out>, block_handler=<optimized out>, ec=<optimized out>) at vm.c:1075
 #92 vm_yield (argc=1, argv=0x7ffd6f6cb938, ec=<optimized out>) at vm.c:1120
 #93 rb_yield_0 (argv=0x7ffd6f6cb938, argc=1) at vm_eval.c:980
 #94 rb_yield_1 (val=94096130169040) at vm_eval.c:986
 #95 rb_yield (val=<optimized out>) at vm_eval.c:996
 #96 0x000055946cf2113d in rb_ary_each (ary=94096076222560) at array.c:1820
 #97 0x000055946cefb61f in vm_call_cfunc_with_frame (ci=0x55946ed0d090, cc=<optimized out>, calling=<optimized out>, reg_cfp=0x7fc7bdc4e478, ec=0x55946da519c8) at vm_insnhelper.c:1928
 #98 vm_call_cfunc (ec=0x55946da519c8, reg_cfp=0x7fc7bdc4e478, calling=<optimized out>, ci=0x55946ed0d090, cc=<optimized out>) at vm_insnhelper.c:1944
 #99 0x000055946cf0cb05 in vm_exec_core (ec=ec@entry=0x55946da519c8, initial=initial@entry=0) at /tmp/ruby-build.20180216151216.13740/ruby-trunk/insns.def:716
 #100 0x000055946cf02f4c in vm_exec (ec=ec@entry=0x55946da519c8) at vm.c:1804
 #101 0x000055946cf035fc in invoke_block (captured=0x7fc7bdc4e500, opt_pc=<optimized out>, type=<optimized out>, cref=0x0, self=94096096426480, iseq=0x55946e49f298, ec=0x55946da519c8) at vm.c:1005
 #102 invoke_iseq_block_from_c (ec=0x55946da519c8, captured=0x7fc7bdc4e500, self=94096096426480, argc=<optimized out>, argv=<optimized out>, passed_block_handler=0, cref=0x0, is_lambda=0) at vm.c:1057
 #103 0x000055946cf04699 in invoke_block_from_c_bh (argc=<optimized out>, passed_block_handler=<optimized out>, cref=<optimized out>, is_lambda=<optimized out>, force_blockarg=<optimized out>, argv=<optimized out>, block_handler=<optimized out>, ec=<optimized out>) at vm.c:1075
 #104 vm_yield (argc=1, argv=0x7ffd6f6cbdf8, ec=<optimized out>) at vm.c:1120
 #105 rb_yield_0 (argv=0x7ffd6f6cbdf8, argc=1) at vm_eval.c:980
 #106 rb_yield_1 (val=94096095502480) at vm_eval.c:986
 #107 rb_yield (val=<optimized out>) at vm_eval.c:996
 #108 0x000055946cf2113d in rb_ary_each (ary=94096095328480) at array.c:1820
 #109 0x000055946cefb61f in vm_call_cfunc_with_frame (ci=0x55946e8552a0, cc=<optimized out>, calling=<optimized out>, reg_cfp=0x7fc7bdc4e4e8, ec=0x55946da519c8) at vm_insnhelper.c:1928
 #110 vm_call_cfunc (ec=0x55946da519c8, reg_cfp=0x7fc7bdc4e4e8, calling=<optimized out>, ci=0x55946e8552a0, cc=<optimized out>) at vm_insnhelper.c:1944
 #111 0x000055946cf0cb05 in vm_exec_core (ec=ec@entry=0x55946da519c8, initial=initial@entry=0) at /tmp/ruby-build.20180216151216.13740/ruby-trunk/insns.def:716
 #112 0x000055946cf02f4c in vm_exec (ec=ec@entry=0x55946da519c8) at vm.c:1804
 #113 0x000055946cf06767 in vm_call0_body (ec=ec@entry=0x55946da519c8, calling=calling@entry=0x7ffd6f6cc2d0, ci=ci@entry=0x7ffd6f6cc2c0, cc=cc@entry=0x7ffd6f6cc2f0, argv=argv@entry=0x7ffd6f6cc390) at vm_eval.c:129
 #114 0x000055946cf074b2 in vm_call0 (me=<optimized out>, argv=0x7ffd6f6cc390, argc=0, id=135807, recv=94096096186440, ec=0x55946da519c8) at vm_eval.c:60
 #115 rb_call0 (ec=0x55946da519c8, recv=94096096186440, mid=135807, argc=<optimized out>, argv=argv@entry=0x8, scope=scope@entry=CALL_PUBLIC, self=94095993048320) at vm_eval.c:302
 #116 0x000055946cf0a31a in rb_call (scope=CALL_PUBLIC, argv=0x8, argc=<optimized out>, mid=<optimized out>, recv=<optimized out>) at vm_eval.c:595
 #117 rb_funcall_with_block (recv=<optimized out>, mid=<optimized out>, argc=argc@entry=0, argv=argv@entry=0x7ffd6f6cc390, passed_procval=passed_procval@entry=8) at vm_eval.c:857
 #118 0x000055946ceb319c in rb_sym_proc_call (mid=<optimized out>, argc=argc@entry=1, argv=argv@entry=0x7ffd6f6cc388, passed_proc=passed_proc@entry=8) at string.c:10480
 #119 0x000055946cf0477c in vm_yield_with_symbol (block_handler=0, argv=0x7ffd6f6cc388, argc=1, symbol=<optimized out>, ec=<optimized out>) at vm_insnhelper.c:2573
 #120 invoke_block_from_c_bh (argc=<optimized out>, passed_block_handler=<optimized out>, cref=<optimized out>, is_lambda=<optimized out>, force_blockarg=<optimized out>, argv=<optimized out>, block_handler=<optimized out>, ec=<optimized out>) at vm.c:1084
 #121 vm_yield (argc=1, argv=0x7ffd6f6cc388, ec=<optimized out>) at vm.c:1120
 #122 rb_yield_0 (argv=0x7ffd6f6cc388, argc=1) at vm_eval.c:980
 #123 rb_yield_1 (val=94096096186440) at vm_eval.c:986
 #124 rb_yield (val=<optimized out>) at vm_eval.c:996
 #125 0x000055946cf2113d in rb_ary_each (ary=94095993048320) at array.c:1820
 #126 0x000055946cefb61f in vm_call_cfunc_with_frame (ci=0x5594744d8280, cc=<optimized out>, calling=<optimized out>, reg_cfp=0x7fc7bdc4e590, ec=0x55946da519c8) at vm_insnhelper.c:1928
 #127 vm_call_cfunc (ec=0x55946da519c8, reg_cfp=0x7fc7bdc4e590, calling=<optimized out>, ci=0x5594744d8280, cc=<optimized out>) at vm_insnhelper.c:1944
 #128 0x000055946cf03ea3 in vm_call_method (ec=0x55946da519c8, cfp=0x7fc7bdc4e590, calling=<optimized out>, ci=<optimized out>, cc=<optimized out>) at vm_insnhelper.c:2417
 #129 0x000055946cf0cb05 in vm_exec_core (ec=ec@entry=0x55946da519c8, initial=initial@entry=0) at /tmp/ruby-build.20180216151216.13740/ruby-trunk/insns.def:716
 #130 0x000055946cf02f4c in vm_exec (ec=ec@entry=0x55946da519c8) at vm.c:1804
 #131 0x000055946cf035fc in invoke_block (captured=0x7ffd6f6cc8e0, opt_pc=<optimized out>, type=<optimized out>, cref=0x559474604128, self=94096096426480, iseq=0x5594745027e8, ec=0x55946da519c8) at vm.c:1005
 #132 invoke_iseq_block_from_c (ec=0x55946da519c8, captured=0x7ffd6f6cc8e0, self=94096096426480, argc=<optimized out>, argv=<optimized out>, passed_block_handler=0, cref=0x559474604128, is_lambda=0) at vm.c:1057
 #133 0x000055946cf04520 in invoke_block_from_c_bh (ec=ec@entry=0x55946da519c8, block_handler=<optimized out>, argc=argc@entry=1, argv=argv@entry=0x7fc7bdb4f7f8, cref=<optimized out>, is_lambda=<optimized out>, is_lambda@entry=0, force_blockarg=0, passed_block_handler=0) at vm.c:1075
 #134 0x000055946cf04958 in vm_yield_with_cref (is_lambda=0, cref=<optimized out>, argv=0x7fc7bdb4f7f8, argc=1, ec=0x55946da519c8) at vm.c:1112
 #135 yield_under (under=94096093646040, self=<optimized out>, argc=1, argv=0x7fc7bdb4f7f8) at vm_eval.c:1572
 #136 0x000055946cefb61f in vm_call_cfunc_with_frame (ci=0x55946e5cd230, cc=<optimized out>, calling=<optimized out>, reg_cfp=0x7fc7bdc4e600, ec=0x55946da519c8) at vm_insnhelper.c:1928
 #137 vm_call_cfunc (ec=0x55946da519c8, reg_cfp=0x7fc7bdc4e600, calling=<optimized out>, ci=0x55946e5cd230, cc=<optimized out>) at vm_insnhelper.c:1944
 #138 0x000055946cf0cb05 in vm_exec_core (ec=ec@entry=0x55946da519c8, initial=initial@entry=0) at /tmp/ruby-build.20180216151216.13740/ruby-trunk/insns.def:716
 #139 0x000055946cf02f4c in vm_exec (ec=ec@entry=0x55946da519c8) at vm.c:1804
 #140 0x000055946cf035fc in invoke_block (captured=0x5594744c4fb0, opt_pc=<optimized out>, type=<optimized out>, cref=0x0, self=94095990659320, iseq=0x55946e192aa0, ec=0x55946da519c8) at vm.c:1005
 #141 invoke_iseq_block_from_c (ec=0x55946da519c8, captured=0x5594744c4fb0, self=94095990659320, argc=<optimized out>, argv=<optimized out>, passed_block_handler=0, cref=0x0, is_lambda=0) at vm.c:1057
 #142 0x000055946cf04699 in invoke_block_from_c_bh (argc=<optimized out>, passed_block_handler=<optimized out>, cref=<optimized out>, is_lambda=<optimized out>, force_blockarg=<optimized out>, argv=<optimized out>, block_handler=<optimized out>, ec=<optimized out>) at vm.c:1075
 #143 vm_yield (argc=1, argv=0x7ffd6f6ccdc8, ec=<optimized out>) at vm.c:1120
 #144 rb_yield_0 (argv=0x7ffd6f6ccdc8, argc=1) at vm_eval.c:980
 #145 rb_yield_1 (val=94096094867920) at vm_eval.c:986
 #146 rb_yield (val=<optimized out>) at vm_eval.c:996
 #147 0x000055946cf2113d in rb_ary_each (ary=94096094867160) at array.c:1820
 #148 0x000055946cf06829 in vm_call0_cfunc_with_frame (ci=0x7ffd6f6cce00, cc=0x7ffd6f6cce70, argv=0x7fc7bdb4f6b8, calling=0x7ffd6f6cce50, ec=0x55946da519c8) at vm_eval.c:87
 #149 vm_call0_cfunc (argv=0x7fc7bdb4f6b8, cc=0x7ffd6f6cce70, ci=0x7ffd6f6cce00, calling=0x7ffd6f6cce50, ec=0x55946da519c8) at vm_eval.c:102
 #150 vm_call0_body (ec=0x55946da519c8, calling=calling@entry=0x7ffd6f6ccec0, ci=ci@entry=0x7ffd6f6cceb0, cc=cc@entry=0x7ffd6f6ccee0, argv=0x7fc7bdb4f6b8) at vm_eval.c:133
 #151 0x000055946cf06c50 in vm_call0 (me=<optimized out>, argv=<optimized out>, argc=<optimized out>, id=<optimized out>, recv=<optimized out>, ec=<optimized out>) at vm_eval.c:60
 #152 rb_vm_call (ec=<optimized out>, recv=<optimized out>, id=<optimized out>, argc=<optimized out>, argv=<optimized out>, me=<optimized out>) at vm_eval.c:209
 #153 0x000055946cefb61f in vm_call_cfunc_with_frame (ci=0x55946dba2780, cc=<optimized out>, calling=<optimized out>, reg_cfp=0x7fc7bdc4e7c0, ec=0x55946da519c8) at vm_insnhelper.c:1928
 #154 vm_call_cfunc (ec=0x55946da519c8, reg_cfp=0x7fc7bdc4e7c0, calling=<optimized out>, ci=0x55946dba2780, cc=<optimized out>) at vm_insnhelper.c:1944
 #155 0x000055946cf03ea3 in vm_call_method (ec=0x55946da519c8, cfp=0x7fc7bdc4e7c0, calling=<optimized out>, ci=<optimized out>, cc=<optimized out>) at vm_insnhelper.c:2417
 #156 0x000055946cf0cb05 in vm_exec_core (ec=ec@entry=0x55946da519c8, initial=initial@entry=0) at /tmp/ruby-build.20180216151216.13740/ruby-trunk/insns.def:716
 #157 0x000055946cf02f4c in vm_exec (ec=0x55946da519c8) at vm.c:1804
 #158 0x000055946cf118d1 in rb_iseq_eval (iseq=iseq@entry=0x55946dfed3a8) at vm.c:2046
 #159 0x000055946cdd2164 in rb_load_internal0 (ec=ec@entry=0x55946da519c8, fname=fname@entry=94095988939080, wrap=wrap@entry=0) at load.c:611
 #160 0x000055946cdd41f1 in rb_require_internal (fname=94095988939160, fname@entry=94095988939200, safe=0) at load.c:992
 #161 0x000055946cdd4493 in rb_require_safe (safe=<optimized out>, fname=94095988939200) at load.c:1038
 #162 rb_f_require (obj=<optimized out>, fname=94095988939200) at load.c:820
 #163 0x000055946cefb61f in vm_call_cfunc_with_frame (ci=0x55946dffa920, cc=<optimized out>, calling=<optimized out>, reg_cfp=0x7fc7bdc4e948, ec=0x55946da519c8) at vm_insnhelper.c:1928
 #164 vm_call_cfunc (ec=0x55946da519c8, reg_cfp=0x7fc7bdc4e948, calling=<optimized out>, ci=0x55946dffa920, cc=<optimized out>) at vm_insnhelper.c:1944
 #165 0x000055946cf03ea3 in vm_call_method (ec=0x55946da519c8, cfp=0x7fc7bdc4e948, calling=<optimized out>, ci=<optimized out>, cc=<optimized out>) at vm_insnhelper.c:2417
 #166 0x000055946cf0b5c2 in vm_exec_core (ec=ec@entry=0x55946da519c8, initial=initial@entry=0) at /tmp/ruby-build.20180216151216.13740/ruby-trunk/insns.def:779
 #167 0x000055946cf02f4c in vm_exec (ec=0x55946da519c8) at vm.c:1804
 #168 0x000055946cf118d1 in rb_iseq_eval (iseq=iseq@entry=0x55946dfee438) at vm.c:2046
 #169 0x000055946cdd2164 in rb_load_internal0 (ec=ec@entry=0x55946da519c8, fname=fname@entry=94095993039280, wrap=wrap@entry=0) at load.c:611
 #170 0x000055946cdd41f1 in rb_require_internal (fname=fname@entry=94095993043840, safe=0) at load.c:992
 #171 0x000055946cdd4493 in rb_require_safe (safe=<optimized out>, fname=94095993043840) at load.c:1038
 #172 rb_f_require (obj=<optimized out>, fname=94095993043840) at load.c:820
 #173 0x000055946cefb61f in vm_call_cfunc_with_frame (ci=0x55946ea12160, cc=<optimized out>, calling=<optimized out>, reg_cfp=0x7fc7bdc4e9b8, ec=0x55946da519c8) at vm_insnhelper.c:1928
 #174 vm_call_cfunc (ec=0x55946da519c8, reg_cfp=0x7fc7bdc4e9b8, calling=<optimized out>, ci=0x55946ea12160, cc=<optimized out>) at vm_insnhelper.c:1944
 #175 0x000055946cf03ea3 in vm_call_method (ec=0x55946da519c8, cfp=0x7fc7bdc4e9b8, calling=<optimized out>, ci=<optimized out>, cc=<optimized out>) at vm_insnhelper.c:2417
 #176 0x000055946cf0b5c2 in vm_exec_core (ec=ec@entry=0x55946da519c8, initial=initial@entry=0) at /tmp/ruby-build.20180216151216.13740/ruby-trunk/insns.def:779
 #177 0x000055946cf02f4c in vm_exec (ec=0x55946da519c8) at vm.c:1804
 #178 0x000055946cf118d1 in rb_iseq_eval (iseq=iseq@entry=0x55946e3d7c48) at vm.c:2046
 #179 0x000055946cdd2164 in rb_load_internal0 (ec=ec@entry=0x55946da519c8, fname=fname@entry=94095988920840, wrap=<optimized out>) at load.c:611
 #180 0x000055946cdd2850 in rb_load_internal (wrap=0, fname=94095988920840) at load.c:642
 #181 rb_f_load (argc=<optimized out>, argv=<optimized out>) at load.c:710
 #182 0x000055946cefb61f in vm_call_cfunc_with_frame (ci=0x55946e7c96e0, cc=<optimized out>, calling=<optimized out>, reg_cfp=0x7fc7bdc4ea28, ec=0x55946da519c8) at vm_insnhelper.c:1928
 #183 vm_call_cfunc (ec=0x55946da519c8, reg_cfp=0x7fc7bdc4ea28, calling=<optimized out>, ci=0x55946e7c96e0, cc=<optimized out>) at vm_insnhelper.c:1944
 #184 0x000055946cf03ea3 in vm_call_method (ec=0x55946da519c8, cfp=0x7fc7bdc4ea28, calling=<optimized out>, ci=<optimized out>, cc=<optimized out>) at vm_insnhelper.c:2417
 #185 0x000055946cf0b5c2 in vm_exec_core (ec=ec@entry=0x55946da519c8, initial=initial@entry=0) at /tmp/ruby-build.20180216151216.13740/ruby-trunk/insns.def:779
 #186 0x000055946cf02f4c in vm_exec (ec=ec@entry=0x55946da519c8) at vm.c:1804
 #187 0x000055946cf035fc in invoke_block (captured=0x7fc7bdc4eae8, opt_pc=<optimized out>, type=<optimized out>, cref=0x0, self=94095998891400, iseq=0x55946e4dae10, ec=0x55946da519c8) at vm.c:1005
 #188 invoke_iseq_block_from_c (ec=0x55946da519c8, captured=0x7fc7bdc4eae8, self=94095998891400, argc=<optimized out>, argv=<optimized out>, passed_block_handler=0, cref=0x0, is_lambda=0) at vm.c:1057
 #189 0x000055946cf04699 in invoke_block_from_c_bh (argc=<optimized out>, passed_block_handler=<optimized out>, cref=<optimized out>, is_lambda=<optimized out>, force_blockarg=<optimized out>, argv=<optimized out>, block_handler=<optimized out>, ec=<optimized out>) at vm.c:1075
 #190 vm_yield (argc=1, argv=0x7ffd6f6ce8e8, ec=<optimized out>) at vm.c:1120
 #191 rb_yield_0 (argv=0x7ffd6f6ce8e8, argc=1) at vm_eval.c:980
 #192 rb_yield_1 (val=94095988924840) at vm_eval.c:986
 #193 rb_yield (val=<optimized out>) at vm_eval.c:996
 #194 0x000055946cf2113d in rb_ary_each (ary=94095988920960) at array.c:1820
 #195 0x000055946cefb61f in vm_call_cfunc_with_frame (ci=0x55946e421000, cc=<optimized out>, calling=<optimized out>, reg_cfp=0x7fc7bdc4ead0, ec=0x55946da519c8) at vm_insnhelper.c:1928
 #196 vm_call_cfunc (ec=0x55946da519c8, reg_cfp=0x7fc7bdc4ead0, calling=<optimized out>, ci=0x55946e421000, cc=<optimized out>) at vm_insnhelper.c:1944
 #197 0x000055946cf03ea3 in vm_call_method (ec=0x55946da519c8, cfp=0x7fc7bdc4ead0, calling=<optimized out>, ci=<optimized out>, cc=<optimized out>) at vm_insnhelper.c:2417
 #198 0x000055946cf0cb05 in vm_exec_core (ec=ec@entry=0x55946da519c8, initial=initial@entry=0) at /tmp/ruby-build.20180216151216.13740/ruby-trunk/insns.def:716
 #199 0x000055946cf02f4c in vm_exec (ec=0x55946da519c8) at vm.c:1804
 #200 0x000055946cf118d1 in rb_iseq_eval (iseq=iseq@entry=0x55946e35f2c0) at vm.c:2046
 #201 0x000055946cdd2164 in rb_load_internal0 (ec=ec@entry=0x55946da519c8, fname=fname@entry=94095992643280, wrap=<optimized out>) at load.c:611
 #202 0x000055946cdd2850 in rb_load_internal (wrap=0, fname=94095992643280) at load.c:642
 #203 rb_f_load (argc=<optimized out>, argv=<optimized out>) at load.c:710
 #204 0x000055946cefb61f in vm_call_cfunc_with_frame (ci=0x55946e24bb20, cc=<optimized out>, calling=<optimized out>, reg_cfp=0x7fc7bdc4ec58, ec=0x55946da519c8) at vm_insnhelper.c:1928
 #205 vm_call_cfunc (ec=0x55946da519c8, reg_cfp=0x7fc7bdc4ec58, calling=<optimized out>, ci=0x55946e24bb20, cc=<optimized out>) at vm_insnhelper.c:1944
 #206 0x000055946cf03ea3 in vm_call_method (ec=0x55946da519c8, cfp=0x7fc7bdc4ec58, calling=<optimized out>, ci=<optimized out>, cc=<optimized out>) at vm_insnhelper.c:2417
 #207 0x000055946cf0b5c2 in vm_exec_core (ec=ec@entry=0x55946da519c8, initial=initial@entry=0) at /tmp/ruby-build.20180216151216.13740/ruby-trunk/insns.def:779
 #208 0x000055946cf02f4c in vm_exec (ec=0x55946da519c8) at vm.c:1804
 #209 0x000055946cf118d1 in rb_iseq_eval (iseq=iseq@entry=0x55946e3a7390) at vm.c:2046
 #210 0x000055946cdd2164 in rb_load_internal0 (ec=ec@entry=0x55946da519c8, fname=fname@entry=94095993616120, wrap=<optimized out>) at load.c:611
 #211 0x000055946cdd2850 in rb_load_internal (wrap=0, fname=94095993616120) at load.c:642
 #212 rb_f_load (argc=<optimized out>, argv=<optimized out>) at load.c:710
 #213 0x000055946cefb61f in vm_call_cfunc_with_frame (ci=0x55946e6a00d0, cc=<optimized out>, calling=<optimized out>, reg_cfp=0x7fc7bdc4ecc8, ec=0x55946da519c8) at vm_insnhelper.c:1928
 #214 vm_call_cfunc (ec=0x55946da519c8, reg_cfp=0x7fc7bdc4ecc8, calling=<optimized out>, ci=0x55946e6a00d0, cc=<optimized out>) at vm_insnhelper.c:1944
 #215 0x000055946cf03ea3 in vm_call_method (ec=0x55946da519c8, cfp=0x7fc7bdc4ecc8, calling=<optimized out>, ci=<optimized out>, cc=<optimized out>) at vm_insnhelper.c:2417
 #216 0x000055946cf0b5c2 in vm_exec_core (ec=ec@entry=0x55946da519c8, initial=initial@entry=0) at /tmp/ruby-build.20180216151216.13740/ruby-trunk/insns.def:779
 #217 0x000055946cf02f4c in vm_exec (ec=0x55946da519c8) at vm.c:1804
 #218 0x000055946cf118d1 in rb_iseq_eval (iseq=iseq@entry=0x55946e470100) at vm.c:2046
 #219 0x000055946cdd2164 in rb_load_internal0 (ec=ec@entry=0x55946da519c8, fname=fname@entry=94095993672200, wrap=<optimized out>) at load.c:611
 #220 0x000055946cdd2850 in rb_load_internal (wrap=0, fname=94095993672200) at load.c:642
 #221 rb_f_load (argc=<optimized out>, argv=<optimized out>) at load.c:710
 #222 0x000055946cefb61f in vm_call_cfunc_with_frame (ci=0x55946e3306a0, cc=<optimized out>, calling=<optimized out>, reg_cfp=0x7fc7bdc4efa0, ec=0x55946da519c8) at vm_insnhelper.c:1928
 #223 vm_call_cfunc (ec=0x55946da519c8, reg_cfp=0x7fc7bdc4efa0, calling=<optimized out>, ci=0x55946e3306a0, cc=<optimized out>) at vm_insnhelper.c:1944
 #224 0x000055946cf03ea3 in vm_call_method (ec=0x55946da519c8, cfp=0x7fc7bdc4efa0, calling=<optimized out>, ci=<optimized out>, cc=<optimized out>) at vm_insnhelper.c:2417
 #225 0x000055946cf0b5c2 in vm_exec_core (ec=ec@entry=0x55946da519c8, initial=initial@entry=0) at /tmp/ruby-build.20180216151216.13740/ruby-trunk/insns.def:779
 #226 0x000055946cf02f4c in vm_exec (ec=0x55946da519c8) at vm.c:1804
 #227 0x000055946cf119d5 in rb_iseq_eval_main (iseq=iseq@entry=0x55946e4bbba0) at vm.c:2057
 #228 0x000055946cd83d54 in ruby_exec_internal (n=0x55946e4bbba0) at eval.c:247
 #229 0x000055946cd87fdf in ruby_exec_node (n=0x55946e4bbba0) at eval.c:311
 #230 ruby_run_node (n=<optimized out>) at eval.c:303
 #231 0x000055946cd831bf in main (argc=22, argv=0x7ffd6f6d0148) at ./main.c:42
------------------------------------------------------------------------
r62432 | nobu | 2018-02-16 23:35:06 +0900 (Fri, 16 Feb 2018) | 4 lines

ruby_check_va_copy.m4: for cross compiling

* tool/m4/ruby_check_va_copy.m4 (RUBY_CHECK_VA_COPY): use
  AC_TRY_LINK instead of AC_TRY_RUN for cross compiling.
------------------------------------------------------------------------
r62431 | shyouhei | 2018-02-16 17:51:23 +0900 (Fri, 16 Feb 2018) | 2 lines

add NEWS entry for VM generator renewal [ci skip]

------------------------------------------------------------------------
r62430 | shyouhei | 2018-02-16 17:49:09 +0900 (Fri, 16 Feb 2018) | 2 lines

add casts (cosmetic; just be explicit)

------------------------------------------------------------------------
r62429 | nobu | 2018-02-16 17:39:48 +0900 (Fri, 16 Feb 2018) | 3 lines

no ID cache in Init functions

Init functions are called only once, cache is useless.
------------------------------------------------------------------------
r62424 | hsbt | 2018-02-16 17:08:52 +0900 (Fri, 16 Feb 2018) | 3 lines

Fixed tempfile leak.

From: SHIBATA Hiroshi <hsbt@ruby-lang.org>
------------------------------------------------------------------------
r62423 | svn | 2018-02-16 17:08:07 +0900 (Fri, 16 Feb 2018) | 1 line

* remove trailing spaces.
------------------------------------------------------------------------
r62422 | hsbt | 2018-02-16 17:08:06 +0900 (Fri, 16 Feb 2018) | 5 lines

Merge RubyGems 2.7.6 from upstream.

  It fixed some security vulnerabilities.

  http://blog.rubygems.org/2018/02/15/2.7.6-released.html
------------------------------------------------------------------------
r62419 | shyouhei | 2018-02-16 11:10:52 +0900 (Fri, 16 Feb 2018) | 2 lines

non-constant aggregate initializer is a C99ism

------------------------------------------------------------------------
r62418 | nobu | 2018-02-16 10:15:35 +0900 (Fri, 16 Feb 2018) | 4 lines

compile.c: keep debug info

* compile.c (iseq_peephole_optimize): keep freezestring insn
  with debug info.  [Bug #14475]
------------------------------------------------------------------------
r62417 | nobu | 2018-02-16 09:54:50 +0900 (Fri, 16 Feb 2018) | 1 line

test_rubyoptions.rb: assert_same to check identity
------------------------------------------------------------------------
r62416 | svn | 2018-02-16 09:49:47 +0900 (Fri, 16 Feb 2018) | 1 line

* 2018-02-16
------------------------------------------------------------------------
r62415 | nobu | 2018-02-16 09:49:46 +0900 (Fri, 16 Feb 2018) | 1 line

test_rubyoptions.rb: show code in failure messages
------------------------------------------------------------------------
r62414 | knu | 2018-02-15 20:16:51 +0900 (Thu, 15 Feb 2018) | 14 lines

Avoid using `@` in macro substitution that confuses FreeBSD make

```
making mjit_config.h
make: Unknown modifier ' '
make: Unclosed variable specification (expecting ')') for "Q" (value "") modifier
/bin/sh: Syntax error: end of file unexpected (expecting "}")
*** Error code 2

Stop.
```

The at sign probably conflicts the `:@temp@string@` modifier syntax
supported by FreeBSD make.
------------------------------------------------------------------------
r62413 | nobu | 2018-02-15 19:00:57 +0900 (Thu, 15 Feb 2018) | 4 lines

Array#values_at optimization

* array.c (rb_ary_values_at): optimization range argument case.
  bulk concatenation than pushing for each element.
------------------------------------------------------------------------
r62412 | nobu | 2018-02-15 15:14:42 +0900 (Thu, 15 Feb 2018) | 1 line

Benchmarks for Array#values_at
------------------------------------------------------------------------
r62411 | mame | 2018-02-15 14:34:20 +0900 (Thu, 15 Feb 2018) | 3 lines

test/io/console/test_io_console.rb (test_oflush): Avoid race condition

Add a ad-hoc wait.  Follows test_ioflush2.
------------------------------------------------------------------------
r62410 | mame | 2018-02-15 10:59:17 +0900 (Thu, 15 Feb 2018) | 4 lines

gc.c: force STACK_GROW_DIRECTION for emscripten

The configure script fails to guess the direction on emscripten.
Perhaps this is because of https://github.com/kripken/emscripten/issues/2093
------------------------------------------------------------------------
r62409 | mame | 2018-02-15 10:59:16 +0900 (Thu, 15 Feb 2018) | 3 lines

thread_pthread.c: Use `getpagesize()` when `pthread_attr_getguardsize` is unavailable

This is also for emscripten.
------------------------------------------------------------------------
r62408 | mame | 2018-02-15 10:59:15 +0900 (Thu, 15 Feb 2018) | 4 lines

configure.ac: Use `pthread_create` to determine if pthread is available

Instead of `pthread_kill`.  This is because emscripten supports
`pthread_create` but not `pthread_kill`.
------------------------------------------------------------------------
r62407 | normal | 2018-02-15 07:35:13 +0900 (Thu, 15 Feb 2018) | 7 lines

compile.c: drop freezestring insn on String#-@

Followup to r62039 and remove the redundant freezestring
insn which was preventing deduplication from String#-@

* compile.c (iseq_peephole_optimize): drop freezestring insn on String#-@
  [ruby-core:85542] [Bug #14475]
------------------------------------------------------------------------
r62406 | normal | 2018-02-15 07:35:08 +0900 (Thu, 15 Feb 2018) | 3 lines

test/ruby/test_optimization.rb: fix compile kwarg

Fixes: r62177 ("compile.c: fix string Range optimization with FSL")
------------------------------------------------------------------------
r62405 | svn | 2018-02-15 03:38:34 +0900 (Thu, 15 Feb 2018) | 1 line

* 2018-02-15
------------------------------------------------------------------------
r62404 | tenderlove | 2018-02-15 03:38:33 +0900 (Thu, 15 Feb 2018) | 9 lines

load.c: reduce memory usage of loaded_features_index

Use integer hashsum instead of string as a key in loaded_features_index.
Do not use ruby strings for substring operation, just plain pointer
and length.

[ruby-core:53688]

Co-authored-by: Sokolov Yura aka funny_falcon <funny.falcon@gmail.com>
------------------------------------------------------------------------
r62403 | k0kubun | 2018-02-14 23:09:32 +0900 (Wed, 14 Feb 2018) | 8 lines

appveyor.yml: refactor r62402

We have good feature to share common configuration between branches:
https://www.appveyor.com/docs/branches/#sharing-common-configuration-between-branches
Let's try this.

By the way, the intention of r62402 was excluding PR notifications while
it wasn't written in the commit message.
------------------------------------------------------------------------
r62402 | k0kubun | 2018-02-14 21:34:49 +0900 (Wed, 14 Feb 2018) | 8 lines

appveyor.yml: notify slack only for trunk

Using conditional build configuration.
https://www.appveyor.com/docs/branches/#conditional-build-configuration

This copy-pasting is so ugly, but AppVeyor doesn't have a feature to
filter notification based on branch.
https://github.com/appveyor/ci/issues/272
------------------------------------------------------------------------
r62401 | nobu | 2018-02-14 14:11:02 +0900 (Wed, 14 Feb 2018) | 6 lines

mjit.h: compare as pointer

* mjit.c (mjit_get_iseq_func), mjit.h (mjit_exec): do not compare
  a pointer as shorter type.  by loosing the precision, different
  values can result in "equal" wrongly.  enum type is an alias of
  `int`, and is often shorter than a pointer type nowadays.
------------------------------------------------------------------------
r62400 | ko1 | 2018-02-14 10:50:59 +0900 (Wed, 14 Feb 2018) | 1 line

skip "TestException#test_thread_signal_location" as a known bug [Bug #14474]
------------------------------------------------------------------------
r62399 | svn | 2018-02-14 00:58:39 +0900 (Wed, 14 Feb 2018) | 1 line

* 2018-02-14
------------------------------------------------------------------------
r62398 | k0kubun | 2018-02-14 00:58:38 +0900 (Wed, 14 Feb 2018) | 138 lines

mjit_compile.inc.erb: replace opt_key insn

with opt_send_without_block insn if call cache has valid ISeq.
If the receiver is not optimized target of opt_key (i.e. Hash or Array),
it triggers JIT cancel and it would be slow.

This change allows JIT to drop the check for Hash/Array and continue to
execute JIT even if the receiver is not Hash or Array.

See the following benchmark results. It's not improved so much, but it
would be effective when we achieve Ruby method inlining in
_mjit_compile_send.erb.

* Micro benchmark

Given the following bench.rb,

```
class HashWithIndifferentAccess < Hash
  def []=(key, value)
    super(key.to_s, value)
  end

  def [](key)
    super(key.to_s)
  end
end

indhash = HashWithIndifferentAccess.new
indhash[:foo] = 'bar'
key = 'foo'

100000000.times do
  indhash[key]
end
```

** before

```
$ time ./ruby --disable-gems --jit-verbose=1 /tmp/bench.rb
JIT success (31.4ms): block in <main>@/tmp/bench.rb:15 -> /tmp/_ruby_mjit_p18206u0.c
JIT success (669.3ms): []@/tmp/bench.rb:6 -> /tmp/_ruby_mjit_p18206u1.c
Successful MJIT finish
./ruby --disable-gems --jit-verbose=1 /tmp/bench.rb  12.21s user 0.04s system 107% cpu 11.394 total
```

** after

```
$ time ./ruby --disable-gems --jit-verbose=1 /tmp/bench.rb
JIT success (41.0ms): block in <main>@/tmp/bench.rb:15 -> /tmp/_ruby_mjit_p17293u0.c
JIT success (679.0ms): []@/tmp/bench.rb:6 -> /tmp/_ruby_mjit_p17293u1.c
Successful MJIT finish
./ruby --disable-gems --jit-verbose=1 /tmp/bench.rb  11.54s user 0.06s system 108% cpu 10.726 total
```

The execution time is shortened.

* optcarrot benchmark

Optcarrot has no room to be improved by this change. Almost nothing is changed.

fps: 59.54 (before) -> 59.51 (after)

* discourse benchmark

I expected this to be improved a little, but it isn't too.

** before (JIT)

```
categories_admin:
  50: 12
  75: 13
  90: 14
  99: 22
home_admin:
  50: 12
  75: 13
  90: 16
  99: 22
topic_admin:
  50: 12
  75: 13
  90: 15
  99: 21
categories:
  50: 18
  75: 19
  90: 23
  99: 27
home:
  50: 3
  75: 4
  90: 4
  99: 12
topic:
  50: 11
  75: 11
  90: 14
  99: 20
```

** after (JIT)

```
categories_admin:
  50: 12
  75: 12
  90: 16
  99: 24
home_admin:
  50: 12
  75: 12
  90: 14
  99: 21
topic_admin:
  50: 12
  75: 13
  90: 16
  99: 21
categories:
  50: 17
  75: 18
  90: 23
  99: 32
home:
  50: 3
  75: 4
  90: 4
  99: 10
topic:
  50: 11
  75: 12
  90: 13
  99: 20
```
------------------------------------------------------------------------
r62397 | nobu | 2018-02-13 22:29:57 +0900 (Tue, 13 Feb 2018) | 8 lines

Fixing some minimal formating on enum.c examples

This will fix the formatting shown on detect|find and revese_arch
generated by RDoc.

[Fix GH-1816]

From: Espartaco Palma <esparta@gmail.com>
------------------------------------------------------------------------
r62396 | normal | 2018-02-13 19:02:07 +0900 (Tue, 13 Feb 2018) | 35 lines

st.c: retry operations if rebuilt

Calling the .eql? and .hash methods during a Hash operation can
result in a thread switch or a signal handler to run: allowing
one execution context to rebuild the hash table while another is
still reading or writing the table.  This results in a
use-after-free bug affecting the thread_safe-0.3.6 test suite
and likely other bugs.

This bug did not affect users of commonly keys (String, Symbol,
Fixnum) as those are optimized to avoid method dispatch
for .eql? and .hash methods.

A separate version of this change needs to be ported to Ruby 2.3.x
which had a different implementation of st.c but was affected
by the same bug.

* st.c: Add comment about table rebuilding during comparison.
  (DO_PTR_EQUAL_CHECK): New macro.
  (REBUILT_TABLE_ENTRY_IND, REBUILT_TABLE_BIN_IND): New macros.
  (find_entry, find_table_entry_ind, find_table_bin_ind): Use new
  macros.  Return the rebuild flag.
  (find_table_bin_ptr_and_reserve): Ditto.
  (st_lookup, st_get_key, st_insert, st_insert2): Retry the
  operation if the table was rebuilt.
  (st_general_delete, st_shift, st_update, st_general_foreach):
  Ditto.
  (st_rehash_linear, st_rehash_indexed): Use DO_PTR_EQUAL_CHECK.
  Return the rebuild flag.
  (st_rehash): Retry the operation if the table was rebuilt.
  [ruby-core:85510] [Ruby trunk Bug#14357]

Thanks to Vit Ondruch for reporting the bug.

From: Vladimir Makarov <vmakarov@redhat.com>
------------------------------------------------------------------------
r62395 | nobu | 2018-02-13 18:36:35 +0900 (Tue, 13 Feb 2018) | 5 lines

variable.c: flags at autoloading

* variable.c (const_tbl_update): flags by deprecate_constant /
  private_constant set during autoloading should be preserved
  after required.  [ruby-core:85516] [Bug #14469]
------------------------------------------------------------------------
r62394 | nobu | 2018-02-13 18:34:43 +0900 (Tue, 13 Feb 2018) | 7 lines

vm_insnhelper.c: rb_autoloading_value flag

* vm_insnhelper.c (vm_get_ev_const): add flag argument of
  `rb_autoloading_value`.

* constant.h (rb_autoloading_value): moved the declaration from
  vm_core.h for `rb_const_flag_t`.  [ruby-core:85516] [Bug #14469]
------------------------------------------------------------------------
r62393 | usa | 2018-02-13 18:34:37 +0900 (Tue, 13 Feb 2018) | 5 lines

revert r62392

check the declaration of `rb_autoloading_value()` in vm_core.h and the call in
vm_insnhelper.c, and retry it.

------------------------------------------------------------------------
r62392 | nobu | 2018-02-13 18:11:02 +0900 (Tue, 13 Feb 2018) | 5 lines

variable.c: flags at autoloading

* variable.c (const_tbl_update): flags by deprecate_constant /
  private_constant set during autoloading should be preserved
  after required.  [ruby-core:85516] [Bug #14469]
------------------------------------------------------------------------
r62391 | mame | 2018-02-13 16:42:51 +0900 (Tue, 13 Feb 2018) | 1 line

process.c (try_with_sh): fix the wrong number of arguments
------------------------------------------------------------------------
r62390 | kazu | 2018-02-13 09:03:18 +0900 (Tue, 13 Feb 2018) | 1 line

xmalloc never returns NULL
------------------------------------------------------------------------
r62389 | svn | 2018-02-13 00:25:59 +0900 (Tue, 13 Feb 2018) | 1 line

* 2018-02-13
------------------------------------------------------------------------
r62388 | k0kubun | 2018-02-13 00:25:58 +0900 (Tue, 13 Feb 2018) | 18 lines

vm_insnhelper.c: inline array aref with integer

internal.h: define inlinable rb_ary_entry_internal.

array.c: use rb_ary_entry_internal.

* Benchmark
ruby --jit mame/optcarrot/bin/optcarrot --benchmark mame/optcarrot/examples/Lan_Master.nes

** Before

checksum: 59662
fps: 58.095175012159686

** After

fps: 59.874751599221526
checksum: 59662
------------------------------------------------------------------------
r62387 | k0kubun | 2018-02-12 18:05:12 +0900 (Mon, 12 Feb 2018) | 3 lines

insns.def: remove unnecessary sp motion

This seems obsoleted after r62087.
------------------------------------------------------------------------
r62386 | nobu | 2018-02-12 18:02:30 +0900 (Mon, 12 Feb 2018) | 1 line

use <<- instead of <<~ for older baseruby
------------------------------------------------------------------------
r62385 | k0kubun | 2018-02-12 17:09:25 +0900 (Mon, 12 Feb 2018) | 3 lines

Makefile.in: drop obsoleted debug output

mjit_config.h errors are already fixed.
------------------------------------------------------------------------
r62384 | k0kubun | 2018-02-12 16:27:48 +0900 (Mon, 12 Feb 2018) | 8 lines

_mjit_compile_insn_body.erb: refactor

renamed from tool/ruby_vm/views/_mjit_compile_insn_line.erb.
Basically this file should handle everything about macro on JIT.

_mjit_compile_insn.erb: follow the refactoring

common.mk: follow the rename
------------------------------------------------------------------------
r62383 | k0kubun | 2018-02-12 15:54:25 +0900 (Mon, 12 Feb 2018) | 9 lines

_mjit_compile_insn_line.erb: carve out macro expansion

in _mjit_compile_insn.erb to this file. As I'm going to add macro
expansions later, I want to separate such complex things from whole insn
compilation.

_mjit_compile_insn.erb: _mjit_compile_insn_line.erb part was removed.

common.mk: updated build system for them.
------------------------------------------------------------------------
r62382 | k0kubun | 2018-02-12 14:04:24 +0900 (Mon, 12 Feb 2018) | 5 lines

mjit.c: print JIT failure

mjit_compile.inc.erb: show unsupported insn name on --jit-verbose=1 too.
Also, removed osboleted workaround. Now some insn-related functions are
declared with MAYBE_UNUSED.
------------------------------------------------------------------------
r62381 | k0kubun | 2018-02-12 13:35:16 +0900 (Mon, 12 Feb 2018) | 1 line

test_jit.rb: prettify script in message
------------------------------------------------------------------------
r62380 | k0kubun | 2018-02-12 13:00:45 +0900 (Mon, 12 Feb 2018) | 3 lines

test_jit.rb: explicitly skip for unsupported ones

MSP-Greg watches this metrics and this would be helpful for him.
------------------------------------------------------------------------
r62379 | nobu | 2018-02-12 12:39:18 +0900 (Mon, 12 Feb 2018) | 5 lines

no --jit-cc

* ruby.c (setup_mjit_options): removed --jit-cc option, since
  mjit header is affected by generated config.h which depends on
  the given compiler, so it cannot work with different compilers.
------------------------------------------------------------------------
r62378 | nobu | 2018-02-12 12:33:00 +0900 (Mon, 12 Feb 2018) | 1 line

test_jit.rb: split test_compile_insns
------------------------------------------------------------------------
r62377 | svn | 2018-02-12 10:00:30 +0900 (Mon, 12 Feb 2018) | 1 line

* 2018-02-12
------------------------------------------------------------------------
r62376 | k0kubun | 2018-02-12 10:00:30 +0900 (Mon, 12 Feb 2018) | 51 lines

mjit_compile.c: fix invalid suffix on MinGW

This commit fixes following error.

$ RUBY_FORCE_TEST_JIT=1 ./ruby -I. -Ilib -Itest/lib --disable-gems test/ruby/test_jit.rb
Run options:

 # Running tests:

Environment variable changed: TestJIT#test_compile_insns : "TEMP" changed : "C:\\msys64\\tmp" -> "C:\\Users\\k0kubun\\AppData\\Local\\Temp"
Environment variable changed: TestJIT#test_compile_insns : "TMP" changed : "C:\\msys64\\tmp" -> "C:\\Users\\k0kubun\\AppData\\Local\\Temp"
Environment variable changed: TestJIT#test_compile_insns : "temp" deleted
Environment variable changed: TestJIT#test_compile_insns : "tmp" deleted

  1) Failure:
TestJIT#test_jit_output [test/ruby/test_jit.rb:360]:
Expected /^JIT success \(\d+\.\dms\): block in <main>@-e:1 -> .+_ruby_mjit_p\d+u\d+\.c$/ to match "C:/Users/k0kubun/AppData/Local/temp/_ruby_mjit_p920u0.c: In function '_mjit0':\n" +
"C:/Users/k0kubun/AppData/Local/temp/_ruby_mjit_p920u0.c:11:61: error: invalid suffix \"CD6900\" on integer constant\n" +
"     static const VALUE *const original_body_iseq = (VALUE *)0000000004CD6900;\n" +
"                                                             ^~~~~~~~~~~~~~~~\n" +
"compilation terminated due to -Wfatal-errors.\n" +
"Successful MJIT finish\n".

  2) Failure:
TestJIT#test_compile_insns [test/ruby/test_jit.rb:19]:
Expected 1 times of JIT success, but succeeded 0 times.

script:
```
p proc { nil rescue true }.call
```

stderr:
```
C:/Users/k0kubun/AppData/Local/temp/_ruby_mjit_p10628u0.c: In function '_mjit0':
C:/Users/k0kubun/AppData/Local/temp/_ruby_mjit_p10628u0.c:11:61: error: invalid suffix "D05F10" on integer constant
     static const VALUE *const original_body_iseq = (VALUE *)0000000004D05F10;
                                                             ^~~~~~~~~~~~~~~~
compilation terminated due to -Wfatal-errors.
Successful MJIT finish

```

.
<1> expected but was
<0>.

Finished tests in 3.028989s, 0.6603 tests/s, 1.9809 assertions/s.
2 tests, 6 assertions, 2 failures, 0 errors, 0 skips

ruby -v: ruby 2.6.0dev (2018-02-11 trunk 62375) [x64-mingw32]
------------------------------------------------------------------------
r62375 | k0kubun | 2018-02-11 23:38:54 +0900 (Sun, 11 Feb 2018) | 15 lines

Makefile.in: prevent from building `"",` macro

Loop removal in r62373 caused the CI failure like:
https://travis-ci.org/ruby/ruby/builds/340136977

mjit_config.h was:
  #ifndef RUBY_MJIT_CONFIG_H
  #define RUBY_MJIT_CONFIG_H 1
  #define MJIT_CC_COMMON  "gcc",
  #define MJIT_CFLAGS  "-w",
  #define MJIT_OPTFLAGS  "-O3",
  #define MJIT_DEBUGFLAGS  "-ggdb3",
  #define MJIT_LDSHARED  "gcc", "-shared",
  #define MJIT_DLDFLAGS  "",
  #endif /* RUBY_MJIT_CONFIG_H */
------------------------------------------------------------------------
r62374 | k0kubun | 2018-02-11 23:18:38 +0900 (Sun, 11 Feb 2018) | 3 lines

Makefile.in: debug mjit_config.h again

Somehow r62373 is failing on travis...
------------------------------------------------------------------------
r62373 | nobu | 2018-02-11 23:01:52 +0900 (Sun, 11 Feb 2018) | 4 lines

Makefile.in: use "%s"

* Makefile.in (mjit_config.h): use "%s" not to interprete % in
  arguments.  and `set` and `loop` are not needed.
------------------------------------------------------------------------
r62372 | k0kubun | 2018-02-11 22:46:54 +0900 (Sun, 11 Feb 2018) | 4 lines

Makefile.in: use printf

`echo -n` is sometimes not available.
https://rubyci.org/logs/rubyci.s3.amazonaws.com/unstable11s/ruby-trunk/log/20180211T132503Z.log.html.gz#miniruby
------------------------------------------------------------------------
r62371 | k0kubun | 2018-02-11 21:50:23 +0900 (Sun, 11 Feb 2018) | 7 lines

Makefile.in: define macro in one line

Having macro definition in multiple definitions makes compiler error
output hard to read, like the commit message of r62367.

Probably build failures will be fixed by r62370, but let me simplify the
mjit_config.h content for future debugging.
------------------------------------------------------------------------
r62370 | nobu | 2018-02-11 21:40:28 +0900 (Sun, 11 Feb 2018) | 1 line

mjit_config.h: moved backslashs outside quotes
------------------------------------------------------------------------
r62369 | k0kubun | 2018-02-11 21:28:10 +0900 (Sun, 11 Feb 2018) | 5 lines

mjit.c: some flags are no longer for GCC

Obviously they are for clang. For simplicity, just inlined them.

Also another obsoleted commant was removed.
------------------------------------------------------------------------
r62368 | k0kubun | 2018-02-11 21:21:13 +0900 (Sun, 11 Feb 2018) | 20 lines

_mjit_compile_send.erb: resolve warnings on clang

/var/folders/tp/g1f_46nj7md_d5_j799rfb140000gn/T//_ruby_mjit_p17396u162.c:2920:143: warning: incompatible integer
      to pointer conversion passing 'long' to parameter of type 'const VALUE *' (aka 'const unsigned long *')
      [-Wint-conversion]
  ...| VM_ENV_FLAG_LOCAL, calling.recv, calling.block_handler, 0x7fc14ceee660, 0x7fc14c870c00, argv + 0, 2, 3);
                                                                               ^~~~~~~~~~~~~~
/Users/k0kubun/.rbenv/versions/ruby-svn/include/ruby-2.6.0/x86_64-darwin16/rb_mjit_min_header-2.6.0.h:21299:21: note:
      passing argument to parameter 'pc' here
       const VALUE *pc,
                    ^
/var/folders/tp/g1f_46nj7md_d5_j799rfb140000gn/T//_ruby_mjit_p17396u162.c:3073:31: warning: incompatible integer
      to pointer conversion passing 'long' to parameter of type 'const rb_iseq_t *' (aka
      'const struct rb_iseq_struct *') [-Wint-conversion]
            vm_push_frame(ec, 0x7fc14c87d290, VM_FRAME_MAGIC_METHOD | VM_ENV_FLAG_LOCAL, calling.recv, ca...
                              ^~~~~~~~~~~~~~
/Users/k0kubun/.rbenv/versions/ruby-svn/include/ruby-2.6.0/x86_64-darwin16/rb_mjit_min_header-2.6.0.h:21294:25: note:
      passing argument to parameter 'iseq' here
       const rb_iseq_t *iseq,
                        ^
------------------------------------------------------------------------
r62367 | k0kubun | 2018-02-11 21:04:48 +0900 (Sun, 11 Feb 2018) | 37 lines

Makefile.in: add output to debug rubyci

build failure.

From current output, I can't know what's wrong from current error log.

https://rubyci.org/logs/rubyci.s3.amazonaws.com/centos7/ruby-trunk/log/20180211T110003Z.log.html.gz#miniruby

compiling mjit.c
mjit.c:573:1: error: stray '\' in program
 static const char *const CC_DEBUG_ARGS[] = {MJIT_DEBUGFLAGS NULL};
 ^
mjit.c:573:1: error: stray '\' in program
mjit.c:574:1: error: stray '\' in program
 static const char *const CC_OPTIMIZE_ARGS[] = {MJIT_OPTFLAGS NULL};
 ^
mjit.c:574:1: error: stray '\' in program
mjit.c:584:5: error: stray '\' in program
     MJIT_CC_COMMON MJIT_CFLAGS GCC_PIC_FLAGS
     ^
mjit.c:584:5: error: stray '\' in program
mjit.c:584:5: error: stray '\' in program
mjit.c:584:5: error: stray '\' in program
mjit.c:588:1: error: stray '\' in program
 static const char *const CC_LDSHARED_ARGS[] = {MJIT_LDSHARED GCC_PIC_FLAGS NULL};
 ^
mjit.c:588:1: error: stray '\' in program
mjit.c:588:1: error: stray '\' in program
mjit.c:589:1: error: stray '\' in program
 static const char *const CC_DLDFLAGS_ARGS[] = {MJIT_DLDFLAGS NULL};
 ^
cc1: warning: unrecognized command line option "-Wno-self-assign" [enabled by default]
cc1: warning: unrecognized command line option "-Wno-constant-logical-operand" [enabled by default]
cc1: warning: unrecognized command line option "-Wno-parentheses-equality" [enabled by default]
cc1: warning: unrecognized command line option "-Wno-tautological-compare" [enabled by default]
gmake: *** [mjit.o] Error 1
exit 2
------------------------------------------------------------------------
r62366 | nobu | 2018-02-11 18:00:44 +0900 (Sun, 11 Feb 2018) | 1 line

win32/Makefile.sub: fix typo, missing comma
------------------------------------------------------------------------
r62365 | nobu | 2018-02-11 17:57:22 +0900 (Sun, 11 Feb 2018) | 1 line

mjit.c: alwasy -fPIC flag to gcc
------------------------------------------------------------------------
r62364 | k0kubun | 2018-02-11 16:35:48 +0900 (Sun, 11 Feb 2018) | 3 lines

appveyor.yml: finish notification test

Now it succeeds to notify. Notifying all CI success would be noisy.
------------------------------------------------------------------------
r62363 | k0kubun | 2018-02-11 16:28:03 +0900 (Sun, 11 Feb 2018) | 4 lines

appveyor.yml: encrypt config with ruby's account

Currently it's encrypted with k0kubun's account and the notification is
failing.
------------------------------------------------------------------------
r62362 | nobu | 2018-02-11 16:10:37 +0900 (Sun, 11 Feb 2018) | 1 line

mjit_config.h: include trailing comma for empty list
------------------------------------------------------------------------
r62361 | k0kubun | 2018-02-11 15:33:45 +0900 (Sun, 11 Feb 2018) | 4 lines

.travis.yml: resurrect notification to #commits

I heard at least Shibata-san sees the channel for the notification.
But I want #alets to have all CI failure notifications too.
------------------------------------------------------------------------
r62360 | k0kubun | 2018-02-11 15:03:21 +0900 (Sun, 11 Feb 2018) | 1 line

appveyor.yml: send AppVeyor slack notification
------------------------------------------------------------------------
r62359 | k0kubun | 2018-02-11 14:49:37 +0900 (Sun, 11 Feb 2018) | 3 lines

.travis.yml: send notification to #alerts

instead of #commits.
------------------------------------------------------------------------
r62358 | k0kubun | 2018-02-11 14:32:17 +0900 (Sun, 11 Feb 2018) | 1 line

NEWS: note about --jit [ci skip]
------------------------------------------------------------------------
r62357 | k0kubun | 2018-02-11 14:29:13 +0900 (Sun, 11 Feb 2018) | 3 lines

common.mk: add comments about r62355 [ci skip]

transform_mjit_header.rb: ditto
------------------------------------------------------------------------
r62356 | nobu | 2018-02-11 13:54:15 +0900 (Sun, 11 Feb 2018) | 6 lines

mjit_config.h: more macros

* Makefie.in, win32/Makefile.sub: add more macros for compiler to
  mjit_config.h.

* mjit.c: unification VC and GCC in progress.
------------------------------------------------------------------------
r62355 | k0kubun | 2018-02-11 13:20:32 +0900 (Sun, 11 Feb 2018) | 13 lines

common.mk: define MJIT_HEADER earlier

so that other predefined macros won't be removed by
`MJITHeader.remove_predefined_macros!`.

Currently macro like -DVM_CHECK_MODE=2 is removed when it's passed in
configure. But it is needed during JIT compilation.

gc.c: export rb_obj_info to let JIT succeed with VM_CHECK_MODE=2.

```
MJIT warning: failure in loading code from '/tmp/_ruby_mjit_p15631u0.so': /tmp/_ruby_mjit_p15631u0.so: undefined symbol: rb_obj_info
```
------------------------------------------------------------------------
r62354 | nobu | 2018-02-11 11:41:50 +0900 (Sun, 11 Feb 2018) | 4 lines

_mjit_compile_insn.erb: comment_id

* tool/ruby_vm/views/_mjit_compile_insn.erb: comment ID of
  constant, calling method, and Symbol literal.
------------------------------------------------------------------------
r62353 | nobu | 2018-02-11 11:41:49 +0900 (Sun, 11 Feb 2018) | 1 line

_mjit_compile_{insn,send}.erb: suppress warnings
------------------------------------------------------------------------
r62352 | nobu | 2018-02-11 10:01:09 +0900 (Sun, 11 Feb 2018) | 4 lines

Makefile.sub: cpp out for older VC

* win32/Makefile.sub (CPPOUTFLAG, MJIT_HEADER_FLAGS): -Fi option
  is available since VC 10.  redirect stdout on older versions.
------------------------------------------------------------------------
r62351 | nobu | 2018-02-11 09:19:03 +0900 (Sun, 11 Feb 2018) | 5 lines

_mjit_compile_send.erb: PRI_SERIALT_PREFIX

* tool/ruby_vm/views/_mjit_compile_send.erb: `printf` modifier for
  `rb_serial_t` which may not be `long long`, and '%ll' may not be
  supported.
------------------------------------------------------------------------
r62350 | nobu | 2018-02-11 01:54:47 +0900 (Sun, 11 Feb 2018) | 6 lines

insns.def: cache nil const

* insns.def (getinlinecache): Qnil is a valid value as a constant.
  this can be observable when accessing a deprecated constant
  which is nil.  non-nil constant is warned just once for each
  location, but every time if it is nil.
------------------------------------------------------------------------
r62349 | svn | 2018-02-11 01:09:56 +0900 (Sun, 11 Feb 2018) | 1 line

* 2018-02-11
------------------------------------------------------------------------
r62348 | k0kubun | 2018-02-11 01:09:55 +0900 (Sun, 11 Feb 2018) | 5 lines

test_jit.rb: cover most insn compilations

test_compile_insns has only basic tests to improve coverage.

Other severer tests should be added with different names.
------------------------------------------------------------------------
r62347 | nobu | 2018-02-10 19:07:41 +0900 (Sat, 10 Feb 2018) | 1 line

mjit_config.h: show content if verbose
------------------------------------------------------------------------
r62346 | nobu | 2018-02-10 19:07:40 +0900 (Sat, 10 Feb 2018) | 1 line

mjit.c: constified command arguments
------------------------------------------------------------------------
r62345 | nobu | 2018-02-10 15:42:35 +0900 (Sat, 10 Feb 2018) | 1 line

vcs.rb: dryrun: option of GIT::SVN#commit
------------------------------------------------------------------------
r62344 | nobu | 2018-02-10 15:38:18 +0900 (Sat, 10 Feb 2018) | 1 line

select each files for architectures
------------------------------------------------------------------------
r62343 | nobu | 2018-02-10 15:22:38 +0900 (Sat, 10 Feb 2018) | 8 lines

mjit_config.h

* Makefie.in, win32/Makefile.sub: make mjit_config.h from
  configured variables, including necessary options, e.g., `-m32`
  for 32bit binary on 64bit platform.

* mjit.c: always use configured CC command.  as config.h depends
  on the compiler, different compilers cannot work.
------------------------------------------------------------------------
r62342 | ktsj | 2018-02-10 15:02:37 +0900 (Sat, 10 Feb 2018) | 1 line

.gdbinit (print_lineno): support a succinct bitvector implementation [ci skip]
------------------------------------------------------------------------
r62341 | nobu | 2018-02-10 10:55:47 +0900 (Sat, 10 Feb 2018) | 1 line

mjit.c: replaced magic numbers
------------------------------------------------------------------------
r62340 | nobu | 2018-02-10 10:28:51 +0900 (Sat, 10 Feb 2018) | 4 lines

mjit_compile.c: original_body_iseq

* mjit_compile.c (mjit_compile): name the original iseq pointer to
  eliminate magic numbers.
------------------------------------------------------------------------
r62339 | nobu | 2018-02-10 10:23:47 +0900 (Sat, 10 Feb 2018) | 1 line

mjit.c: chomp suffix first
------------------------------------------------------------------------
r62338 | nobu | 2018-02-10 10:07:04 +0900 (Sat, 10 Feb 2018) | 4 lines

mjit.c: binary mode

* mjit.c (convert_unit_to_func): write source code in binary
  mode.  not conversion is needed.
------------------------------------------------------------------------
r62337 | usa | 2018-02-10 00:28:09 +0900 (Sat, 10 Feb 2018) | 6 lines

append_str don't look the length of string

	* mjit.c (compile_c_to_so): use append_str2() and pass the length of
	  so_name.  append_str() uses the size of the 2nd argument, not the
	  length of it.

------------------------------------------------------------------------
r62336 | svn | 2018-02-10 00:21:19 +0900 (Sat, 10 Feb 2018) | 1 line

* 2018-02-10
------------------------------------------------------------------------
r62335 | nobu | 2018-02-10 00:21:19 +0900 (Sat, 10 Feb 2018) | 4 lines

mjit.c: set umask

* mjit.c (start_process): set umask so other users cannot access
  generated files.
------------------------------------------------------------------------
r62334 | nobu | 2018-02-10 00:21:18 +0900 (Sat, 10 Feb 2018) | 4 lines

mjit.c: exclusively create

* mjit.c (convert_unit_to_func): create new file exclusively.
  overwriting existing file could cause security issues.
------------------------------------------------------------------------
r62333 | nobu | 2018-02-09 23:09:58 +0900 (Fri, 09 Feb 2018) | 4 lines

compile.c: popped hash

* compile.c (compile_array): skip creating new hash if preceeding
  elements are popped all.  [ruby-core:85486] [Bug #14459]
------------------------------------------------------------------------
r62332 | k0kubun | 2018-02-09 22:14:17 +0900 (Fri, 09 Feb 2018) | 3 lines

transform_mjit_header.rb: fix typo in r62326

Today's AIX CI failed due to this... :innocent:
------------------------------------------------------------------------
r62331 | nobu | 2018-02-09 12:51:57 +0900 (Fri, 09 Feb 2018) | 5 lines

Makefile.sub: MESSAGE_BEGIN/END redirection

* win32/Makefile.sub (MESSAGE_BEGIN, MESSAGE_END): group the whole
  `for` command, to redirect all lines but not overwrite line by
  line.
------------------------------------------------------------------------
r62330 | nobu | 2018-02-09 12:37:38 +0900 (Fri, 09 Feb 2018) | 3 lines

Makefile.in: removed duplicate SET_LC_MESSAGES

[ci skip]
------------------------------------------------------------------------
r62329 | nobu | 2018-02-09 12:15:21 +0900 (Fri, 09 Feb 2018) | 1 line

debug_counter.h: include __FILE__ to recurse
------------------------------------------------------------------------
r62328 | nobu | 2018-02-09 12:15:20 +0900 (Fri, 09 Feb 2018) | 4 lines

sprintf.c: overflow check

* sprintf.c (ruby_do_vsnprintf): pathologically, get rid of
  negative value when the result length exceeds INT_MAX.
------------------------------------------------------------------------
r62327 | k0kubun | 2018-02-09 09:32:55 +0900 (Fri, 09 Feb 2018) | 7 lines

.travis.yml: force to execute JIT test on Travis

test_jit.rb: with environment variable RUBY_FORCE_TEST_JIT, we can force
to test JIT availability.

I wanted to have such CI, but Travis was the only option which I can
modify easily.
------------------------------------------------------------------------
r62326 | k0kubun | 2018-02-09 09:00:27 +0900 (Fri, 09 Feb 2018) | 7 lines

transform_mjit_header.rb: pass -std=c99 for AIX gcc

I heard `error: conflicting types for 'restrict'` can be solved by
adding `-std=c99`.

Ideally we should use the same cflags which are used to compile vm.c,
but let me try this and see what happens on AIX.
------------------------------------------------------------------------
r62325 | usa | 2018-02-09 03:51:33 +0900 (Fri, 09 Feb 2018) | 8 lines

refoctoring

* mjit.c (compile_c_to_so): refactored.

* mjit.c (init_header_filename): xmalloc never returns NULL.

* mjit.c (init_header_filename): report the filename of the header if failed.

------------------------------------------------------------------------
r62324 | usa | 2018-02-09 03:48:25 +0900 (Fri, 09 Feb 2018) | 4 lines

missing macro definition

* win32/Makefile.sub (RUBY_VERSION_NAME): used in this file but not defined.

------------------------------------------------------------------------
r62323 | nobu | 2018-02-09 00:47:24 +0900 (Fri, 09 Feb 2018) | 1 line

mjit.c: rb_w32_system_tmpdir is not in headers
------------------------------------------------------------------------
r62322 | nobu | 2018-02-09 00:46:11 +0900 (Fri, 09 Feb 2018) | 3 lines

mjit.c: revert r62316 partially

* mjit.c (compile_c_to_so): libs is not constant on Windows.
------------------------------------------------------------------------
r62321 | nobu | 2018-02-09 00:22:54 +0900 (Fri, 09 Feb 2018) | 5 lines

Fix compile error when USE_COPY_FILE_RANGE is defined but not USE_SENDFILE

io.c: Variable and label definition are necessary in both cases.

From: Lars Kanis <lars@greiz-reinsdorf.de>
------------------------------------------------------------------------
r62320 | nobu | 2018-02-09 00:19:32 +0900 (Fri, 09 Feb 2018) | 6 lines

MJIT header for multiarch

* configure.ac: MJIT_HEADER_INSTALL_DIR to rubyarchhdrdir to
  support multiarch.

* Makefile.in (MJIT_HEADER_INSTALL_DIR): configured by multiarch.
------------------------------------------------------------------------
r62319 | nobu | 2018-02-09 00:19:01 +0900 (Fri, 09 Feb 2018) | 1 line

mkconfig.rb: hide MJIT configurations
------------------------------------------------------------------------
r62318 | nobu | 2018-02-09 00:00:28 +0900 (Fri, 09 Feb 2018) | 5 lines

mjit.c: ruby_version from version.c

* mjit.c (init_header_filename): get version name from the
  particular global variable, not from the macro in version.h.
  to get rid of re-compilation for each revision.
------------------------------------------------------------------------
r62317 | svn | 2018-02-09 00:00:28 +0900 (Fri, 09 Feb 2018) | 1 line

* 2018-02-09
------------------------------------------------------------------------
r62316 | nobu | 2018-02-09 00:00:27 +0900 (Fri, 09 Feb 2018) | 4 lines

mjit.c: argument arrays

* mjit.c (compile_c_to_so): constified constat array and make
  variable arrays local.
------------------------------------------------------------------------
r62315 | nobu | 2018-02-08 23:59:31 +0900 (Thu, 08 Feb 2018) | 1 line

gmake.mk: tool/ifchange needs miniruby
------------------------------------------------------------------------
r62314 | k0kubun | 2018-02-08 22:56:32 +0900 (Thu, 08 Feb 2018) | 7 lines

test_jit.rb: don't force to test --jit-wait

for platforms which can't use JIT. Such platforms can time out with
eval_with_jit.

http://ci.rvm.jp/results/trunk_gcc5@silicon-docker/509911
http://ci.rvm.jp/results/trunk_gcc4@silicon-docker/509904
------------------------------------------------------------------------
r62313 | k0kubun | 2018-02-08 22:54:37 +0900 (Thu, 08 Feb 2018) | 12 lines

Export some missing symbols for MJIT

tool/ruby_vm/views/_insn_name_info.erb: on Linux, rb_vm_insn_name_offset
was needed to compile with --jit-debug (Usually --jit-debug requires
more symbols than the situation without --jit-debug because -O2 skips
some functions to compile).

vm.c: when running transform_mjit_header.rb with --jit-wait,
rb_source_location_cstr was repoted to be missing.

string.c: ditto, for rb_str_eql
numeric.c: ditto, for rb_float_eql
------------------------------------------------------------------------
r62312 | k0kubun | 2018-02-08 22:40:47 +0900 (Thu, 08 Feb 2018) | 3 lines

test_jit.rb: fix typo

This is notified by zns-san.
------------------------------------------------------------------------
r62311 | k0kubun | 2018-02-08 22:01:43 +0900 (Thu, 08 Feb 2018) | 3 lines

test_jit.rb: add forgotten check

I was going to check this in r62310...
------------------------------------------------------------------------
r62310 | k0kubun | 2018-02-08 21:58:27 +0900 (Thu, 08 Feb 2018) | 1 line

test_jit.rb: check JIT support more conservatively
------------------------------------------------------------------------
r62309 | k0kubun | 2018-02-08 21:43:09 +0900 (Thu, 08 Feb 2018) | 6 lines

test_jit.rb: remove unnecessary require

At first I was going to check the name of `RbConfig::CONFIG['CC']` and
use shellwords for it, but I decided not to do so.

Thus removing obsoleted require in r62307.
------------------------------------------------------------------------
r62308 | svn | 2018-02-08 21:40:34 +0900 (Thu, 08 Feb 2018) | 1 line

* properties.
------------------------------------------------------------------------
r62307 | k0kubun | 2018-02-08 21:40:33 +0900 (Thu, 08 Feb 2018) | 4 lines

test_jit.rb: try to test JIT again

This commit reverts r62297, revising the check if JIT is supported or
not.
------------------------------------------------------------------------
r62306 | nobu | 2018-02-08 17:09:49 +0900 (Thu, 08 Feb 2018) | 1 line

internal.h: moved ruby_null_device declaration
------------------------------------------------------------------------
r62305 | nobu | 2018-02-08 16:49:42 +0900 (Thu, 08 Feb 2018) | 4 lines

thread.c: suppress a warning

* thread.c (do_select): initialize timespec variable to suppress a
  false positive maybe-uninitialized warning by gcc 7 and 8.
------------------------------------------------------------------------
r62304 | nobu | 2018-02-08 16:49:41 +0900 (Thu, 08 Feb 2018) | 1 line

common.mk: add dependencies and timestamp
------------------------------------------------------------------------
r62303 | usa | 2018-02-08 16:34:41 +0900 (Thu, 08 Feb 2018) | 2 lines

revert r62302 and force to define the version constant

------------------------------------------------------------------------
r62302 | usa | 2018-02-08 16:23:21 +0900 (Thu, 08 Feb 2018) | 2 lines

no need to set bundled bundler unless Gem::USE_BUNDLER_FOR_GEMDEPS

------------------------------------------------------------------------
r62301 | nobu | 2018-02-08 16:14:52 +0900 (Thu, 08 Feb 2018) | 4 lines

test_gem_commands_setup_command.rb: BUNDLER_VERS

* test/rubygems/test_gem_commands_setup_command.rb: run bundled
  gem command, instead of installed one.
------------------------------------------------------------------------
r62300 | nobu | 2018-02-08 11:08:27 +0900 (Thu, 08 Feb 2018) | 1 line

ifchange: --debug option
------------------------------------------------------------------------
r62299 | nobu | 2018-02-08 11:08:26 +0900 (Thu, 08 Feb 2018) | 4 lines

ifchange.bat: --color option

* win32/ifchange.bat: added --color option for the compatibility
  with tool/ifchange.  do nothing right now.
------------------------------------------------------------------------
r62298 | nobu | 2018-02-08 11:00:21 +0900 (Thu, 08 Feb 2018) | 1 line

mjit.c: make filename in allocated buffer
------------------------------------------------------------------------
r62297 | k0kubun | 2018-02-08 09:55:33 +0900 (Thu, 08 Feb 2018) | 85 lines

revert r62291 for now

While some of CIs are succeeding and the test succeeds on my laptop,
some other CIs are failing. As I don't have time to fix it until I come
back to home, reverting this for now.

Failures:
https://rubyci.org/logs/www.rubyist.net/~akr/chkbuild/debian/ruby-trunk/log/20180208T000401Z.fail.html.gz
https://rubyci.org/logs/rubyci.s3.amazonaws.com/scw-9d6766/ruby-trunk/log/20180207T201706Z.fail.html.gz
https://rubyci.org/logs/rubyci.s3.amazonaws.com/ubuntu1604/ruby-trunk/log/20180207T183004Z.fail.html.gz
https://rubyci.org/logs/rubyci.s3.amazonaws.com/gentoo/ruby-trunk/log/20180207T213004Z.fail.html.gz
https://rubyci.org/logs/rubyci.s3.amazonaws.com/centos6/ruby-trunk/log/20180207T213003Z.fail.html.gz
https://rubyci.org/logs/rubyci.s3.amazonaws.com/fedora25/ruby-trunk/log/20180207T213003Z.fail.html.gz
https://rubyci.org/logs/rubyci.s3.amazonaws.com/fedora26/ruby-trunk/log/20180207T213003Z.fail.html.gz
https://rubyci.org/logs/rubyci.s3.amazonaws.com/opensuseleap/ruby-trunk/log/20180207T213001Z.fail.html.gz
https://rubyci.org/logs/rubyci.s3.amazonaws.com/rhel_zlinux/ruby-trunk/log/20180207T223303Z.fail.html.gz
https://rubyci.org/logs/rubyci.s3.amazonaws.com/osx1011/ruby-trunk/log/20180207T234501Z.fail.html.gz
https://rubyci.org/logs/rubyci.s3.amazonaws.com/osx1012/ruby-trunk/log/20180207T234501Z.fail.html.gz
https://rubyci.org/logs/rubyci.s3.amazonaws.com/icc-x64/ruby-trunk/log/20180207T210002Z.fail.html.gz
https://rubyci.org/logs/rubyci.s3.amazonaws.com/unstable10x/ruby-trunk/log/20180207T231805Z.fail.html.gz
https://rubyci.org/logs/rubyci.s3.amazonaws.com/unstable11x/ruby-trunk/log/20180207T232403Z.fail.html.gz
https://rubyci.org/logs/rubyci.s3.amazonaws.com/unstable10s/ruby-trunk/log/20180207T171914Z.fail.html.gz
https://rubyci.org/logs/rubyci.s3.amazonaws.com/unstable11s/ruby-trunk/log/20180207T232503Z.fail.html.gz
https://rubyci.org/logs/mswinci.japaneast.cloudapp.azure.com/vc12-x64/ruby-trunk/log/20180207T172813Z.fail.html.gz

http://ci.rvm.jp/results/trunk_gcc5@silicon-docker/506100
http://ci.rvm.jp/results/trunk_gcc4@silicon-docker/506114
http://ci.rvm.jp/results/trunk_clang_40@silicon-docker/506119
http://ci.rvm.jp/results/trunk_clang_39@silicon-docker/506170
http://ci.rvm.jp/results/trunk-nopara@silicon-docker/506176
http://ci.rvm.jp/results/trunk_gcc5@silicon-docker/506192
http://ci.rvm.jp/results/trunk_gcc4@silicon-docker/506202
http://ci.rvm.jp/results/trunk_clang_39@silicon-docker/506244
http://ci.rvm.jp/results/trunk_gcc5@silicon-docker/506271
http://ci.rvm.jp/results/trunk_gcc4@silicon-docker/506280
http://ci.rvm.jp/results/trunk-nopara@silicon-docker/506323
http://ci.rvm.jp/results/trunk_clang_50@silicon-docker/506325
http://ci.rvm.jp/results/trunk_gcc5@silicon-docker/506342
http://ci.rvm.jp/results/trunk_gcc4@silicon-docker/506354
http://ci.rvm.jp/results/trunk_clang_39@silicon-docker/506385
http://ci.rvm.jp/results/trunk_clang_40@silicon-docker/506389
http://ci.rvm.jp/results/trunk_gcc5@silicon-docker/506409
http://ci.rvm.jp/results/trunk_gcc4@silicon-docker/506425
http://ci.rvm.jp/results/trunk_clang_40@silicon-docker/506471
http://ci.rvm.jp/results/trunk_gcc5@silicon-docker/506484
http://ci.rvm.jp/results/trunk_gcc4@silicon-docker/506495
http://ci.rvm.jp/results/trunk-test@x2/506524
http://ci.rvm.jp/results/trunk-vm-asserts@silicon-docker/506547
http://ci.rvm.jp/results/trunk_gcc5@silicon-docker/506556
http://ci.rvm.jp/results/trunk_gcc4@silicon-docker/506579
http://ci.rvm.jp/results/trunk-nopara@silicon-docker/506582
http://ci.rvm.jp/results/trunk_clang_50@silicon-docker/506634
http://ci.rvm.jp/results/trunk_gcc5@silicon-docker/506638
http://ci.rvm.jp/results/trunk_gcc4@silicon-docker/506663
http://ci.rvm.jp/results/trunk-test@frontier/506690
http://ci.rvm.jp/results/trunk_clang_40@silicon-docker/506718
http://ci.rvm.jp/results/trunk_gcc5@silicon-docker/506728
http://ci.rvm.jp/results/trunk-nopara@silicon-docker/506752
http://ci.rvm.jp/results/trunk_gcc4@silicon-docker/506754
http://ci.rvm.jp/results/trunk-gc-asserts@silicon-docker/506782
http://ci.rvm.jp/results/trunk_clang_38@silicon-docker/506799
http://ci.rvm.jp/results/trunk_gcc5@silicon-docker/506816
http://ci.rvm.jp/results/trunk_gcc4@silicon-docker/506835
http://ci.rvm.jp/results/trunk-nopara@silicon-docker/506879
http://ci.rvm.jp/results/trunk_gcc5@silicon-docker/506903
http://ci.rvm.jp/results/trunk_gcc4@silicon-docker/506920
http://ci.rvm.jp/results/trunk-test@frontier/506955
http://ci.rvm.jp/results/trunk_gcc5@silicon-docker/506994
http://ci.rvm.jp/results/trunk_gcc4@silicon-docker/507012
http://ci.rvm.jp/results/trunk-vm-asserts@silicon-docker/507036
http://ci.rvm.jp/results/trunk_clang_40@silicon-docker/507037
http://ci.rvm.jp/results/trunk-nopara@silicon-docker/507053
http://ci.rvm.jp/results/trunk_gcc5@silicon-docker/507081
http://ci.rvm.jp/results/trunk_gcc4@silicon-docker/507097
http://ci.rvm.jp/results/trunk_clang_40@silicon-docker/507136
http://ci.rvm.jp/results/trunk_gcc5@silicon-docker/507165
http://ci.rvm.jp/results/trunk_gcc4@silicon-docker/507178
http://ci.rvm.jp/results/trunk-nopara@silicon-docker/507180
http://ci.rvm.jp/results/trunk_gcc5@silicon-docker/507257
http://ci.rvm.jp/results/trunk_gcc4@silicon-docker/507268
http://ci.rvm.jp/results/trunk-gc-asserts@silicon-docker/507303
http://ci.rvm.jp/results/trunk_gcc5@silicon-docker/507342
http://ci.rvm.jp/results/trunk_gcc4@silicon-docker/507355
http://ci.rvm.jp/results/trunk_gcc5@silicon-docker/507434
http://ci.rvm.jp/results/trunk_gcc4@silicon-docker/507448
------------------------------------------------------------------------
r62296 | k0kubun | 2018-02-08 01:56:59 +0900 (Thu, 08 Feb 2018) | 12 lines

error.c: export rb_assert_failure

to test JIT with `VM_CHECK_MODE=1`

It's failing on CI which enables VM_CHECK_MODE.

:   1)
: TestJIT#test_jit [/home/ko1/ruby/src/trunk-vm-asserts/test/ruby/test_jit.rb:10]:
: Expected 1 times of JIT success, but succeeded 0 times.
:   2)
: TestJIT#test_jit_output [/home/ko1/ruby/src/trunk-vm-asserts/test/ruby/test_jit.rb:18]:
: Expected /^JIT success \(\d+\.\dms\): block in <main>@-e:1 -> .+_ruby_mjit_p\d+u\d+\.c$/ to match "MJIT warning: failure in loading code from '/tmp/_ruby_mjit_p9896u0.so': /tmp/_ruby_mjit
------------------------------------------------------------------------
r62295 | k0kubun | 2018-02-08 01:39:17 +0900 (Thu, 08 Feb 2018) | 3 lines

.travis.yml: try `make install` to test JIT

If header is not available, JIT won't be tested.
------------------------------------------------------------------------
r62294 | k0kubun | 2018-02-08 01:28:17 +0900 (Thu, 08 Feb 2018) | 1 line

test_jit.rb: make JIT count test optional
------------------------------------------------------------------------
r62293 | svn | 2018-02-08 01:15:22 +0900 (Thu, 08 Feb 2018) | 1 line

* properties.
------------------------------------------------------------------------
r62292 | svn | 2018-02-08 01:15:22 +0900 (Thu, 08 Feb 2018) | 1 line

* 2018-02-08
------------------------------------------------------------------------
r62291 | k0kubun | 2018-02-08 01:15:21 +0900 (Thu, 08 Feb 2018) | 1 line

test_jit.rb: add initial test for JIT
------------------------------------------------------------------------
r62290 | k0kubun | 2018-02-07 23:25:03 +0900 (Wed, 07 Feb 2018) | 7 lines

transform_mjit_header.rb: very verbose error log

for debugging AIX..... I have no idea why AIX's gcc is failing to
transform MJIT header....

Today's CI output:
https://rubyci.org/logs/rubyci.s3.amazonaws.com/aix71_ppc/ruby-trunk/log/20180207T113303Z.log.html.gz#make
------------------------------------------------------------------------
r62289 | nobu | 2018-02-07 23:13:57 +0900 (Wed, 07 Feb 2018) | 1 line

 mjit.c: untabified [ci skip]
------------------------------------------------------------------------
r62288 | k0kubun | 2018-02-07 23:08:24 +0900 (Wed, 07 Feb 2018) | 7 lines

mjit.c: fix -Wdiscarded-qualifiers warning

../mjit.c: In function 'system_tmpdir':
../mjit.c:1231:9: warning: assignment discards 'const' qualifier from pointer target type [-Wdiscarded-qualifiers]
  tmpdir = "/tmp";
         ^
../mjit.c: At top level:
------------------------------------------------------------------------
r62287 | k0kubun | 2018-02-07 23:01:51 +0900 (Wed, 07 Feb 2018) | 5 lines

transform_mjit_header.rb: apply Regexp.escape

to prevent future breakage

Following up r62285
------------------------------------------------------------------------
r62286 | kazu | 2018-02-07 22:57:07 +0900 (Wed, 07 Feb 2018) | 1 line

Remove redundant RTEST
------------------------------------------------------------------------
r62285 | k0kubun | 2018-02-07 22:48:48 +0900 (Wed, 07 Feb 2018) | 16 lines

transform_mjit_header.rb: ignore unsupported cc

to generate MJIT header.

Even if we can't build MJIT header, Ruby's build should success. And
compilers which are not explicitly supported are likely to fail to
transform MJIT header.

Also you can pass only gcc or clang to --jit-cc=xxx for now. Thus
generating header does never make sense.

So I decided to conservatively give up MJIT header generation.
But please feel free to add your favorite compiler's macro if you think
it's working. (Another workaround is passing -D__GNUC__ :p)

[Bug #14447] [Bug #14446]
------------------------------------------------------------------------
r62284 | nobu | 2018-02-07 22:45:14 +0900 (Wed, 07 Feb 2018) | 1 line

defs/gmake.mk: make universal mjit_min_header link
------------------------------------------------------------------------
r62283 | nobu | 2018-02-07 22:41:32 +0900 (Wed, 07 Feb 2018) | 4 lines

mjit.c: system_tmpdir

* mjit.c (system_tmpdir): use system provided temporary directory,
  and TMPDIR as well as mktemp(1), before TMP and "/tmp".
------------------------------------------------------------------------
r62282 | k0kubun | 2018-02-07 22:27:42 +0900 (Wed, 07 Feb 2018) | 4 lines

.gitignore: ignore min header for in-place build

In some revision, the build directory of minimized header is changed,
and then it's no longer ignored.
------------------------------------------------------------------------
r62281 | nobu | 2018-02-07 22:26:09 +0900 (Wed, 07 Feb 2018) | 10 lines

mjit.c: fix buffer overflow

* mjit.c (sprint_uniq_filename): get rid of silent buffer
  overflow.

* mjit.c (get_uniq_filename, convert_unit_to_func): allocate
  enough buffer before formatting.

* mjit.c (convert_unit_to_func): use DLEXT instead of hard coded
  extension.
------------------------------------------------------------------------
r62280 | k0kubun | 2018-02-07 20:44:36 +0900 (Wed, 07 Feb 2018) | 7 lines

mjit.c: windows should include fcntl.h too

Fixing build failure on mswin by r62279

mjit.c
../mjit.c(1137) : error C2065: 'O_RDONLY' : undeclared identifier
NMAKE : fatal error U1077: '"C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\BIN\amd64\cl.EXE"' : return code '0x2'
------------------------------------------------------------------------
r62279 | nobu | 2018-02-07 17:14:15 +0900 (Wed, 07 Feb 2018) | 4 lines

mjit.c: FD instead of FILE

* mjit.c (init_header_filename): just FD instead of FILE to check
  file is accessible.
------------------------------------------------------------------------
r62278 | nobu | 2018-02-07 16:48:24 +0900 (Wed, 07 Feb 2018) | 1 line

mjit.c: fd is no longer valid after fclose
------------------------------------------------------------------------
r62277 | nobu | 2018-02-07 16:29:02 +0900 (Wed, 07 Feb 2018) | 1 line

mjit.c: fix declaration of ruby_null_device
------------------------------------------------------------------------
r62276 | nobu | 2018-02-07 15:49:32 +0900 (Wed, 07 Feb 2018) | 4 lines

thread.c: int32_t instead of suseconds_t

* thread.c (timeval_for): cast to int32_t instead of suseconds_t,
  which is not defined non-POSIX platforms.
------------------------------------------------------------------------
r62275 | nobu | 2018-02-07 15:14:56 +0900 (Wed, 07 Feb 2018) | 7 lines

fix up r62272

* thread.c (timeval_for): tv_usec is suseconds_t which may be
  smaller than long.

* thread_pthread.c (native_cond_timeout): ret is now used in
  CLOCK_MONOTONIC case only.
------------------------------------------------------------------------
r62274 | usa | 2018-02-07 13:04:33 +0900 (Wed, 07 Feb 2018) | 7 lines

remove declaration of ruby_engine from internal.h

	* internal.h (ruby_engine): remove declaration of ruby_engine because
	  it's declared at ruby/version.h.

	* ruby.c: include ruby/version.h for ruby_engine.

------------------------------------------------------------------------
r62273 | usa | 2018-02-07 12:21:28 +0900 (Wed, 07 Feb 2018) | 6 lines

mjit mswin support (WIP)

	* mjit.c (compile_c_to_so): fixed broken xfree position.

	* mjit.c (init_header_filename): refactored.

------------------------------------------------------------------------
r62272 | normal | 2018-02-07 10:57:14 +0900 (Wed, 07 Feb 2018) | 13 lines

thread.c: favor timespec internally

This results in fewer conversion on common modern systems with
support for clock_gettime, pthread_cond_timedwait and ppoll.
gettimeofday is declared obsolete by POSIX.1-2008, so it is yet
another reason to move away from it.  This also appears to result
in the reduction of compatibility code required for dealing
with inconsistent implementations of "struct timeval".tv_sec

In the future, this will also result in fewer conversions for
kqueue and pselect if we elect to use them.

[ruby-core:85416] [Feature #14452]
------------------------------------------------------------------------
r62271 | marcandre | 2018-02-07 08:52:30 +0900 (Wed, 07 Feb 2018) | 8 lines

lib/ostruct.rb: Use `FrozenError` instead of `RuntimeError`.

Patch by Yuuji Yaginuma. [Fixes GH-1808]

In other classes, `FrozenError` will be raised if change the frozen
object.
In order to match the behavior, I think that `FrozenError` should
use in `OpenStruct`.
------------------------------------------------------------------------
r62270 | marcandre | 2018-02-07 08:47:49 +0900 (Wed, 07 Feb 2018) | 1 line

lib/matrix.rb: Document deprecated methods [#12032] [doc] [ci-skip]
------------------------------------------------------------------------
r62269 | nobu | 2018-02-07 08:40:20 +0900 (Wed, 07 Feb 2018) | 1 line

common.mk: can't rescue NotImplementedError by default
------------------------------------------------------------------------
r62268 | nobu | 2018-02-07 08:40:19 +0900 (Wed, 07 Feb 2018) | 1 line

share ruby_null_device
------------------------------------------------------------------------
r62267 | usa | 2018-02-07 03:59:18 +0900 (Wed, 07 Feb 2018) | 11 lines

mjit mswin support (WIP)

* win32/Makefile.sub (LIBRUBYARG_SHARED): define for MJIT because it is used in
  common.mk.

* mjit.c (make_pch): skip temporary for mswin.

* mjit.c (compile_c_to_so, init_header_filename, mjit_init): mswin support.

* mjig_compile.c (mjit_compile): ditto.

------------------------------------------------------------------------
r62266 | k0kubun | 2018-02-07 01:57:46 +0900 (Wed, 07 Feb 2018) | 3 lines

mjit.c: make null device portable

for future mswin support
------------------------------------------------------------------------
r62265 | k0kubun | 2018-02-07 01:16:25 +0900 (Wed, 07 Feb 2018) | 3 lines

mjit.c: prefix "_ruby" to precompiled header too

for consistency and to clarify who created it.
------------------------------------------------------------------------
r62264 | k0kubun | 2018-02-07 01:03:14 +0900 (Wed, 07 Feb 2018) | 3 lines

ruby.c: add MJIT_FORCE_ENABLE macro

to always enable MJIT for testing.
------------------------------------------------------------------------
r62263 | nobu | 2018-02-07 01:03:11 +0900 (Wed, 07 Feb 2018) | 1 line

common.mk: clean mjit headers by clean-local
------------------------------------------------------------------------
r62262 | nobu | 2018-02-07 01:03:10 +0900 (Wed, 07 Feb 2018) | 1 line

mjit.c: try installed header only
------------------------------------------------------------------------
r62261 | nobu | 2018-02-07 00:55:12 +0900 (Wed, 07 Feb 2018) | 5 lines

moved MJIT_CPPFLAGS

* Makefile.in, win32/Makefile.sub (XCFLAGS): moved MJIT_CPPFLAGS
  from CPPFLAGS.  MJIT_CPPFLAGS is only for mjit.c, unused in
  extension libraries.
------------------------------------------------------------------------
r62260 | nobu | 2018-02-07 00:31:10 +0900 (Wed, 07 Feb 2018) | 1 line

common.mk: link or copy MJIT_MIN_HEADER under include
------------------------------------------------------------------------
r62259 | svn | 2018-02-07 00:19:11 +0900 (Wed, 07 Feb 2018) | 1 line

* 2018-02-07
------------------------------------------------------------------------
r62258 | k0kubun | 2018-02-07 00:19:10 +0900 (Wed, 07 Feb 2018) | 3 lines

mjit.c: handle fopen error

[Bug #14441]
------------------------------------------------------------------------
r62257 | k0kubun | 2018-02-06 23:58:12 +0900 (Tue, 06 Feb 2018) | 3 lines

transform_mjit_header.rb: resurrect `exit false`

which was just unintentionally dropped at r62252.
------------------------------------------------------------------------
r62256 | nobu | 2018-02-06 23:45:11 +0900 (Tue, 06 Feb 2018) | 4 lines

common.mk: MJIT_CPPFLAGS

* common.mk (MJIT_CPPFLAGS): moved common definition flags for
  mjit compilation.
------------------------------------------------------------------------
r62255 | k0kubun | 2018-02-06 23:27:15 +0900 (Tue, 06 Feb 2018) | 7 lines

mjit_compile.c: fix inconsistent indentation

and style of generated code.

I've used 2-space indentation at first but at some moment I started to
use insns.def contents for generated code. So the 4-space indentation
was introduced. But it does no longer make sense.
------------------------------------------------------------------------
r62254 | k0kubun | 2018-02-06 23:07:57 +0900 (Tue, 06 Feb 2018) | 6 lines

mjit_compile.c: share the definition of macros

(IS_ARGS_SPLAT, IS_ARGS_KEYWORD) with vm_args.c.

vm_args.c: share them with mjit_compile.c.
vm_insnhelper.h: get those definitions, with CALLER_SETUP_ARG too
------------------------------------------------------------------------
r62253 | kazu | 2018-02-06 22:58:04 +0900 (Tue, 06 Feb 2018) | 4 lines

Fix wrong comment

`ruby_strdup` does not return NULL.
[ci skip]
------------------------------------------------------------------------
r62252 | k0kubun | 2018-02-06 22:47:02 +0900 (Tue, 06 Feb 2018) | 14 lines

transform_mjit_header.rb: add output for debug

AIX's header build is failing like:

./miniruby -I./lib -I. -I.ext/common  ./tool/transform_mjit_header.rb "/usr/bin/gcc " rb_mjit_header.h .ext/include/powerpc-aix7.1.3.0/rb_mjit_min_header-2.6.0.h
error in initial header file:
/home/odaira/chkbuild/tmp/build/20180206T113302Z/tmp/20180206-15335556-aaiego.c:19:59: error: conflicting types for 'restrict'
 extern size_t fread(void *restrict, size_t, size_t, FILE *restrict);
                                                           ^

https://rubyci.org/logs/rubyci.s3.amazonaws.com/aix71_ppc/ruby-trunk/log/20180206T113302Z.log.html.gz#make

It's so hard to know the cause from current output. Let me add debug
output and see tomorrow's CI result.
------------------------------------------------------------------------
r62251 | nobu | 2018-02-06 22:23:25 +0900 (Tue, 06 Feb 2018) | 1 line

mjit.c: suppress unused-value warning
------------------------------------------------------------------------
r62250 | kazu | 2018-02-06 21:40:41 +0900 (Tue, 06 Feb 2018) | 3 lines

Remove unused capture

Because `Regexp#to_s` add `(?-mix:)`, it is not unnecessary.
------------------------------------------------------------------------
r62249 | nobu | 2018-02-06 19:36:03 +0900 (Tue, 06 Feb 2018) | 1 line

mjit.c: fixed missing variable
------------------------------------------------------------------------
r62248 | nobu | 2018-02-06 19:30:53 +0900 (Tue, 06 Feb 2018) | 5 lines

mjit.c: build dir prefix

* mjit.c (init_header_filename): prepend basedir to header build
  dir too, so that the header can be found when running not in the
  build directory.
------------------------------------------------------------------------
r62247 | nobu | 2018-02-06 17:00:17 +0900 (Tue, 06 Feb 2018) | 1 line

configure.ac: removed unnecessary pushdef/popdef
------------------------------------------------------------------------
r62246 | nobu | 2018-02-06 16:42:44 +0900 (Tue, 06 Feb 2018) | 4 lines

test_gem_util.rb: fix broken test

* test/rubygems/test_gem_util.rb: no guarantee that tmpdir is
  always underneath the root directory at all.
------------------------------------------------------------------------
r62245 | nobu | 2018-02-06 12:19:42 +0900 (Tue, 06 Feb 2018) | 7 lines

mjit headers for universal binary

* common.mk (MJIT_HEADER, MJIT_MIN_HEADER): added hook to separate
  intermediate headers per archs.

* defs/gmake.mk: build mjit headers per -arch options, and then
  merge the headers with `#ifdef`s.
------------------------------------------------------------------------
r62244 | hsbt | 2018-02-06 11:58:35 +0900 (Tue, 06 Feb 2018) | 3 lines

Merge RubyGems-2.7.5 from upstream.

  Please see its details: http://blog.rubygems.org/2018/02/06/2.7.5-released.html
------------------------------------------------------------------------
r62243 | shyouhei | 2018-02-06 11:08:13 +0900 (Tue, 06 Feb 2018) | 12 lines

deal with aclocal(1)

This commit updates files so that aclocal.m4 generated by aclocal(1)
works well with our configure.ac

	* ac_checking.m4: merged back to configure.ac because
	  aclocal(1) cannot handle this macro.

	* ruby_append_options.m4: no longer used.

	* ruby_check_va_copy.m4: define using AC_DEFUN so that
	  aclocal(1) can find this macro.
------------------------------------------------------------------------
r62242 | nobu | 2018-02-06 10:42:38 +0900 (Tue, 06 Feb 2018) | 5 lines

thread_pthread.c: cast inside rb_thread_create_mjit_thread

* thread_pthread.c (rb_thread_create_mjit_thread): cast
  worker_func pointer to void pointer inside.  adjusted to the
  declaration in mjit.c and the definition in thread_win32.c.
------------------------------------------------------------------------
r62241 | nobu | 2018-02-06 10:42:37 +0900 (Tue, 06 Feb 2018) | 1 line

mjit.c: use ruby_strdup as get_string
------------------------------------------------------------------------
r62240 | nobu | 2018-02-06 09:47:19 +0900 (Tue, 06 Feb 2018) | 5 lines

common.mk: ARCH_FLAG to mjit headers

* common.mk (rb_mjit_header.h, rb_mjit_min_header.h): $(ARCH_FLAG)
  is necessary to compile for non-default architecture, e.g.,
  32bit build on 64bit platform.
------------------------------------------------------------------------
r62239 | k0kubun | 2018-02-06 02:00:43 +0900 (Tue, 06 Feb 2018) | 23 lines

mjit.c: fix MinGW warning by r62221

mjit.c: In function 'worker':
mjit.c:126:64: warning: passing argument 1 of '_InterlockedExchangePointer' from incompatible pointer type [-Wincompatible-pointer-types]
 #  define MJIT_ATOMIC_SET(var, val) InterlockedExchangePointer(&(var), val)
                                                                ^
mjit.c:828:17: note: in expansion of macro 'MJIT_ATOMIC_SET'
                 MJIT_ATOMIC_SET(node->unit->iseq->body->jit_func, func);
                 ^
In file included from C:/msys64/mingw64/x86_64-w64-mingw32/include/winnt.h:27:0,
                 from C:/msys64/mingw64/x86_64-w64-mingw32/include/minwindef.h:163,
                 from C:/msys64/mingw64/x86_64-w64-mingw32/include/windef.h:8,
                 from C:/msys64/mingw64/x86_64-w64-mingw32/include/windows.h:69,
                 from C:/msys64/mingw64/x86_64-w64-mingw32/include/winsock2.h:23,
                 from ./include/ruby/win32.h:41,
                 from ./include/ruby/defines.h:250,
                 from ./include/ruby/ruby.h:29,
                 from ./include/ruby.h:33,
                 from internal.h:15,
                 from mjit.c:76:
C:/msys64/mingw64/x86_64-w64-mingw32/include/psdk_inc/intrin-impl.h:1420:7: note: expected 'void * volatile*' but argument is of type 'VALUE (**)(struct rb_execution_context_struct *, struct rb_control_frame_struct *) {aka long long unsigned int (**)(struct rb_execution_context_struct *, struct rb_control_frame_struct *)}'
 void *_InterlockedExchangePointer(void *volatile *Target,void *Value) {
       ^~~~~~~~~~~~~~~~~~~~~~~~~~~
------------------------------------------------------------------------
r62238 | k0kubun | 2018-02-06 01:51:12 +0900 (Tue, 06 Feb 2018) | 14 lines

mjit.c: determine prefix of MJIT header at runtime

so that MJIT can work if Ruby is distributed as prebuilt binary.

Now mjit_init() depends on the internal const TMP_RUBY_PREFIX which is
only available after ruby_init_loadpath_safe() (L1608) and before
ruby_init_prelude() (L1681). So the place of mjit_init() is moved.

Makefile.in: Removed static prefix from MJIT_HEADER_ISNTALL_DIR macro.
And this removes the unused LIBRUBY_LIBDIR macro as well.
win32/Makefile.sub: ditto.

Patch by: Lars Kanis <lars@greiz-reinsdorf.de>
[Bug #14445]
------------------------------------------------------------------------
r62237 | k0kubun | 2018-02-06 00:49:32 +0900 (Tue, 06 Feb 2018) | 6 lines

vm_insnhelper.c: prefix rb_ to simple_iseq_p

which is started to be used by mjit_compile.c in r62197.

Related to r62235, this intends to transform the function to static.
Of course we shouldn't pollute the namespace anyway.
------------------------------------------------------------------------
r62236 | svn | 2018-02-06 00:39:56 +0900 (Tue, 06 Feb 2018) | 1 line

* 2018-02-06
------------------------------------------------------------------------
r62235 | k0kubun | 2018-02-06 00:39:55 +0900 (Tue, 06 Feb 2018) | 5 lines

transform_mjit_header.rb: restrict transformation

to whitelisted patterns. This fix is for NetBSD.

[Bug #14439]
------------------------------------------------------------------------
r62232 | nobu | 2018-02-05 22:58:48 +0900 (Mon, 05 Feb 2018) | 1 line

transform_mjit_header.rb: same command after error
------------------------------------------------------------------------
r62231 | k0kubun | 2018-02-05 22:24:00 +0900 (Mon, 05 Feb 2018) | 12 lines

tool/downloader.rb: retry SocketError

I would like to stabilize RubyCI.

https://rubyci.org/logs/rubyci.s3.amazonaws.com/fedora26/ruby-trunk/log/20180205T123003Z.fail.html.gz

downloading did_you_mean-1.2.0.gem ... /home/hsbt/chkbuild/tmp/build/20180205T123003Z/tmp/ruby-snapshot20180205-23226-3201ha/ruby-2.6.0-r62226/tool/downloader.rb:212:in `rescue in download': failed to download did_you_mean-1.2.0.gem (RuntimeError)
SocketError: Failed to open TCP connection to rubygems.org:443 (getaddrinfo: Name or service not known): https://rubygems.org/downloads/did_you_mean-1.2.0.gem
	from /home/hsbt/chkbuild/tmp/build/20180205T123003Z/tmp/ruby-snapshot20180205-23226-3201ha/ruby-2.6.0-r62226/tool/downloader.rb:123:in `download'
	from /home/hsbt/chkbuild/tmp/build/20180205T123003Z/tmp/ruby-snapshot20180205-23226-3201ha/ruby-2.6.0-r62226/tool/downloader.rb:66:in `download'
	from -e:4:in `<main>'
make[1]: *** [Makefile:1685: update-gems] Error 1
------------------------------------------------------------------------
r62230 | k0kubun | 2018-02-05 21:57:24 +0900 (Mon, 05 Feb 2018) | 8 lines

mjit.c: prefer using --jit-cc=clang if __clang__

is defined.  This is basically for OpenBSD.

Failure on using the compiler which is
not used for Ruby compilation is not supported.

[Bug #14440]
------------------------------------------------------------------------
r62229 | kazu | 2018-02-05 21:34:37 +0900 (Mon, 05 Feb 2018) | 1 line

Fix undefined behavior
------------------------------------------------------------------------
r62228 | kazu | 2018-02-05 21:34:35 +0900 (Mon, 05 Feb 2018) | 1 line

Fix a typo [ci skip]
------------------------------------------------------------------------
r62227 | k0kubun | 2018-02-05 21:33:36 +0900 (Mon, 05 Feb 2018) | 20 lines

mjit.c: try changing the order of includes

Hoping to fix the AIX's build failure like:

In file included from ./include/ruby/defines.h:139:0,
                 from ./include/ruby/ruby.h:29,
                 from ./include/ruby.h:33,
                 from internal.h:15,
                 from mjit.c:81:
/opt/freeware/lib/gcc/powerpc-ibm-aix7.1.0.0/4.8.1/include-fixed/unistd.h:939:14: error: conflicting types for 'ftruncate64'
  extern int  ftruncate64(int, off64_t);
              ^
In file included from ./include/ruby/defines.h:139:0,
                 from ./include/ruby/ruby.h:29,
                 from ./include/ruby.h:33,
                 from internal.h:15,
                 from mjit.c:81:
/opt/freeware/lib/gcc/powerpc-ibm-aix7.1.0.0/4.8.1/include-fixed/unistd.h:937:14: note: previous declaration of 'ftruncate64' was here
  extern int  ftruncate(int, off_t);
              ^
------------------------------------------------------------------------
r62226 | k0kubun | 2018-02-05 21:19:38 +0900 (Mon, 05 Feb 2018) | 6 lines

transform_mjit_header.rb: check initial code

separating the macros. Applying the kept macros to code which is already
affected by the macros may cause errors in initial code.

This is hopefully the final fix for icc build failure.
------------------------------------------------------------------------
r62225 | k0kubun | 2018-02-05 21:05:04 +0900 (Mon, 05 Feb 2018) | 6 lines

transform_mjit_header.rb: remove predefined macros

semi-automatically.

This is basically for icc's __DATE__, __TIME__, and many other families.
It causes an error by predefined macro redefinition.
------------------------------------------------------------------------
r62224 | shyouhei | 2018-02-05 14:22:22 +0900 (Mon, 05 Feb 2018) | 1 line

need shell's escape instead of M4's.
------------------------------------------------------------------------
r62223 | nobu | 2018-02-05 13:58:07 +0900 (Mon, 05 Feb 2018) | 4 lines

Makefile.sub: va_copy in old version

* win32/Makefile.sub: va_copy is available since VS12 (VC 18.00).
  simple copy same as VC1 19.00.
------------------------------------------------------------------------
r62222 | nobu | 2018-02-05 13:58:04 +0900 (Mon, 05 Feb 2018) | 4 lines

transform_mjit_header.rb: no extra CRs

* tool/transform_mjit_header.rb (MJITHeader.check_code!): open
  temporary file in binary mode too, not to include extra CRs.
------------------------------------------------------------------------
r62221 | shyouhei | 2018-02-05 13:17:44 +0900 (Mon, 05 Feb 2018) | 5 lines

assigning void* to a function pointer is a POSIXism

No implicit cast is defined between these types.  Should be explicit.
Also, NULL is defined to be ((void*)0) so not usable as a function
pointer value.
------------------------------------------------------------------------
r62220 | shyouhei | 2018-02-05 13:07:25 +0900 (Mon, 05 Feb 2018) | 3 lines

va_copy is a C99ism

Should provide appropriate fallback implementation.
------------------------------------------------------------------------
r62219 | shyouhei | 2018-02-05 13:02:55 +0900 (Mon, 05 Feb 2018) | 1 line

comma at the end of enum is a C99ism
------------------------------------------------------------------------
r62218 | nobu | 2018-02-05 12:19:39 +0900 (Mon, 05 Feb 2018) | 1 line

vcs.rb: no meaningless splat
------------------------------------------------------------------------
r62217 | nobu | 2018-02-05 12:19:39 +0900 (Mon, 05 Feb 2018) | 4 lines

vcs.rb: for old ruby

* tool/vcs.rb (DebugSystem#system): pop option hash for old
  version ruby which does not support `system` options.
------------------------------------------------------------------------
r62216 | nobu | 2018-02-05 11:07:49 +0900 (Mon, 05 Feb 2018) | 1 line

transform_mjit_header.rb: take program name from $0
------------------------------------------------------------------------
r62215 | nobu | 2018-02-05 11:02:23 +0900 (Mon, 05 Feb 2018) | 4 lines

transform_mjit_header.rb: read/write in binmode

* tool/transform_mjit_header.rb: read and write as ASCII-8BIT to
  make single-byte-optimizable always.
------------------------------------------------------------------------
r62214 | nobu | 2018-02-05 09:52:45 +0900 (Mon, 05 Feb 2018) | 4 lines

transform_mjit_header.rb: separate macro and code

* tool/transform_mjit_header.rb (separate_macro_and_code): return
  macro and code separately as the name, and concat before output.
------------------------------------------------------------------------
r62213 | nobu | 2018-02-05 09:52:20 +0900 (Mon, 05 Feb 2018) | 4 lines

transform_mjit_header.rb: scan by regexp

* tool/transform_mjit_header.rb (find_decl): scan by regexp
  instead of char-by-char loop.  return nil when finished.
------------------------------------------------------------------------
r62212 | kazu | 2018-02-05 09:09:09 +0900 (Mon, 05 Feb 2018) | 1 line

Use system option instead of shell redirect
------------------------------------------------------------------------
r62211 | k0kubun | 2018-02-05 00:40:06 +0900 (Mon, 05 Feb 2018) | 15 lines

mjit.c: define __EXTENSIONS__ earlier

Another try of r62204 and r62192.

As far as I can see from solaris's signal.h and sys/procset.h, the only
possibility that causes the following error would be that sys/procset.h
is included without __EXTENSIONS__ and signal.h included it again but it
doesn't define procset_t.  Let's define __EXTENSIONS__ from first.

---
In file included from vm_core.h:87:0,
                 from mjit.c:85:
/usr/include/signal.h:77:29: error: unknown type name 'procset_t'
 extern int sigsendset(const procset_t *, int);
                             ^
------------------------------------------------------------------------
r62210 | nobu | 2018-02-05 00:34:38 +0900 (Mon, 05 Feb 2018) | 3 lines

MINIRUBY dependency

* common.mk ($(MJIT_MIN_HEADER)): add dependency for $(MINIRUBY).
------------------------------------------------------------------------
r62209 | nobu | 2018-02-05 00:23:37 +0900 (Mon, 05 Feb 2018) | 4 lines

use MINIRUBY

* common.mk ($(MJIT_MIN_HEADER)): use $(MINIRUBY) at build time.
  $(BASERUBY) may not be available.
------------------------------------------------------------------------
r62208 | nobu | 2018-02-05 00:17:44 +0900 (Mon, 05 Feb 2018) | 6 lines

common.mk: CPPOUTFLAG

* common.mk (rb_mjit_header.h): use $(CPPOUTFLAG).

* win32/Makefile.sub (CPPOUTFLAG): needs -Fi to let cl.exe name
  preprocessed file, instead of -Fo.
------------------------------------------------------------------------
r62207 | svn | 2018-02-05 00:05:38 +0900 (Mon, 05 Feb 2018) | 1 line

* 2018-02-05
------------------------------------------------------------------------
r62206 | k0kubun | 2018-02-05 00:05:37 +0900 (Mon, 05 Feb 2018) | 7 lines

common.mk: use vm.i as the temporary filename

because `cl -P vm.c` always produces vm.i regardless of -o XXX and
currently mswin build is failing.

Fixing r62202. If this commit does not work, I'll revert this and
r62202.
------------------------------------------------------------------------
r62205 | nobu | 2018-02-04 22:51:02 +0900 (Sun, 04 Feb 2018) | 5 lines

transform_mjit_header.rb: refactor messages and exit

* tool/transform_mjit_header.rb: print non-error messages to
  STDOUT instead of STDERR.  exit with false or abort instead of
  exit 1.
------------------------------------------------------------------------
r62204 | k0kubun | 2018-02-04 22:49:38 +0900 (Sun, 04 Feb 2018) | 9 lines

mjit.c: another try for fixing solaris build

Reverted r62192 and added another try.
I prepared Solaris environment but I couldn't reproduce the RubyCI build
failure. So I'm testing on trunk.

I found the following article and it fixed the same problem with passing
`-D__EXTENSIONS__`. So this commit defines `__EXTENSIONS__` for Solaris.
https://bitbucket.org/ged/ruby-pg/issues/236/compile-error-usr-include-signalh-92-1
------------------------------------------------------------------------
r62203 | nobu | 2018-02-04 22:47:07 +0900 (Sun, 04 Feb 2018) | 1 line

common.mk: phony target mjit-headers
------------------------------------------------------------------------
r62202 | nobu | 2018-02-04 22:43:06 +0900 (Sun, 04 Feb 2018) | 4 lines

common.mk: rb_mjit_header.h

* common.mk (rb_mjit_header.h): moved from Makefile.in and
  win32/Makefile.sub.
------------------------------------------------------------------------
r62201 | nobu | 2018-02-04 22:33:13 +0900 (Sun, 04 Feb 2018) | 4 lines

Makefile.sub: CFLAGS_NO_ARCH

* win32/Makefile.sub: split CFLAGS into CFLAGS_NO_ARCH and
  ARCH_FLAG, as well as Makefile.in.
------------------------------------------------------------------------
r62200 | k0kubun | 2018-02-04 22:15:28 +0900 (Sun, 04 Feb 2018) | 5 lines

vm.c: feedback control frame size change

to VM_ASSERT. r62197 is adding bp.

I'll try to remove bp, but let's pass CI which enables assertion.
------------------------------------------------------------------------
r62199 | nobu | 2018-02-04 22:12:57 +0900 (Sun, 04 Feb 2018) | 5 lines

match whole word

* tool/transform_mjit_header.rb: add word boundary anchors and
  match whole word to get rid of false `static` declarations,
  e.g., rb_str_new_static.
------------------------------------------------------------------------
r62198 | kazu | 2018-02-04 20:59:19 +0900 (Sun, 04 Feb 2018) | 1 line

Fix typos and remove redundant `/#{}/`
------------------------------------------------------------------------
r62197 | k0kubun | 2018-02-04 20:22:28 +0900 (Sun, 04 Feb 2018) | 213 lines

mjit_compile.c: merge initial JIT compiler

which has been developed by Takashi Kokubun <takashikkbn@gmail> as
YARV-MJIT. Many of its bugs are fixed by wanabe <s.wanabe@gmail.com>.

This JIT compiler is designed to be a safe migration path to introduce
JIT compiler to MRI. So this commit does not include any bytecode
changes or dynamic instruction modifications, which are done in original
MJIT.

This commit even strips off some aggressive optimizations from
YARV-MJIT, and thus it's slower than YARV-MJIT too. But it's still
fairly faster than Ruby 2.5 in some benchmarks (attached below).

Note that this JIT compiler passes `make test`, `make test-all`, `make
test-spec` without JIT, and even with JIT. Not only it's perfectly safe
with JIT disabled because it does not replace VM instructions unlike
MJIT, but also with JIT enabled it stably runs Ruby applications
including Rails applications.

I'm expecting this version as just "initial" JIT compiler. I have many
optimization ideas which are skipped for initial merging, and you may
easily replace this JIT compiler with a faster one by just replacing
mjit_compile.c. `mjit_compile` interface is designed for the purpose.

common.mk: update dependencies for mjit_compile.c.

internal.h: declare `rb_vm_insn_addr2insn` for MJIT.

vm.c: exclude some definitions if `-DMJIT_HEADER` is provided to
compiler. This avoids to include some functions which take a long time
to compile, e.g. vm_exec_core. Some of the purpose is achieved in
transform_mjit_header.rb (see `IGNORED_FUNCTIONS`) but others are
manually resolved for now. Load mjit_helper.h for MJIT header.
mjit_helper.h: New. This is a file used only by JIT-ed code. I'll
refactor `mjit_call_cfunc` later.
vm_eval.c: add some #ifdef switches to skip compiling some functions
like Init_vm_eval.

win32/mkexports.rb: export thread/ec functions, which are used by MJIT.

include/ruby/defines.h: add MJIT_FUNC_EXPORTED macro alis to clarify
that a function is exported only for MJIT.

array.c: export a function used by MJIT.
bignum.c: ditto.
class.c: ditto.
compile.c: ditto.
error.c: ditto.
gc.c: ditto.
hash.c: ditto.
iseq.c: ditto.
numeric.c: ditto.
object.c: ditto.
proc.c: ditto.
re.c: ditto.
st.c: ditto.
string.c: ditto.
thread.c: ditto.
variable.c: ditto.
vm_backtrace.c: ditto.
vm_insnhelper.c: ditto.
vm_method.c: ditto.

I would like to improve maintainability of function exports, but I
believe this way is acceptable as initial merging if we clarify the
new exports are for MJIT (so that we can use them as TODO list to fix)
and add unit tests to detect unresolved symbols.
I'll add unit tests of JIT compilations in succeeding commits.

Author: Takashi Kokubun <takashikkbn@gmail.com>
Contributor: wanabe <s.wanabe@gmail.com>

Part of [Feature #14235]

---

* Known issues
  * Code generated by gcc is faster than clang. The benchmark may be worse
    in macOS. Following benchmark result is provided by gcc w/ Linux.
  * Performance is decreased when Google Chrome is running
  * JIT can work on MinGW, but it doesn't improve performance at least
    in short running benchmark.
  * Currently it doesn't perform well with Rails. We'll try to fix this
    before release.

---

* Benchmark reslts

Benchmarked with:
Intel 4.0GHz i7-4790K with 16GB memory under x86-64 Ubuntu 8 Cores

- 2.0.0-p0: Ruby 2.0.0-p0
- r62186: Ruby trunk (early 2.6.0), before MJIT changes
- JIT off: On this commit, but without `--jit` option
- JIT on: On this commit, and with `--jit` option

** Optcarrot fps

Benchmark: https://github.com/mame/optcarrot

|         |2.0.0-p0 |r62186   |JIT off  |JIT on   |
|:--------|:--------|:--------|:--------|:--------|
|fps      |37.32    |51.46    |51.31    |58.88    |
|vs 2.0.0 |1.00x    |1.38x    |1.37x    |1.58x    |

** MJIT benchmarks

Benchmark: https://github.com/benchmark-driver/mjit-benchmarks
(Original: https://github.com/vnmakarov/ruby/tree/rtl_mjit_branch/MJIT-benchmarks)

|           |2.0.0-p0 |r62186   |JIT off  |JIT on   |
|:----------|:--------|:--------|:--------|:--------|
|aread      |1.00     |1.09     |1.07     |2.19     |
|aref       |1.00     |1.13     |1.11     |2.22     |
|aset       |1.00     |1.50     |1.45     |2.64     |
|awrite     |1.00     |1.17     |1.13     |2.20     |
|call       |1.00     |1.29     |1.26     |2.02     |
|const2     |1.00     |1.10     |1.10     |2.19     |
|const      |1.00     |1.11     |1.10     |2.19     |
|fannk      |1.00     |1.04     |1.02     |1.00     |
|fib        |1.00     |1.32     |1.31     |1.84     |
|ivread     |1.00     |1.13     |1.12     |2.43     |
|ivwrite    |1.00     |1.23     |1.21     |2.40     |
|mandelbrot |1.00     |1.13     |1.16     |1.28     |
|meteor     |1.00     |2.97     |2.92     |3.17     |
|nbody      |1.00     |1.17     |1.15     |1.49     |
|nest-ntimes|1.00     |1.22     |1.20     |1.39     |
|nest-while |1.00     |1.10     |1.10     |1.37     |
|norm       |1.00     |1.18     |1.16     |1.24     |
|nsvb       |1.00     |1.16     |1.16     |1.17     |
|red-black  |1.00     |1.02     |0.99     |1.12     |
|sieve      |1.00     |1.30     |1.28     |1.62     |
|trees      |1.00     |1.14     |1.13     |1.19     |
|while      |1.00     |1.12     |1.11     |2.41     |

** Discourse's script/bench.rb

Benchmark: https://github.com/discourse/discourse/blob/v1.8.7/script/bench.rb

NOTE: Rails performance was somehow a little degraded with JIT for now.
We should fix this.
(At least I know opt_aref is performing badly in JIT and I have an idea
 to fix it. Please wait for the fix.)

*** JIT off
Your Results: (note for timings- percentile is first, duration is second in millisecs)

categories_admin:
  50: 17
  75: 18
  90: 22
  99: 29
home_admin:
  50: 21
  75: 21
  90: 27
  99: 40
topic_admin:
  50: 17
  75: 18
  90: 22
  99: 32
categories:
  50: 35
  75: 41
  90: 43
  99: 77
home:
  50: 39
  75: 46
  90: 49
  99: 95
topic:
  50: 46
  75: 52
  90: 56
  99: 101

*** JIT on
Your Results: (note for timings- percentile is first, duration is second in millisecs)

categories_admin:
  50: 19
  75: 21
  90: 25
  99: 33
home_admin:
  50: 24
  75: 26
  90: 30
  99: 35
topic_admin:
  50: 19
  75: 20
  90: 25
  99: 30
categories:
  50: 40
  75: 44
  90: 48
  99: 76
home:
  50: 42
  75: 48
  90: 51
  99: 89
topic:
  50: 49
  75: 55
  90: 58
  99: 99
------------------------------------------------------------------------
r62196 | k0kubun | 2018-02-04 18:48:44 +0900 (Sun, 04 Feb 2018) | 4 lines

Makefile.in: use CFLAGS_NO_ARCH for cpp

Using $(CFLAGS) breaks the build when multiple `-arch` options are
given. Then we should omit arch flags.
------------------------------------------------------------------------
r62195 | nobu | 2018-02-04 18:34:16 +0900 (Sun, 04 Feb 2018) | 4 lines

common.mk: MJIT_MIN_HEADER

* common.mk ($(MJIT_MIN_HEADER)): moved duplicate recipe from
  Makefile.in and win32/Makefile.sub.
------------------------------------------------------------------------
r62194 | nobu | 2018-02-04 18:13:19 +0900 (Sun, 04 Feb 2018) | 4 lines

use ifchange tool for rb_mjit_header.h

* Makefile.in, win32/Makefile.sub (rb_mjit_header.h): use ifchange
  tool.  cmp command is not available on Windows.
------------------------------------------------------------------------
r62193 | k0kubun | 2018-02-04 17:24:58 +0900 (Sun, 04 Feb 2018) | 14 lines

mjit.c: use InterlockedExchangePointer

for Windows, if it's available.

Before this commit, Windows builds printed following warnings.
mjit.c
../mjit.c(802) : warning C4047: 'function' : 'volatile LONG *' differs in levels of indirection from 'void **'
../mjit.c(802) : warning C4024: '_InterlockedExchange' : different types for formal and actual parameter 1
../mjit.c(802) : warning C4047: 'function' : 'LONG' differs in levels of indirection from 'void *'
../mjit.c(802) : warning C4024: '_InterlockedExchange' : different types for formal and actual parameter 2

ATOMIC_SET is using InterlockedExchange which takes LONG as its value.
As InterlockedExchangePointer takes PVOID, we should use this to set
function pointer atomically.
------------------------------------------------------------------------
r62192 | k0kubun | 2018-02-04 16:52:54 +0900 (Sun, 04 Feb 2018) | 18 lines

mjit.c: try to fix Solaris build failure

In file included from vm_core.h:87:0,
                 from mjit.c:81:
/usr/include/signal.h:71:29: error: unknown type name 'procset_t'
 extern int sigsendset(const procset_t *, int);
                             ^
In file included from mjit.c:81:0:
vm_core.h:90:16: error: '_SIGMAX' undeclared here (not in a function)
 # define NSIG (_SIGMAX + 1)      /* For QNX */
                ^
vm_core.h:93:19: note: in expansion of macro 'NSIG'
 #define RUBY_NSIG NSIG

Errors come from vm_core.h. But obviously I don't touch those parts.
So I guess we need something before vm_core.h.
I included internal.h before vm_core.h so that the situation becomes the
same as cont.c.
------------------------------------------------------------------------
r62191 | k0kubun | 2018-02-04 16:43:20 +0900 (Sun, 04 Feb 2018) | 8 lines

mjit.c: try porting va_copy

for non C99 conforming environments.

The behavior of this macro is undefined, but I heard this works on many
architectures. Let me check the Ruby CI result with this change.
(My Windows environment has only Visual Studio 2015 and va_copy is
provided in it...)
------------------------------------------------------------------------
r62190 | svn | 2018-02-04 15:58:11 +0900 (Sun, 04 Feb 2018) | 1 line

* properties.
------------------------------------------------------------------------
r62189 | k0kubun | 2018-02-04 15:58:09 +0900 (Sun, 04 Feb 2018) | 104 lines

mjit.c: merge MJIT infrastructure

that allows to JIT-compile Ruby methods by generating C code and
using C compiler.  See the first comment of mjit.c to know what this
file does.

mjit.c is authored by Vladimir Makarov <vmakarov@redhat.com>.
After he invented great method JIT infrastructure for MRI as MJIT,
Lars Kanis <lars@greiz-reinsdorf.de> sent the patch to support MinGW
in MJIT. In addition to merging it, I ported pthread to Windows native
threads. Now this MJIT infrastructure can be compiled on Visual Studio.

This commit simplifies mjit.c to decrease code at initial merge. For
example, this commit does not provide multiple JIT threads support.
We can resurrect them later if we really want them, but I wanted to minimize
diff to make it easier to review this patch.

`/tmp/_mjitXXX` file is renamed to `/tmp/_ruby_mjitXXX` because non-Ruby
developers may not know the name "mjit" and the file name should make
sure it's from Ruby and not from some harmful programs.  TODO: it may be
better to store this to some temporary directory which Ruby is already using
by Tempfile, if it's not bad for performance.

mjit.h: New. It has `mjit_exec` interface similar to `vm_exec`, which is
for triggering MJIT. This drops interface for AOT compared to the original
MJIT.

Makefile.in: define macros to let MJIT know the path of MJIT header.
Probably we can refactor this to reduce the number of macros (TODO).
win32/Makefile.sub: ditto.

common.mk: compile mjit.o and mjit_compile.o. Unlike original MJIT, this
commit separates MJIT infrastructure and JIT compiler code as independent
object files. As initial patch is NOT going to have ultra-fast JIT compiler,
it's likely to replace JIT compiler, e.g. original MJIT's compiler or some
future JIT impelementations which are not public now.

inits.c: define MJIT module. This is added because `MJIT.enabled?` was
necessary for testing.
test/lib/zombie_hunter.rb: skip if `MJIT.enabled?`. Obviously this
wouldn't work with current code when JIT is enabled.
test/ruby/test_io.rb: skip this too. This would make no sense with MJIT.

ruby.c: define MJIT CLI options. As major difference from original MJIT,
"-j:l"/"--jit:llvm" are renamed to "--jit-cc" because I want to support
not only gcc/clang but also cl.exe (Visual Studio) in the future. But it
takes only "--jit-cc=gcc", "--jit-cc=clang" for now. And only long "--jit"
options are allowed since some Ruby committers preferred it at Ruby
developers Meeting on January, and some of options are renamed.
This file also triggers to initialize MJIT thread and variables.
eval.c: finalize MJIT worker thread and variables.
test/ruby/test_rubyoptions.rb: fix number of CLI options for --jit.

thread_pthread.c: change for pthread abstraction in MJIT. Prefix rb_ for
functions which are used by other files.
thread_win32.c: ditto, for Windows.  Those pthread porting is one of major
works that YARV-MJIT created, which is my fork of MJIT, in Feature 14235.
thread.c: follow rb_ prefix changes

vm.c: trigger MJIT call on VM invocation. Also trigger `mjit_mark` to avoid
SEGV by race between JIT and GC of ISeq. The improvement was provided by
wanabe <s.wanabe@gmail.com>.
In JIT compiler I created and am going to add in my next commit, I found
that having `mjit_exec` after `vm_loop_start:` is harmful because the
JIT-ed function doesn't proceed other ISeqs on RESTORE_REGS of leave insn.
Executing non-FINISH frame is unexpected for my JIT compiler and
`exception_handler` triggers executions of such ISeqs. So `mjit_exec`
here should be executed only when it directly comes from `vm_exec` call.
`RubyVM::MJIT` module and `.enabled?` method is added so that we can skip
some tests which don't expect JIT threads or compiler file descriptors.

vm_insnhelper.h: trigger MJIT on method calls during VM execution.

vm_core.h: add fields required for mjit.c. `bp` must be `cfp[6]` because
rb_control_frame_struct is likely to be casted to another struct. The
last position is the safest place to add the new field.
vm_insnhelper.c: save initial value of cfp->ep as cfp->bp. This is an
optimization which are done in both MJIT and YARV-MJIT. So this change
is added in this commit. Calculating bp from ep is a little heavy work,
so bp is kind of cache for it.

iseq.c: notify ISeq GC to MJIT. We should know which iseq in MJIT queue
is GCed to avoid SEGV.  TODO: unload some GCed units in some safe way.

gc.c: add hooks so that MJIT can wait GC, and vice versa. Simultaneous
JIT and GC executions may cause SEGV and so we should synchronize them.

cont.c: save continuation information in MJIT worker. As MJIT shouldn't
unload JIT-ed code which is being used, MJIT wants to know full list of
saved execution contexts for continuation and detect ISeqs in use.

mjit_compile.c: added empty JIT compiler so that you can reuse this commit
to build your own JIT compiler. This commit tries to compile ISeqs but
all of them are considered as not supported in this commit. So you can't
use JIT compiler in this commit yet while we added --jit option now.

Patch author: Vladimir Makarov <vmakarov@redhat.com>.

Contributors:
Takashi Kokubun <takashikkbn@gmail.com>.
wanabe <s.wanabe@gmail.com>.
Lars Kanis <lars@greiz-reinsdorf.de>.

Part of Feature 12589 and 14235.
------------------------------------------------------------------------
r62188 | svn | 2018-02-04 14:49:22 +0900 (Sun, 04 Feb 2018) | 1 line

* properties.
------------------------------------------------------------------------
r62187 | k0kubun | 2018-02-04 14:49:21 +0900 (Sun, 04 Feb 2018) | 34 lines

common.mk: install a single header file for JIT

compilation which is created by transforming a preprocessed vm.c.
This file will be used by JIT compiler's generated code which we are
going to have from succeeding commits.

Makefile.in: generate MJIT header for UNIX environments.
win32/Makefile.sub: generate MJIT header for mswin environments.
At initial merge, we're going to support only MinGW for Windows. So the
header installed by this file won't be used for short term, but we'll
add mswin support in a half year or so, for sure.

tool/transform_mjit_header.rb: New. This script was originally written as
minimize_mjit_header.rb by Vladimir N. Makarov <vmakarov@redhat.com> for
Feature 12589.
Then I refactored a little so that it can conform CodeClimate CI which is
currently set for Ruby's GitHub repository, and fixed some bugs and ported
it to work on Windows.

Also, as original minimize_mjit_header.rb takes too long time to run,
this is modified to skip minimization step because having *static*
unused definitions does not waste compilation time on -O2 since compiler
can skip to compile unused static functions. So this does no longer
"minimize" the header and is renamed.

This header installation does NOT include a header to automatically
export symbols used by MJIT. That's because original MJIT code was
failing to export symbols in the import header in macOS environment.
But I would like to have the functionality for maintainability in the
future. I'll manually export things but it would be just an intemediate
solution.

Patch by: Vladimir N. Makarov <vmakarov@redhat.com>
Part of: Feature 12589 and 14235.
------------------------------------------------------------------------
r62186 | nobu | 2018-02-04 10:31:48 +0900 (Sun, 04 Feb 2018) | 1 line

thread.c: timespec_for is used only if poll() is used
------------------------------------------------------------------------
r62184 | normal | 2018-02-04 07:24:17 +0900 (Sun, 04 Feb 2018) | 3 lines

thread.c (thread_join_m): avoid NUM2TIMET for Bignum

Bignums exceed the range of time_t (or long).
------------------------------------------------------------------------
r62183 | normal | 2018-02-04 04:59:21 +0900 (Sun, 04 Feb 2018) | 4 lines

thread.c: avoid FP in C-API time calculations

FP arithmetic can lose precision in some cases leading to
premature wakeup and wasting CPU cycles.
------------------------------------------------------------------------
r62182 | normal | 2018-02-04 04:59:16 +0900 (Sun, 04 Feb 2018) | 6 lines

thread.c: avoid FP for Thread#join

FP arithmetic can lose precision in some cases leading to
premature wakeup and wasting CPU cycles.

Convert to use timeval_* functions for now.
------------------------------------------------------------------------
r62181 | normal | 2018-02-04 04:59:11 +0900 (Sun, 04 Feb 2018) | 3 lines

thread.c: extract timeval_sub from timeval_update_expire

It can be useful on its own.
------------------------------------------------------------------------
r62180 | svn | 2018-02-04 04:59:06 +0900 (Sun, 04 Feb 2018) | 1 line

* 2018-02-04
------------------------------------------------------------------------
r62179 | normal | 2018-02-04 04:59:05 +0900 (Sun, 04 Feb 2018) | 4 lines

thread.c (rb_thread_terminate_all): eliminate double2timeval call

No point for a fixed 1s value, and I plan on eliminating double
timeouts from internal API.
------------------------------------------------------------------------
r62178 | nobu | 2018-02-03 16:30:39 +0900 (Sat, 03 Feb 2018) | 3 lines

parse.y: named backslash

* parse.y: named backslash to show unexpected character.
------------------------------------------------------------------------
r62177 | normal | 2018-02-03 16:25:21 +0900 (Sat, 03 Feb 2018) | 4 lines

compile.c: fix string Range optimization with FSL

The optimization in [Feature #13355] needs to be detected
differently to work with "frozen_string_literal: true"
------------------------------------------------------------------------
r62176 | nobu | 2018-02-03 16:21:58 +0900 (Sat, 03 Feb 2018) | 1 line

parse.y: use lex_goto_eol to skip to EOL
------------------------------------------------------------------------
r62175 | nobu | 2018-02-03 12:50:28 +0900 (Sat, 03 Feb 2018) | 4 lines

process.c: command_name encoding

* process.c (rb_exec_fillarg): share subsequence of argv_buf for
  command_name, and copy the encoding from the command string.
------------------------------------------------------------------------
r62170 | nobu | 2018-02-03 10:57:00 +0900 (Sat, 03 Feb 2018) | 1 line

backward.h: adjusted NORETURN declaration
------------------------------------------------------------------------
r62169 | nobu | 2018-02-03 08:25:42 +0900 (Sat, 03 Feb 2018) | 1 line

eval.c: get rid of format-zero-length warning
------------------------------------------------------------------------
r62168 | nobu | 2018-02-03 01:44:22 +0900 (Sat, 03 Feb 2018) | 1 line

test_system.rb: tests without shell
------------------------------------------------------------------------
r62167 | nobu | 2018-02-03 01:39:16 +0900 (Sat, 03 Feb 2018) | 1 line

test_system.rb: exit by abort for portability
------------------------------------------------------------------------
r62166 | nobu | 2018-02-03 01:14:21 +0900 (Sat, 03 Feb 2018) | 1 line

process.c: split pst_message_status from pst_message
------------------------------------------------------------------------
r62165 | nobu | 2018-02-03 01:10:17 +0900 (Sat, 03 Feb 2018) | 1 line

process.c: reduce intermediate string
------------------------------------------------------------------------
r62164 | nobu | 2018-02-03 01:02:03 +0900 (Sat, 03 Feb 2018) | 1 line

backward.h: rb_mod_const_missing is internal function
------------------------------------------------------------------------
r62163 | svn | 2018-02-03 00:16:23 +0900 (Sat, 03 Feb 2018) | 1 line

* 2018-02-03
------------------------------------------------------------------------
r62162 | nobu | 2018-02-03 00:16:22 +0900 (Sat, 03 Feb 2018) | 4 lines

eval.c: unnecessary argument

* eval.c (rb_interrupt): removed unnecessary convertsion specifier
  and an empty string.
------------------------------------------------------------------------
r62161 | nobu | 2018-02-02 22:29:23 +0900 (Fri, 02 Feb 2018) | 1 line

variable.c: removed old warning
------------------------------------------------------------------------
r62160 | kazu | 2018-02-02 20:21:12 +0900 (Fri, 02 Feb 2018) | 3 lines

Fix test

Followup to r62158
------------------------------------------------------------------------
r62159 | kazu | 2018-02-02 20:03:23 +0900 (Fri, 02 Feb 2018) | 5 lines

Fix call-seq of NameError.new

`NameError.new(1,2,3)` raises
`wrong number of arguments (given 2, expected 0..1) (ArgumentError)`
in `StrandardError#initialize`, so NameError can't accept 3 or more arguments.
------------------------------------------------------------------------
r62158 | kazu | 2018-02-02 20:03:22 +0900 (Fri, 02 Feb 2018) | 4 lines

Use more verbose status in error messages

of `system` with `exception: true` like `Process::Status#inspect`
[Feature #14386] [ruby-core:85013]
------------------------------------------------------------------------
r62157 | nobu | 2018-02-02 17:30:57 +0900 (Fri, 02 Feb 2018) | 4 lines

io.c: unused assignments

* io.c (fptr_finalize_flush): removed unused assignments.  if
  noraise, err is never used after set.
------------------------------------------------------------------------
r62156 | svn | 2018-02-02 14:44:14 +0900 (Fri, 02 Feb 2018) | 1 line

* 2018-02-02
------------------------------------------------------------------------
r62155 | nobu | 2018-02-02 14:44:13 +0900 (Fri, 02 Feb 2018) | 1 line

io.c: hoisted out io_fd_check_closed
------------------------------------------------------------------------
r62154 | normal | 2018-02-01 18:20:38 +0900 (Thu, 01 Feb 2018) | 5 lines

array.c: remove rb_ary_frozen_p / Array#frozen?

This is redundant since r15206 /
ffe425ecaaa2a3f813e1d540e20e2179bce44302 as we no longer lock
the array during sort.  Instead, fall back to Object#frozen?
------------------------------------------------------------------------
r62153 | hsbt | 2018-02-01 18:07:16 +0900 (Thu, 01 Feb 2018) | 4 lines

Add test for Forwardable#def_delegator with r55366.

  Patch by @aycabta
  [Bug #12837][ruby-core:77611]
------------------------------------------------------------------------
r62152 | normal | 2018-02-01 17:59:27 +0900 (Thu, 01 Feb 2018) | 11 lines

ccan/list: sync with upstream

This brings us up-to-date with ccan/list
5dbd87b876434dd703dfcc30cb0503118aac2076
git://git.ozlabs.org/~ccan/ccan

This is a combination of 3 commits from ccan:

    list: add parens to gaurd macro args in LIST_INIT
    ccan/list: Add list_empty_nocheck
    list: trivial: fix typos in list_for_each_off's documentation
------------------------------------------------------------------------
r62151 | nobu | 2018-02-01 12:55:55 +0900 (Thu, 01 Feb 2018) | 6 lines

ruby.h: relax rb_funcall(obj, id, 0, 0) case only

* include/ruby/ruby.h (rb_varargs_argc_valid_p): relax rb_funcall
  check on extra args only if argc == 0, for the compatibility
  with wrong code which is probably confused with rb_funcallv.
  [Bug #14425]
------------------------------------------------------------------------
r62150 | nobu | 2018-02-01 11:56:28 +0900 (Thu, 01 Feb 2018) | 4 lines

win32.c: EPIPE for ERROR_NO_DATA

* win32/win32.c (rb_w32_write): writing to closed pipe fails with
  ERROR_NO_DATA but msvcrt maps it to EINVAL.  map it to EPIPE.
------------------------------------------------------------------------
r62149 | hsbt | 2018-02-01 09:25:18 +0900 (Thu, 01 Feb 2018) | 1 line

Fixed duplicated typo for `the the`.
------------------------------------------------------------------------
r62147 | nobu | 2018-02-01 02:35:27 +0900 (Thu, 01 Feb 2018) | 1 line

io.c: fix comparison subject
------------------------------------------------------------------------
r62146 | svn | 2018-02-01 02:26:21 +0900 (Thu, 01 Feb 2018) | 1 line

* 2018-02-01
------------------------------------------------------------------------
r62145 | nobu | 2018-02-01 02:26:20 +0900 (Thu, 01 Feb 2018) | 4 lines

io.c: fix fptr_copy_finalizer

* io.c (fptr_copy_finalizer): fix inverted condition.  if
  finalizer does not change, pipe_list should not change too.
------------------------------------------------------------------------
r62123 | nobu | 2018-01-31 17:17:16 +0900 (Wed, 31 Jan 2018) | 5 lines

io.c: fptr_copy_finalizer

* io.c (fptr_copy_finalizer): remove fptr from pipe_list when pipe
  became ordinary file, to fix access after free.  to be finalized
  by pipe_finalize and being in pipe_list must match.
------------------------------------------------------------------------
r62122 | hsbt | 2018-01-31 15:41:10 +0900 (Wed, 31 Jan 2018) | 1 line

Update csv maintainers.
------------------------------------------------------------------------
r62121 | nobu | 2018-01-31 13:24:57 +0900 (Wed, 31 Jan 2018) | 4 lines

io.c: pipe_register_fptr

* io.c (pipe_register_fptr): get rid of double registration which
  causes access after free and segfault.
------------------------------------------------------------------------
r62120 | nobu | 2018-01-31 13:02:18 +0900 (Wed, 31 Jan 2018) | 4 lines

io.c: simplified pipe_del_fptr

* io.c (pipe_del_fptr): merged code for the case fptr is first to
  the loop for the rest.
------------------------------------------------------------------------
r62119 | nobu | 2018-01-31 13:02:17 +0900 (Wed, 31 Jan 2018) | 1 line

trick ruby-mode.el by heredocs
------------------------------------------------------------------------
r62118 | kazu | 2018-01-31 09:19:33 +0900 (Wed, 31 Jan 2018) | 1 line

Fix wrong function names in rb_bug messages [ci skip]
------------------------------------------------------------------------
r62117 | svn | 2018-01-31 08:55:50 +0900 (Wed, 31 Jan 2018) | 1 line

* properties.
------------------------------------------------------------------------
r62116 | normal | 2018-01-31 08:55:49 +0900 (Wed, 31 Jan 2018) | 12 lines

ruby.h: relax rb_funcall check on extra args for clang

clang 5.+ (tested clang 7.0.0) seems to be attempting division-by-zero
and giving a very large number for static args to rb_funcall.

* include/ruby/ruby.h (rb_varargs_bad_length): relax check for clang
* ext/-test-/funcall/funcall.c: renamed from passing_block.c
  define extra_args_name function
* test/-ext-/funcall/test_funcall.rb: new test
  [ruby-core:85266] [Bug #14425]

From: Eric Wong <e@80x24.org>
------------------------------------------------------------------------
r62115 | normal | 2018-01-31 04:35:12 +0900 (Wed, 31 Jan 2018) | 6 lines

proc: fix super_method segfault after bind

* proc.c: handle undefined iclass
  [ruby-core:85231] [Bug #14421]

From: Eric Wong <e@80x24.org>
------------------------------------------------------------------------
r62114 | svn | 2018-01-31 03:32:41 +0900 (Wed, 31 Jan 2018) | 1 line

* 2018-01-31
------------------------------------------------------------------------
r62113 | normal | 2018-01-31 03:32:40 +0900 (Wed, 31 Jan 2018) | 8 lines

net/http: fix documentation for HTTP connection reuse

Thanks to Paul Kuruvilla <rohitpaulk@gmail.com> for the patch

* lib/net/http.rb: fix documentation for HTTP connection reuse
  [ruby-core:84815] [Bug #14349]

From: Paul Kuruvilla <rohitpaulk@gmail.com>
------------------------------------------------------------------------
r62112 | kazu | 2018-01-30 21:13:47 +0900 (Tue, 30 Jan 2018) | 2 lines

Remove empty directories [ci skip]

------------------------------------------------------------------------
r62111 | usa | 2018-01-30 21:03:28 +0900 (Tue, 30 Jan 2018) | 5 lines

simply show BASERUBY itself

* common.mk (showflags): simply show `BASERUBY` itself, because nmake does not
  supports backquote notation.

------------------------------------------------------------------------
r62110 | nobu | 2018-01-30 20:12:21 +0900 (Tue, 30 Jan 2018) | 4 lines

setup.mak: discard BASERUBY output

* win32/setup.mak: discard output from BASERUBY command, even if
  it contains multiple commands.
------------------------------------------------------------------------
r62109 | naruse | 2018-01-30 16:34:06 +0900 (Tue, 30 Jan 2018) | 1 line

support ruby 1.9.3
------------------------------------------------------------------------
r62108 | hsbt | 2018-01-30 16:08:53 +0900 (Tue, 30 Jan 2018) | 3 lines

[DOC] Refinements on modules are allowed

From: Leo Correa <lcorr005@gmail.com>
------------------------------------------------------------------------
r62107 | nobu | 2018-01-30 14:48:28 +0900 (Tue, 30 Jan 2018) | 6 lines

force fixable

* complex.c (nucomp_hash): force hash values fixable.
  [ruby-core:85224] [Bug #14420]

* rational.c (nurat_hash): ditto.
------------------------------------------------------------------------
r62106 | hsbt | 2018-01-30 14:43:42 +0900 (Tue, 30 Jan 2018) | 17 lines

ia64: update ia64-specific code to use execution context

This change follows commit 837fd5e494731d7d44786f29e7d6e8c27029806f
in '#ifdef __ia64' branches.

Noticed as a build failure by John Paul Adrian Glaubitz:

```
  cont.c:502:50: error: 'rb_thread_t {aka struct rb_thread_struct}'
    has no member named 'machine'
       size = cont->machine.register_stack_size =
           th->machine.register_stack_end - th->machine.register_stack_start;
               ^~
```

The change is trivial: update 'th->machine' usage to 'th->ec->machine'.
Signed-off-by: Sergei Trofimovich <slyfox@gentoo.org>
------------------------------------------------------------------------
r62105 | nobu | 2018-01-30 13:17:32 +0900 (Tue, 30 Jan 2018) | 1 line

vcs.rb: checkout the current branch before rebase
------------------------------------------------------------------------
r62104 | nobu | 2018-01-30 12:57:54 +0900 (Tue, 30 Jan 2018) | 1 line

common.mk: added minimum dependencies of incs
------------------------------------------------------------------------
r62103 | nobu | 2018-01-30 12:21:52 +0900 (Tue, 30 Jan 2018) | 8 lines

bare_instructions.rb: sp_inc is signed

* tool/ruby_vm/models/bare_instructions.rb (predefine_attributes):
  `sp_inc` attribute which may return negative values must be
  signed `rb_snum_t`, to be signed-expanded at type promotion.

* vm_insnhelper.h (ADJ_SP): removed the workaround for platforms
  where rb_num_t is wider than int.
------------------------------------------------------------------------
r62102 | ko1 | 2018-01-30 11:21:59 +0900 (Tue, 30 Jan 2018) | 1 line

skip EINVAL on unsupported platform
------------------------------------------------------------------------
r62101 | nobu | 2018-01-30 11:20:02 +0900 (Tue, 30 Jan 2018) | 5 lines

vcs.rb: fix errors

* tool/vcs.rb (DebugSystem#system): fix undefined local variable
  error.  as system doesn't accept `exception:` option before 2.6,
  remove it from `opts`.
------------------------------------------------------------------------
r62100 | nobu | 2018-01-30 11:08:30 +0900 (Tue, 30 Jan 2018) | 3 lines

iseq.c: internal lvar name

* iseq.c (local_var_name): name internal local variables as `?N`.
------------------------------------------------------------------------
r62099 | normal | 2018-01-30 09:22:22 +0900 (Tue, 30 Jan 2018) | 7 lines

net/pop: make modified strings mutable

Thanks to Michael Zimmerman for the bug report

* lib/net/pop.rb: make modified strings mutable
  [ruby-core:85210] [Bug #14416]
* test/net/pop/test_pop.rb: new test
------------------------------------------------------------------------
r62098 | naruse | 2018-01-30 02:12:07 +0900 (Tue, 30 Jan 2018) | 1 line

show BASERUBY's version on `make showflags`
------------------------------------------------------------------------
r62097 | naruse | 2018-01-30 02:05:41 +0900 (Tue, 30 Jan 2018) | 1 line

Suport ruby 1.9.3
------------------------------------------------------------------------
r62094 | eregon | 2018-01-30 01:08:16 +0900 (Tue, 30 Jan 2018) | 1 line

Update to ruby/spec@83063a3
------------------------------------------------------------------------
r62093 | svn | 2018-01-30 01:07:36 +0900 (Tue, 30 Jan 2018) | 1 line

* 2018-01-30
------------------------------------------------------------------------
r62092 | eregon | 2018-01-30 01:07:35 +0900 (Tue, 30 Jan 2018) | 1 line

Update to ruby/mspec@5d49a6c
------------------------------------------------------------------------
r62091 | mame | 2018-01-29 17:40:22 +0900 (Mon, 29 Jan 2018) | 8 lines

string.c (rb_str_format_m): Fix the example code of the doc

Change `%08x` to `%016x` because of two reasons:

* `%016x` demonstrates that we can use two or more digits here.
* Currently, many people uses 64-bit environment.
  (I'm unsure if object_id is a good example here, though...)
I'm unsure if
------------------------------------------------------------------------
r62090 | shyouhei | 2018-01-29 17:11:02 +0900 (Mon, 29 Jan 2018) | 2 lines

redefinition of a typedef is a C11ism

------------------------------------------------------------------------
r62089 | shyouhei | 2018-01-29 16:15:08 +0900 (Mon, 29 Jan 2018) | 66 lines

eliminate CALL_SIMPLE_METHOD

Arrange operands of several opt_something insns so that jumps to
opt_send_without_block can be applied to them. This makes it
possible to eliminate CALL_SIMPLE_METHOD macro at all.  Results
in binary size of vm_exec_core to change from 27,008 bytes to
26,016 bytes on my machine. [close GH-1779]

Note however that PC can point somewhere non-instruction now.

-----------------------------------------------------------
benchmark results:
minimum results in each 3 measurements.
Execution time (sec)
name    before  after
so_ackermann     0.450  0.426
so_array         0.789  0.824
so_binary_trees  5.760  5.635
so_concatenate   3.594  3.508
so_count_words   0.211  0.196
so_exception     0.256  0.244
so_fannkuch      1.049  1.044
so_fasta         1.485  1.472
so_k_nucleotide  1.195  1.216
so_lists         0.517  0.513
so_mandelbrot    2.264  2.394
so_matrix        0.501  0.468
so_meteor_contest        2.987  2.912
so_nbody         1.307  1.289
so_nested_loop   0.908  0.925
so_nsieve        1.679  1.614
so_nsieve_bits   2.131  2.092
so_object        0.620  0.625
so_partial_sums  1.623  1.675
so_pidigits      1.135  1.190
so_random        0.357  0.321
so_reverse_complement    0.619  0.583
so_sieve         0.493  0.496
so_spectralnorm  1.749  1.737

Speedup ratio: compare with the result of `before' (greater is better)
name    after
so_ackermann    1.057
so_array        0.958
so_binary_trees 1.022
so_concatenate  1.024
so_count_words  1.077
so_exception    1.049
so_fannkuch     1.004
so_fasta        1.009
so_k_nucleotide 0.983
so_lists        1.007
so_mandelbrot   0.946
so_matrix       1.072
so_meteor_contest       1.026
so_nbody        1.013
so_nested_loop  0.982
so_nsieve       1.040
so_nsieve_bits  1.018
so_object       0.992
so_partial_sums 0.969
so_pidigits     0.954
so_random       1.111
so_reverse_complement   1.062
so_sieve        0.994
so_spectralnorm 1.007
------------------------------------------------------------------------
r62088 | shyouhei | 2018-01-29 16:04:50 +0900 (Mon, 29 Jan 2018) | 66 lines

s/CALL_SIMPLE_METHOD/DISPATCH_ORIGINAL_INSN/

Now that DISPATCH_ORIGINAL_INSN is introduced, we can replace
CALL_SIMPLE_METHOD with DISPATCH_ORIGINAL_INSN. These two macros
differ in size very much and results in this big difference in
compiled binary size. This changeset reduces the size of
vm_exec_core from 32,352 bytes to 27,008 bytes on my machine.  As
a result it yields slightly better performance.
Closes [GH-1779].

-----------------------------------------------------------
benchmark results:
minimum results in each 3 measurements.
Execution time (sec)
name    before  after
so_ackermann     0.484  0.454
so_array         0.837  0.779
so_binary_trees  5.928  5.801
so_concatenate   3.473  3.543
so_count_words   0.201  0.222
so_exception     0.255  0.252
so_fannkuch      1.080  1.019
so_fasta         1.459  1.463
so_k_nucleotide  1.218  1.180
so_lists         0.499  0.484
so_mandelbrot    2.189  2.324
so_matrix        0.510  0.496
so_meteor_contest        3.025  2.925
so_nbody         1.319  1.273
so_nested_loop   0.941  0.932
so_nsieve        1.806  1.647
so_nsieve_bits   2.151  2.078
so_object        0.632  0.621
so_partial_sums  1.560  1.632
so_pidigits      1.190  1.183
so_random        0.333  0.353
so_reverse_complement    0.604  0.586
so_sieve         0.521  0.481
so_spectralnorm  1.774  1.722

Speedup ratio: compare with the result of `before' (greater is better)
name    after
so_ackermann    1.065
so_array        1.075
so_binary_trees 1.022
so_concatenate  0.980
so_count_words  0.903
so_exception    1.009
so_fannkuch     1.059
so_fasta        0.997
so_k_nucleotide 1.032
so_lists        1.032
so_mandelbrot   0.942
so_matrix       1.028
so_meteor_contest       1.034
so_nbody        1.036
so_nested_loop  1.009
so_nsieve       1.097
so_nsieve_bits  1.035
so_object       1.018
so_partial_sums 0.956
so_pidigits     1.006
so_random       0.943
so_reverse_complement   1.032
so_sieve        1.083
so_spectralnorm 1.030
------------------------------------------------------------------------
r62087 | shyouhei | 2018-01-29 15:56:56 +0900 (Mon, 29 Jan 2018) | 32 lines

also use sp_inc in vm core

Now that sp_inc attributes are officially provided as inline
functions. Why not use them directly from the vm core, not just
by the compiler. By doing so, it is now possible for us to
optimize stack manipulations. We can now know exactly how many
words of stack space an instruction consumes before it actually
does. This changeset deletes some lines from insns.def because
they are no longer needed.  As a result it reduces the size of
vm_exec_core function from 32,400 bytes to 32,352 bytes on my
machine.

It seems it does not affect performance:

-----------------------------------------------------------
benchmark results:
minimum results in each 3 measurements.
Execution time (sec)
name    before  after
loop_for         1.093  1.061
loop_generator   1.156  1.152
loop_times       0.982  0.974
loop_whileloop   0.549  0.587
loop_whileloop2  0.115  0.121

Speedup ratio: compare with the result of `before' (greater is better)
name    after
loop_for        1.030
loop_generator  1.003
loop_times      1.008
loop_whileloop  0.935
loop_whileloop2 0.949
------------------------------------------------------------------------
r62086 | nobu | 2018-01-29 15:54:22 +0900 (Mon, 29 Jan 2018) | 6 lines

ruby.c: no VARIABLE_LIBPATH

* ruby.c (ruby_init_loadpath_safe): removed code using fixed size
  path buffer.  relative load path is supported only on platforms
  where dladdr is available, or on Windows, so !VARIABLE_LIBPATH
  code is not used.
------------------------------------------------------------------------
r62085 | shyouhei | 2018-01-29 15:47:05 +0900 (Mon, 29 Jan 2018) | 6 lines

extensive use of instruction attributes

Instead of using magic numbers, let us define a series of attributes
and use them from the VM core.  Proper function declarations makes
these attributes inlined in most modern compilers.  On my machine
exact same binary is generated with or without this changeset.
------------------------------------------------------------------------
r62084 | svn | 2018-01-29 06:57:39 +0900 (Mon, 29 Jan 2018) | 1 line

* properties.
------------------------------------------------------------------------
r62083 | normal | 2018-01-29 06:57:38 +0900 (Mon, 29 Jan 2018) | 8 lines

doc/signals.rdoc: new document work-in-progress

We need a longer document to inform users of caveats
related to Signal.trap usage.  This is still incomplete,
and we can fill in and edit other bits as needed.

* doc/signals.rdoc: new document
  [ruby-core:85107] [Misc #14222]
------------------------------------------------------------------------
r62082 | svn | 2018-01-29 06:07:14 +0900 (Mon, 29 Jan 2018) | 1 line

* 2018-01-29
------------------------------------------------------------------------
r62081 | normal | 2018-01-29 06:07:13 +0900 (Mon, 29 Jan 2018) | 23 lines

uri/common: reduce allocations and retained objects

Thanks to Sam Saffron for this patch, it shows
a nice reduction which affects many web applications:

  require 'memory_profiler'

  MemoryProfiler.report do
    require 'uri'
  end.pretty_print

Before:

Total allocated: 986643 bytes (15159 objects)
Total retained:  246370 bytes (2532 objects)

After:

Total allocated: 926903 bytes (13665 objects)
Total retained:  208570 bytes (1587 objects)

* lib/uri/common.rb: reduce allocations and retained objects
  [ruby-core:85161] [Feature #14410]
------------------------------------------------------------------------
r62080 | nobu | 2018-01-28 23:16:48 +0900 (Sun, 28 Jan 2018) | 1 line

method.h: VM_METHOD_TYPE_MINIMUM_BITS
------------------------------------------------------------------------
r62079 | nobu | 2018-01-28 23:05:39 +0900 (Sun, 28 Jan 2018) | 1 line

parse.y (parser_append_options): shorter alias LOC
------------------------------------------------------------------------
r62078 | nobu | 2018-01-28 19:35:28 +0900 (Sun, 28 Jan 2018) | 4 lines

method.h: BITFIELD in rb_method_definition_t

* method.h (rb_method_definition_struct): use BITFIELD for
  rb_method_type_t.
------------------------------------------------------------------------
r62077 | normal | 2018-01-28 06:04:42 +0900 (Sun, 28 Jan 2018) | 7 lines

internal.h: add BITFIELD macro to aid C99 users

I plan to use this macro to pack other enums in the VM.

* internal.h: add BITFIELD macro
* method.h: use BITFIELD for rb_method_visibility_t
  [ruby-core:85074] [Misc #14395]
------------------------------------------------------------------------
r62076 | svn | 2018-01-28 06:04:37 +0900 (Sun, 28 Jan 2018) | 1 line

* 2018-01-28
------------------------------------------------------------------------
r62075 | normal | 2018-01-28 06:04:36 +0900 (Sun, 28 Jan 2018) | 10 lines

vm_core: use "int" for living_thread_num

We treat this as "int" through the vm_living_thread_num API
anyways, and "pid_t" is still 32-bits with glibc on 64-bit
platforms.  I expect it'll be a long time before anybody needs
more than 2 billion native threads.  For now, let's save one
cacheline on x86-64 (as reported by pahole(1)):

	before:  size: 1288, cachelines: 21, members: 45
	 after:  size: 1280, cachelines: 20, members: 45
------------------------------------------------------------------------
r62074 | k0kubun | 2018-01-27 22:50:28 +0900 (Sat, 27 Jan 2018) | 3 lines

insns.def: [DOC] update supported attributes [ci skip]

which are changed at r62051.
------------------------------------------------------------------------
r62073 | nobu | 2018-01-27 19:41:43 +0900 (Sat, 27 Jan 2018) | 5 lines

compile.c: try to convert in massign `for`

* compile.c (compile_for_masgn): try to convert to an Array if an
  element of massign `for` is not an Array.
  [ruby-core:84931] [Bug #14374]
------------------------------------------------------------------------
r62072 | nobu | 2018-01-27 18:27:47 +0900 (Sat, 27 Jan 2018) | 4 lines

array.c: rb_check_to_array

* array.c (rb_check_to_array): conversion to array by to_a method.
  returns nil if not possible.
------------------------------------------------------------------------
r62071 | nobu | 2018-01-27 15:12:09 +0900 (Sat, 27 Jan 2018) | 7 lines

defined? returns nil for toplevel constant lookup

* variable.c (rb_const_defined_0): toplevel constant lookup has
  been removed, should return nil too.
  [ruby-core:85142] [Bug #14407] [Fix GH-1800]

From: Gonzalo <grzuy0@gmail.com>
------------------------------------------------------------------------
r62070 | nobu | 2018-01-27 15:11:23 +0900 (Sat, 27 Jan 2018) | 1 line

vcs.rb: prepend DebugSystem to VCS
------------------------------------------------------------------------
r62069 | nobu | 2018-01-27 14:35:47 +0900 (Sat, 27 Jan 2018) | 4 lines

vm_insnhelper.c: avoid intermediate array

* vm_insnhelper.c (vm_expandarray): get rid of creating
  intermediate Array object when conversion failed.
------------------------------------------------------------------------
r62068 | k0kubun | 2018-01-27 13:14:29 +0900 (Sat, 27 Jan 2018) | 6 lines

bare_instructions.rb: show class name on inspect

as it's helpful for debugging.

I'm not sure what's the good output for RubyVM::TraceInstructions, so I
left it as it is.
------------------------------------------------------------------------
r62067 | kazu | 2018-01-27 13:14:26 +0900 (Sat, 27 Jan 2018) | 4 lines

Fix duplicated HAVE_NAN

And remove redundant `HAVE_*` macros,
and use `USE_RB_*` macros instead.
------------------------------------------------------------------------
r62066 | k0kubun | 2018-01-27 11:14:20 +0900 (Sat, 27 Jan 2018) | 1 line

insns2vm.rb: add missing word to help
------------------------------------------------------------------------
r62065 | k0kubun | 2018-01-27 11:14:20 +0900 (Sat, 27 Jan 2018) | 5 lines

insns2vm.rb: make #generate_parser private

which is only used by #router.

To make it private, we need to stop defining them on top-level.
------------------------------------------------------------------------
r62064 | k0kubun | 2018-01-27 10:59:08 +0900 (Sat, 27 Jan 2018) | 12 lines

dumper.rb: stop getting --destdir option value

via current directory. It's kind of a global state and fragile to
implementation changes in other places, and how the `Dir.getwd` is set
is not obvious from just reading around `RubyVM::Dumper#initialize` if
it depends on the global state.

tool/ruby_vm/controllers/application_controller.rb: explicitly pass
destdir to RubyVM::Dumper.

tool/ruby_vm/scripts/insns2vm.rb: explicitly pass destdir parsed from
optparse.
------------------------------------------------------------------------
r62063 | k0kubun | 2018-01-27 10:28:21 +0900 (Sat, 27 Jan 2018) | 4 lines

win32/Makefile.sub: fix typo

Other places are using RT_VER. So I guess this is correct.
Currently AppVeyor CI is failing and I want to fix that.
------------------------------------------------------------------------
r62062 | svn | 2018-01-27 01:38:39 +0900 (Sat, 27 Jan 2018) | 1 line

* 2018-01-27
------------------------------------------------------------------------
r62061 | usa | 2018-01-27 01:38:38 +0900 (Sat, 27 Jan 2018) | 5 lines

need to declare the prototype of nan() if missing

* include/ruby/missing.h (nan): need to declare the prototype of nan() if
  missing.

------------------------------------------------------------------------
r62060 | nobu | 2018-01-26 22:38:00 +0900 (Fri, 26 Jan 2018) | 1 line

vcs.rb: old version cannot refine modules
------------------------------------------------------------------------
r62059 | nobu | 2018-01-26 22:34:09 +0900 (Fri, 26 Jan 2018) | 4 lines

vcs.rb: dcommit for each commit

svn to git bridge on ci.ruby-lang.org sometimes stalls when
dcommitting some commits at once.
------------------------------------------------------------------------
r62058 | nobu | 2018-01-26 22:27:56 +0900 (Fri, 26 Jan 2018) | 1 line

vcs.rb: debug print in system method
------------------------------------------------------------------------
r62057 | nobu | 2018-01-26 19:55:47 +0900 (Fri, 26 Jan 2018) | 7 lines

error.c: receiver kwarg

* error.c (name_err_initialize_options): NameError#initialize
  accepts receiver.  [Feature #14313]

* error.c (nometh_err_initialize_options): pass keyword arguments
  to the super method.
------------------------------------------------------------------------
r62056 | nobu | 2018-01-26 19:55:46 +0900 (Fri, 26 Jan 2018) | 4 lines

test_exception.rb: NameError.new NoMethodError.new

* test/ruby/test_exception.rb: added tests for NameError.new, and
  NoMethodError.new including priv argument.
------------------------------------------------------------------------
r62055 | nobu | 2018-01-26 19:55:45 +0900 (Fri, 26 Jan 2018) | 4 lines

error.c: [DOC] NoMethodError.new [ci skip]

* error.c (nometh_err_initialize): [RDOC] added missing optional
  argument priv.
------------------------------------------------------------------------
r62054 | nobu | 2018-01-26 19:55:45 +0900 (Fri, 26 Jan 2018) | 5 lines

error.c: copy keyword arguments

* error.c (rb_key_err_new): pass arguments all arguments to the
  super method, except for keyword arguments copied to instance
  variables.  [Feature #14313]
------------------------------------------------------------------------
r62053 | nobu | 2018-01-26 15:41:13 +0900 (Fri, 26 Jan 2018) | 5 lines

error.c: KeyError missing keyword arguments

* error.c (key_err_initialize): leave attributes for missing
  keyword arguments unset, so accessors can tell if it is missing
  or explicit nil.  [Feature #14313]
------------------------------------------------------------------------
r62052 | shyouhei | 2018-01-26 15:30:59 +0900 (Fri, 26 Jan 2018) | 5 lines

treat PC for gc events

ADD_PCs moved. That didn't change vast majority of event hooks
because vm_traece() has been placed before ADD_PC. However for GC
events the situation is different. We have to take care.
------------------------------------------------------------------------
r62051 | shyouhei | 2018-01-26 15:30:58 +0900 (Fri, 26 Jan 2018) | 66 lines

move ADD_PC around to optimize PC manipluiations

This commit introduces new attribute handles_flame and if that is
_not_ the case, places ADD_PC right after INC_SP.  This improves
locality of PC manipulations to prevents unnecessary register spill-
outs. As a result, it reduces the size of vm_exec_core from 32,688
bytes to 32,384 bytes on my machine.

Speedup is very faint, but certain.

-----------------------------------------------------------
benchmark results:
minimum results in each 3 measurements.
Execution time (sec)
name    before  after
so_ackermann     0.476  0.464
so_array         0.742  0.728
so_binary_trees  5.493  5.466
so_concatenate   3.619  3.395
so_count_words   0.190  0.184
so_exception     0.249  0.239
so_fannkuch      0.994  0.953
so_fasta         1.369  1.374
so_k_nucleotide  1.111  1.111
so_lists         0.470  0.481
so_mandelbrot    2.059  2.050
so_matrix        0.466  0.465
so_meteor_contest        2.712  2.781
so_nbody         1.154  1.204
so_nested_loop   0.852  0.846
so_nsieve        1.636  1.623
so_nsieve_bits   2.073  2.039
so_object        0.616  0.584
so_partial_sums  1.464  1.481
so_pidigits      1.075  1.082
so_random        0.321  0.317
so_reverse_complement    0.555  0.558
so_sieve         0.495  0.490
so_spectralnorm  1.634  1.627

Speedup ratio: compare with the result of `before' (greater is better)
name    after
so_ackermann    1.025
so_array        1.019
so_binary_trees 1.005
so_concatenate  1.066
so_count_words  1.030
so_exception    1.040
so_fannkuch     1.043
so_fasta        0.996
so_k_nucleotide 1.000
so_lists        0.978
so_mandelbrot   1.004
so_matrix       1.001
so_meteor_contest       0.975
so_nbody        0.959
so_nested_loop  1.007
so_nsieve       1.008
so_nsieve_bits  1.017
so_object       1.056
so_partial_sums 0.989
so_pidigits     0.994
so_random       1.014
so_reverse_complement   0.996
so_sieve        1.010
so_spectralnorm 1.004
------------------------------------------------------------------------
r62050 | nobu | 2018-01-26 14:34:18 +0900 (Fri, 26 Jan 2018) | 2 lines

error.c: use already initialized IDs
[Feature #14313]
------------------------------------------------------------------------
r62049 | kou | 2018-01-26 13:51:14 +0900 (Fri, 26 Jan 2018) | 3 lines

KeyError#initialize accepts receiver and key.
[Feature #14313][ruby-core:84626]

------------------------------------------------------------------------
r62048 | hsbt | 2018-01-26 12:54:55 +0900 (Fri, 26 Jan 2018) | 5 lines

Removed workaround Travis CI.

  Revert r61209, r61210

From: SHIBATA Hiroshi <hsbt@ruby-lang.org>
------------------------------------------------------------------------
r62047 | nobu | 2018-01-26 12:41:04 +0900 (Fri, 26 Jan 2018) | 1 line

optparse.rb: froze string literals
------------------------------------------------------------------------
r62046 | nobu | 2018-01-26 12:13:33 +0900 (Fri, 26 Jan 2018) | 1 line

ignore external library sources [ci skip]
------------------------------------------------------------------------
r62045 | nobu | 2018-01-26 12:13:32 +0900 (Fri, 26 Jan 2018) | 1 line

ext/psych/.gitignore: removed stale file [ci skip]
------------------------------------------------------------------------
r62044 | mrkn | 2018-01-26 11:01:47 +0900 (Fri, 26 Jan 2018) | 3 lines

Fix rubyspec against the change in Hash#transform_keys!

[Bug #14380] [ruby-core:84951]
------------------------------------------------------------------------
r62043 | svn | 2018-01-26 10:33:46 +0900 (Fri, 26 Jan 2018) | 1 line

* 2018-01-26
------------------------------------------------------------------------
r62042 | mrkn | 2018-01-26 10:33:45 +0900 (Fri, 26 Jan 2018) | 8 lines

hash.c: support key swapping in Hash#transform_keys!

* hash.c (rb_hash_transform_keys_bang): support key swapping in
  Hash#transform_keys!
  [Bug #14380] [ruby-core:84951]

* test/ruby/test_hash.rb (test_transform_keys_bang):
  add assertions for this change
------------------------------------------------------------------------
r62041 | nobu | 2018-01-25 22:22:36 +0900 (Thu, 25 Jan 2018) | 5 lines

compile.c: check mid

* compile.c (iseq_peephole_optimize): check that method ID is +@.
  fix up r62039.
  http://d.hatena.ne.jp/nagachika/20180125/ruby_trunk_changes_62025_62039#r62039
------------------------------------------------------------------------
r62040 | nobu | 2018-01-25 22:10:14 +0900 (Thu, 25 Jan 2018) | 5 lines

string.c: clear substring code range

* string.c (str_substr): substring of broken code range string may
  be valid or broken.  patch by tommy (Masahiro Tomita) at
  [ruby-dev:50430] [Bug #14388].
------------------------------------------------------------------------
r62039 | nobu | 2018-01-25 21:00:00 +0900 (Thu, 25 Jan 2018) | 4 lines

compile.c: unnecessary freezing

* compile.c (iseq_peephole_optimize): get rid of freezing
  dynamically created string to be duplicated immediately.
------------------------------------------------------------------------
r62038 | nobu | 2018-01-25 20:21:47 +0900 (Thu, 25 Jan 2018) | 4 lines

openssl/buffering.rb: no RS when output

* ext/openssl/lib/openssl/buffering.rb (do_write, puts): output
  methods should not be affected by the input record separator.
------------------------------------------------------------------------
r62037 | eregon | 2018-01-25 18:50:41 +0900 (Thu, 25 Jan 2018) | 1 line

Group related File.umask specs together
------------------------------------------------------------------------
r62036 | eregon | 2018-01-25 18:50:29 +0900 (Thu, 25 Jan 2018) | 5 lines

Remove specs trying arbitrary values for chmod and umask

* Instead assert that too large values raise RangeError.
* [Bug #14375] [ruby-core:84933]
* See https://github.com/ruby/ruby/pull/1797
------------------------------------------------------------------------
r62035 | nobu | 2018-01-25 10:48:41 +0900 (Thu, 25 Jan 2018) | 5 lines

optparse.rb: literal newline

* lib/optparse.rb (OptionParser#summarize): use literal newline to
  join option summaries as IO#puts does, not the special gloval
  variable $/.
------------------------------------------------------------------------
r62034 | ko1 | 2018-01-25 09:42:08 +0900 (Thu, 25 Jan 2018) | 1 line

revert r62032 because it refers to a undefined variable
------------------------------------------------------------------------
r62033 | kazu | 2018-01-25 09:11:52 +0900 (Thu, 25 Jan 2018) | 4 lines

.editorconfig: Use spaces instead of tab except Makefiles

ref [Bug #14246]
[ci skip]
------------------------------------------------------------------------
r62032 | nobu | 2018-01-25 08:17:20 +0900 (Thu, 25 Jan 2018) | 5 lines

optparse.rb: literal newline

* lib/optparse.rb (OptionParser#summarize): use literal newline to
  join option summaries as IO#puts does, not the special gloval
  variable $/.
------------------------------------------------------------------------
r62031 | normal | 2018-01-25 07:40:01 +0900 (Thu, 25 Jan 2018) | 4 lines

vm.c: remove unnecessary branch

th->altstack is never NULL, and even if it were, POSIX
stipulates free(3) on NULL to be a no-op.
------------------------------------------------------------------------
r62030 | normal | 2018-01-25 07:39:56 +0900 (Thu, 25 Jan 2018) | 4 lines

load.c: use fstring instead of OBJ_FREEZE

These strings already exist (or will exist soon) in the fstring
table, so avoid the duplicate, sooner.
------------------------------------------------------------------------
r62029 | normal | 2018-01-25 06:07:14 +0900 (Thu, 25 Jan 2018) | 38 lines

ruby/ruby.h: remove unnecessary exports from C-API

Needlessly exporting can reduce performance locally and increase
binary size.

Increasing the footprint of our C-API larger is also detrimental
to our development as it encourages tighter coupling with our
internals; making it harder for us to preserve compatibility.

If some parts of the core codebase needs access to globals,
internal.h should be used instead of anything in include/ruby/*.

"Urabe, Shyouhei" <shyouhei@ruby-lang.org> wrote:
> On Thu, Jan 18, 2018 at 7:33 PM, Eric Wong <normalperson@yhbt.net> wrote:
> > shyouhei@ruby-lang.org wrote:
> >>   https://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=revision&revision=61908
> >>
> >>     export rb_mFConst
> >
> > Why are we exporting all these and making the public C-API bigger?
> > If anything, we should make these static.  Thanks.
>
> No concrete reason, except they have already been externed in 2.5.
> These variables had lacked declarations so far, which resulted in their
> visibility to be that of extern. The commit is just confirming the status quo.
>
> I'm not against to turn them into static.

This reverts changes from r61910, r61909, r61908, r61907, and r61906.

* transcode.c (rb_eUndefinedConversionError): make static
  (rb_eInvalidByteSequenceError): ditto
  (rb_eConverterNotFoundError): ditto
* process.c (rb_mProcGID, rb_mProcUid, rb_mProcID_Syscall): ditto
* file.c (rb_mFConst): ditto
* error.c (rb_mWarning, rb_cWarningBuffer): ditto
* enumerator.c (rb_cLazy): ditto
  [Misc #14381]
------------------------------------------------------------------------
r62028 | svn | 2018-01-25 05:50:30 +0900 (Thu, 25 Jan 2018) | 1 line

* 2018-01-25
------------------------------------------------------------------------
r62027 | normal | 2018-01-25 05:50:29 +0900 (Thu, 25 Jan 2018) | 1 line

ruby.c (open_load_file): avoid shadowing variable for errno
------------------------------------------------------------------------
r62026 | k0kubun | 2018-01-24 23:31:40 +0900 (Wed, 24 Jan 2018) | 3 lines

system_spec.rb: add RubySpec for r62025

NEWS: added an entry for `exception: true` option.
------------------------------------------------------------------------
r62025 | k0kubun | 2018-01-24 23:11:25 +0900 (Wed, 24 Jan 2018) | 5 lines

process.c: add :exception option to Kernel.#system

to raise error when it fails.

[Feature 14386] [GH-1795]
------------------------------------------------------------------------
r62024 | nobu | 2018-01-24 17:25:36 +0900 (Wed, 24 Jan 2018) | 5 lines

mkmf.rb: werror on mswin

* lib/mkmf.rb (MakeMakefile#try_ldflags): enable warning checking
  on mswin, link.exe warns -l options but does not fail.
  [Bug #13069]
------------------------------------------------------------------------
r62022 | nobu | 2018-01-24 16:15:55 +0900 (Wed, 24 Jan 2018) | 4 lines

dir.c: Dir#each_child

* dir.c (dir_each_child_m): new instance methods Dir#each_child
  and Dir#children.  [Feature #13969]
------------------------------------------------------------------------
r62021 | nobu | 2018-01-24 15:32:46 +0900 (Wed, 24 Jan 2018) | 1 line

NEWS: [Feature #14223] [ci skip]
------------------------------------------------------------------------
r62020 | nobu | 2018-01-24 15:25:02 +0900 (Wed, 24 Jan 2018) | 5 lines

vm_args.c: to_proc refinements

* vm_args.c (vm_to_proc): enable #to_proc by refinements at Proc
  passing as a block.  patched by osyo (manga osyo).
  [Feature #14223]
------------------------------------------------------------------------
r62019 | yui-knk | 2018-01-24 09:12:53 +0900 (Wed, 24 Jan 2018) | 1 line

Fix a typo
------------------------------------------------------------------------
r62018 | kazu | 2018-01-24 09:03:51 +0900 (Wed, 24 Jan 2018) | 4 lines

Add documentation for the Kernel#warn :uplevel keyword

[ruby-core:84574] [Bug #14264]
Author:    Jeremy Evans <code@jeremyevans.net>
------------------------------------------------------------------------
r62017 | nobu | 2018-01-24 00:31:22 +0900 (Wed, 24 Jan 2018) | 5 lines

init.c: encode socket error message

* ext/socket/init.c (rsock_raise_socket_error): on Windows, encode
  error messages from wide characters to the default encodings.
  [ruby-core:84972] [Bug #14384]
------------------------------------------------------------------------
r62016 | svn | 2018-01-24 00:31:22 +0900 (Wed, 24 Jan 2018) | 1 line

* 2018-01-24
------------------------------------------------------------------------
r62015 | nobu | 2018-01-24 00:31:21 +0900 (Wed, 24 Jan 2018) | 4 lines

getaddrinfo.c: ai_errlist

* ext/socket/getaddrinfo.c (ai_errlist): used only if gai_strerror
  is missing.
------------------------------------------------------------------------
r62014 | nobu | 2018-01-23 23:17:25 +0900 (Tue, 23 Jan 2018) | 1 line

parse.y: fix yytokentype function declarations
------------------------------------------------------------------------
r62013 | nobu | 2018-01-23 12:53:34 +0900 (Tue, 23 Jan 2018) | 1 line

parse.y: added implicit parser_params argument
------------------------------------------------------------------------
r62012 | nobu | 2018-01-23 12:37:21 +0900 (Tue, 23 Jan 2018) | 1 line

parse.y: added new_strterm wrapper
------------------------------------------------------------------------
r62011 | nobu | 2018-01-23 11:31:42 +0900 (Tue, 23 Jan 2018) | 3 lines

parse.y: concat dedented heredoc

* parse.y (heredoc_dedent): concat literal strings after dedented.
------------------------------------------------------------------------
r62010 | svn | 2018-01-23 11:23:19 +0900 (Tue, 23 Jan 2018) | 1 line

* 2018-01-23
------------------------------------------------------------------------
r62009 | nobu | 2018-01-23 11:23:18 +0900 (Tue, 23 Jan 2018) | 1 line

parse.y: removed implicit parser_params macros
------------------------------------------------------------------------
r62008 | kazu | 2018-01-22 22:09:37 +0900 (Mon, 22 Jan 2018) | 1 line

use predefined IDs
------------------------------------------------------------------------
r62007 | nobu | 2018-01-22 21:34:51 +0900 (Mon, 22 Jan 2018) | 4 lines

mkmf.rb: ignore linker warnings

* lib/mkmf.rb (try_ldflags): ignore linker warnings.  they cause
  unexpected failures on OpenBSD.  [ruby-core:78827] [Bug #13069]
------------------------------------------------------------------------
r62006 | normal | 2018-01-22 12:04:26 +0900 (Mon, 22 Jan 2018) | 4 lines

time.c (num_exact): use predefined IDs

No need to waste space on "to_r" and "to_int" which are
predefined in defs/id.def
------------------------------------------------------------------------
r62005 | normal | 2018-01-22 09:40:11 +0900 (Mon, 22 Jan 2018) | 4 lines

time.c: constify compat_* tables

compat_common_month_table and compat_leap_month_table should
not be writable.
------------------------------------------------------------------------
r62004 | svn | 2018-01-22 00:26:20 +0900 (Mon, 22 Jan 2018) | 1 line

* 2018-01-22
------------------------------------------------------------------------
r62003 | nobu | 2018-01-22 00:26:20 +0900 (Mon, 22 Jan 2018) | 1 line

parse.y: expand tokp macro
------------------------------------------------------------------------
r62002 | nobu | 2018-01-22 00:26:19 +0900 (Mon, 22 Jan 2018) | 1 line

parse.y: add EXPR_NONE
------------------------------------------------------------------------
r62001 | nobu | 2018-01-21 18:59:45 +0900 (Sun, 21 Jan 2018) | 5 lines

keywords: shrink struct kwtable

* defs/keywords (struct kwtable): shrink since members do not
  exceed 16bit.  lex_state needs to be int (or enum lex_state_e)
  when EXPR_MAX_STATE reaches it.
------------------------------------------------------------------------
r62000 | nobu | 2018-01-21 16:44:25 +0900 (Sun, 21 Jan 2018) | 5 lines

parse.y: fix state after left brace

* parse.y (parser_yylex): as well as `tLBRACE_ARG` (expr block),
  `tLBRACE` (primary block) also does not accept a label.  only
  hash brace accepts a label.
------------------------------------------------------------------------
r61999 | nobu | 2018-01-21 16:44:24 +0900 (Sun, 21 Jan 2018) | 1 line

parse.y: revert trace message to lex_state
------------------------------------------------------------------------
r61998 | nobu | 2018-01-21 16:44:24 +0900 (Sun, 21 Jan 2018) | 1 line

parse.y: use enum yytokentype
------------------------------------------------------------------------
r61997 | nobu | 2018-01-21 16:44:23 +0900 (Sun, 21 Jan 2018) | 1 line

parse.y: parser_token_value_print for yydebug
------------------------------------------------------------------------
r61996 | kazu | 2018-01-21 11:24:26 +0900 (Sun, 21 Jan 2018) | 1 line

Fix missing m4_include at r61982
------------------------------------------------------------------------
r61995 | normal | 2018-01-21 07:07:36 +0900 (Sun, 21 Jan 2018) | 7 lines

load.c: use rb_warning directly

This removes the last dependency on rb_mWarning outside of
error.c and allows future commits to mark it static.

Yes, I expect this to slow down the emitting of a warning
message in a cold code path slightly :P
------------------------------------------------------------------------
r61994 | mame | 2018-01-21 02:52:51 +0900 (Sun, 21 Jan 2018) | 3 lines

ext/ripper/tools/dsl.rb: Use String#sub instead of delete_suffix

It fails when baseruby is old.
------------------------------------------------------------------------
r61993 | mame | 2018-01-21 02:52:50 +0900 (Sun, 21 Jan 2018) | 1 line

parse.y: Remove unneeded macro nd_set_line
------------------------------------------------------------------------
r61992 | mame | 2018-01-21 02:45:25 +0900 (Sun, 21 Jan 2018) | 1 line

parse.y: Remove double meaning of new_qcall/new_command_qcall
------------------------------------------------------------------------
r61991 | mame | 2018-01-21 02:45:24 +0900 (Sun, 21 Jan 2018) | 7 lines

ext/ripper/tools/dsl.rb: Serialize dispatch calls

To avoid the unspecified behavior (the evaluation order of arguments).
In `$$ = foo(bar(), baz());`, it is unspecified which `bar` or `baz` is
called earlier.

This commit changes the code to `v1=bar(); v2=baz(); $$ = foo();`.
------------------------------------------------------------------------
r61990 | mame | 2018-01-21 01:21:29 +0900 (Sun, 21 Jan 2018) | 14 lines

parse.y: rewrite excessed_comma process

Currently, parser.y includes core parser and Ripper parser obscurity.
In addition, *some* Ripper code uses the result of the core parser,
which make it difficult to separate the two parsers.

I want to simplify this, not by separating the two parsers, but by
making *all* Ripper actions follows the core parser actions.
In other words, all the core parser actions run always even in Ripper,
and after that, Ripper-specific actions run.

For tha sake, in principle, I want to put `/*% ripper: ... %*/` in the
end of actions.
Anyway, it is too dirty to put it within expressions, IMO.
------------------------------------------------------------------------
r61989 | mame | 2018-01-21 01:21:28 +0900 (Sun, 21 Jan 2018) | 1 line

parse.y: Remove macros that are no longer used
------------------------------------------------------------------------
r61988 | mame | 2018-01-21 01:21:26 +0900 (Sun, 21 Jan 2018) | 1 line

parse.y: Remove double meaning of new_op_assign, etc.
------------------------------------------------------------------------
r61987 | mame | 2018-01-21 01:21:25 +0900 (Sun, 21 Jan 2018) | 1 line

parse.y: Remove double meaning of new_xstring/new_string1
------------------------------------------------------------------------
r61986 | mame | 2018-01-21 01:21:23 +0900 (Sun, 21 Jan 2018) | 1 line

parse.y: remove double meaning of new_brace_body/new_do_body
------------------------------------------------------------------------
r61985 | svn | 2018-01-21 01:21:21 +0900 (Sun, 21 Jan 2018) | 1 line

* 2018-01-21
------------------------------------------------------------------------
r61984 | mame | 2018-01-21 01:21:20 +0900 (Sun, 21 Jan 2018) | 1 line

parse.y: remove double meaning of const_path_field/top_const_field
------------------------------------------------------------------------
r61983 | shyouhei | 2018-01-20 16:14:59 +0900 (Sat, 20 Jan 2018) | 4 lines

Emacs friendliness [ci skip]

Just add comment by:
sed -i $'1i\\\n# -*- Autoconf -*-' tool/m4/*.m4
------------------------------------------------------------------------
r61982 | shyouhei | 2018-01-20 16:05:26 +0900 (Sat, 20 Jan 2018) | 5 lines

set AC_CONFIG_MACRO_DIRS [close GH-1793]

We do not use aclocal(1) by default. But in case users do so,
AC_CONFIG_MACRO_DIRS help them reconstruct the same contents as
this commit includes.
------------------------------------------------------------------------
r61981 | shyouhei | 2018-01-20 16:05:25 +0900 (Sat, 20 Jan 2018) | 5 lines

refactor split configure.ac into files

This does not (yet) change anything. The generated configure file
is the identical to previous one (except several empty lines added
and deleted).
------------------------------------------------------------------------
r61980 | nobu | 2018-01-20 15:49:30 +0900 (Sat, 20 Jan 2018) | 3 lines

Makefile.sub: missing/nan.obj

* win32/Makefile.sub (MISSING): nan() is available since msvcrr120.
------------------------------------------------------------------------
r61979 | mame | 2018-01-20 15:11:21 +0900 (Sat, 20 Jan 2018) | 14 lines

parse.y: Remove unneeded var_field_1 trick

I thought this trick was needed because the result of var_field was
passed to different arguments, as follows:

```
$1 = var_field(p, $1);
$$ = backref_assign_error(p, $1, $1, &@$);
```

Currently the DSL supports that one result is passed to one argument.

However, after the refactoring, I found that `backref_assign_error`
uses only one `$1`.
------------------------------------------------------------------------
r61978 | nobu | 2018-01-20 14:58:06 +0900 (Sat, 20 Jan 2018) | 5 lines

parse.y: dot_or_colon as id

* parse.y (dot_or_colon): made type of `dot_or_colon` and EXPR_DOT
  tokens to <id> and set those IDs at tokenization.  type cast at
  primary in ripper is no longer needed.
------------------------------------------------------------------------
r61977 | nobu | 2018-01-20 14:47:59 +0900 (Sat, 20 Jan 2018) | 5 lines

parse.y: moved excessed_comma

* parse.y (block_param): embed excessed_comma event result in
  place of rest argument, instead of dispatching with the whole
  parameters.
------------------------------------------------------------------------
r61976 | nobu | 2018-01-20 14:39:03 +0900 (Sat, 20 Jan 2018) | 4 lines

dsl.rb: p

* ext/ripper/tools/dsl.rb (DSL#initialize): define `p` for `struct
  parser_params *p`.
------------------------------------------------------------------------
r61975 | nobu | 2018-01-20 14:39:02 +0900 (Sat, 20 Jan 2018) | 4 lines

dsl.rb: ID constants

* ext/ripper/tools/dsl.rb (DSL#method_missing): expand ID
  constnats without parentheses.
------------------------------------------------------------------------
r61974 | nobu | 2018-01-20 14:39:01 +0900 (Sat, 20 Jan 2018) | 4 lines

dsl.rb: const_missing

* ext/ripper/tools/dsl.rb (DSL.const_missing): define to expand
  Qnil and Qundef as-is.
------------------------------------------------------------------------
r61973 | nobu | 2018-01-20 14:39:00 +0900 (Sat, 20 Jan 2018) | 4 lines

dsl.rb: indent

* ext/ripper/tools/dsl.rb (DSL#generate): indent after surrounding
  by braces.
------------------------------------------------------------------------
r61972 | shyouhei | 2018-01-20 13:18:09 +0900 (Sat, 20 Jan 2018) | 2 lines

[ci skip] tabify

------------------------------------------------------------------------
r61971 | shyouhei | 2018-01-20 12:16:59 +0900 (Sat, 20 Jan 2018) | 6 lines

add missing/nan.c

instead of scattering #ifdef HAVE_NANF here and there define our
own nan() unless defined elsewhere.


------------------------------------------------------------------------
r61970 | nobu | 2018-01-20 10:24:15 +0900 (Sat, 20 Jan 2018) | 1 line

parse.y (yycompile0): check if accepted
------------------------------------------------------------------------
r61969 | naruse | 2018-01-20 03:55:32 +0900 (Sat, 20 Jan 2018) | 1 line

r61950 changes mode_t to ushort on FreeBSD and Darwin
------------------------------------------------------------------------
r61968 | mame | 2018-01-20 02:29:27 +0900 (Sat, 20 Jan 2018) | 1 line

parse.y (assignable): Remove macro hell
------------------------------------------------------------------------
r61967 | mame | 2018-01-20 02:06:56 +0900 (Sat, 20 Jan 2018) | 1 line

parse.y: Split the path of assignable to Ripper/Parser
------------------------------------------------------------------------
r61966 | mame | 2018-01-20 01:28:23 +0900 (Sat, 20 Jan 2018) | 1 line

parse.y: Remove double meaning of node_assign
------------------------------------------------------------------------
r61965 | mame | 2018-01-20 01:24:07 +0900 (Sat, 20 Jan 2018) | 1 line

parse.y: Remove double meaning of backref_assign_error
------------------------------------------------------------------------
r61964 | mame | 2018-01-20 00:43:42 +0900 (Sat, 20 Jan 2018) | 3 lines

parse.y: Remove unneeded type decls for Ripper

I think that they are not used.
------------------------------------------------------------------------
r61963 | svn | 2018-01-20 00:22:37 +0900 (Sat, 20 Jan 2018) | 1 line

* 2018-01-20
------------------------------------------------------------------------
r61962 | mame | 2018-01-20 00:22:36 +0900 (Sat, 20 Jan 2018) | 5 lines

parse.y: swap `foo!` and `foo` in Ripper DSL

`foo!(...)` means Ripper event, and `foo(...)` means C function/macro
call.  This is for fail-safe; if I forget `!` accidentally, it would
fail to compile, instead of wrongly adding a new Ripper event.
------------------------------------------------------------------------
r61961 | nobu | 2018-01-19 23:50:55 +0900 (Fri, 19 Jan 2018) | 4 lines

test_io.rb: avoid OOM

* test/ruby/test_io.rb (TestIO#test_copy_stream_socket7): reduce
  memory usage so the worker process will not die by OOM.
------------------------------------------------------------------------
r61960 | nobu | 2018-01-19 22:41:44 +0900 (Fri, 19 Jan 2018) | 4 lines

parse.y: assign to $$

* parse.y (command): assign to $$.  should not rely upon
  undocumented behavior.
------------------------------------------------------------------------
r61959 | mame | 2018-01-19 22:36:03 +0900 (Fri, 19 Jan 2018) | 3 lines

parse.y: fix up r61957, too

My apologies!
------------------------------------------------------------------------
r61958 | nobu | 2018-01-19 22:25:49 +0900 (Fri, 19 Jan 2018) | 1 line

parse.y: fix up r61957
------------------------------------------------------------------------
r61957 | mame | 2018-01-19 22:11:11 +0900 (Fri, 19 Jan 2018) | 4 lines

parse.y: Allows Ripper DSL to embed C function calls as `foo!`

Instead of `_foo`.  This makes it useful to do word boundary search of
the editor.
------------------------------------------------------------------------
r61956 | kazu | 2018-01-19 21:15:56 +0900 (Fri, 19 Jan 2018) | 3 lines

Fix warning

``lib/net/protocol.rb:214: warning: `*' interpreted as argument prefix``
------------------------------------------------------------------------
r61955 | mame | 2018-01-19 20:10:39 +0900 (Fri, 19 Jan 2018) | 1 line

parse.y: Remove new_command
------------------------------------------------------------------------
r61954 | mame | 2018-01-19 20:10:30 +0900 (Fri, 19 Jan 2018) | 3 lines

ext/ripper/tools/preproc.rb: Remove `/*%c%` handling

It was replaced with `/*% ripper[brace]: ... %*/`
------------------------------------------------------------------------
r61953 | svn | 2018-01-19 19:48:09 +0900 (Fri, 19 Jan 2018) | 1 line

* properties.
------------------------------------------------------------------------
r61952 | mame | 2018-01-19 19:48:08 +0900 (Fri, 19 Jan 2018) | 16 lines

ext/ripper: Introduce a simple DSL for ripper.y code generation

Currently, parse.y actions are hard to read and write because the code
has double meaning (for core parser and for ripper).  I think that, if
it is easy to write ripper's code shortly and simply, the double meaning
trick is not needed.

For the sake, this change adds a simple DSL for ripper's code.  For
example, in parse.y, we can write:

    /*% ripper: stmts_add(stmts_new, void_stmt) %*/

instead of:

    $$ = dispatch2(stmts_add, dispatch0(stmts_new),
                   dispatch0(void_stmt));
------------------------------------------------------------------------
r61951 | mame | 2018-01-19 19:26:12 +0900 (Fri, 19 Jan 2018) | 3 lines

parse.y: Fix excessed_comma event

I believe that the assignment to `$$` was just forgotten.
------------------------------------------------------------------------
r61950 | shyouhei | 2018-01-19 18:12:06 +0900 (Fri, 19 Jan 2018) | 6 lines

there is no guarantee that mode_t is as wide as int

POSIX only defines mode_t to be "an integer typea", and in fact
MacOS defines it to be uint16_t.  We didn't have NUM2USHORT before
so it did not make sense but now that we have it.  Why not check
apptopriately.
------------------------------------------------------------------------
r61949 | shyouhei | 2018-01-19 17:17:56 +0900 (Fri, 19 Jan 2018) | 4 lines

don't abuse RSTRING_PTR (2nd try)

r61827, r61947 was about to fix this. The proper way to allocate
memory region is called ALLOCV_N.
------------------------------------------------------------------------
r61948 | shyouhei | 2018-01-19 16:16:54 +0900 (Fri, 19 Jan 2018) | 4 lines

svn merge -c -61947 .

Previous commit fails in CI.

------------------------------------------------------------------------
r61947 | shyouhei | 2018-01-19 16:07:49 +0900 (Fri, 19 Jan 2018) | 4 lines

don't abuse RSTRING_PTR

r61827 was about to fix this. The proper way to allocate memory
region is called ALLOCV_N.
------------------------------------------------------------------------
r61946 | shyouhei | 2018-01-19 14:18:18 +0900 (Fri, 19 Jan 2018) | 3 lines

there is no such thing like 0 in enum defined_type

introduce new enum for it.
------------------------------------------------------------------------
r61945 | nobu | 2018-01-19 13:23:59 +0900 (Fri, 19 Jan 2018) | 6 lines

vm_args.c: fix KW_SPECIFIED_BITS_MAX

* vm_args.c (KW_SPECIFIED_BITS_MAX): subtracted 1bit for
  FIXNUM_FLAG.  [ruby-core:84921] [Bug #14373]

* vm_insnhelper.c (vm_check_keyword): unsigned for bit operation.
------------------------------------------------------------------------
r61944 | shyouhei | 2018-01-19 12:59:13 +0900 (Fri, 19 Jan 2018) | 4 lines

avoid goto

gcc -Wjump-misses-init warns this goto.  That is a false alert.
However why on earth do we need to use goto here?
------------------------------------------------------------------------
r61943 | shyouhei | 2018-01-19 12:57:53 +0900 (Fri, 19 Jan 2018) | 1 line

ruby_gc_debug_indent needed only when RUBY_MARK_FREE_DEBUG
------------------------------------------------------------------------
r61942 | shyouhei | 2018-01-19 12:55:16 +0900 (Fri, 19 Jan 2018) | 1 line

st_hashtype_num marked as static
------------------------------------------------------------------------
r61941 | shyouhei | 2018-01-19 12:19:58 +0900 (Fri, 19 Jan 2018) | 1 line

variable succ_index_table never actually used
------------------------------------------------------------------------
r61940 | nobu | 2018-01-19 12:09:24 +0900 (Fri, 19 Jan 2018) | 7 lines

vm_insnhelper.c: fix many keyword arguments

* vm_insnhelper.c (vm_check_keyword): if the index exceeds the
  width of unspecified bits, that argument is specified.
  `unspecified_bits` still be a fixnum if the actual arguments do
  not exceed the limit, regardless the formal parameters size.
  [ruby-core:84921] [Bug #14373]
------------------------------------------------------------------------
r61939 | nobu | 2018-01-19 11:36:32 +0900 (Fri, 19 Jan 2018) | 4 lines

vm_insnhelper.c: should invert unspecified flag

* vm_insnhelper.c (vm_check_keyword): invert unspecified value
  flag as `checkkeyword` result.  fix up r58390.
------------------------------------------------------------------------
r61938 | shyouhei | 2018-01-19 10:45:36 +0900 (Fri, 19 Jan 2018) | 7 lines

INFINITY is float. That of double is HUGE_VAL.

It seems HUGE_VAL is already used. Why not eliminate INTINITY.
NAN is also float. That of double is called nan(). This is also
fixed.

Signed-off-by: Urabe, Shyouhei <shyouhei@ruby-lang.org>
------------------------------------------------------------------------
r61937 | svn | 2018-01-19 00:48:56 +0900 (Fri, 19 Jan 2018) | 1 line

* 2018-01-19
------------------------------------------------------------------------
r61936 | nobu | 2018-01-19 00:48:55 +0900 (Fri, 19 Jan 2018) | 4 lines

compile.c: use ALLOCV_N

* compile.c (ibf_dump_object_list): allocate known-size array by
  ALLOCV_N instead of rb_ary_tmp_new.
------------------------------------------------------------------------
r61935 | kazu | 2018-01-18 21:54:24 +0900 (Thu, 18 Jan 2018) | 3 lines

Use already casted variable

r61883
------------------------------------------------------------------------
r61934 | kazu | 2018-01-18 21:54:18 +0900 (Thu, 18 Jan 2018) | 1 line

[DOC] Add `Array#{append,prepend}` to call-seq [ci skip]
------------------------------------------------------------------------
r61933 | hsbt | 2018-01-18 20:44:10 +0900 (Thu, 18 Jan 2018) | 4 lines

Fix typos.

  * rememberd -> remembered
  * refered -> referred
------------------------------------------------------------------------
r61932 | nobu | 2018-01-18 20:34:36 +0900 (Thu, 18 Jan 2018) | 1 line

marked as NORETURN
------------------------------------------------------------------------
r61931 | shyouhei | 2018-01-18 18:44:52 +0900 (Thu, 18 Jan 2018) | 1 line

rb_global_tbl marked as static
------------------------------------------------------------------------
r61930 | shyouhei | 2018-01-18 18:44:51 +0900 (Thu, 18 Jan 2018) | 1 line

rb_parser_lex_state_names marked as static
------------------------------------------------------------------------
r61929 | shyouhei | 2018-01-18 18:44:50 +0900 (Thu, 18 Jan 2018) | 1 line

usage analysis functions marke as static
------------------------------------------------------------------------
r61928 | shyouhei | 2018-01-18 18:44:49 +0900 (Thu, 18 Jan 2018) | 1 line

vm_super_outside marked as NORETURN
------------------------------------------------------------------------
r61927 | shyouhei | 2018-01-18 18:44:48 +0900 (Thu, 18 Jan 2018) | 1 line

vm_stackoverflow marked as NORETURN
------------------------------------------------------------------------
r61926 | shyouhei | 2018-01-18 18:44:47 +0900 (Thu, 18 Jan 2018) | 1 line

raise_closed_queue_error marked as NORETURN
------------------------------------------------------------------------
r61925 | shyouhei | 2018-01-18 18:44:46 +0900 (Thu, 18 Jan 2018) | 1 line

rb_threadptr_to_kill marked as NORETURN
------------------------------------------------------------------------
r61924 | shyouhei | 2018-01-18 18:44:45 +0900 (Thu, 18 Jan 2018) | 1 line

sigill marked as NORETURN
------------------------------------------------------------------------
r61923 | shyouhei | 2018-01-18 18:44:45 +0900 (Thu, 18 Jan 2018) | 1 line

ruby_abort marked as NORETURN
------------------------------------------------------------------------
r61922 | shyouhei | 2018-01-18 18:44:44 +0900 (Thu, 18 Jan 2018) | 1 line

sigsegv marked as NORETURN
------------------------------------------------------------------------
r61921 | shyouhei | 2018-01-18 18:44:43 +0900 (Thu, 18 Jan 2018) | 1 line

sigbus marked as NORETURN
------------------------------------------------------------------------
r61920 | shyouhei | 2018-01-18 18:44:42 +0900 (Thu, 18 Jan 2018) | 1 line

rb_reg_raise_str marked as NORETURN
------------------------------------------------------------------------
r61919 | shyouhei | 2018-01-18 18:44:41 +0900 (Thu, 18 Jan 2018) | 1 line

rb_enc_reg_raise marked as NORETURN
------------------------------------------------------------------------
r61918 | shyouhei | 2018-01-18 18:44:41 +0900 (Thu, 18 Jan 2018) | 1 line

rb_reg_enc_error marked as NORETURN
------------------------------------------------------------------------
r61917 | shyouhei | 2018-01-18 18:44:40 +0900 (Thu, 18 Jan 2018) | 1 line

rb_reg_raise marked as NORETURN
------------------------------------------------------------------------
r61916 | shyouhei | 2018-01-18 18:44:39 +0900 (Thu, 18 Jan 2018) | 1 line

num_funcall_op_1_recursion marked as NORETURN
------------------------------------------------------------------------
r61915 | shyouhei | 2018-01-18 18:44:39 +0900 (Thu, 18 Jan 2018) | 1 line

long_toobig marked as NORETURN
------------------------------------------------------------------------
r61914 | shyouhei | 2018-01-18 18:44:38 +0900 (Thu, 18 Jan 2018) | 1 line

dir_closed marked as NORETURN
------------------------------------------------------------------------
r61913 | shyouhei | 2018-01-18 18:44:37 +0900 (Thu, 18 Jan 2018) | 1 line

ibf_dump_object_unsupported marked as NORETURN
------------------------------------------------------------------------
r61912 | shyouhei | 2018-01-18 18:44:36 +0900 (Thu, 18 Jan 2018) | 3 lines

-Wmissing-noreturn

This is the -Wsuggest-attribute=noreturn equivalent option for clang.
------------------------------------------------------------------------
r61911 | shyouhei | 2018-01-18 18:44:36 +0900 (Thu, 18 Jan 2018) | 1 line

merge extern declarations into internal.h
------------------------------------------------------------------------
r61910 | shyouhei | 2018-01-18 18:44:35 +0900 (Thu, 18 Jan 2018) | 1 line

export transcode exceptions
------------------------------------------------------------------------
r61909 | shyouhei | 2018-01-18 18:44:34 +0900 (Thu, 18 Jan 2018) | 1 line

export rb_mProcGID, rb_mProcUid, rb_mProcID_Syscall
------------------------------------------------------------------------
r61908 | shyouhei | 2018-01-18 18:44:34 +0900 (Thu, 18 Jan 2018) | 1 line

export rb_mFConst
------------------------------------------------------------------------
r61907 | shyouhei | 2018-01-18 18:44:33 +0900 (Thu, 18 Jan 2018) | 1 line

export ruby_mWarning
------------------------------------------------------------------------
r61906 | shyouhei | 2018-01-18 18:44:32 +0900 (Thu, 18 Jan 2018) | 1 line

export rb_cLazy
------------------------------------------------------------------------
r61905 | shyouhei | 2018-01-18 18:44:32 +0900 (Thu, 18 Jan 2018) | 1 line

sort lines
------------------------------------------------------------------------
r61904 | nobu | 2018-01-18 16:59:03 +0900 (Thu, 18 Jan 2018) | 4 lines

vm_eval.c: for auto-indent

* vm_eval.c (rb_type_str): moved `case`s and semicolons so auto
  indentation works.
------------------------------------------------------------------------
r61903 | nobu | 2018-01-18 16:53:26 +0900 (Thu, 18 Jan 2018) | 5 lines

eval_intern.h: duplicate check

* eval_intern.h (pass_passed_block_handler): remove duplicate
  check.  vm_block_handler_verify() is called in the successive
  function call.
------------------------------------------------------------------------
r61902 | naruse | 2018-01-18 12:53:46 +0900 (Thu, 18 Jan 2018) | 1 line

extend timeout more
------------------------------------------------------------------------
r61901 | nobu | 2018-01-18 12:37:08 +0900 (Thu, 18 Jan 2018) | 3 lines

parse.y: no longer undef assignable

* parse.y (assignable): no longer needs to undef since r61899.
------------------------------------------------------------------------
r61900 | nobu | 2018-01-18 12:29:12 +0900 (Thu, 18 Jan 2018) | 1 line

parse.y: fix overflow
------------------------------------------------------------------------
r61899 | nobu | 2018-01-18 12:25:20 +0900 (Thu, 18 Jan 2018) | 4 lines

parse.y: REQUIRED_KEYWORD

* parse.y (REQUIRED_KEYWORD): special argument for required
  keyword argument, for core and ripper.
------------------------------------------------------------------------
r61898 | nobu | 2018-01-18 12:09:39 +0900 (Thu, 18 Jan 2018) | 6 lines

resolv.rb: NUL hosts

* lib/resolv.rb (Resolv::Hosts::DefaultFileName): fallback to NUL
  device when Win32::Resolv.get_hosts_path() returned nil, to get
  rid of TypeError in lazy_initialize.
  [ruby-core:84907] [Bug #14369]  [Fix GH-1791]
------------------------------------------------------------------------
r61897 | nobu | 2018-01-18 11:44:50 +0900 (Thu, 18 Jan 2018) | 4 lines

resolv: use safe navigation operator

* lib/resolv.rb (each_address): use safe navigation operator to
  avoid extra hash lookups, as well as each_name since r56890.
------------------------------------------------------------------------
r61896 | nobu | 2018-01-18 10:27:45 +0900 (Thu, 18 Jan 2018) | 4 lines

marshal.c: initialize keywords

* marshal.c (r_object0): initialize `keywords` and removed
  `keyword_init` flag, to get rid of maybe-uninitialized warning.
------------------------------------------------------------------------
r61895 | nobu | 2018-01-18 10:10:22 +0900 (Thu, 18 Jan 2018) | 4 lines

win32/resolv.rb: call rb_w32_osid

* ext/win32/lib/win32/resolv.rb: call rb_w32_osid instead of
  direct GetVersionExA API.
------------------------------------------------------------------------
r61894 | normal | 2018-01-18 09:52:01 +0900 (Thu, 18 Jan 2018) | 3 lines

logger: use safe navigation operator

Saves a few hundred bytes of bytecode in a frequently loaded module.
------------------------------------------------------------------------
r61893 | naruse | 2018-01-18 03:08:58 +0900 (Thu, 18 Jan 2018) | 4 lines

include ruby/ruby.h before ruby.io.h

It breaks AIX build:
https://rubyci.org/logs/rubyci.s3.amazonaws.com/aix71_ppc/ruby-trunk/log/20180117T113303Z.log.html.gz
------------------------------------------------------------------------
r61892 | naruse | 2018-01-18 03:02:47 +0900 (Thu, 18 Jan 2018) | 1 line

extend timeout
------------------------------------------------------------------------
r61891 | svn | 2018-01-18 00:28:38 +0900 (Thu, 18 Jan 2018) | 1 line

* 2018-01-18
------------------------------------------------------------------------
r61890 | nobu | 2018-01-18 00:28:37 +0900 (Thu, 18 Jan 2018) | 6 lines

iseq.c: dump as non-trace instructions

* iseq.c (iseq_data_to_ary): when OPT_CALL_THREADED_CODE is used,
  iseq_encoded is overwritten by instructions with trace and the
  original_iseq is not stored.  convert these instructions to the
  original instructions as external representation.
------------------------------------------------------------------------
r61889 | hsbt | 2018-01-17 22:15:13 +0900 (Wed, 17 Jan 2018) | 5 lines

Fix typos.

 * node.c: strucutre -> structure
 * random.c: acquried -> acquired
 * thread.c: accross -> across
------------------------------------------------------------------------
r61888 | nobu | 2018-01-17 20:22:14 +0900 (Wed, 17 Jan 2018) | 4 lines

process.c: get_clk_tck fallback

* process.c (get_clk_tck): prefer CLK_TCK over older HZ, next to
  _SC_CLK_TCK.
------------------------------------------------------------------------
r61887 | nobu | 2018-01-17 20:16:24 +0900 (Wed, 17 Jan 2018) | 6 lines

process.c: remove useless cast

* process.c (get_clk_tck): remove useless cast, implicitly cast to
  long again.

* process.c (rb_proc_times): cast explicitly.
------------------------------------------------------------------------
r61886 | nobu | 2018-01-17 20:12:31 +0900 (Wed, 17 Jan 2018) | 4 lines

common.mk: ripper.c recipe

* common.mk (ripper.c): strip nmake-style VPATH from depend file,
  as well as mkmf.rb does.
------------------------------------------------------------------------
r61885 | mame | 2018-01-17 19:17:16 +0900 (Wed, 17 Jan 2018) | 1 line

ext/ripper/depend: Try to fix the path of id.h
------------------------------------------------------------------------
r61884 | nobu | 2018-01-17 15:38:08 +0900 (Wed, 17 Jan 2018) | 4 lines

test_ast.rb: no base directory name

* test/-ext-/ast/test_ast.rb: exclude base directory name from
  test method names.
------------------------------------------------------------------------
r61883 | nobu | 2018-01-17 15:23:57 +0900 (Wed, 17 Jan 2018) | 1 line

iseq.c: flatten TS_NUM operand conditions
------------------------------------------------------------------------
r61882 | nobu | 2018-01-17 15:05:37 +0900 (Wed, 17 Jan 2018) | 1 line

parse.y: refine negate_lit_gen error message
------------------------------------------------------------------------
r61881 | normal | 2018-01-17 14:03:43 +0900 (Wed, 17 Jan 2018) | 3 lines

time.c: use "unsigned int" for bitfields

Followup to r61870
------------------------------------------------------------------------
r61880 | nobu | 2018-01-17 13:25:39 +0900 (Wed, 17 Jan 2018) | 1 line

ripper.c: depends on preproc.rb
------------------------------------------------------------------------
r61879 | mame | 2018-01-17 00:12:15 +0900 (Wed, 17 Jan 2018) | 1 line

parse.y: Refactor for-statement generation
------------------------------------------------------------------------
r61878 | mame | 2018-01-17 00:12:11 +0900 (Wed, 17 Jan 2018) | 1 line

parse.y (new_args_tail): Use human-friendly variable names
------------------------------------------------------------------------
r61877 | svn | 2018-01-17 00:12:10 +0900 (Wed, 17 Jan 2018) | 1 line

* 2018-01-17
------------------------------------------------------------------------
r61876 | mame | 2018-01-17 00:12:09 +0900 (Wed, 17 Jan 2018) | 1 line

node.c: Separately allocate a struct having flexible array
------------------------------------------------------------------------
r61875 | shyouhei | 2018-01-16 18:21:07 +0900 (Tue, 16 Jan 2018) | 5 lines

nested flexible array member is a GCCism

This is NG. The ISO C section 6.7.2.1 explicitly states that
structs having flexible array members "shall not be a member
of a structure or an element of an array."
------------------------------------------------------------------------
r61874 | shyouhei | 2018-01-16 17:35:33 +0900 (Tue, 16 Jan 2018) | 5 lines

-Wno-overlength-strings

as per https://bugs.ruby-lang.org/projects/ruby-trunk/wiki/Assumptions
we are officially giving up 509 characters limit of C string
literal length.
------------------------------------------------------------------------
r61873 | nobu | 2018-01-16 17:21:40 +0900 (Tue, 16 Jan 2018) | 1 line

parse.y: unified local_push argument
------------------------------------------------------------------------
r61872 | nobu | 2018-01-16 17:05:57 +0900 (Tue, 16 Jan 2018) | 4 lines

parse.y: simplified compstmt

* parse.y (top_compstmt, compstmt): unified void_stmts with
  ripper.
------------------------------------------------------------------------
r61871 | mame | 2018-01-16 16:24:53 +0900 (Tue, 16 Jan 2018) | 6 lines

node.c: Stop double meaning of NODE_FOR by introducing NODE_FOR_MASGN

NODE_FOR was used both for "for"-statement itself and for
multi-assignment of for-statement (for x, y, in...end).
This change separates the two purposes, NODE_FOR for the former, and
newly introduced NODE_FOR_MASGN for the latter.
------------------------------------------------------------------------
r61870 | normal | 2018-01-16 15:36:05 +0900 (Tue, 16 Jan 2018) | 9 lines

timev.h: just use "unsigned int" for bitfields

There's no point in having separate types depending on C dialect
when using bitfields, "unsigned int" bitfields are bitfields
anywhere.

Note: we also have test_memsize in test_time.rb in case
users of other platforms want to enable size assertions
if they don't trust their compiler.
------------------------------------------------------------------------
r61869 | ngoto | 2018-01-16 14:49:01 +0900 (Tue, 16 Jan 2018) | 8 lines

fix macro argument names inconsistency

* include/ruby/defines.h (RUBY_ALIGNAS): Fix macro definition.
  Fix compile error with Fujitsu C Compiler (fcc) on Solaris.

* include/ruby/defines.h (RUBY_ALIGNOF): Fix macro argument name.
  Fix compile error with fcc and Oracle Solaris Studio 12.4 on Solaris.

------------------------------------------------------------------------
r61868 | mame | 2018-01-16 14:27:20 +0900 (Tue, 16 Jan 2018) | 1 line

parse.y (expr_value_do): factor out COND_PUSH->expr_value->do->COND_POP
------------------------------------------------------------------------
r61867 | nobu | 2018-01-16 12:16:17 +0900 (Tue, 16 Jan 2018) | 1 line

parse.y: removed PARSER_ARG macro
------------------------------------------------------------------------
r61866 | nobu | 2018-01-16 12:16:15 +0900 (Tue, 16 Jan 2018) | 3 lines

parse.y: expand tokadd_mbchar

* parse.y (tokadd_mbchar): renamed and expand callers with p.
------------------------------------------------------------------------
r61865 | shyouhei | 2018-01-16 12:09:53 +0900 (Tue, 16 Jan 2018) | 4 lines

sizeof(uintptr_t) != sizeof(uintptr_t *)

Reported by mame.  Thanks.

------------------------------------------------------------------------
r61864 | mame | 2018-01-16 11:27:58 +0900 (Tue, 16 Jan 2018) | 1 line

parse.y: set location of nodes that lexer generates
------------------------------------------------------------------------
r61863 | mame | 2018-01-16 11:00:16 +0900 (Tue, 16 Jan 2018) | 1 line

parse.y: set location of string/literals in the lexer instead of actions
------------------------------------------------------------------------
r61862 | mame | 2018-01-16 10:43:25 +0900 (Tue, 16 Jan 2018) | 4 lines

parse.y (new_regexp): Fix SEGV of `/#{"\u3042"}#{'{U+3044}'}/` in non UTF-8

Mixing other encoding string literals in one Regexp caused SEGV.
This bug was found by CoverityScan.
------------------------------------------------------------------------
r61861 | mame | 2018-01-16 10:32:58 +0900 (Tue, 16 Jan 2018) | 1 line

parse.y (symbol_append): Added to factor out `%i[]` and `%I[]`
------------------------------------------------------------------------
r61860 | svn | 2018-01-16 08:43:18 +0900 (Tue, 16 Jan 2018) | 1 line

* properties.
------------------------------------------------------------------------
r61859 | yui-knk | 2018-01-16 08:43:17 +0900 (Tue, 16 Jan 2018) | 13 lines

Add tests for Node code locations

* test/-ext-/ast/test_ast.rb: Add tests for Node
  code locations. This file tests

  1. There are no Node whose code location is default
     value (#test_not_cared)

  2. There are no Node whose children's code locations
     exceed parent's code location (#test_ranges)

* ext/-test-/ast/ast.c, ext/-test-/ast/extconf.rb:
  Define AST module to help tests.
------------------------------------------------------------------------
r61858 | mame | 2018-01-16 01:12:34 +0900 (Tue, 16 Jan 2018) | 1 line

parse.y: Removes unneeded Ripper/Parser guards
------------------------------------------------------------------------
r61857 | svn | 2018-01-16 00:04:58 +0900 (Tue, 16 Jan 2018) | 1 line

* 2018-01-16
------------------------------------------------------------------------
r61856 | mame | 2018-01-16 00:04:57 +0900 (Tue, 16 Jan 2018) | 4 lines

parse.y (new_command_qcall): Receives a block (optional)

There were four cases that uses new_command_qcall and then
method_add_block.  This change factors out the four rules.
------------------------------------------------------------------------
r61855 | mame | 2018-01-15 23:01:16 +0900 (Mon, 15 Jan 2018) | 3 lines

test/ruby/test_syntax.rb (test_command_with_cmd_brace_block): Added

The bison rules were not covered.
------------------------------------------------------------------------
r61853 | nobu | 2018-01-15 21:25:24 +0900 (Mon, 15 Jan 2018) | 4 lines

test_console_attr.rb: fix test

* test/-ext-/win32/test_console_attr.rb (reverse_video): fix test
  when reverse video is set.
------------------------------------------------------------------------
r61852 | hsbt | 2018-01-15 21:00:06 +0900 (Mon, 15 Jan 2018) | 3 lines

Fix a typo.

  * gc.c: beacuse -> because.
------------------------------------------------------------------------
r61851 | hsbt | 2018-01-15 19:09:00 +0900 (Mon, 15 Jan 2018) | 3 lines

Fix a typo.

  * win32/win32.c: wrok -> work
------------------------------------------------------------------------
r61850 | mame | 2018-01-15 17:54:25 +0900 (Mon, 15 Jan 2018) | 3 lines

parse.y: Removes unreachable warnings

tIDENTIFIER is now always a local id (except fname).
------------------------------------------------------------------------
r61849 | mame | 2018-01-15 17:54:24 +0900 (Mon, 15 Jan 2018) | 3 lines

parse.y: Removes unneeded NULL checks

Nowadays, there are less rules whose return value is NULL.
------------------------------------------------------------------------
r61848 | mame | 2018-01-15 16:54:24 +0900 (Mon, 15 Jan 2018) | 3 lines

parse.y: Remove unneeded NULL check

There are many usages assuming that bodystmt always returns non-null.
------------------------------------------------------------------------
r61847 | mame | 2018-01-15 16:39:47 +0900 (Mon, 15 Jan 2018) | 1 line

parse.y (last_arg_append, rest_arg_append): factor out the code clones
------------------------------------------------------------------------
r61846 | shyouhei | 2018-01-15 16:32:48 +0900 (Mon, 15 Jan 2018) | 4 lines

__declspec(align(#)) does not take sizeof()

same as r61833

------------------------------------------------------------------------
r61845 | shyouhei | 2018-01-15 16:30:43 +0900 (Mon, 15 Jan 2018) | 2 lines

ruby_aligned_char no longer needed.

------------------------------------------------------------------------
r61844 | nobu | 2018-01-15 16:01:08 +0900 (Mon, 15 Jan 2018) | 4 lines

raddrinfo.c: fix parse_numeric_port

* ext/socket/raddrinfo.c (parse_numeric_port): necessary
  regardless of GETADDRINFO_EMU.
------------------------------------------------------------------------
r61843 | shyouhei | 2018-01-15 15:47:56 +0900 (Mon, 15 Jan 2018) | 5 lines

take alignof instead of sizeof

win32ole.c includes ALLOCA_N(struct myCPINFOEX, 1).  On such case
it is not a wise idea to align to the size of that struct.

------------------------------------------------------------------------
r61842 | mame | 2018-01-15 15:25:43 +0900 (Mon, 15 Jan 2018) | 1 line

parse.y (new_ary_op_assign): Factor out the typical code clone
------------------------------------------------------------------------
r61841 | mame | 2018-01-15 15:25:42 +0900 (Mon, 15 Jan 2018) | 3 lines

parse.y: Fix a bug of `obj[42, &blk] ||= foo bar`

Follow up of r28123 (!)
------------------------------------------------------------------------
r61840 | mame | 2018-01-15 15:25:41 +0900 (Mon, 15 Jan 2018) | 1 line

parse.y (begin_block): Factor out BEGIN {} process.
------------------------------------------------------------------------
r61839 | shyouhei | 2018-01-15 14:51:46 +0900 (Mon, 15 Jan 2018) | 4 lines

also blacklist gcc 4.9 for  __builtin_alloca_with_align

Reports show that gcc (Raspbian 4.9.2-10) 4.9.2 fails here.

------------------------------------------------------------------------
r61838 | nobu | 2018-01-15 14:27:11 +0900 (Mon, 15 Jan 2018) | 1 line

tool/ruby_vm/models/attribute.rb: void for empty arguments
------------------------------------------------------------------------
r61837 | mame | 2018-01-15 14:17:18 +0900 (Mon, 15 Jan 2018) | 4 lines

parse.y: Remove unused code comment blocks

The code fragments were commented out in YARV merge era.
I believe that it will be never needed in near future.
------------------------------------------------------------------------
r61836 | shyouhei | 2018-01-15 13:36:09 +0900 (Mon, 15 Jan 2018) | 4 lines

disable __builtin_alloca_with_align for GCC 4.8

It seems to be a false positive that the configure detects this
undocumented function to be available on the compiler.
------------------------------------------------------------------------
r61835 | shyouhei | 2018-01-15 13:36:09 +0900 (Mon, 15 Jan 2018) | 6 lines

give up RSTRING_PTR() being VALUE-aligned

rb_setup_fake_str() can take arbitrary char* address, typicalluy
C string literals.  These arguments have no guarantee of
alignment at all.  It was not a wise idea for me to think
RSTRING_PTR can be aligned.
------------------------------------------------------------------------
r61834 | shyouhei | 2018-01-15 13:36:08 +0900 (Mon, 15 Jan 2018) | 1 line

sorry, this hunk was a garbage. [ci skip]
------------------------------------------------------------------------
r61833 | shyouhei | 2018-01-15 11:59:18 +0900 (Mon, 15 Jan 2018) | 4 lines

__declspec(align(#)) does not take sizeof()

Use compile-time constant expression instead.

------------------------------------------------------------------------
r61832 | nobu | 2018-01-15 11:39:32 +0900 (Mon, 15 Jan 2018) | 6 lines

more ytab.sed fixes

* tool/ytab.sed: fix for more old bison which does not support %lex-param
  at yydestruct (missed at the previous commit).
  define yy_stack_print macro to add `p` argument instead of
  replacement at callers.
------------------------------------------------------------------------
r61831 | shyouhei | 2018-01-15 11:35:20 +0900 (Mon, 15 Jan 2018) | 5 lines

more support for NORETURN

Before this NORETURN was checked only for __attribute__ or __declspec,
but nowadays other ways are there to tell compilers that a function
never returns.  Take them into account.
------------------------------------------------------------------------
r61830 | shyouhei | 2018-01-15 11:35:19 +0900 (Mon, 15 Jan 2018) | 6 lines

__builtin_alloca_with_align for optimal memory access

ALLOCA_N takes type arugment.  It is natural that the returned
value to be used as an array of type, thus type-aligned.
Luckily GCC has a builtin to tell compiler such alignment info.
This should generate beter instructions.
------------------------------------------------------------------------
r61829 | shyouhei | 2018-01-15 11:35:18 +0900 (Mon, 15 Jan 2018) | 3 lines

__builtin_assume_aligned for *(foo *) casts

These casts are guarded. Must be safe to assume alignments.
------------------------------------------------------------------------
r61828 | shyouhei | 2018-01-15 11:35:17 +0900 (Mon, 15 Jan 2018) | 3 lines

__alignof__ to take alignment of a type

C11 and C++11 has this feature so why not use it when available.
------------------------------------------------------------------------
r61827 | shyouhei | 2018-01-15 11:35:16 +0900 (Mon, 15 Jan 2018) | 13 lines

__attibute__((__aligned__)) for RSTRING_PTR()

For instance array.c:rb_ary_product() uses RSTRING_PTR() as an
array of int. So to avoid misaligned memory access RSTRING_PTR()
must at least be sizeof(int)-aligned.  However the type of
RSTRING_PTR() is char*, which of course can expect alignment as
much as 1.  This is a problem.

The reality is, there is no misaligned memory access because the
memory region behind RSTRING_PTR() is allocated using malloc().
Memory regions returned from malloc() are always aligned
appropriately.  So let's tell the compiler about this information.
It seems GCC, clang, and MSVC have such feature.
------------------------------------------------------------------------
r61826 | nobu | 2018-01-15 11:23:24 +0900 (Mon, 15 Jan 2018) | 6 lines

more ytab.sed fixes

* tool/ytab.sed: `p` is too short to distinguish alone from other
  names.  fix for more old bison which does not support %lex-param
  at yydestruct.  add `p` argument to non-prototype declaration of
  yy_stack_print.
------------------------------------------------------------------------
r61825 | svn | 2018-01-15 09:45:26 +0900 (Mon, 15 Jan 2018) | 1 line

* 2018-01-15
------------------------------------------------------------------------
r61824 | mame | 2018-01-15 09:45:26 +0900 (Mon, 15 Jan 2018) | 3 lines

tool/ytab.sed: Support some old bison implementations

At least, I confirmed bison 2.3 (because macOS uses the version).
------------------------------------------------------------------------
r61823 | mame | 2018-01-14 23:44:46 +0900 (Sun, 14 Jan 2018) | 1 line

parse.y (parser_heredoc_dedent): Removed
------------------------------------------------------------------------
r61822 | nobu | 2018-01-14 23:28:10 +0900 (Sun, 14 Jan 2018) | 4 lines

parse.y: yydebug

* parse.y (yydebug): define to disable a global variable and get
  rid of linker error when static linked ext.
------------------------------------------------------------------------
r61821 | mame | 2018-01-14 23:17:25 +0900 (Sun, 14 Jan 2018) | 4 lines

parse.y: Remove unused a macro "FIXME"

I don't know what it was, but seems that it has been already fixed since
r12117.
------------------------------------------------------------------------
r61820 | nobu | 2018-01-14 23:14:51 +0900 (Sun, 14 Jan 2018) | 1 line

parse.y: ripper no longer uses rb_discard_node
------------------------------------------------------------------------
r61819 | mame | 2018-01-14 23:09:41 +0900 (Sun, 14 Jan 2018) | 5 lines

parse.y: Remove a code for old yacc

The current parse.y won't compile with yacc since it depends on many
bison's extensions.  Also, configure.ac does not have a check for yacc,
so the macro OLD_YACC is no longer used.
------------------------------------------------------------------------
r61818 | mame | 2018-01-14 22:51:44 +0900 (Sun, 14 Jan 2018) | 10 lines

parse.y: Remove almost all *_gen macros by passing parser_params explicitly

In parse.y many functions were suffixed "_gen" and had companion macros
to pass struct parser_params implicitly, which made parse.c bigger and
more obscure.

This change expands and removes almost all "*_gen" macros.  This
requires explicit passing of struct parser_params, i.e., we need to
write "foo(p, ..)" instead of "foo(..)".  However, it is just extra
three letters.  I believe that this is easier to understand.
------------------------------------------------------------------------
r61817 | mame | 2018-01-14 22:51:41 +0900 (Sun, 14 Jan 2018) | 5 lines

parse.y: Expand global-like accessor macros for struct parser_params

For example, `lex_strterm` is expanded to `p->lex.strterm`.
I believe that this expansion make the code straightforward.
They look not so annoying because "parser" was renamed to "p".
------------------------------------------------------------------------
r61816 | mame | 2018-01-14 22:51:38 +0900 (Sun, 14 Jan 2018) | 1 line

parse.y: Use "p" for the variable of struct parser_params consistently
------------------------------------------------------------------------
r61815 | mame | 2018-01-14 22:51:35 +0900 (Sun, 14 Jan 2018) | 5 lines

parse.y: Avoid "p" as a variable name

Because I want to use the name "p" for struct parser_params through
parse.c.  This change renames "p" to "ptr", "paren", etc. depending upon
the context.
------------------------------------------------------------------------
r61814 | nobu | 2018-01-14 20:19:18 +0900 (Sun, 14 Jan 2018) | 1 line

exclude flexible array size with old compilers
------------------------------------------------------------------------
r61813 | svn | 2018-01-14 11:44:54 +0900 (Sun, 14 Jan 2018) | 1 line

* 2018-01-14
------------------------------------------------------------------------
r61812 | normal | 2018-01-14 11:44:53 +0900 (Sun, 14 Jan 2018) | 52 lines

net/http: use writev for HTTP chunked request bodies

This reduces both user and system CPU time for large
uploads with dynamically-generated request bodies.

              user     system      total        real
before:   0.393334   1.580000   1.973334 (  1.971066)
after:    0.223334   0.976666   1.200000 (  1.198514)

------
require 'socket'
require 'net/http'
require 'benchmark'
nr = 1024 * 1024 * 1024
s = TCPServer.new('127.0.0.1', 0)
addr = s.addr
at_exit { Process.waitall }
fork do
  c = s.accept
  # not exactly accurate but fast
  IO.copy_stream(c, '/dev/null', nr + 500000)
  begin
    buf = c.readpartial(16384)
    tmp = ''
    until buf.end_with?(-"0\r\n\r\n")
      buf << c.readpartial(16384, tmp)
    end
  rescue EOFError
  end
  c.write "HTTP/1.1 201 Created\r\nConnection:close\r\n\r\n"
  c.close
end
r, w = IO.pipe
fork do
  r.close
  IO.copy_stream('/dev/zero', w, nr)
  w.close
end
w.close
Net::HTTP.start(addr[3], addr[1]) do |http|
  put = Net::HTTP::Put.new('/dev0/foo')
  put['Content-Type'] = 'application/content-type'
  put['Transfer-Encoding'] = 'chunked'
  put.body_stream = r
  puts(Benchmark.measure { http.request(put) })
end
------

* lib/net/http/generic_request.rb (write): use multi-arg write
* lib/net/protocol.rb (write): support multi-arg
  (write0): ditto
  [ruby-core:84845] [Feature #14339]
------------------------------------------------------------------------
r61811 | mame | 2018-01-13 22:08:05 +0900 (Sat, 13 Jan 2018) | 1 line

string.c (struct mapping_buffer): Use FLEX_ARY_LEN
------------------------------------------------------------------------
r61810 | mame | 2018-01-13 22:00:14 +0900 (Sat, 13 Jan 2018) | 1 line

compile.c (struct ibf_object_*): Use FLEX_ARY_LEN
------------------------------------------------------------------------
r61809 | mame | 2018-01-13 22:00:11 +0900 (Sat, 13 Jan 2018) | 3 lines

compile.c (struct ibf_id_entry): Just removed.

It looked unused.
------------------------------------------------------------------------
r61808 | mame | 2018-01-13 21:44:17 +0900 (Sat, 13 Jan 2018) | 1 line

iseq.h (struct iseq_catch_table_entry, iseq_compile_data_storage): Use FLEX_ARY_LEN
------------------------------------------------------------------------
r61807 | mame | 2018-01-13 21:25:15 +0900 (Sat, 13 Jan 2018) | 1 line

file.c (struct apply_arg): Use FLEX_ARY_LEN
------------------------------------------------------------------------
r61806 | mame | 2018-01-13 21:17:42 +0900 (Sat, 13 Jan 2018) | 1 line

variable.c (struct gen_ivtbl): Use FLEX_ARY_LEN.
------------------------------------------------------------------------
r61805 | mame | 2018-01-13 21:09:24 +0900 (Sat, 13 Jan 2018) | 1 line

node.c (node_buffer_elem_t): Use FLEX_ARY_LEN
------------------------------------------------------------------------
r61804 | mame | 2018-01-13 20:45:25 +0900 (Sat, 13 Jan 2018) | 3 lines

internal.h (FLEX_ARY_LEN): Add a macro to define a flexible array

Also, use it in iseq.c.
------------------------------------------------------------------------
r61803 | hsbt | 2018-01-13 20:10:08 +0900 (Sat, 13 Jan 2018) | 3 lines

Fix a typo.

  configure.ac: delcares -> declares.
------------------------------------------------------------------------
r61802 | shyouhei | 2018-01-13 19:47:33 +0900 (Sat, 13 Jan 2018) | 3 lines

__VA_ARGS__ is a C99ism

give up CALL_ATTRIBUTE macro.
------------------------------------------------------------------------
r61801 | shyouhei | 2018-01-13 19:47:32 +0900 (Sat, 13 Jan 2018) | 1 line

flexible array member is a C99ism
------------------------------------------------------------------------
r61800 | nobu | 2018-01-13 18:23:40 +0900 (Sat, 13 Jan 2018) | 10 lines

Update dependencies

* common.mk: enc/unicode.$(OBJEXT) depends on onigmo.h via
  oniguruma.h.

* common.mk: dependencies of *prelude.$(OBJEXT) are defined for
  each generated C sources.

* enc/depend: casefold.h and name2ctype.h are located under
  $(UNICODE_HDR_DIR).
------------------------------------------------------------------------
r61799 | kazu | 2018-01-13 09:30:01 +0900 (Sat, 13 Jan 2018) | 1 line

Update dependencies using `tool/update-deps`
------------------------------------------------------------------------
r61798 | svn | 2018-01-13 00:59:27 +0900 (Sat, 13 Jan 2018) | 1 line

* 2018-01-13
------------------------------------------------------------------------
r61797 | mame | 2018-01-13 00:59:26 +0900 (Sat, 13 Jan 2018) | 3 lines

parse.y: Remove meaningless ifndef guards

Because the part of the code is already within `#ifndef RIPPER`.
------------------------------------------------------------------------
r61796 | mame | 2018-01-12 23:25:31 +0900 (Fri, 12 Jan 2018) | 5 lines

parse.y (token_info_push, token_info_pop): Refactoring

* remove unused argument len
* factor out initialization code of token_info
* make the condition of "mismatched indentations" warning easy to understand
------------------------------------------------------------------------
r61795 | mame | 2018-01-12 23:25:28 +0900 (Fri, 12 Jan 2018) | 1 line

parse.y (token_info_push, token_info_pop): Use code_location
------------------------------------------------------------------------
r61794 | shyouhei | 2018-01-12 22:25:03 +0900 (Fri, 12 Jan 2018) | 5 lines

suppress warning for VC12

It says "warning C4146: unary minus operator applied
to unsigned type, result still unsigned"

------------------------------------------------------------------------
r61793 | mame | 2018-01-12 22:22:20 +0900 (Fri, 12 Jan 2018) | 3 lines

parse.y: Remove unneeded dependence on pointer representatin

A simple comparison is enough in this case
------------------------------------------------------------------------
r61792 | shyouhei | 2018-01-12 22:14:53 +0900 (Fri, 12 Jan 2018) | 7 lines

merge revision: 61746

`signed` is required for Rasbian (x86_64).

* tool/ruby_vm/views/_insn_stack_increase.erb: specify `signed` explicitly
  for systems which use `unsigned` for `char` type.

------------------------------------------------------------------------
r61791 | hsbt | 2018-01-12 22:05:09 +0900 (Fri, 12 Jan 2018) | 3 lines

Fix a typo.

  * template/unicode_norm_gen.tmpl: ouput -> output
------------------------------------------------------------------------
r61790 | normal | 2018-01-12 18:31:22 +0900 (Fri, 12 Jan 2018) | 4 lines

sample/iseq_loader: use File.open instead of Kernel#open

This makes auditing for inadvertant command execution
easier.
------------------------------------------------------------------------
r61789 | normal | 2018-01-12 18:31:17 +0900 (Fri, 12 Jan 2018) | 1 line

sample/iseq_loader.rb: spelling fix
------------------------------------------------------------------------
r61788 | hsbt | 2018-01-12 18:07:47 +0900 (Fri, 12 Jan 2018) | 4 lines

Fixed typos.

  * sample/trick2013/kinaba/remarks.markdown: algorthim -> algorithm
  * sample/trick2015/ksk_1/remarks.markdown: Limination -> Limitation
------------------------------------------------------------------------
r61787 | shyouhei | 2018-01-12 17:38:12 +0900 (Fri, 12 Jan 2018) | 4 lines

tool/ruby_vm support for pre-2.0 BASERUBY

This was not requested :) but actually easier than the previous
so I just did it anyway.
------------------------------------------------------------------------
r61786 | shyouhei | 2018-01-12 17:38:11 +0900 (Fri, 12 Jan 2018) | 3 lines

tool/ruby_vm support for pre-2.1 BASERUBY

as requested by devs, support for BASERUBY prior to 2.1
------------------------------------------------------------------------
r61785 | shyouhei | 2018-01-12 17:38:10 +0900 (Fri, 12 Jan 2018) | 3 lines

tool/ruby_vm support for pre-2.3 BASERUBY

as requested by devs, support for BASERUBY prior to 2.3
------------------------------------------------------------------------
r61784 | shyouhei | 2018-01-12 17:38:09 +0900 (Fri, 12 Jan 2018) | 20 lines

delete tool/instruction.rb (2nd try)

Previous commit changed insns.def format. Now is the time for its
generators. In doing so I chose to modernize the system, not just
patch.  My attempt includes

- extensive use of Onigumo regular expressions
- split from one big file (instruction.rb) into separated MVC
- partial view

Also, let me take this opportunity to kill old unused features
such as

- stack caching
- minsns / yasmdata which are never seriously used
- yarvarch document generation (moved to doc/)
- vast majority of unused arguments to insns2vm.rb

This commit generates VM source codes that cleanly compile, and
the generated binary passes tests.  At least for me.
------------------------------------------------------------------------
r61783 | shyouhei | 2018-01-12 17:38:08 +0900 (Fri, 12 Jan 2018) | 1 line

[ci skip] add comments about file format (2nd try)
------------------------------------------------------------------------
r61782 | shyouhei | 2018-01-12 17:38:07 +0900 (Fri, 12 Jan 2018) | 4 lines

new insns.def format (2nd try)

- Gave up @j comments
- Room for sp_inc to be a proper grammer element
------------------------------------------------------------------------
r61781 | kazu | 2018-01-12 09:16:59 +0900 (Fri, 12 Jan 2018) | 3 lines

Add `103 Early Hints` to `Net::HTTP::STATUS_CODES` [ci skip]

Update by `ruby lib/net/http/status.rb | sponge lib/net/http/status.rb`
------------------------------------------------------------------------
r61780 | kazu | 2018-01-12 09:16:56 +0900 (Fri, 12 Jan 2018) | 1 line

doc/NEWS-2.5.0: `step` is not `Integer#step` but `Numeric#step` [ci skip]
------------------------------------------------------------------------
r61779 | normal | 2018-01-12 09:15:28 +0900 (Fri, 12 Jan 2018) | 4 lines

thread.c (thread_cleanup_func): document small leak

It's minor, I haven't analyzed how fixable it is, but we should
at least note it, here.
------------------------------------------------------------------------
r61778 | naruse | 2018-01-12 04:41:49 +0900 (Fri, 12 Jan 2018) | 1 line

fix for IPv6 env
------------------------------------------------------------------------
r61777 | stomar | 2018-01-12 04:37:25 +0900 (Fri, 12 Jan 2018) | 1 line

NEWS: Matrix#antisymmetric?
------------------------------------------------------------------------
r61776 | svn | 2018-01-12 04:36:31 +0900 (Fri, 12 Jan 2018) | 1 line

* properties.
------------------------------------------------------------------------
r61775 | stomar | 2018-01-12 04:36:30 +0900 (Fri, 12 Jan 2018) | 6 lines

matrix.rb: add Matrix#antisymmetric?

* lib/matrix.rb: add Matrix#antisymmetric?.
  Proposed by Yilo (@yiloo). Patch by Marcus Stollsteimer (@stomar).
  [Fix GH-1788]
* spec/ruby/library/matrix/antisymmetric_spec.rb: add specs.
------------------------------------------------------------------------
r61774 | naruse | 2018-01-12 03:26:49 +0900 (Fri, 12 Jan 2018) | 3 lines

Mock fetching data from real DNS [Feature #14340]

This test just tests MDNS#each_address method.
------------------------------------------------------------------------
r61773 | svn | 2018-01-12 00:54:14 +0900 (Fri, 12 Jan 2018) | 1 line

* 2018-01-12
------------------------------------------------------------------------
r61772 | mame | 2018-01-12 00:54:13 +0900 (Fri, 12 Jan 2018) | 7 lines

parse.y: Remove LEXPOP hack

cmdarg_stack became inconsistent state due to look-ahead, and LEXPOP
hack smoothed over the inconsistency.

This commit fixes the inconsisitent state itself, and removes LEXPOP
hack.
------------------------------------------------------------------------
r61771 | kazu | 2018-01-11 22:56:05 +0900 (Thu, 11 Jan 2018) | 1 line

Fix a typo [ci skip]
------------------------------------------------------------------------
r61770 | kazu | 2018-01-11 22:56:04 +0900 (Thu, 11 Jan 2018) | 1 line

Fix indent and use as skipped message instead of comment
------------------------------------------------------------------------
r61769 | mame | 2018-01-11 22:42:18 +0900 (Thu, 11 Jan 2018) | 1 line

parse.y: disentangle the lexer handling of ')', ']', and '}'
------------------------------------------------------------------------
r61768 | mame | 2018-01-11 22:42:15 +0900 (Thu, 11 Jan 2018) | 1 line

parse.y: simplify and add a comment for paren_nest and lpar_beg
------------------------------------------------------------------------
r61767 | nobu | 2018-01-11 17:34:55 +0900 (Thu, 11 Jan 2018) | 3 lines

iseq.c: child iseq encoding

* iseq.c (iseq_inspect): preserve the encoding of child iseqs.
------------------------------------------------------------------------
r61766 | nobu | 2018-01-11 17:26:21 +0900 (Thu, 11 Jan 2018) | 5 lines

vm_insnhelper.c: search in the indexing order

* vm_insnhelper.c (vm_opt_newarray_max, vm_opt_newarray_min):
  search in the indexing order, as well as usual methods.
  [ruby-core:84821] [Bug #14350]
------------------------------------------------------------------------
r61765 | mame | 2018-01-11 13:25:33 +0900 (Thu, 11 Jan 2018) | 1 line

parse.y: add a simple comment for COND_* and CMDARG_*
------------------------------------------------------------------------
r61764 | mame | 2018-01-11 12:23:50 +0900 (Thu, 11 Jan 2018) | 3 lines

parse.y (local_push_gen): Rewrite the condition of "unused var" warning

It was unnecessarily too complex, IMO.
------------------------------------------------------------------------
r61763 | svn | 2018-01-11 00:44:52 +0900 (Thu, 11 Jan 2018) | 1 line

* 2018-01-11
------------------------------------------------------------------------
r61762 | k0kubun | 2018-01-11 00:44:52 +0900 (Thu, 11 Jan 2018) | 12 lines

tool/downloader.rb: retry against Errno::ETIMEDOUT

instead of Errno::ECONNREFUSED.

As I commented in r61498, at that moment I was not sure if the actual
exception is really `Errno::ECONNREFUSED` or not.

In https://ci.appveyor.com/project/ruby/ruby/build/1.0.6974, I could
confirm that the download can fail with `Errno::ETIMEDOUT`. So I want to
retry that.

Let's add `Errno::ECONNREFUSED` too if it fails with the exception.
------------------------------------------------------------------------
r61761 | hsbt | 2018-01-10 23:13:06 +0900 (Wed, 10 Jan 2018) | 4 lines

Fix typos.

 * doc/contributors.rdoc: pathces -> patches.
 * doc/syntax/refinements.rdoc: exmaple -> example.
------------------------------------------------------------------------
r61760 | mame | 2018-01-10 22:30:25 +0900 (Wed, 10 Jan 2018) | 4 lines

spec/: skip some specs so that no failure occurs in root privilege

Follow up of r61757,  This change makes `sudo make test-spec` pass on my
machine.
------------------------------------------------------------------------
r61759 | mame | 2018-01-10 22:30:22 +0900 (Wed, 10 Jan 2018) | 9 lines

spec/ruby/library/etc/getlogin_spec.rb: Use `logname` as an expected result

It had used `id -un`, but it is not always equal to `Etc.getlogin`.
`id` returns the current user of the process, and `Etc.getlogin` returns
the user name logged in on the controlling terminal of the process.

This change uses `logname` by default.  `id` remains as a fallback since
there seem to be some platforms where `logname` is not available:
https://github.com/ruby/spec/commit/49576b417ca3704cfb8271d2545c06c076c10cbc
------------------------------------------------------------------------
r61758 | mame | 2018-01-10 19:39:09 +0900 (Wed, 10 Jan 2018) | 9 lines

skip some tests so that no failure occurs in root privilege

Some tests had failed on `sudo make test-all`, mainly because root can
access any files regardless of permission.  This change adds `skip`
guards into such tests.

Note that almost all tests in which `skip` guards is added, already have
"windows" guard.  This is because there is no support to avoid read
access by owner on Windows.
------------------------------------------------------------------------
r61757 | mame | 2018-01-10 14:57:15 +0900 (Wed, 10 Jan 2018) | 3 lines

iseq.c: Succinct bitvector now supports 32-bit machine

Second try of succinct bitvector.
------------------------------------------------------------------------
r61756 | usa | 2018-01-10 12:54:02 +0900 (Wed, 10 Jan 2018) | 5 lines

should cause preprocess error as other cases

* string.c (NONASCII_MASK): should cause preprocess error immediately if the
  compiler does not satisfy our assumptions.

------------------------------------------------------------------------
r61755 | shyouhei | 2018-01-10 10:53:24 +0900 (Wed, 10 Jan 2018) | 4 lines

merge revisions 61753:61750 61747:61740 61737:61728

Revert all the VM generator rewrites; requested by naruse

------------------------------------------------------------------------
r61754 | normal | 2018-01-10 10:07:27 +0900 (Wed, 10 Jan 2018) | 8 lines

dir.c: pass flags to openat(2) correctly

Flags are 3rd argument of openat(2) while the 4th argument
(mode_t) is unnecessary for our uses.  This bug exists since
Ruby 2.5 from r58860 and was discoverd by strace.

* dir.c (nogvl_opendir_at): use openat correctly
  [Feature #13056] [Feature #14346]
------------------------------------------------------------------------
r61753 | svn | 2018-01-10 10:00:23 +0900 (Wed, 10 Jan 2018) | 1 line

* properties.
------------------------------------------------------------------------
r61752 | hsbt | 2018-01-10 10:00:21 +0900 (Wed, 10 Jan 2018) | 4 lines

Fixed typos.

  * tool/ruby_vm/loaders/opt_operand_def.rb: grammer -> grammar
  * tool/ruby_vm/scripts/insns2vm.rb: beginnig -> beginning
------------------------------------------------------------------------
r61751 | kazu | 2018-01-10 09:01:31 +0900 (Wed, 10 Jan 2018) | 1 line

Fix a typo [ci skip]
------------------------------------------------------------------------
r61750 | normal | 2018-01-10 08:47:19 +0900 (Wed, 10 Jan 2018) | 4 lines

thread_pthread.c: remove dead code around "get_stack_of"

"get_stack_of" was only in a proposed patch for [Feature #8793]
https://bugs.ruby-lang.org/issues/8793 and never applied.
------------------------------------------------------------------------
r61749 | normal | 2018-01-10 07:59:58 +0900 (Wed, 10 Jan 2018) | 3 lines

thread.c: threadptr_pending_interrupt_active_p is static

It's not used elsewhere.
------------------------------------------------------------------------
r61748 | ko1 | 2018-01-10 02:09:23 +0900 (Wed, 10 Jan 2018) | 5 lines

use binary search for insns_info.

* vm_core.h (VM_INSN_INFO_TABLE_IMPL): use 1 (binary search)
  because 2 (succinct bitvector) doesn't work on Rasbian (x86_64).

------------------------------------------------------------------------
r61747 | svn | 2018-01-10 01:27:51 +0900 (Wed, 10 Jan 2018) | 1 line

* properties.
------------------------------------------------------------------------
r61746 | ko1 | 2018-01-10 01:27:50 +0900 (Wed, 10 Jan 2018) | 5 lines

`signed` is required for Rasbian (x86_64).

* tool/ruby_vm/views/_insn_stack_increase.erb: specify `signed` explicitly
  for systems which use `unsigned` for `char` type.

------------------------------------------------------------------------
r61745 | svn | 2018-01-10 00:47:54 +0900 (Wed, 10 Jan 2018) | 1 line

* properties.
------------------------------------------------------------------------
r61744 | naruse | 2018-01-10 00:47:53 +0900 (Wed, 10 Jan 2018) | 1 line

grep_v is ruby 2.3 feature
------------------------------------------------------------------------
r61743 | svn | 2018-01-10 00:41:11 +0900 (Wed, 10 Jan 2018) | 1 line

* properties.
------------------------------------------------------------------------
r61742 | svn | 2018-01-10 00:41:11 +0900 (Wed, 10 Jan 2018) | 1 line

* 2018-01-10
------------------------------------------------------------------------
r61741 | naruse | 2018-01-10 00:41:10 +0900 (Wed, 10 Jan 2018) | 3 lines

Here document <<~ is Ruby 2.3 feature

baseruby should support wider ruby versions
------------------------------------------------------------------------
r61740 | mame | 2018-01-09 23:11:39 +0900 (Tue, 09 Jan 2018) | 1 line

iseq.c: Add explicit casts from long to int (to pass compile on clang)
------------------------------------------------------------------------
r61739 | mame | 2018-01-09 23:05:23 +0900 (Tue, 09 Jan 2018) | 1 line

iseq.c: Add a succinct bitvector implementation for insn_info_table
------------------------------------------------------------------------
r61738 | mame | 2018-01-09 23:05:21 +0900 (Tue, 09 Jan 2018) | 1 line

iseq.c (iseq_data_to_ary): Avoid direct use of insns_info.positions
------------------------------------------------------------------------
r61737 | svn | 2018-01-09 22:30:39 +0900 (Tue, 09 Jan 2018) | 1 line

* properties.
------------------------------------------------------------------------
r61736 | shyouhei | 2018-01-09 22:30:35 +0900 (Tue, 09 Jan 2018) | 1 line

insns_info.inc.tmpl: share large tablese
------------------------------------------------------------------------
r61735 | shyouhei | 2018-01-09 22:30:34 +0900 (Tue, 09 Jan 2018) | 4 lines

insns_info.inc: position independent

* template/insns_info.inc.tmpl (insn_name_info): make position
  independent for large strings.
------------------------------------------------------------------------
r61734 | shyouhei | 2018-01-09 22:30:33 +0900 (Tue, 09 Jan 2018) | 1 line

comma at the end of enum is a C99ism.
------------------------------------------------------------------------
r61733 | shyouhei | 2018-01-09 22:30:31 +0900 (Tue, 09 Jan 2018) | 20 lines

delete tool/instruction.rb

Previous commit changed insns.def format. Now is the time for its
generators. In doing so I chose to modernize the system, not just
patch.  My attempt includes

- extensive use of Onigumo regular expressions
- split from one big file (instruction.rb) into separated MVC
- partial view

Also, let me take this opportunity to kill old unused features
such as

- stack caching
- minsns / yasmdata which are never seriously used
- yarvarch document generation (moved to doc/)
- vast majority of unused arguments to insns2vm.rb

This commit generates VM source codes that cleanly compile, and
the generated binary passes tests.  At least for me.
------------------------------------------------------------------------
r61732 | svn | 2018-01-09 22:30:30 +0900 (Tue, 09 Jan 2018) | 1 line

* properties.
------------------------------------------------------------------------
r61731 | svn | 2018-01-09 22:30:30 +0900 (Tue, 09 Jan 2018) | 1 line

* append newline at EOF.
------------------------------------------------------------------------
r61730 | shyouhei | 2018-01-09 22:30:29 +0900 (Tue, 09 Jan 2018) | 1 line

[ci skip] add comments about file format
------------------------------------------------------------------------
r61729 | shyouhei | 2018-01-09 22:30:28 +0900 (Tue, 09 Jan 2018) | 4 lines

new insns.def format

- Gave up @j comments
- Room for sp_inc to be a proper grammer element
------------------------------------------------------------------------
r61728 | shyouhei | 2018-01-09 22:30:27 +0900 (Tue, 09 Jan 2018) | 1 line

rb_num_t happen to be unsigned; introduce signed variant
------------------------------------------------------------------------
r61727 | mame | 2018-01-09 22:04:24 +0900 (Tue, 09 Jan 2018) | 4 lines

parse.y: insane syntax too (class definition in cond)

This change partially reverts r61724 and take another approach:
exploiting struct local_vars to backup the cond_stack state.
------------------------------------------------------------------------
r61726 | kazu | 2018-01-09 21:35:54 +0900 (Tue, 09 Jan 2018) | 1 line

Fix indent [ci skip]
------------------------------------------------------------------------
r61725 | kazu | 2018-01-09 21:35:12 +0900 (Tue, 09 Jan 2018) | 3 lines

Include ruby/{io,encoding}.h before internal.h

because of r61712 and r61713
------------------------------------------------------------------------
r61724 | nobu | 2018-01-09 21:33:38 +0900 (Tue, 09 Jan 2018) | 4 lines

parse.y: insane syntax

* parse.y (primary): save/restore COND and CMDARG stacks at method
  definition, to distinguish do_block and do_cond properly.
------------------------------------------------------------------------
r61723 | nobu | 2018-01-09 21:26:23 +0900 (Tue, 09 Jan 2018) | 4 lines

insns_info.inc.tmpl: split rb_vm_insn_name_info

* template/insns_info.inc.tmpl (rb_vm_insn_name_info): split
  instruction names pool not to exceed C90 limit.
------------------------------------------------------------------------
r61722 | nobu | 2018-01-09 20:52:17 +0900 (Tue, 09 Jan 2018) | 5 lines

thread_pthread.c: round stack size

* thread_pthread.c (rb_thread_create_timer_thread): round up
  additional stack size to PTHREAD_STACK_MIN, to get rid of
  EINVAL at pthread_attr_setstacksize().
------------------------------------------------------------------------
r61721 | mame | 2018-01-09 17:45:35 +0900 (Tue, 09 Jan 2018) | 8 lines

Rename code_range to code_location

Because the name "code_range" is ambiguous with encoding's.
Abbreviations ("crange", and "cr") are also renamed to "loc".

The traditional "code_location" (a pair of lineno and column) is
renamed to "code_position".  Abbreviations are also renamed
(first_loc to beg_pos, and last_loc to end_pos).
------------------------------------------------------------------------
r61720 | normal | 2018-01-09 17:26:43 +0900 (Tue, 09 Jan 2018) | 9 lines

thread_pthread: remove checks for pthread_cond*_init

These were added for NaCL support in r36022, and we dropped NaCL
in r60374.

IMHO, any pthreads implementation without these basic functions
is not worth the time to support.

[ruby-core:84758] [Misc #14342]
------------------------------------------------------------------------
r61719 | normal | 2018-01-09 17:26:38 +0900 (Tue, 09 Jan 2018) | 7 lines

thread_pthread: remove HAVE_PTHREAD_ATTR_INIT ifdefs

ifdefs make code confusing for my easily-confused mind :<
These were added for NaCL support in r36022, and we dropped NaCL
in r60374.  There are more #ifdefs to remove...

[ruby-core:84758] [Misc #14342]
------------------------------------------------------------------------
r61718 | mame | 2018-01-09 17:05:40 +0900 (Tue, 09 Jan 2018) | 1 line

bootstraptest/test_fork.rb: Stop too restrict NPROC test temporarily
------------------------------------------------------------------------
r61717 | mame | 2018-01-09 16:33:38 +0900 (Tue, 09 Jan 2018) | 3 lines

Fix the position of VM_ASSERT for "pthread_create failed for time"

Fix r61706.  Thank you, Eric Wong. [ruby-core:84756]
------------------------------------------------------------------------
r61716 | normal | 2018-01-09 16:15:44 +0900 (Tue, 09 Jan 2018) | 4 lines

thread_pthread: more diagnostics around timer thread creation failures

However, I don't think EAGAIN on pthread_create can really
be fixed in our code.  I suspect test machines are overloaded.
------------------------------------------------------------------------
r61715 | nobu | 2018-01-09 15:55:55 +0900 (Tue, 09 Jan 2018) | 1 line

update dependencies
------------------------------------------------------------------------
r61714 | nobu | 2018-01-09 15:55:54 +0900 (Tue, 09 Jan 2018) | 5 lines

update-deps: strip -j option

* update-deps: strip -j option from ENV['GNUMAKEFLAGS'], not
  dirstack to get confused by intermingled entering/leaveing
  directory messages.
------------------------------------------------------------------------
r61713 | nobu | 2018-01-09 15:24:11 +0900 (Tue, 09 Jan 2018) | 1 line

internal.h: remove dependecy on ruby/encoding.h
------------------------------------------------------------------------
r61712 | nobu | 2018-01-09 15:24:10 +0900 (Tue, 09 Jan 2018) | 1 line

internal.h: remove dependecy on ruby/io.h
------------------------------------------------------------------------
r61711 | mame | 2018-01-09 15:17:21 +0900 (Tue, 09 Jan 2018) | 12 lines

compile.c (iseq_compile_each0): remove irrelevant tracecoverage

This change removes tracecoverage instructions on a line that has any
NODE but is non-significant, such as, just one literal.

This fixes the following failure that occurs only when coverage is
enabled:

  1) Failure:
TestISeq#test_to_a_lines [.../ruby/test/ruby/test_iseq.rb:56]:
<[3, 4, 7, 9]> expected but was
<[3, 4, 5, 6, 7, 8, 9]>.
------------------------------------------------------------------------
r61710 | mame | 2018-01-09 14:19:18 +0900 (Tue, 09 Jan 2018) | 3 lines

Allow `-> do rescue; end` as well as `proc do rescue; end`

https://twitter.com/takiuchi/status/950593389963051008
------------------------------------------------------------------------
r61709 | mame | 2018-01-09 14:03:03 +0900 (Tue, 09 Jan 2018) | 4 lines

parse.y: Remove redefinition of malloc

Because the purpose is now unsure (maybe, to support very old bison?).
If an issue occurs, it should be resurrected with explicit comment.
------------------------------------------------------------------------
r61708 | mame | 2018-01-09 13:27:26 +0900 (Tue, 09 Jan 2018) | 1 line

parse.y: PARSER_DEBUG is no longer used
------------------------------------------------------------------------
r61707 | mame | 2018-01-09 12:48:26 +0900 (Tue, 09 Jan 2018) | 3 lines

parse.y: Remove meaningless ifndef guards

Because the part of the code is already within `#ifndef RIPPER`.
------------------------------------------------------------------------
r61706 | mame | 2018-01-09 12:47:22 +0900 (Tue, 09 Jan 2018) | 5 lines

Explicit failure in VM_CHECK_MODE when failing to create timer thread

"warning: pthread_create failed for timer: Resource temporarily
unavailable, scheduling broken" still occurs randomly.  This change will
allow us to debug the issue.
------------------------------------------------------------------------
r61705 | nobu | 2018-01-09 12:37:36 +0900 (Tue, 09 Jan 2018) | 1 line

common.mk (srcs_vpath): renamed for nmake
------------------------------------------------------------------------
r61704 | normal | 2018-01-09 11:45:03 +0900 (Tue, 09 Jan 2018) | 12 lines

use predefined ids in a few more places

Saves a little space on x86:

   text	   data	    bss	    dec	    hex	filename
3684110	  11968	  34240	3730318	 38eb8e	ruby.before
3684086	  11968	  34240	3730294	 38eb76	ruby.after

* enumerator.c: include id.h, define aliases
  (Init_Enumeerator): remove unnecessary rb_intern calls
* gc.c (should_be_callable): use idCall
* vm.c (Init_VM): ditto
------------------------------------------------------------------------
r61703 | nobu | 2018-01-09 11:10:58 +0900 (Tue, 09 Jan 2018) | 4 lines

gmake.mk: update srcdir files

* defs/gmake.mk (commit): update source files under the sources
  directory after commit.
------------------------------------------------------------------------
r61702 | nobu | 2018-01-09 10:56:05 +0900 (Tue, 09 Jan 2018) | 1 line

parse.y: set ID to yylval ID instead of token
------------------------------------------------------------------------
r61701 | mame | 2018-01-09 10:49:40 +0900 (Tue, 09 Jan 2018) | 3 lines

parse.y: Remove special handling of tOROP and tANDOP

The complexity is no longer considered necessary.
------------------------------------------------------------------------
r61700 | ktsj | 2018-01-09 10:46:07 +0900 (Tue, 09 Jan 2018) | 3 lines

.gdbinit (print_lineno): follow up changes in r61534, r61536

insns_info was refactored.
------------------------------------------------------------------------
r61699 | nobu | 2018-01-09 10:10:15 +0900 (Tue, 09 Jan 2018) | 1 line

parse.y: use change_shortcut_operator_id
------------------------------------------------------------------------
r61698 | nobu | 2018-01-09 09:25:27 +0900 (Tue, 09 Jan 2018) | 1 line

wrap statement expression with __extension__
------------------------------------------------------------------------
r61697 | yui-knk | 2018-01-09 09:19:51 +0900 (Tue, 09 Jan 2018) | 6 lines

parse.y: Remove duplicated nd_line set

* parse.y: These nodes are created with `@$` locations.
  Start position of `@$` is same as start position of `@1`.
  And NEW_XXX macros set first_loc.lineno of a passed
  code range to nd_line. So these nd_set_line are not needed.
------------------------------------------------------------------------
r61696 | nobu | 2018-01-09 09:06:00 +0900 (Tue, 09 Jan 2018) | 1 line

constified
------------------------------------------------------------------------
r61695 | nobu | 2018-01-09 08:35:36 +0900 (Tue, 09 Jan 2018) | 4 lines

vm.c: remove extra ifdef

* vm.c (rb_execution_context_mark): VM_ASSERT works only if
  VM_CHECK_MODE > 0.
------------------------------------------------------------------------
r61694 | ko1 | 2018-01-09 01:06:33 +0900 (Tue, 09 Jan 2018) | 10 lines

use `getblockparamproxy` to pass blocks.

* compile.c (setup_args): use `getblockparamproxy` (`rb_block_param_proxy`)
  to represent a block parameter passing.

* vm_args.c (vm_caller_setup_arg_block): check `rb_block_param_proxy`
  instead of using `VM_CALL_ARGS_BLOCKARG_BLOCKPARAM` call flag.

* vm_core.h (VM_CALL_ARGS_BLOCKARG_BLOCKPARAM): removed.

------------------------------------------------------------------------
r61693 | ko1 | 2018-01-09 01:00:38 +0900 (Tue, 09 Jan 2018) | 5 lines

fix a bug only on assertion.

* vm.c (rb_execution_context_mark): check escaped directly
  to skip assertions. Not sure why there is an inconsistency.

------------------------------------------------------------------------
r61692 | svn | 2018-01-09 00:27:57 +0900 (Tue, 09 Jan 2018) | 1 line

* 2018-01-09
------------------------------------------------------------------------
r61691 | ko1 | 2018-01-09 00:27:56 +0900 (Tue, 09 Jan 2018) | 7 lines

fix mark miss of Env (which is pointed by prev_ep).

* vm.c (rb_execution_context_mark): r61624 and r61659 introduce marking miss
  bug for Env objects as a prev_ep which is contained by Proc objects because
  Proc objects can be collected when they should be living and Env objects
  will collected unexpectedly. This patch solves this problem.

------------------------------------------------------------------------
r61690 | mame | 2018-01-08 21:56:58 +0900 (Mon, 08 Jan 2018) | 10 lines

parse.y: Make consistent with the terms about code ranges and locations

"loc" was ambiguous; it might refer both a location and a code range.
This change uses "loc" for a location, and "crange" or "cr" for a code
range.

A location (abbr. loc) is a point in a program and consists of line
number and column number.  A code range (abbr. crange and cr) is a range
within a program and consists of a pair of locations which is the first
and the last.
------------------------------------------------------------------------
r61689 | yui-knk | 2018-01-08 21:39:58 +0900 (Mon, 08 Jan 2018) | 1 line

parse.y (remove_duplicate_keys): Remove a not used argument
------------------------------------------------------------------------
r61688 | mame | 2018-01-08 21:30:35 +0900 (Mon, 08 Jan 2018) | 1 line

parse.y: Factor out code fragments that merges two code ranges
------------------------------------------------------------------------
r61687 | yui-knk | 2018-01-08 21:23:56 +0900 (Mon, 08 Jan 2018) | 1 line

parse.y (block_append_gen): Remove a not used argument
------------------------------------------------------------------------
r61686 | yui-knk | 2018-01-08 21:23:53 +0900 (Mon, 08 Jan 2018) | 28 lines

parse.y: Use nd_loc of head and tail

* parse.y (block_append_gen): Use nd_loc of
  head(tail) when create NEW_BLOCK of head(tail).

  e.g. The locations of the NODE_BLOCK is fixed:

  ```
  BEGIN {
    :a
  }

  BEGIN {
    :b
  }
  ```

  * Before

  ```
  NODE_BLOCK (line: 5, code_range: (5,0)-(7,1))
  ```

  * After

  ```
  NODE_BLOCK (line: 1, code_range: (1,0)-(7,1))
  ```
------------------------------------------------------------------------
r61685 | yui-knk | 2018-01-08 20:50:35 +0900 (Mon, 08 Jan 2018) | 16 lines

parse.y: Fix the lineno of nd_set_line

* parse.y: Follow up of r61676. r61676 removed
  ruby_sourceline from some actions. When stop to
  use lineno of "n th" symbol, it's better to
  use last location's lineno of "n-1 th" symbol.

  e.g.

  ```
  primary : k_begin {} bodystmt k_end
  ```

  Before r61676 we use lineno of `@2` (ruby_sourceline).
  In this case, last location's lineno of `k_begin` (`@1`)
  is suitable.
------------------------------------------------------------------------
r61684 | normal | 2018-01-08 19:23:27 +0900 (Mon, 08 Jan 2018) | 50 lines

net/http: clear compressed chunk after decompression

We no longer need the compressed data once the inflate block is
called; so clear it ASAP to reduce memory overhead.  This is a
small chunk, so it only saves a few hundred kilobytes with the
script below.

before:        RssAnon:     5976 kB
 after:        RssAnon:     5564 kB
------
require 'net/http'
require 'zlib'
response_gz = ARGV.shift or abort "#$0 TEMPORARY_FILE"

 # pre-create response since compressing is slower than decompressing
unless File.readable?(response_gz)
  nr = 16384 * 2
  buf = ((0..255).map(&:chr).join * 128)
  File.open(response_gz, 'wb') do |fp|
    gzip = Zlib::GzipWriter.new(fp)
    nr.times { gzip.write(buf) }
    gzip.close
  end
  buf.clear
end
response_gz = File.open(response_gz)

s = TCPServer.new('127.0.0.1', 0)
pid = fork do
  c = s.accept
  c.readpartial(16384).clear
  c.write("HTTP/1.1 200 OK\r\n" \
          "Content-Length: #{response_gz.stat.size}\r\n" \
          "Content-Encoding: gzip\r\n" \
          "Accept-Ranges: bytes\r\n" \
          "\r\n")
  IO.copy_stream(response_gz, c)
  c.close
end

addr = s.addr
Net::HTTP.start(addr[3], addr[1]) do |http|
  http.request_get(-'/') do |res|
    res.read_body(&:clear)
  end
end
puts File.readlines(-'/proc/self/status').grep(/RssAnon/)[0]
Process.waitpid2(pid)
------
* lib/net/http/response.rb (inflate_adapter): clear compressed_chunk
------------------------------------------------------------------------
r61683 | hsbt | 2018-01-08 19:12:41 +0900 (Mon, 08 Jan 2018) | 1 line

Update minitest-5.11.1
------------------------------------------------------------------------
r61682 | mame | 2018-01-08 18:39:01 +0900 (Mon, 08 Jan 2018) | 4 lines

parse.y: Remove dispose_string

I think that recycling the delimiter string objects doesn't pay its
complexity.
------------------------------------------------------------------------
r61681 | nobu | 2018-01-08 18:11:26 +0900 (Mon, 08 Jan 2018) | 4 lines

vm_insnhelper.c: vm_invoke_block_opt_call

* vm_insnhelper.c (vm_invoke_block_opt_call): renamed with sliding
  arguments.
------------------------------------------------------------------------
r61680 | nobu | 2018-01-08 18:04:07 +0900 (Mon, 08 Jan 2018) | 12 lines

vm.c: respect redefinition of Proc#call

* vm.c (vm_redefinition_check_method_type): hoist out method
  definition type to check redefinition.

* vm.c (rb_vm_check_redefinition_opt_method): should check
  optimized method too.

* vm.c (vm_init_redefined_flag): check Proc#call.

* vm_insnhelper.c (vm_call_opt_block_call): search proper method
  if redefined.  [Bug #14335]
------------------------------------------------------------------------
r61679 | kazu | 2018-01-08 17:12:04 +0900 (Mon, 08 Jan 2018) | 1 line

Add parens [ci skip]
------------------------------------------------------------------------
r61678 | nobu | 2018-01-08 15:55:12 +0900 (Mon, 08 Jan 2018) | 1 line

node.c: show newline node mark
------------------------------------------------------------------------
r61677 | mame | 2018-01-08 15:54:55 +0900 (Mon, 08 Jan 2018) | 3 lines

parse.y: Use last_loc.lineno instead of ruby_sourceline

State-less way is better.
------------------------------------------------------------------------
r61676 | mame | 2018-01-08 15:30:53 +0900 (Mon, 08 Jan 2018) | 3 lines

parse.y: Remove `$<num>$ = ruby_sourceline` hacks

Instead, use bison's lineno.
------------------------------------------------------------------------
r61675 | nobu | 2018-01-08 14:17:09 +0900 (Mon, 08 Jan 2018) | 3 lines

compile.c: compile_case2 branch

* compile.c (compile_case2): compile as a branch condition.
------------------------------------------------------------------------
r61674 | nobu | 2018-01-08 14:17:08 +0900 (Mon, 08 Jan 2018) | 1 line

parse.y: constified NULL_LOC
------------------------------------------------------------------------
r61673 | mrkn | 2018-01-08 13:35:20 +0900 (Mon, 08 Jan 2018) | 1 line

doc/NEWS-2.5.0: Time.at is a class method
------------------------------------------------------------------------
r61672 | mame | 2018-01-08 12:22:13 +0900 (Mon, 08 Jan 2018) | 1 line

parse.y: Factor out special handling of a short-cut operator id
------------------------------------------------------------------------
r61671 | yui-knk | 2018-01-08 11:38:21 +0900 (Mon, 08 Jan 2018) | 3 lines

parse.y: Remove duplicated nd_loc set

* parse.y: nd_loc is set by NEW_CASE2/NEW_WHEN
------------------------------------------------------------------------
r61670 | mame | 2018-01-08 11:36:12 +0900 (Mon, 08 Jan 2018) | 1 line

parse.y: Embed simple wrapper functions for NEW_NODEs
------------------------------------------------------------------------
r61669 | yui-knk | 2018-01-08 11:24:18 +0900 (Mon, 08 Jan 2018) | 4 lines

parse.y: Make NULL_LOC to be internal

* parse.y (NULL_LOC): We will create NODEs only
  inside of parse.y, so make NULL_LOC to be internal.
------------------------------------------------------------------------
r61668 | mame | 2018-01-08 11:19:47 +0900 (Mon, 08 Jan 2018) | 3 lines

parse.y: Remove unneeded wrapper functions for NEW_NODEs

Just refactoring.
------------------------------------------------------------------------
r61667 | mame | 2018-01-08 10:49:00 +0900 (Mon, 08 Jan 2018) | 9 lines

parse.y: set bison's first_loc.lineno to nd_line by default

This change initializes nd_line, lineno of each node, by default, by
using the first line number of code range that bison tracks, instead of
extracting from lexer state.
The lexer state basically provides only the last line number of code
range, so many hacks are used to approximate the first line number.  The
hacks have been introduced on demand, or very ad-hocly.  I think this
change will make it possible to remove most of the hacks.
------------------------------------------------------------------------
r61666 | mame | 2018-01-08 10:29:35 +0900 (Mon, 08 Jan 2018) | 3 lines

parse.y: make all NEW_NODE macros receive location

This looks a big change, but just for refactoring.
------------------------------------------------------------------------
r61665 | normal | 2018-01-08 10:11:38 +0900 (Mon, 08 Jan 2018) | 47 lines

zlib: reduce garbage on Zlib::GzipReader#readpartial

For garbage-concious users who use the `outbuf' argument of
`readpartial' to supply a destination buffer, this provides
a drastic reduction in garbage when inflating large inputs
in a streaming fashion.

This results in a anonymous RSS reduction in the reader
similar to the reduction in the writer from r61631.

Results using the test script from r61631
<https://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=revision&revision=61631>

Before:

        writer   7.359999   0.000000   7.359999 (  7.360639)
        writer RssAnon:     4040 kB
        reader   6.346667   0.070000   6.416667 (  7.387654)
        reader RssAnon:    98272 kB

After:

        writer   7.309999   0.000000   7.309999 (  7.310651)
        writer RssAnon:	    4048 kB
        reader   6.146666   0.003333   6.149999 (  7.334868)
        reader RssAnon:	    4300 kB

* ext/zlib/zlib.c (struct read_raw_arg): new struct
  (gzfile_read_raw_partial): use read_raw_arg
  (gzfile_read_raw_rescue): ditto
  (gzfile_read_raw): accept outbuf, use read_raw_arg
  (gzfile_read_raw_ensure): accept outbuf
  (gzfile_read_header): ditto
  (gzfile_check_footer): ditto
  (gzfile_read_more): ditto
  (gzfile_read_raw_until_zero): adjust for changes
  (gzfile_fill): ditto
  (gzfile_readpartial): ditto
  (gzfile_read_all): ditto
  (gzfile_getc): ditto
  (gzfile_reader_end_run): ditto
  (gzfile_reader_get_unused): ditto
  (rb_gzreader_initialize): ditto
  (gzreader_skip_linebreaks): ditto
  (gzreader_gets): ditto
  (zlib_gunzip_run): ditto
  [ruby-core:84660] [Feature #14319]
------------------------------------------------------------------------
r61664 | normal | 2018-01-08 10:11:33 +0900 (Mon, 08 Jan 2018) | 51 lines

open-uri: clear string after buffering

Since r58846 (in Ruby 2.5), it is safe to clear the string
yielded to Net::HTTPResponse#read_body methods.  This
reduces malloc garbage (anonymous RSS) using the Linux-only
script below:

before:  user     system      total        real
      0.030000   0.250000   0.280000 (  0.280511)
    RssAnon:	   60240 kB

 after:  user     system      total        real
      0.050000   0.223333   0.273333 (  0.273118)
    RssAnon:	    6676 kB

------
  # warning this script requires 1G free space for buffering
require 'open-uri'
require 'socket'
require 'benchmark'

s = TCPServer.new('127.0.0.1', 0)
len = 1024 * 1024 * 1024
buf = ((0..255).map(&:chr).join * 128)
nr = len / buf.size
pid = fork do
  c = s.accept
  c.readpartial(16384).clear
  c.write("HTTP/1.1 200 OK\r\n" \
	  "Content-Length: #{len}\r\n" \
          "Content-Type: application/octet-stream\r\n" \
          "\r\n")
  buf.freeze # speeds up IO#write slightly
  nr.times { c.write(buf) }
  c.close
end

addr = s.addr
open("http://#{addr[3]}:#{addr[1]}/", "rb") do |fp|
  bm = Benchmark.measure do
    while fp.read(16384, buf)
    end
  end
  puts bm
end
puts File.readlines("/proc/#$$/status").grep(/RssAnon/)[0]
Process.waitpid2(pid)
------

* lib/open-uri.rb: clear string yielded by Net::HTTPResponse#read_body
  [ruby-core:84662] [Feature #14320]
------------------------------------------------------------------------
r61663 | normal | 2018-01-08 09:34:47 +0900 (Mon, 08 Jan 2018) | 41 lines

net/protocol: read directly into rbuf if it's empty

There's no need to allocate a temporary string when @rbuf is
empty, we can use it as the read_nonblock destination buffer to
save both allocation overhead and avoid a later memcpy.

This results in a halving user CPU time and tiny memory
reduction with the script below:

             user     system      total        real
before   0.603333   0.539999   1.143332 (  1.143347)
       RssAnon:     5624 kB

after    0.283334   0.560000   0.843334 (  0.846072)
       RssAnon:     5592 kB

------
require 'net/http'
require 'benchmark'
s = TCPServer.new('127.0.0.1', 0)
len = 1024 * 1024 * 1024 * 2
pid = fork do
  c = s.accept
  c.readpartial(16384).clear
  c.send("HTTP/1.0 200 OK\r\nContent-Length: #{len}\r\n\r\n", Socket::MSG_MORE)
  IO.copy_stream('/dev/zero', c, len)
  c.close
end

addr = s.addr
Net::HTTP.start(addr[3], addr[1]) do |http|
  http.request_get('/') do |res|
    puts(Benchmark.measure { res.read_body(&:clear) })
  end
end
puts File.readlines("/proc/self/status").grep(/RssAnon/)[0]
Process.waitpid2(pid)
------

* lib/net/protocol.rb (rbuf_fill): avoid allocation if rbuf is empty
  [ruby-core:84678] [Feature #14326]
------------------------------------------------------------------------
r61662 | normal | 2018-01-08 09:34:42 +0900 (Mon, 08 Jan 2018) | 7 lines

net/protocol: use binary string buffers

Not an encoding expert, but this seems necessary for the next
change.  All of the IO#read, IO#read_nonblock and related
methods will return a binary string when given a length
argument; so anything appended to these buffers via <<
will be binary.
------------------------------------------------------------------------
r61659 | ko1 | 2018-01-08 04:18:49 +0900 (Mon, 08 Jan 2018) | 19 lines

Speedup `block.call` [Feature #14330]

* insns.def (getblockparamproxy): introduce new instruction to return
  the `rb_block_param_proxy` object if possible. This object responds
  to `call` method and invoke given block (completely similar to `yield`).

* method.h (OPTIMIZED_METHOD_TYPE_BLOCK_CALL): add new optimized call type
  which is for `rb_block_param_proxy.cal`.

* vm_insnhelper.c (vm_call_method_each_type): ditto.

* vm_insnhelper.c (vm_call_opt_block_call): ditto.

* vm_core.h (BOP_CALL, PROC_REDEFINED_OP_FLAG): add check for `Proc#call`
  redefinition.

* compile.c (iseq_compile_each0): compile to use new insn
  `getblockparamproxy` for method call.

------------------------------------------------------------------------
r61658 | stomar | 2018-01-08 02:49:46 +0900 (Mon, 08 Jan 2018) | 1 line

lib/scanf.rb: [DOC] fix typos
------------------------------------------------------------------------
r61657 | svn | 2018-01-08 02:47:54 +0900 (Mon, 08 Jan 2018) | 1 line

* 2018-01-08
------------------------------------------------------------------------
r61656 | stomar | 2018-01-08 02:47:53 +0900 (Mon, 08 Jan 2018) | 1 line

doc/NEWS-2.5.0: improve language
------------------------------------------------------------------------
r61655 | mame | 2018-01-07 21:55:10 +0900 (Sun, 07 Jan 2018) | 1 line

node.c: fix SEGV of `->(a:){}` when --dump=parsetree
------------------------------------------------------------------------
r61654 | nobu | 2018-01-07 20:51:30 +0900 (Sun, 07 Jan 2018) | 1 line

parse.y: do not overwrite case_body position
------------------------------------------------------------------------
r61653 | nobu | 2018-01-07 20:51:29 +0900 (Sun, 07 Jan 2018) | 1 line

parse.y: set case_body line position to args
------------------------------------------------------------------------
r61652 | nobu | 2018-01-07 18:44:34 +0900 (Sun, 07 Jan 2018) | 1 line

parse.y: removed unused macro new_command_call
------------------------------------------------------------------------
r61651 | nobu | 2018-01-07 18:36:48 +0900 (Sun, 07 Jan 2018) | 3 lines

parse.y: nd_line of new_qcall

* parse.y (new_qcall): set nd_line to the method name location.
------------------------------------------------------------------------
r61650 | nobu | 2018-01-07 14:38:37 +0900 (Sun, 07 Jan 2018) | 5 lines

eval_error.c: reset in each line

* eval_error.c (print_errinfo): reset in each line, so that
  Exception#full_message ends with a newline and puts will not
  print an extra newline.
------------------------------------------------------------------------
r61649 | nobu | 2018-01-07 13:57:04 +0900 (Sun, 07 Jan 2018) | 4 lines

eval_error.c: concat directly

* eval_error.c (write_warn, write_warn2): get rid of unnecessary
  intermediate string objects, concat directly.
------------------------------------------------------------------------
r61648 | nobu | 2018-01-07 13:23:55 +0900 (Sun, 07 Jan 2018) | 4 lines

test_exception.rb: fix message

* test/ruby/test_exception.rb (test_full_message): fix method name
  in a message.
------------------------------------------------------------------------
r61647 | nobu | 2018-01-07 13:16:31 +0900 (Sun, 07 Jan 2018) | 4 lines

eval_error.c: renamed an argument

* eval_error.c (print_errinfo): renamed argument `colored` as
  `highlight`, as it does not use colors.
------------------------------------------------------------------------
r61646 | nobu | 2018-01-07 13:10:06 +0900 (Sun, 07 Jan 2018) | 4 lines

io.c: rb_stderr_to_original_p

* io.c (rb_stderr_to_original_p): hoist out the condition to write
  messages to the stderr FD directly.
------------------------------------------------------------------------
r61645 | hsbt | 2018-01-07 12:14:19 +0900 (Sun, 07 Jan 2018) | 3 lines

Added bundler for `test-bundled-gems` dependency.

  rake, did_you_mean, test-unit depends on bundler.
------------------------------------------------------------------------
r61644 | nobu | 2018-01-07 12:10:00 +0900 (Sun, 07 Jan 2018) | 4 lines

prelude.rb: eliminate a private constant

* prelude.rb (Thread.exclusive): eliminate a private constant,
  MUTEX_FOR_THREAD_EXCLUSIVE.
------------------------------------------------------------------------
r61643 | nobu | 2018-01-07 11:49:27 +0900 (Sun, 07 Jan 2018) | 3 lines

extmk.rb: exclude recursively

* ext/extmk.rb: exclude extension libraries recursively.
------------------------------------------------------------------------
r61642 | svn | 2018-01-07 10:20:11 +0900 (Sun, 07 Jan 2018) | 1 line

* 2018-01-07
------------------------------------------------------------------------
r61641 | mrkn | 2018-01-07 10:20:10 +0900 (Sun, 07 Jan 2018) | 3 lines

doc/NEWS-2.5.0: Fix the description of backtrace format change

* The backtrace format change is affected by $stderr, but not STDERR.
------------------------------------------------------------------------
r61640 | normal | 2018-01-06 18:23:43 +0900 (Sat, 06 Jan 2018) | 4 lines

Revert "net/protocol: use binary string buffers"

Oops, not ready, yet (will work on this tomorrow :x).
This reverts commit r61638
------------------------------------------------------------------------
r61639 | normal | 2018-01-06 18:21:35 +0900 (Sat, 06 Jan 2018) | 11 lines

net/ftp: fix FrozenError in BufferedSocket

I noticed this bug while working on something else with
RUBYOPT=-d on, existing test cases all passed with it.

Note: I use String.new because it is the local style, here,
I prefer +'' (or ''.b, for a future commit)

* lib/net/ftp.rb (BufferedSocket#read): use String.new
* test/net/ftp/test_buffered_socket.rb (test_read_nil): new test
  [ruby-core:84675] [Bug #14323]
------------------------------------------------------------------------
r61638 | normal | 2018-01-06 18:21:12 +0900 (Sat, 06 Jan 2018) | 4 lines

net/protocol: use binary string buffers

Not an encoding expert, but this seems necessary for the next
change.
------------------------------------------------------------------------
r61637 | nobu | 2018-01-06 18:01:02 +0900 (Sat, 06 Jan 2018) | 5 lines

test_process.rb: skip not-found groups

* test/ruby/test_process.rb (test_execopts_gid): under some
  network configuration (maybe with Open Directory but
  disconnected temporarily), some groups may fail to find.
------------------------------------------------------------------------
r61636 | nobu | 2018-01-06 17:44:17 +0900 (Sat, 06 Jan 2018) | 4 lines

string.c: out-of-bounds access

* string.c (rb_str_enumerate_lines): fix out-of-bounds access when
  record separator is longer than the last element.  [Bug #14257]
------------------------------------------------------------------------
r61635 | kazu | 2018-01-06 13:55:07 +0900 (Sat, 06 Jan 2018) | 3 lines

Update Status Code

see https://www.iana.org/assignments/http-status-codes/http-status-codes.xhtml
------------------------------------------------------------------------
r61634 | kazu | 2018-01-06 13:55:06 +0900 (Sat, 06 Jan 2018) | 3 lines

Add 103 Early Hints

see https://www.iana.org/assignments/http-status-codes/http-status-codes.xhtml
------------------------------------------------------------------------
r61633 | kazu | 2018-01-06 13:55:05 +0900 (Sat, 06 Jan 2018) | 1 line

Specify frozen_string_literal: true
------------------------------------------------------------------------
r61632 | normal | 2018-01-06 06:14:19 +0900 (Sat, 06 Jan 2018) | 10 lines

io.c: clear Strings we create for IO.copy_stream

While we can't recycle strings after giving them rb_funcall*,
we can reduce their malloc overhead by resizing them to zero.
This only affects cases where either `src' or `dst' is a non-IO
object and either `copy_length' is passed or there is
pre-existing data in the read buffer.

* io.c (copy_stream_fallback_body): clear when done with `copy_length'
  (copy_stream_body): clear when done with pre-existing read buffer
------------------------------------------------------------------------
r61631 | normal | 2018-01-06 05:48:55 +0900 (Sat, 06 Jan 2018) | 76 lines

zlib: reduce garbage on gzip writes (deflate)

Zlib::GzipWriter generated large amounts of garbage from
(struct zstream).input.  Reuse the .input field when it is
hidden, and recycle it when its lifetime is over.  This change
alone reduced memory usage of the writer from 90MB to 4.5MB.

For the detached buffer of compressed data used by
gzfile_write_raw, we can only clear the string (not recycle it)
since user code may hold references to it (but the data would be
clobbered, anyways).  This reduced memory usage slightly by
around 0.5MB (because it's smaller compressed data).

Combined, these changes reduce the anonymous RSS memory of a
dedicated writer process from over 90MB to under 4MB.

before:

    #      user     system      total        real

    writer   7.823332   0.053333   7.876665 (  7.881464)
    writer RssAnon:    92944 kB
    reader   6.969999   0.076666   7.046665 (  7.906377)
    reader RssAnon:   109820 kB

after:

    writer   7.359999   0.000000   7.359999 (  7.360639)
    writer RssAnon:     4040 kB
    reader   6.346667   0.070000   6.416667 (  7.387654)
    reader RssAnon:    98272 kB

Script used:
-------
require 'zlib'
require 'benchmark'
nr = 16384 * 2

def stats(pfx, bm)
  str = "#{bm}#{File.readlines("/proc/#$$/status").grep(/^RssAnon:/)[0]}"
  puts str.gsub!(/^/m, pfx)
end

rd, wr = IO.pipe
pid = fork do
  buf = ((0..255).map(&:chr).join * 128).freeze
  rd.close
  gzip = Zlib::GzipWriter.new(wr)
  bm = Benchmark.measure do
    nr.times { gzip.write(buf) }
    gzip.close
    wr.close
  end
  stats('writer ', bm)
end

wr.close
buf = ''
gunzip = Zlib::GzipReader.new(rd)
n = 0
bm = Benchmark.measure do
  begin
    gunzip.readpartial(16384, buf)
    n += buf.size
  rescue EOFError
    break
  end while true
end
stats('reader ', bm)
Process.waitall
-------
* ext/zlib/zlib.c (zstream_discard_input): reuse or recycle hidden input
  (zstream_reset_input): clear hidden input
  (zstream_run): detach input and recycle after use
  (gzfile_write_raw): clear buffer after write
  [ruby-core:84638] [Feature #14315]
------------------------------------------------------------------------
r61627 | naruse | 2018-01-06 05:38:02 +0900 (Sat, 06 Jan 2018) | 1 line

Extend timeout of test_clear_unreachable_keyword_args
------------------------------------------------------------------------
r61626 | naruse | 2018-01-06 05:36:46 +0900 (Sat, 06 Jan 2018) | 3 lines

Show how many seconds it timeouts

By this we can easily extend timeout.
------------------------------------------------------------------------
r61625 | naruse | 2018-01-06 04:24:48 +0900 (Sat, 06 Jan 2018) | 1 line

extend timeout to 15 seconds for ARMv8 environment
------------------------------------------------------------------------
r61624 | ko1 | 2018-01-06 02:51:10 +0900 (Sat, 06 Jan 2018) | 11 lines

Speedup `Proc#call` [Feature #14318]

* vm_insnhelper.c (vm_call_opt_call): do same process of `yield` instead of
  invoking `Proc`.

* vm_insnhelper.c (vm_invoke_block): invoke given block handler instead of
  using a block handler in the current frame.
  Also do not check blcok handler here (caller should check it).

* insns.def (invokeblock): catch up this fix.

------------------------------------------------------------------------
r61623 | mame | 2018-01-06 01:04:02 +0900 (Sat, 06 Jan 2018) | 1 line

parse.y: Use nd_set_loc instead of direct modification to nd_loc
------------------------------------------------------------------------
r61622 | mame | 2018-01-06 01:04:00 +0900 (Sat, 06 Jan 2018) | 3 lines

parse.y: Remove unneeded code

Because block_append sets prelude->nd_loc.
------------------------------------------------------------------------
r61621 | mame | 2018-01-06 00:44:03 +0900 (Sat, 06 Jan 2018) | 3 lines

parse.y: make method_add_block accept location

Also, use method_add_block instead of direct modification to nd_iter.
------------------------------------------------------------------------
r61620 | svn | 2018-01-06 00:16:43 +0900 (Sat, 06 Jan 2018) | 1 line

* 2018-01-06
------------------------------------------------------------------------
r61619 | mame | 2018-01-06 00:16:42 +0900 (Sat, 06 Jan 2018) | 1 line

node_h (NEW_DEFN): remove unused argument
------------------------------------------------------------------------
r61618 | nobu | 2018-01-05 23:23:23 +0900 (Fri, 05 Jan 2018) | 6 lines

compile.c: fix stack consistency error

* compile.c (iseq_peephole_optimize): fix stack consistency error
  from return in loop, by adding extra `pop` when replacing `jump`
  with `leave`, which is never reached but needed to adjust sp
  calculation.  [ruby-core:84589] [Bug #14273]
------------------------------------------------------------------------
r61617 | nobu | 2018-01-05 23:23:22 +0900 (Fri, 05 Jan 2018) | 4 lines

compile.c: remove more unreachable chunk

* compile.c (remove_unreachable_chunk): remove beyond labels to be
  removed.
------------------------------------------------------------------------
r61616 | k0kubun | 2018-01-05 20:44:31 +0900 (Fri, 05 Jan 2018) | 9 lines

marshal.c: allow marshalling keyword_init struct

struct.c: define rb_struct_s_keyword_init to shared with marshal.c

internal.h: add the declaration to be used by marshal.c

test/ruby/test_marshal.rb: add test for Bug#14314

[Feature #14314] [ruby-core:84629]
------------------------------------------------------------------------
r61615 | mame | 2018-01-05 20:39:27 +0900 (Fri, 05 Jan 2018) | 1 line

node.c: factor out the part of operator output into F_OPERATOR
------------------------------------------------------------------------
r61614 | mame | 2018-01-05 20:39:25 +0900 (Fri, 05 Jan 2018) | 3 lines

node.c: remove unused macro F_OPTION

Follow up of r61610
------------------------------------------------------------------------
r61613 | mame | 2018-01-05 19:46:24 +0900 (Fri, 05 Jan 2018) | 1 line

node.c (NODE_OP_CDECL): fix a typo bug.
------------------------------------------------------------------------
r61612 | normal | 2018-01-05 19:30:40 +0900 (Fri, 05 Jan 2018) | 5 lines

zlib: remove redundant rb_obj_reveal

No need to reveal strings freshly created with rb_str_new.

* ext/zlib/zlib.c (zstream_detach_input): remove redundant call
------------------------------------------------------------------------
r61611 | normal | 2018-01-05 18:41:21 +0900 (Fri, 05 Jan 2018) | 11 lines

tool/rbinstall.rb: allow owner to have write permissions

Denying write permissions to the owner seems wrong.

Oddly, this problem only manifests in the "ruby_2_4" branch when
installing bundled gems (rake and friends).  It does not happen
with "ruby_2_3", or "trunk", so it might be related to RubyGems
changes.

* tool/rbinstall.rb: set umask to 022
  [ruby-core:84420] [Bug #14227]
------------------------------------------------------------------------
r61610 | mame | 2018-01-05 17:59:23 +0900 (Fri, 05 Jan 2018) | 8 lines

node.h: remove NODE_PRELUDE

NODE_PRELUDE contains a `BEGIN` node, a main node, and compile_option.
This node is assumed that it must be located immediately under the root
NODE_SCOPE, but this strange assumption is not so good, IMO.

This change removes the assumtion; it integrates the former two nodes by
block_append, and moves compile_option into rb_ast_body_t.
------------------------------------------------------------------------
r61609 | mame | 2018-01-05 17:59:22 +0900 (Fri, 05 Jan 2018) | 1 line

make rb_iseq_new* accept rb_ast_body_t instead of NODE*
------------------------------------------------------------------------
r61608 | mame | 2018-01-05 17:59:20 +0900 (Fri, 05 Jan 2018) | 1 line

node.h: define rb_ast_body_t and restructure rb_ast_t
------------------------------------------------------------------------
r61607 | mame | 2018-01-05 16:47:51 +0900 (Fri, 05 Jan 2018) | 1 line

node.c: constify NODE* arguments in node.c
------------------------------------------------------------------------
r61606 | ko1 | 2018-01-05 16:25:55 +0900 (Fri, 05 Jan 2018) | 2 lines

* insns.def (invokeblock): `calling->recv` is not used.

------------------------------------------------------------------------
r61605 | hsbt | 2018-01-05 15:18:57 +0900 (Fri, 05 Jan 2018) | 1 line

Try to fix Travis CI configuration.
------------------------------------------------------------------------
r61604 | mame | 2018-01-05 14:27:25 +0900 (Fri, 05 Jan 2018) | 1 line

parse.y: refactor out ast generation code of two rb_parser_compile_*
------------------------------------------------------------------------
r61603 | ko1 | 2018-01-05 11:25:26 +0900 (Fri, 05 Jan 2018) | 7 lines

check array for zsuper. [Bug #14279]

* compile.c (iseq_compile_each0): for zsuper (NODE_ZSUPER), we need to check
  given argument is Array or not.

* test/ruby/test_super.rb: add a test for this bug.

------------------------------------------------------------------------
r61602 | normal | 2018-01-05 11:22:23 +0900 (Fri, 05 Jan 2018) | 44 lines

net/protocol: optimize large read case

There are several places where rbuf_consume is called with
@rbuf.size as its length arg; simplify that case by avoiding
the slow String#slice! operation in favor of a lightweight
replacement.

The following script exhibits reduced memory usage and
runtimes using the time(1) command:

	2.9s =>  2.6s
	70MB => 12 MB

---------
require 'net/http'
require 'digest/md5'
Thread.abort_on_exception = true
s = TCPServer.new('127.0.0.1', 0)
len = 1024 * 1024 * 1024
th = Thread.new do
  c = s.accept
  c.readpartial(16384)
  c.write("HTTP/1.0 200 OK\r\nContent-Length: #{len}\r\n\r\n")
  IO.copy_stream('/dev/zero', c, len)
  c.close
end

addr = s.addr
Net::HTTP.start(addr[3], addr[1]) do |http|
  http.request_get('/') do |res|
    dig = Digest::MD5.new
    res.read_body { |buf|
      dig.update(buf)
      # String#clear is important to reduce malloc overhead,
      # but most Ruby programmers don't do this :<
      buf.clear
    }
    puts dig.hexdigest
  end
end
----------

* lib/net/protocol (rbuf_consume): optimize for @rbuf.size == len
  [Feature #14268]
------------------------------------------------------------------------
r61601 | mame | 2018-01-05 09:49:41 +0900 (Fri, 05 Jan 2018) | 6 lines

Refactor ISEQ_TYPE_DEFINED_GUARD out

This commit removes ISEQ_TYPE_DEFINED_GUARD because it is no longer
needed.  And this introduces ISEQ_TYPE_PLAIN which means that the iseq
does nothing special but just wrap an expression.  Currently, this is
used for once execution: `/foo#{ bar }baz/o`.
------------------------------------------------------------------------
r61600 | svn | 2018-01-05 09:49:41 +0900 (Fri, 05 Jan 2018) | 1 line

* 2018-01-05
------------------------------------------------------------------------
r61599 | mame | 2018-01-05 09:49:40 +0900 (Fri, 05 Jan 2018) | 4 lines

compile.c: refactoring of defined? exception handler

This commit removes tmp_node trick to create a special exception handler
for `defined?`.
------------------------------------------------------------------------
r61598 | mame | 2018-01-04 21:56:49 +0900 (Thu, 04 Jan 2018) | 8 lines

test/ruby/test_io.rb: relax RLIMIT_NPROC for invocation of ruby

This limit seems to be too restrict.  It sometimes produces the
following warning when running `make test-all`:
```
TestIO#test_close_on_exec<main>: warning: pthread_create failed for
timer: Resource temporarily unavailable, scheduling broken
```
------------------------------------------------------------------------
r61597 | mame | 2018-01-04 21:47:22 +0900 (Thu, 04 Jan 2018) | 1 line

node.h: add NODE_ONCE instead of reuse of NODE_SCOPE
------------------------------------------------------------------------
r61596 | shyouhei | 2018-01-04 16:51:19 +0900 (Thu, 04 Jan 2018) | 1 line

suppress warnings for long string literals
------------------------------------------------------------------------
r61595 | shyouhei | 2018-01-04 16:51:18 +0900 (Thu, 04 Jan 2018) | 3 lines

define NO_LONG_LONG appropriately

as documented above.
------------------------------------------------------------------------
r61594 | shyouhei | 2018-01-04 16:51:17 +0900 (Thu, 04 Jan 2018) | 7 lines

ULL suffix is a C99ism

Don't assume long long == 8 bytes.

If you can assume C99, there are macros named UINT64_C and
such for appropriate integer literal suffixes.
If you can't, no way but do a bitwise or.
------------------------------------------------------------------------
r61593 | shyouhei | 2018-01-04 16:51:16 +0900 (Thu, 04 Jan 2018) | 3 lines

ULL suffix is a C99ism

... and why not just use ~0 instead?
------------------------------------------------------------------------
r61592 | mame | 2018-01-04 16:07:49 +0900 (Thu, 04 Jan 2018) | 3 lines

iseq.c: Refactor out rb_iseq_new_ifunc from rb_iseq_new_with_opt

It is too error-prone to pass IMEMO_IFUNC object as NODE*.
------------------------------------------------------------------------
r61591 | mame | 2018-01-04 13:44:16 +0900 (Thu, 04 Jan 2018) | 1 line

iseq.c (rb_iseq_new_with_opt): handle the case where node is imemo_func
------------------------------------------------------------------------
r61590 | nobu | 2018-01-04 10:46:01 +0900 (Thu, 04 Jan 2018) | 1 line

insns_info.inc.tmpl: share large tablese
------------------------------------------------------------------------
r61589 | nobu | 2018-01-04 10:30:20 +0900 (Thu, 04 Jan 2018) | 4 lines

insns_info.inc: position independent

* template/insns_info.inc.tmpl (insn_name_info): make position
  independent for large strings.
------------------------------------------------------------------------
r61588 | nobu | 2018-01-04 09:44:40 +0900 (Thu, 04 Jan 2018) | 5 lines

Fix doc typo in Symbol#to_proc [Fix GH-1785]

[ci skip]

From: Dimitris Zorbas <dimitrisplusplus@gmail.com>
------------------------------------------------------------------------
r61587 | nobu | 2018-01-04 09:26:51 +0900 (Thu, 04 Jan 2018) | 4 lines

compile.c: next label

* compile.c (compile_next): label for jump to the end of block is
  removable.
------------------------------------------------------------------------
r61586 | nobu | 2018-01-04 09:26:50 +0900 (Thu, 04 Jan 2018) | 4 lines

test_iseq_load.rb: set location

* test/-ext-/iseq_load/test_iseq_load.rb (assert_iseq_roundtrip):
  set path and line number from callers.
------------------------------------------------------------------------
r61585 | svn | 2018-01-04 08:05:03 +0900 (Thu, 04 Jan 2018) | 1 line

* 2018-01-04
------------------------------------------------------------------------
r61584 | nobu | 2018-01-04 08:05:02 +0900 (Thu, 04 Jan 2018) | 7 lines

compile.c: fix disasm dump

* compile.c (DECL_ANCHOR): initialize as anchor type, which is not
  a valid iseq element.

* compile.c (BADINSN_DUMP): dump from the first element, excluding
  the anchor itself.
------------------------------------------------------------------------
r61578 | nobu | 2018-01-03 22:58:27 +0900 (Wed, 03 Jan 2018) | 4 lines

compile.c: label sp

* compile.c (dump_disasm_list_with_cursor): show stack depth for
  each label.
------------------------------------------------------------------------
r61577 | nobu | 2018-01-03 18:19:11 +0900 (Wed, 03 Jan 2018) | 4 lines

dln.c: dln_incompatible_library_p

* dln.c (dln_incompatible_library_p): renamed as the error message
  with dln prefix, since it is not bound to xmalloc restrictively.
------------------------------------------------------------------------
r61576 | nobu | 2018-01-03 18:05:18 +0900 (Wed, 03 Jan 2018) | 4 lines

dln.c: xmalloc_mismatch_p with dlopen

* dln.c (xmalloc_mismatch_p): define only when using dlopen,
  otherwise dlsym is not available too, and should be used then.
------------------------------------------------------------------------
r61575 | shyouhei | 2018-01-03 10:43:17 +0900 (Wed, 03 Jan 2018) | 3 lines

delete extra #undef [ci skip]

Sorry, this was a garbage.
------------------------------------------------------------------------
r61574 | normal | 2018-01-03 06:51:59 +0900 (Wed, 03 Jan 2018) | 14 lines

variable.c: fix autoload stack space regression

r61560 ("offsetof(type, foo.bar) is (arguably) a GCCism")
introduced 16 bytes of stack overhead on 64-bit systems.
Remove that overhead and cast, instead.  While we're at it,
restore the "waitq" name to clarify the purpose of the field.

(This is one unfortunate consequence of the CC0 ccan/list.h
 implementation compared to the *GPL ones in glibc/urcu/linux)

* variable.c (struct autoload_state): remove head field, clarify naming
  (autoload_reset): cast and adjust
  (autoload_sleep_done): ditto
  (rb_autoload_load): ditto
------------------------------------------------------------------------
r61573 | normal | 2018-01-03 06:23:47 +0900 (Wed, 03 Jan 2018) | 6 lines

thread_pthread.c: use container_of

It's easier to read this macro from ccan than open-coding pointer
arithmetic.

thread_pthread.c (ubf_wakeup_all_threads): use container_of
------------------------------------------------------------------------
r61572 | svn | 2018-01-03 00:29:59 +0900 (Wed, 03 Jan 2018) | 1 line

* 2018-01-03
------------------------------------------------------------------------
r61571 | ko1 | 2018-01-03 00:29:58 +0900 (Wed, 03 Jan 2018) | 9 lines

check an existence of block.

* gc.c (rb_raw_obj_info): check block before using it.

* vm_core.h (vm_block_iseq): r61565 introduced NULL check but this
  check is only needed by `rb_raw_obj_info()` and it is called at GC
  debug mode. Above fix for `rb_raw_obj_info()` solves this problem and
  NULL check should not be needed any more.

------------------------------------------------------------------------
r61570 | shyouhei | 2018-01-02 15:46:40 +0900 (Tue, 02 Jan 2018) | 1 line

include missing header
------------------------------------------------------------------------
r61569 | shyouhei | 2018-01-02 15:42:05 +0900 (Tue, 02 Jan 2018) | 73 lines

fix SEGV inspecting uninitialized objects

obj_info() assumes the given object is alive.  OTOH
gc_writebarrier_incremental is called before or in middle of
object initialization.  Can casue SEGV.

(lldb) run
Process 48188 launched: './miniruby' (x86_64)
Process 48188 stopped
* thread #1: tid = 0x30fd53, 0x00000001000bf7a9 miniruby`rb_array_const_ptr(a=5251291222225483145) + 12 at ruby.h:2072, queue = 'com.apple.main-thread', stop reason = EXC_BAD_ACCESS (code=EXC_I386_GPFLT)
    frame #0: 0x00000001000bf7a9 miniruby`rb_array_const_ptr(a=5251291222225483145) + 12 at ruby.h:2072
   2069 static inline const VALUE *
   2070 rb_array_const_ptr(VALUE a)
   2071 {
-> 2072     return FIX_CONST_VALUE_PTR((RBASIC(a)->flags & RARRAY_EMBED_FLAG) ?
   2073         RARRAY(a)->as.ary : RARRAY(a)->as.heap.ptr);
   2074 }
   2075
(lldb) bt
* thread #1: tid = 0x30fd53, 0x00000001000bf7a9 miniruby`rb_array_const_ptr(a=5251291222225483145) + 12 at ruby.h:2072, queue = 'com.apple.main-thread', stop reason = EXC_BAD_ACCESS (code=EXC_I386_GPFLT)
  * frame #0: 0x00000001000bf7a9 miniruby`rb_array_const_ptr(a=5251291222225483145) + 12 at ruby.h:2072
    frame #1: 0x00000001000bfaab miniruby`pathobj_path(pathobj=5251291222225483145) + 70 at vm_core.h:269
    frame #2: 0x00000001000c25ff miniruby`rb_iseq_path(iseq=0x00000001025b71a8) + 32 at iseq.c:723
    frame #3: 0x000000010009db09 miniruby`rb_raw_iseq_info(buff="0x00000001025b7158 [0    ] proc (Proc)", buff_size=256, iseq=0x00000001025b71a8) + 69 at gc.c:9274
    frame #4: 0x000000010009e1d5 miniruby`rb_raw_obj_info(buff="0x00000001025b7158 [0    ] proc (Proc)", buff_size=256, obj=4334514520) + 1546 at gc.c:9351
    frame #5: 0x000000010009e4d5 miniruby`obj_info(obj=4334514520) + 98 at gc.c:9429
    frame #6: 0x0000000100096658 miniruby`gc_writebarrier_incremental(a=4334514520, b=4334514600, objspace=0x00000001007d3280) + 61 at gc.c:5963
    frame #7: 0x00000001000968ca miniruby`rb_gc_writebarrier(a=4334514520, b=4334514600) + 127 at gc.c:6009
    frame #8: 0x00000001001eabe0 miniruby`rb_obj_written(a=4334514520, oldv=52, b=4334514600, filename="/Users/urabe.shyouhei/data/src/pedantic/vm.c", line=821) + 72 at ruby.h:1472
    frame #9: 0x00000001001eac2c miniruby`rb_obj_write(a=4334514520, slot=0x000000010259ff10, b=4334514600, filename="/Users/urabe.shyouhei/data/src/pedantic/vm.c", line=821) + 70 at ruby.h:1489
    frame #10: 0x0000000100208b6f miniruby`vm_proc_create_from_captured(klass=4311027960, captured=0x0000000102500338, block_type=block_type_ifunc, is_from_method='\0', is_lambda='\x01') + 137 at vm.c:821
    frame #11: 0x0000000100208e5c miniruby`rb_vm_make_proc_lambda(ec=0x00000001007d3548, captured=0x0000000102500338, klass=4311027960, is_lambda='\x01') + 134 at vm.c:892
    frame #12: 0x000000010011f08e miniruby`proc_new(klass=4311027960, is_lambda='\x01') + 445 at proc.c:752
    frame #13: 0x000000010011f110 miniruby`rb_block_lambda + 27 at proc.c:808
    frame #14: 0x00000001001f24a7 miniruby`call_cfunc_0(func=(miniruby`rb_block_lambda at proc.c:807), recv=4310991600, argc=0, argv=0x0000000000000000) + 41 at vm_insnhelper.c:1729
    frame #15: 0x00000001002033de miniruby`vm_call0_cfunc_with_frame(ec=0x00000001007d3548, calling=0x00007fff5fbfb080, ci=0x00007fff5fbfb070, cc=0x00007fff5fbfb0a0, argv=0x0000000000000000) + 370 at vm_eval.c:85
    frame #16: 0x00000001002034d9 miniruby`vm_call0_cfunc(ec=0x00000001007d3548, calling=0x00007fff5fbfb080, ci=0x00007fff5fbfb070, cc=0x00007fff5fbfb0a0, argv=0x0000000000000000) + 59 at vm_eval.c:100
    frame #17: 0x000000010020368f miniruby`vm_call0_body(ec=0x00000001007d3548, calling=0x00007fff5fbfb080, ci=0x00007fff5fbfb070, cc=0x00007fff5fbfb0a0, argv=0x0000000000000000) + 436 at vm_eval.c:131
    frame #18: 0x000000010020326a miniruby`vm_call0(ec=0x00000001007d3548, recv=4310991600, id=2993, argc=0, argv=0x0000000000000000, me=0x0000000100f48110) + 142 at vm_eval.c:58
    frame #19: 0x0000000100203c60 miniruby`rb_call0(ec=0x00000001007d3548, recv=4310991600, mid=2993, argc=0, argv=0x0000000000000000, scope=CALL_FCALL, self=4334514640) + 166 at vm_eval.c:296
    frame #20: 0x0000000100204827 miniruby`rb_call(recv=4310991600, mid=2993, argc=0, argv=0x0000000000000000, scope=CALL_FCALL) + 84 at vm_eval.c:589
    frame #21: 0x000000010020518b miniruby`rb_funcallv(recv=4310991600, mid=2993, argc=0, argv=0x0000000000000000) + 52 at vm_eval.c:815
    frame #22: 0x000000010012242e miniruby`mlambda(method=0) + 45 at proc.c:2661
    frame #23: 0x0000000100205bac miniruby`rb_iterate0(it_proc=(miniruby`mlambda at proc.c:2660), data1=0, ifunc=0x00000001025b71a8, ec=0x00000001007d3548) + 380 at vm_eval.c:1134
    frame #24: 0x0000000100205d16 miniruby`rb_iterate(it_proc=(miniruby`mlambda at proc.c:2660), data1=0, bl_proc=(miniruby`bmcall at proc.c:2666), data2=4334514640) + 88 at vm_eval.c:1166
    frame #25: 0x00000001001224c7 miniruby`method_to_proc(method=4334514640) + 43 at proc.c:2701
    frame #26: 0x00000001001f24a7 miniruby`call_cfunc_0(func=(miniruby`method_to_proc at proc.c:2688), recv=4334514640, argc=0, argv=0x0000000102400568) + 41 at vm_insnhelper.c:1729
    frame #27: 0x00000001001f2f87 miniruby`vm_call_cfunc_with_frame(ec=0x00000001007d3548, reg_cfp=0x0000000102500350, calling=0x00007fff5fbfc030, ci=0x0000000100f2ec70, cc=0x0000000102735718) + 386 at vm_insnhelper.c:1918
    frame #28: 0x00000001001f30d6 miniruby`vm_call_cfunc(ec=0x00000001007d3548, reg_cfp=0x0000000102500350, calling=0x00007fff5fbfc030, ci=0x0000000100f2ec70, cc=0x0000000102735718) + 149 at vm_insnhelper.c:1934
    frame #29: 0x00000001001f4319 miniruby`vm_call_method_each_type(ec=0x00000001007d3548, cfp=0x0000000102500350, calling=0x00007fff5fbfc030, ci=0x0000000100f2ec70, cc=0x0000000102735718) + 239 at vm_insnhelper.c:2232
    frame #30: 0x00000001001f49a4 miniruby`vm_call_method(ec=0x00000001007d3548, cfp=0x0000000102500350, calling=0x00007fff5fbfc030, ci=0x0000000100f2ec70, cc=0x0000000102735718) + 117 at vm_insnhelper.c:2355
    frame #31: 0x00000001001f4b7a miniruby`vm_call_general(ec=0x00000001007d3548, reg_cfp=0x0000000102500350, calling=0x00007fff5fbfc030, ci=0x0000000100f2ec70, cc=0x0000000102735718) + 59 at vm_insnhelper.c:2398
    frame #32: 0x00000001001faf0e miniruby`vm_exec_core(ec=0x00000001007d3548, initial=0) + 8471 at insns.def:915
    frame #33: 0x000000010020b75d miniruby`vm_exec(ec=0x00000001007d3548) + 230 at vm.c:1771
    frame #34: 0x000000010020c3d1 miniruby`rb_iseq_eval(iseq=0x00000001007f8270) + 52 at vm.c:2008
    frame #35: 0x00000001000caa4a miniruby`rb_load_internal0(ec=0x00000001007d3548, fname=4310799960, wrap=0) + 631 at load.c:611
    frame #36: 0x00000001000cab36 miniruby`rb_load_internal(fname=4310799960, wrap=0) + 46 at load.c:642
    frame #37: 0x00000001000cae1d miniruby`rb_f_load(argc=1, argv=0x00000001024004b8) + 217 at load.c:710
    frame #38: 0x00000001001f247c miniruby`call_cfunc_m1(func=(miniruby`rb_f_load at load.c:695), recv=4311327440, argc=1, argv=0x00000001024004b8) + 47 at vm_insnhelper.c:1723
    frame #39: 0x00000001001f2f87 miniruby`vm_call_cfunc_with_frame(ec=0x00000001007d3548, reg_cfp=0x00000001025003e0, calling=0x00007fff5fbfd3e0, ci=0x0000000102541070, cc=0x0000000100f9e918) + 386 at vm_insnhelper.c:1918
    frame #40: 0x00000001001f30d6 miniruby`vm_call_cfunc(ec=0x00000001007d3548, reg_cfp=0x00000001025003e0, calling=0x00007fff5fbfd3e0, ci=0x0000000102541070, cc=0x0000000100f9e918) + 149 at vm_insnhelper.c:1934
    frame #41: 0x00000001001f4319 miniruby`vm_call_method_each_type(ec=0x00000001007d3548, cfp=0x00000001025003e0, calling=0x00007fff5fbfd3e0, ci=0x0000000102541070, cc=0x0000000100f9e918) + 239 at vm_insnhelper.c:2232
    frame #42: 0x00000001001f4a2c miniruby`vm_call_method(ec=0x00000001007d3548, cfp=0x00000001025003e0, calling=0x00007fff5fbfd3e0, ci=0x0000000102541070, cc=0x0000000100f9e918) + 253 at vm_insnhelper.c:2366
    frame #43: 0x00000001001f4b7a miniruby`vm_call_general(ec=0x00000001007d3548, reg_cfp=0x00000001025003e0, calling=0x00007fff5fbfd3e0, ci=0x0000000102541070, cc=0x0000000100f9e918) + 59 at vm_insnhelper.c:2398
    frame #44: 0x00000001001faf0e miniruby`vm_exec_core(ec=0x00000001007d3548, initial=0) + 8471 at insns.def:915
    frame #45: 0x000000010020b75d miniruby`vm_exec(ec=0x00000001007d3548) + 230 at vm.c:1771
    frame #46: 0x000000010020c40f miniruby`rb_iseq_eval_main(iseq=0x0000000100f21240) + 52 at vm.c:2019
    frame #47: 0x000000010007c774 miniruby`ruby_exec_internal(n=0x0000000100f21240) + 297 at eval.c:246
    frame #48: 0x000000010007c89a miniruby`ruby_exec_node(n=0x0000000100f21240) + 36 at eval.c:310
    frame #49: 0x000000010007c86d miniruby`ruby_run_node(n=0x0000000100f21240) + 62 at eval.c:302
    frame #50: 0x0000000100001399 miniruby`main(argc=9, argv=0x00007fff5fbfdae0) + 113 at main.c:42
    frame #51: 0x00007fff88eda5ad libdyld.dylib`start + 1
(lldb)
------------------------------------------------------------------------
r61568 | shyouhei | 2018-01-02 15:42:04 +0900 (Tue, 02 Jan 2018) | 80 lines

fix SEGV inspecting already freed objects

obj_info() assumes the given object is alive.  Passing freed
objects to it results in SEGV.

(lldb) run
Process 29718 launched: './miniruby' (x86_64)
Process 29718 stopped
* thread #1: tid = 0x3082c5, 0x00000001000bfaab miniruby`pathobj_path(pathobj=4478683640) + 70 at vm_core.h:269, queue = 'com.apple.main-thread', stop reason = EXC_BAD_ACCESS (code=1, address=0x0)
    frame #0: 0x00000001000bfaab miniruby`pathobj_path(pathobj=4478683640) + 70 at vm_core.h:269
   266      }
   267      else {
   268          VM_ASSERT(RB_TYPE_P(pathobj, T_ARRAY));
-> 269          return RARRAY_AREF(pathobj, PATHOBJ_PATH);
   270      }
   271  }
   272
(lldb) bt
* thread #1: tid = 0x3082c5, 0x00000001000bfaab miniruby`pathobj_path(pathobj=4478683640) + 70 at vm_core.h:269, queue = 'com.apple.main-thread', stop reason = EXC_BAD_ACCESS (code=1, address=0x0)
  * frame #0: 0x00000001000bfaab miniruby`pathobj_path(pathobj=4478683640) + 70 at vm_core.h:269
    frame #1: 0x00000001000c25ff miniruby`rb_iseq_path(iseq=0x000000010af34a20) + 32 at iseq.c:723
    frame #2: 0x000000010009db09 miniruby`rb_raw_iseq_info(buff="0x000000010af34a20 [1    ] T_IMEMO iseq", buff_size=256, iseq=0x000000010af34a20) + 69 at gc.c:9274
    frame #3: 0x000000010009e45a miniruby`rb_raw_obj_info(buff="0x000000010af34a20 [1    ] T_IMEMO iseq", buff_size=256, obj=4478683680) + 2191 at gc.c:9397
    frame #4: 0x000000010009e4d5 miniruby`obj_info(obj=4478683680) + 98 at gc.c:9429
    frame #5: 0x0000000100091ae3 miniruby`gc_page_sweep(objspace=0x00000001007d3280, heap=0x00000001007d32a0, sweep_page=0x000000010ae07bc0) + 622 at gc.c:3529
    frame #6: 0x000000010009206a miniruby`gc_sweep_step(objspace=0x00000001007d3280, heap=0x00000001007d32a0) + 188 at gc.c:3705
    frame #7: 0x0000000100092254 miniruby`gc_sweep_continue(objspace=0x00000001007d3280, heap=0x00000001007d32a0) + 133 at gc.c:3772
    frame #8: 0x000000010008d7f9 miniruby`heap_prepare(objspace=0x00000001007d3280, heap=0x00000001007d32a0) + 48 at gc.c:1746
    frame #9: 0x000000010008d8a1 miniruby`heap_get_freeobj_from_next_freepage(objspace=0x00000001007d3280, heap=0x00000001007d32a0) + 37 at gc.c:1769
    frame #10: 0x000000010008d98d miniruby`heap_get_freeobj(objspace=0x00000001007d3280, heap=0x00000001007d32a0) + 83 at gc.c:1803
    frame #11: 0x000000010008dcb0 miniruby`newobj_slowpath(klass=4334386280, flags=5, v1=0, v2=0, v3=0, objspace=0x00000001007d3280, wb_protected=1) + 220 at gc.c:1930
    frame #12: 0x000000010008dd6c miniruby`newobj_slowpath_wb_protected(klass=4334386280, flags=5, v1=0, v2=0, v3=0, objspace=0x00000001007d3280) + 76 at gc.c:1942
    frame #13: 0x000000010008dea1 miniruby`newobj_of(klass=4334386280, flags=5, v1=0, v2=0, v3=0, wb_protected=1) + 221 at gc.c:1974
    frame #14: 0x000000010008df39 miniruby`rb_wb_protected_newobj_of(klass=4334386280, flags=5) + 54 at gc.c:1990
    frame #15: 0x0000000100195f7c miniruby`str_alloc(klass=4334386280) + 29 at string.c:692
    frame #16: 0x0000000100195fe9 miniruby`str_new0(klass=4334386280, ptr="gitm", len=4, termlen=1) + 73 at string.c:714
    frame #17: 0x000000010019633e miniruby`rb_enc_str_new(ptr="gitm", len=4, enc=0x00000001025d50a0) + 81 at string.c:766
    frame #18: 0x000000010010a80a miniruby`parser_str_new(p="gitm", n=4, enc=0x00000001025d50a0, func=66, enc0=0x00000001025d50a0) + 50 at parse.y:5817
    frame #19: 0x000000010010ce1a miniruby`parser_parse_string(parser=0x00000001042ac5c0, quote=0x000000010460c028) + 795 at parse.y:6675
    frame #20: 0x00000001001120bd miniruby`parser_yylex(parser=0x00000001042ac5c0) + 159 at parse.y:8281
    frame #21: 0x0000000100115068 miniruby`yylex(lval=0x00007fff5fbf9948, yylloc=0x00007fff5fbf9ab0, parser=0x00000001042ac5c0) + 55 at parse.y:8931
    frame #22: 0x00000001000fc79f miniruby`ruby_yyparse(parser=0x00000001042ac5c0) + 1198 at parse.c:5798
    frame #23: 0x0000000100109f5a miniruby`yycompile0(arg=4364879296) + 317 at parse.y:5595
    frame #24: 0x0000000100214ef0 miniruby`rb_suppress_tracing(func=(miniruby`yycompile0 at parse.y:5565), arg=4364879296) + 349 at vm_trace.c:397
    frame #25: 0x000000010010a1df miniruby`yycompile(parser=0x00000001042ac5c0, fname=4443743440, line=1) + 126 at parse.y:5637
    frame #26: 0x000000010010a4c1 miniruby`parser_compile_string(vparser=4443743480, fname=4443743440, s=4443743520, line=1) + 191 at parse.y:5706
    frame #27: 0x000000010010a5b7 miniruby`rb_parser_compile_string_path(vparser=4443743480, f=4443743440, s=4443743520, line=1) + 58 at parse.y:5730
    frame #28: 0x0000000100206025 miniruby`eval_make_iseq(src=4443743520, fname=4443743440, line=1, bind=0x0000000000000000, base_block=0x00007fff5fbfb370) + 266 at vm_eval.c:1274
    frame #29: 0x0000000100206153 miniruby`eval_string_with_cref(self=4334412520, src=4443743520, cref=0x0000000000000000, file=52, line=1) + 197 at vm_eval.c:1307
    frame #30: 0x0000000100206389 miniruby`rb_f_eval(argc=1, argv=0x0000000102400eb8, self=4334412520) + 219 at vm_eval.c:1382
    frame #31: 0x00000001001f247c miniruby`call_cfunc_m1(func=(miniruby`rb_f_eval at vm_eval.c:1364), recv=4334412520, argc=1, argv=0x0000000102400eb8) + 47 at vm_insnhelper.c:1723
    frame #32: 0x00000001001f2f87 miniruby`vm_call_cfunc_with_frame(ec=0x00000001007d3548, reg_cfp=0x0000000102500d80, calling=0x00007fff5fbfbf50, ci=0x000000010263f240, cc=0x0000000100749b50) + 386 at vm_insnhelper.c:1918
    frame #33: 0x00000001001f30d6 miniruby`vm_call_cfunc(ec=0x00000001007d3548, reg_cfp=0x0000000102500d80, calling=0x00007fff5fbfbf50, ci=0x000000010263f240, cc=0x0000000100749b50) + 149 at vm_insnhelper.c:1934
    frame #34: 0x00000001001faf0e miniruby`vm_exec_core(ec=0x00000001007d3548, initial=0) + 8471 at insns.def:915
    frame #35: 0x000000010020b75d miniruby`vm_exec(ec=0x00000001007d3548) + 230 at vm.c:1771
    frame #36: 0x00000001002093f8 miniruby`invoke_block(ec=0x00000001007d3548, iseq=0x000000010252d7f0, self=4334412520, captured=0x0000000102500df8, cref=0x0000000000000000, type=572653569, opt_pc=0) + 224 at vm.c:988
    frame #37: 0x0000000100209766 miniruby`invoke_iseq_block_from_c(ec=0x00000001007d3548, captured=0x0000000102500df8, self=4334412520, argc=0, argv=0x0000000000000000, passed_block_handler=0, cref=0x0000000000000000, is_lambda=0) + 389 at vm.c:1040
    frame #38: 0x0000000100209824 miniruby`invoke_block_from_c_bh(ec=0x00000001007d3548, block_handler=4333768185, argc=0, argv=0x0000000000000000, passed_block_handler=0, cref=0x0000000000000000, is_lambda=0, force_blockarg=0) + 138 at vm.c:1058
    frame #39: 0x00000001002099d0 miniruby`vm_yield(ec=0x00000001007d3548, argc=0, argv=0x0000000000000000) + 69 at vm.c:1103
    frame #40: 0x0000000100205623 miniruby`rb_yield_0(argc=0, argv=0x0000000000000000) + 40 at vm_eval.c:970
    frame #41: 0x0000000100205964 miniruby`loop_i + 19 at vm_eval.c:1049
    frame #42: 0x000000010007db07 miniruby`rb_rescue2(b_proc=(miniruby`loop_i at vm_eval.c:1047), data1=0, r_proc=(miniruby`loop_stop at vm_eval.c:1056), data2=0) + 369 at eval.c:896
    frame #43: 0x0000000100205a2e miniruby`rb_f_loop(self=4334412520) + 121 at vm_eval.c:1100
    frame #44: 0x00000001001f24a7 miniruby`call_cfunc_0(func=(miniruby`rb_f_loop at vm_eval.c:1098), recv=4334412520, argc=0, argv=0x0000000102400e80) + 41 at vm_insnhelper.c:1729
    frame #45: 0x00000001001f2f87 miniruby`vm_call_cfunc_with_frame(ec=0x00000001007d3548, reg_cfp=0x0000000102500de0, calling=0x00007fff5fbfd4d0, ci=0x000000010263bbf0, cc=0x0000000102642118) + 386 at vm_insnhelper.c:1918
    frame #46: 0x00000001001f30d6 miniruby`vm_call_cfunc(ec=0x00000001007d3548, reg_cfp=0x0000000102500de0, calling=0x00007fff5fbfd4d0, ci=0x000000010263bbf0, cc=0x0000000102642118) + 149 at vm_insnhelper.c:1934
    frame #47: 0x00000001001f4319 miniruby`vm_call_method_each_type(ec=0x00000001007d3548, cfp=0x0000000102500de0, calling=0x00007fff5fbfd4d0, ci=0x000000010263bbf0, cc=0x0000000102642118) + 239 at vm_insnhelper.c:2232
    frame #48: 0x00000001001f4a2c miniruby`vm_call_method(ec=0x00000001007d3548, cfp=0x0000000102500de0, calling=0x00007fff5fbfd4d0, ci=0x000000010263bbf0, cc=0x0000000102642118) + 253 at vm_insnhelper.c:2366
    frame #49: 0x00000001001f4b7a miniruby`vm_call_general(ec=0x00000001007d3548, reg_cfp=0x0000000102500de0, calling=0x00007fff5fbfd4d0, ci=0x000000010263bbf0, cc=0x0000000102642118) + 59 at vm_insnhelper.c:2398
    frame #50: 0x00000001001fab2f miniruby`vm_exec_core(ec=0x00000001007d3548, initial=0) + 7480 at insns.def:850
    frame #51: 0x000000010020b75d miniruby`vm_exec(ec=0x00000001007d3548) + 230 at vm.c:1771
    frame #52: 0x000000010020c40f miniruby`rb_iseq_eval_main(iseq=0x000000010252dd90) + 52 at vm.c:2019
    frame #53: 0x000000010007c768 miniruby`ruby_exec_internal(n=0x000000010252dd90) + 297 at eval.c:246
    frame #54: 0x000000010007c88e miniruby`ruby_exec_node(n=0x000000010252dd90) + 36 at eval.c:310
    frame #55: 0x000000010007c861 miniruby`ruby_run_node(n=0x000000010252dd90) + 62 at eval.c:302
    frame #56: 0x000000010000138d miniruby`main(argc=2, argv=0x00007fff5fbfdbf0) + 113 at main.c:42
    frame #57: 0x00007fff88eda5ad libdyld.dylib`start + 1
(lldb) p ((struct RVALUE*)pathobj)->as.basic
(RBasic) $0 = (flags = 0, klass = 4478683600)
(lldb)
------------------------------------------------------------------------
r61567 | shyouhei | 2018-01-02 15:42:03 +0900 (Tue, 02 Jan 2018) | 3 lines

fix uninitialized variable

Likewise this can easily be noticed if you read the warnings.
------------------------------------------------------------------------
r61566 | shyouhei | 2018-01-02 15:42:02 +0900 (Tue, 02 Jan 2018) | 50 lines

fix SEGV touching uninitialized local variable

This imemo_name is used uninitialized because the switch
above does not cover all possible imemo types.

(lldb) run
Process 26068 launched: './miniruby' (x86_64)
Process 26068 stopped
* thread #1: tid = 0x14ba96, 0x00007fff8a402132 libsystem_c.dylib`strlen + 18, queue = 'com.apple.main-thread', stop reason = EXC_BAD_ACCESS (code=1, address=0xfffffffffffffff0)
    frame #0: 0x00007fff8a402132 libsystem_c.dylib`strlen + 18
libsystem_c.dylib`strlen:
->  0x7fff8a402132 <+18>: pcmpeqb (%rdi), %xmm0
    0x7fff8a402136 <+22>: pmovmskb %xmm0, %esi
    0x7fff8a40213a <+26>: andq   $0xf, %rcx
    0x7fff8a40213e <+30>: orq    $-0x1, %rax
(lldb) bt
* thread #1: tid = 0x14ba96, 0x00007fff8a402132 libsystem_c.dylib`strlen + 18, queue = 'com.apple.main-thread', stop reason = EXC_BAD_ACCESS (code=1, address=0xfffffffffffffff0)
  * frame #0: 0x00007fff8a402132 libsystem_c.dylib`strlen + 18
    frame #1: 0x00000001001f1531 miniruby`BSD_vfprintf(fp=0x00007fff5fbfc9e0, fmt0="%s %s", ap=0x00007fff5fbfcbf0) + 5873 at vsnprintf.c:1026
    frame #2: 0x00000001001ef213 miniruby`ruby_do_vsnprintf(str="0x0000000100f46450 [0    ] T_IMEMO", n=256, fmt="%s %s", ap=0x00007fff5fbfcbf0) + 131 at sprintf.c:1285
    frame #3: 0x00000001001ef3ea miniruby`ruby_snprintf(str="0x0000000100f46450 [0    ] T_IMEMO", n=256, fmt="%s %s") + 426 at sprintf.c:1300
    frame #4: 0x00000001000bdc61 miniruby`rb_raw_obj_info(buff="0x0000000100f46450 [0    ] T_IMEMO", buff_size=256, obj=4310983760) + 2353 at gc.c:9376
    frame #5: 0x00000001000b7bff miniruby`obj_info(obj=4310983760) + 95 at gc.c:9428
    frame #6: 0x00000001000c1658 miniruby`newobj_init(klass=0, flags=36890, v1=0, v2=4303040512, v3=4310983800, wb_protected=1, objspace=0x00000001007ee280, obj=4310983760) + 424 at gc.c:1887
    frame #7: 0x00000001000b4469 miniruby`newobj_of(klass=0, flags=36890, v1=0, v2=4303040512, v3=4310983800, wb_protected=1) + 217 at gc.c:1970
    frame #8: 0x00000001000b45eb miniruby`rb_imemo_new(type=imemo_ast, v1=0, v2=4303040512, v3=4310983800, v0=0) + 75 at gc.c:2017
    frame #9: 0x000000010011daed miniruby`rb_ast_new + 61 at node.c:1146
    frame #10: 0x0000000100160e15 miniruby`rb_parser_compile_file_path(vparser=4310984400, fname=4310984960, file=4310984080, start=1) + 53 at parse.y:5776
    frame #11: 0x00000001001e18ea miniruby`load_file_internal(argp_v=140734799795024) + 1834 at ruby.c:1907
    frame #12: 0x00000001000a1bb5 miniruby`rb_ensure(b_proc=(miniruby`load_file_internal at ruby.c:1795), data1=140734799795024, e_proc=(miniruby`restore_load_file at ruby.c:2007), data2=140734799795024) + 245 at eval.c:1037
    frame #13: 0x00000001001df4a4 miniruby`load_file(parser=4310984400, fname=4310984960, f=4310984080, script=1, opt=0x00007fff5fbfda28) + 100 at ruby.c:2026
    frame #14: 0x00000001001e084e miniruby`process_options(argc=0, argv=0x00007fff5fbfdc00, opt=0x00007fff5fbfda28) + 3454 at ruby.c:1682
    frame #15: 0x00000001001dfaae miniruby`ruby_process_options(argc=2, argv=0x00007fff5fbfdbf0) + 238 at ruby.c:2257
    frame #16: 0x000000010009ff43 miniruby`ruby_options(argc=2, argv=0x00007fff5fbfdbf0) + 211 at eval.c:105
    frame #17: 0x0000000100000989 miniruby`main(argc=2, argv=0x00007fff5fbfdbf0) + 105 at main.c:42
    frame #18: 0x00007fff88eda5ad libdyld.dylib`start + 1
(lldb) up 4
frame #4: 0x00000001000bdc61 miniruby`rb_raw_obj_info(buff="0x0000000100f46450 [0    ] T_IMEMO", buff_size=256, obj=4310983760) + 2353 at gc.c:9376
   9373 #undef IMEMO_NAME
   9374               default: UNREACHABLE;
   9375             }
-> 9376             snprintf(buff, buff_size, "%s %s", buff, imemo_name);
   9377
   9378             switch (imemo_type(obj)) {
   9379               case imemo_ment: {
(lldb) p imemo_name
(const char *) $0 = 0xffffffffffffffff
(lldb) p imemo_type(obj)
(imemo_type) $1 = imemo_ast
(lldb)
------------------------------------------------------------------------
r61565 | shyouhei | 2018-01-02 15:42:01 +0900 (Tue, 02 Jan 2018) | 48 lines

fix SEGV touching uninitialized memory

This function can be called from rb_data_typed_object_zalloc().
No assumption can be made about object internals.

(lldb) run
Process 22135 launched: './miniruby' (x86_64)
Process 22135 stopped
* thread #1: tid = 0x14a3af, 0x000000010008ac8a miniruby`vm_block_type(block=0x0000000000000000) + 12 at vm_core.h:1364, queue = 'com.apple.main-thread', stop reason = EXC_BAD_ACCESS (code=1, address=0x18)
    frame #0: 0x000000010008ac8a miniruby`vm_block_type(block=0x0000000000000000) + 12 at vm_core.h:1364
   1361         break;
   1362     }
   1363 #endif
-> 1364     return block->type;
   1365 }
   1366
   1367 static inline void
(lldb) bt
* thread #1: tid = 0x14a3af, 0x000000010008ac8a miniruby`vm_block_type(block=0x0000000000000000) + 12 at vm_core.h:1364, queue = 'com.apple.main-thread', stop reason = EXC_BAD_ACCESS (code=1, address=0x18)
  * frame #0: 0x000000010008ac8a miniruby`vm_block_type(block=0x0000000000000000) + 12 at vm_core.h:1364
    frame #1: 0x000000010008acdb miniruby`vm_block_iseq(block=0x0000000000000000) + 24 at vm_core.h:1399
    frame #2: 0x000000010008acc1 miniruby`vm_proc_iseq(procval=4310866360) + 32 at vm_core.h:1387
    frame #3: 0x000000010009cbed miniruby`rb_raw_obj_info(buff="0x0000000100f299b8 [0    ] proc (Proc)", buff_size=256, obj=4310866360) + 1513 at gc.c:9349
    frame #4: 0x000000010009cf01 miniruby`obj_info(obj=4310866360) + 98 at gc.c:9428
    frame #5: 0x000000010008ca1b miniruby`newobj_init(klass=4311027960, flags=12, v1=4298186080, v2=1, v3=0, wb_protected=32, objspace=0x00000001007cf280, obj=4310866360) + 338 at gc.c:1887
    frame #6: 0x000000010008cce5 miniruby`newobj_of(klass=4311027960, flags=12, v1=4298186080, v2=1, v3=0, wb_protected=32) + 171 at gc.c:1970
    frame #7: 0x000000010008d01d miniruby`rb_data_typed_object_wrap(klass=4311027960, datap=0x0000000000000000, type=0x0000000100311d60) + 133 at gc.c:2062
    frame #8: 0x000000010008d04e miniruby`rb_data_typed_object_zalloc(klass=4311027960, size=40, type=0x0000000100311d60) + 42 at gc.c:2073
    frame #9: 0x000000010011b459 miniruby`rb_proc_alloc(klass=4311027960) + 36 at proc.c:113
    frame #10: 0x0000000100204d8e miniruby`vm_proc_create_from_captured(klass=4311027960, captured=0x00000001025003f8, block_type=block_type_iseq, is_from_method='\0', is_lambda='\x01') + 44 at vm.c:814
    frame #11: 0x00000001002050d8 miniruby`rb_vm_make_proc_lambda(ec=0x00000001007cf548, captured=0x00000001025003f8, klass=4311027960, is_lambda='\x01') + 134 at vm.c:892
    frame #12: 0x000000010011c0d2 miniruby`proc_new(klass=4311027960, is_lambda='\x01') + 445 at proc.c:752
    frame #13: 0x000000010011c154 miniruby`rb_block_lambda + 27 at proc.c:808
    frame #14: 0x00000001001ee7e3 miniruby`call_cfunc_0(func=(miniruby`rb_block_lambda at proc.c:807), recv=4310991600, argc=0, argv=0x0000000102400480) + 41 at vm_insnhelper.c:1729
    frame #15: 0x00000001001ef2c3 miniruby`vm_call_cfunc_with_frame(ec=0x00000001007cf548, reg_cfp=0x00000001025003e0, calling=0x00007fff5fbfd4d0, ci=0x0000000102537be0, cc=0x000000010253e0f0) + 386 at vm_insnhelper.c:1918
    frame #16: 0x00000001001ef412 miniruby`vm_call_cfunc(ec=0x00000001007cf548, reg_cfp=0x00000001025003e0, calling=0x00007fff5fbfd4d0, ci=0x0000000102537be0, cc=0x000000010253e0f0) + 149 at vm_insnhelper.c:1934
    frame #17: 0x00000001001f0655 miniruby`vm_call_method_each_type(ec=0x00000001007cf548, cfp=0x00000001025003e0, calling=0x00007fff5fbfd4d0, ci=0x0000000102537be0, cc=0x000000010253e0f0) + 239 at vm_insnhelper.c:2232
    frame #18: 0x00000001001f0ce0 miniruby`vm_call_method(ec=0x00000001007cf548, cfp=0x00000001025003e0, calling=0x00007fff5fbfd4d0, ci=0x0000000102537be0, cc=0x000000010253e0f0) + 117 at vm_insnhelper.c:2355
    frame #19: 0x00000001001f0eb6 miniruby`vm_call_general(ec=0x00000001007cf548, reg_cfp=0x00000001025003e0, calling=0x00007fff5fbfd4d0, ci=0x0000000102537be0, cc=0x000000010253e0f0) + 59 at vm_insnhelper.c:2398
    frame #20: 0x00000001001f6e61 miniruby`vm_exec_core(ec=0x00000001007cf548, initial=0) + 7480 at insns.def:850
    frame #21: 0x0000000100207995 miniruby`vm_exec(ec=0x00000001007cf548) + 230 at vm.c:1771
    frame #22: 0x0000000100208647 miniruby`rb_iseq_eval_main(iseq=0x0000000100f29fd0) + 52 at vm.c:2019
    frame #23: 0x000000010007b750 miniruby`ruby_exec_internal(n=0x0000000100f29fd0) + 297 at eval.c:246
    frame #24: 0x000000010007b876 miniruby`ruby_exec_node(n=0x0000000100f29fd0) + 36 at eval.c:310
    frame #25: 0x000000010007b849 miniruby`ruby_run_node(n=0x0000000100f29fd0) + 62 at eval.c:302
    frame #26: 0x0000000100000c05 miniruby`main(argc=2, argv=0x00007fff5fbfdbf0) + 113 at main.c:42
    frame #27: 0x00007fff88eda5ad libdyld.dylib`start + 1
(lldb)
------------------------------------------------------------------------
r61564 | shyouhei | 2018-01-02 15:42:00 +0900 (Tue, 02 Jan 2018) | 47 lines

fix SEGV touching uninitialized memory

This function can be called from Init_VM().
No assumption can be made about object internals.

(lldb) run
Process 15734 launched: './miniruby' (x86_64)
Process 15734 stopped
* thread #1: tid = 0x1441d4, 0x00000001000bdfcb miniruby`rb_raw_iseq_info(buff="0x0000000100f61f48 [0    ] T_IMEMO iseq", buff_size=256, iseq=0x0000000100f61f48) + 27 at gc.c:9273, queue = 'com.apple.main-thread', stop reason = EXC_BAD_ACCESS (code=1, address=0x50)
    frame #0: 0x00000001000bdfcb miniruby`rb_raw_iseq_info(buff="0x0000000100f61f48 [0    ] T_IMEMO iseq", buff_size=256, iseq=0x0000000100f61f48) + 27 at gc.c:9273
   9270 static void
   9271 rb_raw_iseq_info(char *buff, const int buff_size, const rb_iseq_t *iseq)
   9272 {
-> 9273     if (iseq->body->location.label) {
   9274         VALUE path = rb_iseq_path(iseq);
   9275         snprintf(buff, buff_size, "%s %s@%s:%d", buff,
   9276                  RSTRING_PTR(iseq->body->location.label),
(lldb) p *iseq
(rb_iseq_t) $0 = {
  flags = 28698
  reserved1 = 0
  body = 0x0000000000000000
  aux = {
    compile_data = 0x0000000000000000
    loader = (obj = 0, index = 0)
    trace_events = 0
  }
}
(lldb) bt
* thread #1: tid = 0x1441d4, 0x00000001000bdfcb miniruby`rb_raw_iseq_info(buff="0x0000000100f61f48 [0    ] T_IMEMO iseq", buff_size=256, iseq=0x0000000100f61f48) + 27 at gc.c:9273, queue = 'com.apple.main-thread', stop reason = EXC_BAD_ACCESS (code=1, address=0x50)
  * frame #0: 0x00000001000bdfcb miniruby`rb_raw_iseq_info(buff="0x0000000100f61f48 [0    ] T_IMEMO iseq", buff_size=256, iseq=0x0000000100f61f48) + 27 at gc.c:9273
    frame #1: 0x00000001000bde72 miniruby`rb_raw_obj_info(buff="0x0000000100f61f48 [0    ] T_IMEMO iseq", buff_size=256, obj=4311097160) + 2786 at gc.c:9396
    frame #2: 0x00000001000b7c5f miniruby`obj_info(obj=4311097160) + 95 at gc.c:9428
    frame #3: 0x00000001000c16a8 miniruby`newobj_init(klass=0, flags=28698, v1=0, v2=0, v3=0, wb_protected=1, objspace=0x00000001007ee280, obj=4311097160) + 424 at gc.c:1887
    frame #4: 0x00000001000b44c9 miniruby`newobj_of(klass=0, flags=28698, v1=0, v2=0, v3=0, wb_protected=1) + 217 at gc.c:1970
    frame #5: 0x00000001000b464b miniruby`rb_imemo_new(type=imemo_iseq, v1=0, v2=0, v3=0, v0=0) + 75 at gc.c:2017
    frame #6: 0x00000001000fd914 miniruby`iseq_imemo_alloc + 36 at iseq.h:156
    frame #7: 0x00000001000f6e1d miniruby`iseq_alloc + 13 at iseq.c:211
    frame #8: 0x00000001000f6bf8 miniruby`rb_iseq_new_with_opt(node=0x0000000000000000, name=4311097200, path=4311097200, realpath=8, first_lineno=1, parent=0x0000000000000000, type=ISEQ_TYPE_TOP, option=0x0000000100335c30) + 56 at iseq.c:519
    frame #9: 0x00000001000f6bb6 miniruby`rb_iseq_new(node=0x0000000000000000, name=4311097200, path=4311097200, realpath=8, parent=0x0000000000000000, type=ISEQ_TYPE_TOP) + 86 at iseq.c:480
    frame #10: 0x0000000100284bb0 miniruby`Init_VM + 1040 at vm.c:3022
    frame #11: 0x00000001000d4f7d miniruby`rb_call_inits + 189 at inits.c:55
    frame #12: 0x000000010009fe06 miniruby`ruby_setup + 198 at eval.c:61
    frame #13: 0x000000010009fe5d miniruby`ruby_init + 13 at eval.c:78
    frame #14: 0x00000001000009ed miniruby`main(argc=2, argv=0x00007fff5fbfdbf0) + 93 at main.c:41
    frame #15: 0x00007fff88eda5ad libdyld.dylib`start + 1
(lldb)
------------------------------------------------------------------------
r61563 | shyouhei | 2018-01-02 15:41:59 +0900 (Tue, 02 Jan 2018) | 46 lines

fix SEGV touching uninitialized memory

This function can be called from InitVM_Object().
No assumption can be made about object internals.

(lldb) run
Process 10675 launched: './miniruby' (x86_64)
Process 10675 stopped
* thread #1: tid = 0x14252c, 0x00000001000bdda9 miniruby`rb_raw_obj_info(buff="0x0000000100fc1588 [0    ] T_IMEMO ment", buff_size=256, obj=4311487880) + 2489 at gc.c:9383, queue = 'com.apple.main-thread', stop reason = EXC_BAD_ACCESS (code=1, address=0x0)
    frame #0: 0x00000001000bdda9 miniruby`rb_raw_obj_info(buff="0x0000000100fc1588 [0    ] T_IMEMO ment", buff_size=256, obj=4311487880) + 2489 at gc.c:9383
   9380                 const rb_method_entry_t *me = &RANY(obj)->as.imemo.ment;
   9381                 snprintf(buff, buff_size, "%s (called_id: %s, type: %s, alias: %d, owner: %s, defined_class: %s)", buff,
   9382                          rb_id2name(me->called_id),
-> 9383                          method_type_name(me->def->type),
   9384                          me->def->alias_count,
   9385                          obj_info(me->owner),
   9386                          obj_info(me->defined_class));
(lldb) p *me
(rb_method_entry_t) $0 = {
  flags = 24602
  defined_class = 4311488400
  def = 0x0000000000000000
  called_id = 3057
  owner = 4311488400
}
(lldb) bt
* thread #1: tid = 0x14252c, 0x00000001000bdda9 miniruby`rb_raw_obj_info(buff="0x0000000100fc1588 [0    ] T_IMEMO ment", buff_size=256, obj=4311487880) + 2489 at gc.c:9383, queue = 'com.apple.main-thread', stop reason = EXC_BAD_ACCESS (code=1, address=0x0)
  * frame #0: 0x00000001000bdda9 miniruby`rb_raw_obj_info(buff="0x0000000100fc1588 [0    ] T_IMEMO ment", buff_size=256, obj=4311487880) + 2489 at gc.c:9383
    frame #1: 0x00000001000b7cbf miniruby`obj_info(obj=4311487880) + 95 at gc.c:9423
    frame #2: 0x00000001000c16a8 miniruby`newobj_init(klass=4311488400, flags=24602, v1=0, v2=3057, v3=4311488400, wb_protected=1, objspace=0x00000001007ee280, obj=4311487880) + 424 at gc.c:1887
    frame #3: 0x00000001000b4529 miniruby`newobj_of(klass=4311488400, flags=24602, v1=0, v2=3057, v3=4311488400, wb_protected=1) + 217 at gc.c:1970
    frame #4: 0x00000001000b46ab miniruby`rb_imemo_new(type=imemo_ment, v1=0, v2=3057, v3=4311488400, v0=4311488400) + 75 at gc.c:2017
    frame #5: 0x00000001002773b4 miniruby`rb_method_entry_alloc(called_id=3057, owner=4311488400, defined_class=4311488400, def=0x0000000000000000) + 52 at vm_method.c:368
    frame #6: 0x0000000100277307 miniruby`rb_method_entry_create(called_id=3057, klass=4311488400, visi=METHOD_VISI_PRIVATE, def=0x0000000000000000) + 71 at vm_method.c:389
    frame #7: 0x00000001002784c7 miniruby`rb_method_entry_make(klass=4311488400, mid=3057, defined_class=4311488400, visi=METHOD_VISI_PRIVATE, type=VM_METHOD_TYPE_CFUNC, def=0x0000000000000000, original_id=3057, opts=0x00007fff5fbfd9e8) + 1207 at vm_method.c:594
    frame #8: 0x00000001002770f9 miniruby`rb_add_method(klass=4311488400, mid=3057, type=VM_METHOD_TYPE_CFUNC, opts=0x00007fff5fbfd9e8, visi=METHOD_VISI_PRIVATE) + 73 at vm_method.c:650
    frame #9: 0x000000010027708a miniruby`rb_add_method_cfunc(klass=4311488400, mid=3057, func=(miniruby`rb_obj_dummy at object.c:1125), argc=0, visi=METHOD_VISI_PRIVATE) + 138 at vm_method.c:137
    frame #10: 0x00000001000391e4 miniruby`rb_define_private_method(klass=4311488400, name="initialize", func=(miniruby`rb_obj_dummy at object.c:1125), argc=0) + 68 at class.c:1529
    frame #11: 0x000000010013f5bf miniruby`InitVM_Object + 47 at object.c:3905
    frame #12: 0x0000000100142ffd miniruby`Init_Object + 61 at object.c:4122
    frame #13: 0x00000001000d4edd miniruby`rb_call_inits + 29 at inits.c:23
    frame #14: 0x000000010009fe66 miniruby`ruby_setup + 198 at eval.c:61
    frame #15: 0x000000010009febd miniruby`ruby_init + 13 at eval.c:78
    frame #16: 0x0000000100000a4d miniruby`main(argc=2, argv=0x00007fff5fbfdbf0) + 93 at main.c:41
    frame #17: 0x00007fff88eda5ad libdyld.dylib`start + 1
(lldb)
------------------------------------------------------------------------
r61562 | shyouhei | 2018-01-02 15:41:58 +0900 (Tue, 02 Jan 2018) | 37 lines

fix SEGV touching uninitialized memory

This function can be called from boot_defclass().
No assumption can be made about object internals.

(lldb) run
Process 2386 launched: './miniruby' (x86_64)
Process 2386 stopped
* thread #1: tid = 0x13f3b6, 0x00000001001e0b26 miniruby`rb_class_path_cached(klass=4311373720) + 20 at variable.c:321, queue = 'com.apple.main-thread', stop reason = EXC_BAD_ACCESS (code=1, address=0x8)
    frame #0: 0x00000001001e0b26 miniruby`rb_class_path_cached(klass=4311373720) + 20 at variable.c:321
   318  VALUE
   319  rb_class_path_cached(VALUE klass)
   320  {
-> 321      st_table *ivtbl = RCLASS_IV_TBL(klass);
   322      st_data_t n;
   323
   324      if (!ivtbl) return Qnil;
(lldb) bt
* thread #1: tid = 0x13f3b6, 0x00000001001e0b26 miniruby`rb_class_path_cached(klass=4311373720) + 20 at variable.c:321, queue = 'com.apple.main-thread', stop reason = EXC_BAD_ACCESS (code=1, address=0x8)
  * frame #0: 0x00000001001e0b26 miniruby`rb_class_path_cached(klass=4311373720) + 20 at variable.c:321
    frame #1: 0x000000010009cbd0 miniruby`rb_raw_obj_info(buff="0x0000000100fa5798 [2    ] T_CLASS", buff_size=256, obj=4311373720) + 1393 at gc.c:9341
    frame #2: 0x000000010009cf16 miniruby`obj_info(obj=4311373720) + 98 at gc.c:9423
    frame #3: 0x000000010008ca87 miniruby`newobj_init(klass=0, flags=66, v1=0, v2=0, v3=0, wb_protected=1, objspace=0x00000001007cf280, obj=4311373720) + 338 at gc.c:1887
    frame #4: 0x000000010008cd51 miniruby`newobj_of(klass=0, flags=66, v1=0, v2=0, v3=0, wb_protected=1) + 171 at gc.c:1970
    frame #5: 0x000000010008ce1b miniruby`rb_wb_protected_newobj_of(klass=0, flags=66) + 54 at gc.c:1990
    frame #6: 0x0000000100027563 miniruby`class_alloc(flags=2, klass=0) + 46 at class.c:165
    frame #7: 0x000000010002761a miniruby`rb_class_boot(super=0) + 35 at class.c:203
    frame #8: 0x0000000100028612 miniruby`boot_defclass(name="BasicObject", super=0) + 28 at class.c:537
    frame #9: 0x000000010002868b miniruby`Init_class_hierarchy + 26 at class.c:548
    frame #10: 0x00000001000efe69 miniruby`InitVM_Object + 9 at object.c:3892
    frame #11: 0x00000001000f138e miniruby`Init_Object + 57 at object.c:4122
    frame #12: 0x00000001000a59bd miniruby`rb_call_inits + 29 at inits.c:23
    frame #13: 0x000000010007af30 miniruby`ruby_setup + 229 at eval.c:61
    frame #14: 0x000000010007af7e miniruby`ruby_init + 13 at eval.c:78
    frame #15: 0x0000000100000c58 miniruby`main(argc=2, argv=0x00007fff5fbfdbf0) + 88 at main.c:41
    frame #16: 0x00007fff88eda5ad libdyld.dylib`start + 1
(lldb)
------------------------------------------------------------------------
r61561 | shyouhei | 2018-01-02 15:41:57 +0900 (Tue, 02 Jan 2018) | 5 lines

fix memory leak (FOUND BY A COMPILER WARNING)

Confusion of argument order ignores this st_free_table.
Results in garbaged table not GCed.
Easily noticable when you read the compiper warnings.
------------------------------------------------------------------------
r61560 | shyouhei | 2018-01-02 15:41:56 +0900 (Tue, 02 Jan 2018) | 15 lines

offsetof(type, foo.bar) is (arguably) a GCCism

TL;DR see http://www.open-std.org/jtc1/sc22/wg14/www/docs/n2031.htm

Suppose we have:

struct X {
  struct Y {
    z_t z;
  } y;
} x;

then, you _cant_ infer offsetof(struct X, y.z). The ISO C99 section
7.17 says nothing about such situation. At least clang warns this
being an extension to the language (-Wextended-offsetof).
------------------------------------------------------------------------
r61559 | shyouhei | 2018-01-02 15:41:55 +0900 (Tue, 02 Jan 2018) | 4 lines

comparing function pointer versus void* is a GCCism

However dlsym() requires such feature so this function is non-
portable by nature.  Cannot but suppress warning.
------------------------------------------------------------------------
r61558 | shyouhei | 2018-01-02 15:41:54 +0900 (Tue, 02 Jan 2018) | 1 line

label as lvalue is a GCCism
------------------------------------------------------------------------
r61557 | shyouhei | 2018-01-02 15:41:53 +0900 (Tue, 02 Jan 2018) | 3 lines

statement experssion is a GCCism

should mark as such.
------------------------------------------------------------------------
r61556 | shyouhei | 2018-01-02 15:41:52 +0900 (Tue, 02 Jan 2018) | 1 line

enum value grater than int is a GCCism
------------------------------------------------------------------------
r61555 | shyouhei | 2018-01-02 15:41:51 +0900 (Tue, 02 Jan 2018) | 1 line

_Static_assert is a C11ism
------------------------------------------------------------------------
r61554 | shyouhei | 2018-01-02 15:41:50 +0900 (Tue, 02 Jan 2018) | 4 lines

bit-fields other than int is a C99ism

To be precise C90 says "A bit-field may have type int, unsigned
int, or signed int". It is clear that char or enum are NG.
------------------------------------------------------------------------
r61553 | shyouhei | 2018-01-02 15:41:49 +0900 (Tue, 02 Jan 2018) | 8 lines

initializer paren-string `{("str")}` is a C99ism

First, `"str"` is a string constant but `("str")` is not.  It is a
random expression whose type happen to be const char*.  Second,
non-constant initializer element is forbidden in C90.  Mixture of
these two results in the fact that `{("str")}` is a C99ism.

Just delete the parens and everything goes well.
------------------------------------------------------------------------
r61552 | shyouhei | 2018-01-02 15:41:49 +0900 (Tue, 02 Jan 2018) | 1 line

string literal longer than 509 characters is a C99ism
------------------------------------------------------------------------
r61551 | shyouhei | 2018-01-02 15:41:48 +0900 (Tue, 02 Jan 2018) | 1 line

flexible array member is a C99ism
------------------------------------------------------------------------
r61550 | shyouhei | 2018-01-02 15:41:47 +0900 (Tue, 02 Jan 2018) | 1 line

long long is a C99ism
------------------------------------------------------------------------
r61549 | shyouhei | 2018-01-02 15:41:46 +0900 (Tue, 02 Jan 2018) | 1 line

comma at the end of enum is a C99ism
------------------------------------------------------------------------
r61548 | shyouhei | 2018-01-02 15:41:45 +0900 (Tue, 02 Jan 2018) | 1 line

__VA_ARGS__ is a C99ism
------------------------------------------------------------------------
r61547 | shyouhei | 2018-01-02 15:41:44 +0900 (Tue, 02 Jan 2018) | 3 lines

long long is a C99sim

Don't assume 8-bytes integers == "long long".
------------------------------------------------------------------------
r61546 | shyouhei | 2018-01-02 15:41:43 +0900 (Tue, 02 Jan 2018) | 3 lines

string literal longer than 509 characters is a C99ism

Should avoid such thing.
------------------------------------------------------------------------
r61545 | shyouhei | 2018-01-02 15:41:43 +0900 (Tue, 02 Jan 2018) | 3 lines

"%z" printf format specifier is a C99ism

PRIxSIZE is also.  But shimmed in ruby.h
------------------------------------------------------------------------
r61544 | shyouhei | 2018-01-02 15:41:42 +0900 (Tue, 02 Jan 2018) | 1 line

int (*)(void) is incompatible with void*
------------------------------------------------------------------------
r61543 | shyouhei | 2018-01-02 15:41:41 +0900 (Tue, 02 Jan 2018) | 3 lines

rb_insn_func_t is incompatible with void*

Why not just use void* ?
------------------------------------------------------------------------
r61542 | shyouhei | 2018-01-02 15:41:40 +0900 (Tue, 02 Jan 2018) | 4 lines

explicit cast to void* required for %p

These functions take variadic arguments so no automatic type
promotion is expected.  You have to do it by hand.
------------------------------------------------------------------------
r61541 | shyouhei | 2018-01-02 15:41:39 +0900 (Tue, 02 Jan 2018) | 6 lines

suppress warning for clang

In this function, "volatile" is specified twice in macro-expanded
`VAR_INITIALIZED(cont)` part.  That is a problem in fact.  However
I don't want to touch this line because it is already a messy
workaround for clang SEGV.  Let me just ignore.
------------------------------------------------------------------------
r61540 | nobu | 2018-01-02 13:24:32 +0900 (Tue, 02 Jan 2018) | 3 lines

parse.y: fix typo

* parse.y (singleton): fix typo, show the expression.
------------------------------------------------------------------------
r61539 | svn | 2018-01-02 12:00:15 +0900 (Tue, 02 Jan 2018) | 1 line

* 2018-01-02
------------------------------------------------------------------------
r61538 | nobu | 2018-01-02 12:00:13 +0900 (Tue, 02 Jan 2018) | 4 lines

parse.y: code end position

* parse.y (parser_yyerror): use the given location as the end of
  erred code, instead of the current position.
------------------------------------------------------------------------
r61537 | mame | 2018-01-01 22:18:55 +0900 (Mon, 01 Jan 2018) | 5 lines

vm_core.h: make the algorithm of get_insn_info selectable

Currently, VM_INSN_INFO_TABLE_IMPL == 0 means linear search, and
VM_INSN_INFO_TABLE_IMPL == 1 means binary search.  I plan to add
succinct bitvector algorithm later.
------------------------------------------------------------------------
r61536 | mame | 2018-01-01 21:51:21 +0900 (Mon, 01 Jan 2018) | 7 lines

iseq.h: Extract position array from iseq_insn_info_entry

This makes TracePoint a bit fast by reducing cache misses of
`get_insn_info_binary_search`.

Also, I plan to use succinct bitvector algorithm for `get_insn_info`
instead of binary search.  This change will make it easy.
------------------------------------------------------------------------
r61535 | mame | 2018-01-01 18:30:06 +0900 (Mon, 01 Jan 2018) | 3 lines

iseq.c: fix build error when VM_CHECK_MODE is enabled

Follow up of r61534.  Sorry.
------------------------------------------------------------------------
r61534 | mame | 2018-01-01 18:16:27 +0900 (Mon, 01 Jan 2018) | 4 lines

vm_core.h: refactoring of insns_info

This factors rb_iseq_constant_body#insns_info and #insns_info_size to
struct iseq_insn_info.
------------------------------------------------------------------------
r61533 | nobu | 2018-01-01 10:04:50 +0900 (Mon, 01 Jan 2018) | 1 line

parse.y: highlight yyerror
------------------------------------------------------------------------
r61532 | kazu | 2018-01-01 09:13:54 +0900 (Mon, 01 Jan 2018) | 1 line

[DOC] doc/NEWS-2.5.0: remove trailing comma [ci skip]
------------------------------------------------------------------------
r61531 | hsbt | 2018-01-01 08:29:59 +0900 (Mon, 01 Jan 2018) | 3 lines

Removed debug code. It is inconsistency in rubygems upsteream.

  Revert r58657, r58660, r58692, r58723.
------------------------------------------------------------------------
r61530 | nobu | 2018-01-01 00:05:26 +0900 (Mon, 01 Jan 2018) | 3 lines

parse.y: yyerror1

* parse.y (yyerror1): pass location to parser_yyerror.
------------------------------------------------------------------------
r61529 | svn | 2018-01-01 00:00:24 +0900 (Mon, 01 Jan 2018) | 1 line

* 2018-01-01
------------------------------------------------------------------------
r61528 | nobu | 2018-01-01 00:00:23 +0900 (Mon, 01 Jan 2018) | 4 lines

parse.y: yylloc at yyerror

* parse.y (parser_yyerror): consider the case first_loc and
  last_loc point different lines.
------------------------------------------------------------------------
r61527 | nobu | 2017-12-31 22:15:52 +0900 (Sun, 31 Dec 2017) | 4 lines

error.c: limit depth

* error.c (rb_warn_m): limit backtrace depth to reduce objects to
  be created but not used.
------------------------------------------------------------------------
r61526 | nobu | 2017-12-31 22:12:47 +0900 (Sun, 31 Dec 2017) | 3 lines

test_exception.rb: more assertions

[ruby-core:84568] [Bug #14262]
------------------------------------------------------------------------
r61525 | nobu | 2017-12-31 22:01:55 +0900 (Sun, 31 Dec 2017) | 4 lines

error.c: negative uplevel

* error.c (rb_warn_m): negative uplevel is not allowed.
  [ruby-core:84568] [Bug #14262]
------------------------------------------------------------------------
r61524 | nobu | 2017-12-31 21:21:53 +0900 (Sun, 31 Dec 2017) | 5 lines

prelude.c.tmpl: get rid of warnings on old gcc

* template/prelude.c.tmpl: ignore missing-field-initializers on
  old gcc, e.g. 4.4, which does not support pushing/popping
  diagnostics.
------------------------------------------------------------------------
r61523 | nobu | 2017-12-31 20:25:38 +0900 (Sun, 31 Dec 2017) | 4 lines

parse.y: assignable_error

* parse.y (assignable_gen): should return valid NODE always even
  on errors.  [ruby-core:84565] [Bug #14261]
------------------------------------------------------------------------
r61522 | nobu | 2017-12-31 15:53:04 +0900 (Sun, 31 Dec 2017) | 3 lines

parse.y: yylloc at yyerror

* parse.y (parser_yyerror): utilize the location given by bison.
------------------------------------------------------------------------
r61521 | ko1 | 2017-12-31 09:06:34 +0900 (Sun, 31 Dec 2017) | 13 lines

fix reset order.

* lib/rdoc/test_case.rb (setup): call `RDoc::Markup::PreProcess.reset`
  at the end of `setup` method.
  `RDoc::RDoc.new` requires `rdoc/generator/darkfish`
  and requires `rdoc/tom_doc.rb` at last. It add post_proecssor
  (at `add_post_processor`) and it fails
  `TestRDocMarkupPreProcess#test_class_post_process`.
  This issue occured only with sorted tests by alphabetical order.
  `make test-all TESTS='rdoc/test_rdoc_markup_pre_process.rb --test-order=alpha`)
  We can observe this failure with parallel test only a few times.


------------------------------------------------------------------------
r61520 | ko1 | 2017-12-31 08:06:39 +0900 (Sun, 31 Dec 2017) | 4 lines

increase test timeout.

* test/ruby/test_thread.rb (test_signal_at_join): increase timeout.

------------------------------------------------------------------------
r61519 | svn | 2017-12-31 01:38:23 +0900 (Sun, 31 Dec 2017) | 1 line

* 2017-12-31
------------------------------------------------------------------------
r61518 | ngoto | 2017-12-31 01:38:22 +0900 (Sun, 31 Dec 2017) | 8 lines

bit fields treating negative values should be declared as signed int

* internal.h (struct vm_ifunc_argc): Bit fields are unsigned by default.
  For storing nagative values to bit fields, they must be declated as
  signed int. Fix multiple test failure observed by 32-bit binaries
  compiled with Oracle Developer Studio (Solaris Studio) 12.x on
  Solaris 10 on sparc architecture. [Bug #14260]

------------------------------------------------------------------------
r61517 | mrkn | 2017-12-30 23:50:15 +0900 (Sat, 30 Dec 2017) | 6 lines

numeric.c: Fix Integer#pow with a large Fixnum modulo

* numeric.c: Fix Integer#pow with a large Fixnum modulo
  [Bug #14259] [ruby-core:84562]

* test/ruby/test_numeric.rb: add assertions for reproducing this bug.
------------------------------------------------------------------------
r61516 | nobu | 2017-12-30 21:10:43 +0900 (Sat, 30 Dec 2017) | 1 line

drb: use \A and \z
------------------------------------------------------------------------
r61515 | svn | 2017-12-30 09:00:24 +0900 (Sat, 30 Dec 2017) | 1 line

* 2017-12-30
------------------------------------------------------------------------
r61514 | normal | 2017-12-30 09:00:23 +0900 (Sat, 30 Dec 2017) | 10 lines

hash literal deduplicates like Hash#[]=

From: Eric Wong <e@80x24.org>

* hash.c (rb_hash_key_str): new function
  (hash_aset_str): use rb_hash_key_str
* internal.h: add rb_hash_key_str
* st.c (st_stringify): use rb_hash_key_str
* test/ruby/test_hash.rb (test_NEWHASH_fstring_key): dynamic key
  [ruby-core:84554] [Feature #14258]
------------------------------------------------------------------------
r61513 | nobu | 2017-12-29 21:19:03 +0900 (Fri, 29 Dec 2017) | 6 lines

string.c: chomp rs at the end

* string.c (rb_str_enumerate_lines): should chomp record separator
  only, but not a newline, at the end of the receiver as well as
  middle, if the separator is given.
  [ruby-core:84552] [Bug #14257]
------------------------------------------------------------------------
r61512 | normal | 2017-12-29 15:47:29 +0900 (Fri, 29 Dec 2017) | 6 lines

test/ruby/test_hash: minor test cleanup

Prep work for proposed behavior change:
https://bugs.ruby-lang.org/issues/14225

* test/ruby/test_hash.rb (test_tainted_string_key): assert_predicate
------------------------------------------------------------------------
r61511 | svn | 2017-12-29 05:09:25 +0900 (Fri, 29 Dec 2017) | 1 line

* 2017-12-29
------------------------------------------------------------------------
r61510 | ko1 | 2017-12-29 05:09:24 +0900 (Fri, 29 Dec 2017) | 84 lines

`$SAFE` as a process global state. [Feature #14250]

* vm_core.h (rb_vm_t): move `rb_execution_context_t::safe_level` to
  `rb_vm_t::safe_level_` because `$SAFE` is a process (VM) global state.

* vm_core.h (rb_proc_t): remove `rb_proc_t::safe_level` because `Proc`
  objects don't need to keep `$SAFE` at the creation.
  Also make `is_from_method` and `is_lambda` as 1 bit fields.

* cont.c (cont_restore_thread): no need to keep `$SAFE` for Continuation.

* eval.c (ruby_cleanup): use `rb_set_safe_level_force()` instead of access
  `vm->safe_level_` directly.

* eval_jump.c: End procs `END{}` doesn't keep `$SAFE`.

* proc.c (proc_dup): removed and introduce `rb_proc_dup` in vm.c.

* safe.c (rb_set_safe_level): don't check `$SAFE` 1 -> 0 changes.

* safe.c (safe_setter): use `rb_set_safe_level()`.

* thread.c (rb_thread_safe_level): `Thread#safe_level` returns `$SAFE`.
  It should be obsolete.

* transcode.c (load_transcoder_entry): `rb_safe_level()` only returns
  0 or 1 so that this check is not needed.

* vm.c (vm_proc_create_from_captured): don't need to keep `$SAFE` for Proc.

* vm.c (rb_proc_create): renamed to `proc_create`.

* vm.c (rb_proc_dup): moved from proc.c.

* vm.c (vm_invoke_proc): do not need to set and restore `$SAFE`
  for `Proc#call`.

* vm_eval.c (rb_eval_cmd): rename a local variable to represent clearer
  meaning.

* lib/drb/drb.rb: restore `$SAFE`.

* lib/erb.rb: restore `$SAFE`, too.

* test/lib/leakchecker.rb: check `$SAFE == 0` at the end of tests.

* test/rubygems/test_gem.rb: do not set `$SAFE = 1`.

* bootstraptest/test_proc.rb: catch up this change.

* spec/ruby/optional/capi/string_spec.rb: ditto.

* test/bigdecimal/test_bigdecimal.rb: ditto.

* test/fiddle/test_func.rb: ditto.

* test/fiddle/test_handle.rb: ditto.

* test/net/imap/test_imap_response_parser.rb: ditto.

* test/pathname/test_pathname.rb: ditto.

* test/readline/test_readline.rb: ditto.

* test/ruby/test_file.rb: ditto.

* test/ruby/test_optimization.rb: ditto.

* test/ruby/test_proc.rb: ditto.

* test/ruby/test_require.rb: ditto.

* test/ruby/test_thread.rb: ditto.

* test/rubygems/test_gem_specification.rb: ditto.

* test/test_tempfile.rb: ditto.

* test/test_tmpdir.rb: ditto.

* test/win32ole/test_win32ole.rb: ditto.

* test/win32ole/test_win32ole_event.rb: ditto.

------------------------------------------------------------------------
r61509 | nobu | 2017-12-28 17:28:42 +0900 (Thu, 28 Dec 2017) | 4 lines

proc.c: empty iseq names

* proc.c (proc_binding): unified the name and realpath of an empty
  iseq.
------------------------------------------------------------------------
r61508 | k0kubun | 2017-12-28 14:07:16 +0900 (Thu, 28 Dec 2017) | 3 lines

erb.rb: let's remove constant deprecated at 2.5

(r59497).
------------------------------------------------------------------------
r61507 | kazu | 2017-12-28 09:00:05 +0900 (Thu, 28 Dec 2017) | 3 lines

Fix KeyError#{key,receiver} of Thread#fetch

[ruby-core:84508] [Bug #14247]
------------------------------------------------------------------------
r61506 | normal | 2017-12-28 08:40:43 +0900 (Thu, 28 Dec 2017) | 5 lines

remove empty spec/rubyspec directory

* spec/rubyspec: remove empty directory trees
  [ruby-core:84533]

------------------------------------------------------------------------
r61505 | eregon | 2017-12-28 06:18:20 +0900 (Thu, 28 Dec 2017) | 1 line

Update to ruby/spec@b95d7ed
------------------------------------------------------------------------
r61504 | eregon | 2017-12-28 01:12:47 +0900 (Thu, 28 Dec 2017) | 1 line

Update to ruby/spec@0fe33ac
------------------------------------------------------------------------
r61503 | svn | 2017-12-28 01:12:19 +0900 (Thu, 28 Dec 2017) | 1 line

* 2017-12-28
------------------------------------------------------------------------
r61502 | eregon | 2017-12-28 01:12:18 +0900 (Thu, 28 Dec 2017) | 1 line

Update to ruby/mspec@5f563e4
------------------------------------------------------------------------
r61501 | ko1 | 2017-12-27 23:50:49 +0900 (Wed, 27 Dec 2017) | 8 lines

fix concurrent test.

* test/rubygems/test_require.rb (test_concurrent_require):
  Synchronizations should be in ensure clause. Sometimes
  `require` fails (not sure why) and latch is not released.
  Such case introduces unlimited awaiting.
  This patch soleve this problem.

------------------------------------------------------------------------
r61500 | nobu | 2017-12-27 23:07:49 +0900 (Wed, 27 Dec 2017) | 6 lines

fix fd mask detection on os x

This was broken in r59440 (3215b27a9abd8de793cf517f32d8901fd421eb1c)
[Bug #14248]

From: Stefan Kaes <skaes@railsexpress.de>
------------------------------------------------------------------------
r61499 | k0kubun | 2017-12-27 22:35:25 +0900 (Wed, 27 Dec 2017) | 5 lines

tool/downloader.rb: don't suppress exception

on the end of retry failure.

Fixed mistake in r61498
------------------------------------------------------------------------
r61498 | k0kubun | 2017-12-27 22:32:59 +0900 (Wed, 27 Dec 2017) | 8 lines

tool/downloader.rb: retry downloads

because it's randomly failing on CI like
https://ci.appveyor.com/project/ruby/ruby/build/1.0.6724

Actually I'm not sure whether the exception class is Errno::ECONNREFUSED
or not. Please change the rescued exception to the correct one if it's
wrong. I changed to log exception class too in this commit.
------------------------------------------------------------------------
r61497 | k0kubun | 2017-12-27 21:40:03 +0900 (Wed, 27 Dec 2017) | 12 lines

erb.rb: preserve the behavior for invalid syntax

comment. Fix regression at r58948.

I even don't want to deprecate it because deprecation needs to lex all
embedded Ruby script using Ripper and it would be slow.  So Let me just
keep this behavior of Ruby 2.4. No change is the best compatibility.

This commit stopped using String#-@ because it's harmful for "ambiguous
first argument" warning if we really want to maintain this behavior.

[Bug #14243]
------------------------------------------------------------------------
r61495 | nobu | 2017-12-27 16:28:32 +0900 (Wed, 27 Dec 2017) | 4 lines

spec_helper.rb: libruby.so iff enable-shared

* spec/ruby/optional/capi/spec_helper.rb (compile_extension):
  search libruby.so only when enable-shared.
------------------------------------------------------------------------
r61494 | nobu | 2017-12-27 12:00:30 +0900 (Wed, 27 Dec 2017) | 1 line

vm_eval.c: expanded eval_string
------------------------------------------------------------------------
r61493 | nobu | 2017-12-27 11:55:16 +0900 (Wed, 27 Dec 2017) | 4 lines

vm_eval.c: split eval_string_with_cref

* vm_eval.c (eval_string_with_cref): split into cref and scope
  modes, which are exclusive.
------------------------------------------------------------------------
r61492 | nobu | 2017-12-27 11:55:15 +0900 (Wed, 27 Dec 2017) | 4 lines

vm_eval.c: refactor eval_make_iseq

* vm_eval.c (eval_make_iseq): moved preparations of location and
  debug print.
------------------------------------------------------------------------
r61491 | nobu | 2017-12-27 10:58:18 +0900 (Wed, 27 Dec 2017) | 5 lines

spec_helper.rb: must find libruby.so

* spec/ruby/optional/capi/spec_helper.rb (compile_extension): if
  libruby.so should have been built but is not found, fail early.
  get mtime of the library just once.
------------------------------------------------------------------------
r61490 | nobu | 2017-12-27 10:26:22 +0900 (Wed, 27 Dec 2017) | 4 lines

fake.rb: set libdir

* tool/fake.rb: set "libdir" to build directory too, so that
  spec/ruby/optional/capi/spec_helper.rb can find libruby_so.
------------------------------------------------------------------------
r61489 | svn | 2017-12-27 09:04:30 +0900 (Wed, 27 Dec 2017) | 1 line

* 2017-12-27
------------------------------------------------------------------------
r61488 | kazu | 2017-12-27 09:04:30 +0900 (Wed, 27 Dec 2017) | 1 line

[DOC] Fix typos in downcase [ci skip]
------------------------------------------------------------------------
r61487 | kazu | 2017-12-26 20:36:07 +0900 (Tue, 26 Dec 2017) | 2 lines

Add NEWS for Ruby 2.6.0

------------------------------------------------------------------------
r61486 | kazu | 2017-12-26 20:35:48 +0900 (Tue, 26 Dec 2017) | 2 lines

Move from NEWS to doc/NEWS-2.5.0

------------------------------------------------------------------------
r61485 | nobu | 2017-12-26 19:40:48 +0900 (Tue, 26 Dec 2017) | 1 line

test_proc.rb: remove duplicate test_source_location
------------------------------------------------------------------------
r61484 | nobu | 2017-12-26 19:32:58 +0900 (Tue, 26 Dec 2017) | 6 lines

vm_method.c: fix super in refined module

* vm_method.c (rb_method_entry_complement_defined_class): clone
  the original method entry of refined module instance method with
  the active ICLASS, to track super method chain.
  [ruby-dev:50390] [Bug #14232]
------------------------------------------------------------------------
r61483 | nobu | 2017-12-26 19:10:41 +0900 (Tue, 26 Dec 2017) | 5 lines

parse.y: warning for locations

* parse.y (gettable_gen): warn for __FILE__/__LINE__ when eval
  with binding only.  promote use of Binding#source_location
  instead.
------------------------------------------------------------------------
r61482 | nobu | 2017-12-26 18:05:28 +0900 (Tue, 26 Dec 2017) | 5 lines

vm_eval.c: strange message in eval

* vm_eval.c (eval_string_with_cref): remove unnecessary location
  from exception backtrace in eval.
  [ruby-core:84434] [Bug #14229]
------------------------------------------------------------------------
r61481 | mame | 2017-12-26 18:04:26 +0900 (Tue, 26 Dec 2017) | 1 line

test/ruby/test_proc.rb: Add a test for Binding#source_location
------------------------------------------------------------------------
r61480 | mame | 2017-12-26 17:38:35 +0900 (Tue, 26 Dec 2017) | 3 lines

proc.c (bind_location): Add Binding#source_location

Fixes #14230
------------------------------------------------------------------------
r61479 | nobu | 2017-12-26 14:30:31 +0900 (Tue, 26 Dec 2017) | 4 lines

variable.c: public rb_autoload

* variable.c (rb_autoload): restore the visibility for backward
  compatibility.  [ruby-core:84454] [Bug #14236]
------------------------------------------------------------------------
r61478 | nobu | 2017-12-26 08:59:56 +0900 (Tue, 26 Dec 2017) | 4 lines

prelude.c.tmpl: get rid of errors with old gcc

* template/prelude.c.tmpl: moved diagnostic pragmas outside
  prelude_eval() for very old gcc.  [ruby-core:84449] [Bug #14234]
------------------------------------------------------------------------
r61477 | svn | 2017-12-26 08:33:53 +0900 (Tue, 26 Dec 2017) | 1 line

* 2017-12-26
------------------------------------------------------------------------
r61476 | nobu | 2017-12-26 08:33:52 +0900 (Tue, 26 Dec 2017) | 1 line

test/ruby/test_process.rb: get rid of timing issue
------------------------------------------------------------------------
r61475 | k0kubun | 2017-12-25 23:22:21 +0900 (Mon, 25 Dec 2017) | 3 lines

cont.c: fix comment to follow field name change

saved_thread was renamed to saved_ec in r59831 [ci skip]
------------------------------------------------------------------------
r61474 | matz | 2017-12-25 23:05:59 +0900 (Mon, 25 Dec 2017) | 2 lines

version.h (RUBY_VERSION): 2.6.0 development has started.

------------------------------------------------------------------------

T1KUS90T
  root-grov@198.54.114.191:~$