Age | Commit message (Collapse) | Author |
|
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]
|
|
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.
Notes:
Merged: https://github.com/ruby/ruby/pull/2423
Merged-By: jeremyevans <code@jeremyevans.net>
|
|
Previously, passing to_enum/enum_for a method that was defined in
Lazy itself returned wrong results:
[1,2,3].to_enum(:map).to_a
# => [1, 2, 3]
[1,2,3].lazy.to_enum(:map).to_a
# => []
I'm not sure why methods that are designed to be lazy do not work
with to_enum/enum_for. However, one possible way to work around
this bug is to have to_enum/enum_for use the implementation found
in Enumerable/Enumerator, which is what this commit does.
While this commit works around the problem, it is a band-aid, not a
real fix. It doesn't handle aliases of Enumerable::Lazy methods,
for instance. A better fix would be appreciated.
Notes:
Merged: https://github.com/ruby/ruby/pull/2421
|
|
Previously, Enumerator::Lazy#with_index was not defined, so it
picked up the default implementation from Enumerator, which was
not lazy.
Based on earlier patch from nobu.
Fixes [Bug #7877]
Notes:
Merged: https://github.com/ruby/ruby/pull/2421
|
|
|
|
hoping to stabilize:
https://app.wercker.com/ruby/ruby/runs/mjit-test1/5d6df8a8a952c20008acf75b?step=5d6df90e4971a6000714c627
|
|
On Solaris, it seems that the select(3C) in this test works only
when sending 1 byte out-of-band data, though I cannot investigate
the cause. The behavior is observed on a Solaris 10 server in
addition to Solaris 11 on which the test had been skipped.
|
|
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>.
```
|
|
Previously, Array#uniq would return subclass instance if the
length of the array were 2 or greater, and would return Array
instance if the length of the array were 0 or 1.
Fixes [Bug #7768]
|
|
|
|
For some reason, the Travis osx environment has been really unstable.
It failed on today's cron too:
https://travis-ci.org/ruby/ruby/builds/579843163
As we have almost the same test environment (including OpenSSL version)
in GitHub Actions and it seems to be more stable and faster, I think
there's no motivation to maintain Travis osx CI environment.
By removing this, we'd be able to simplify .travis.yml as well.
|
|
Ignore empty keyword splats in arrays
Notes:
Merged: https://github.com/ruby/ruby/pull/2418
Merged-By: jeremyevans <code@jeremyevans.net>
|
|
The test seems to have a race condition, which fails on very slow
machine like Solaris10s. So skip it.
In addition, this change restores timeout guard that was removed at
0660d7cb538cf5284d50f66adfcbd78609839715. This is because the test gets
stuck forever when something wrong occurs. It is better to fail the
test than stuck.
|
|
[Bug #15558]
|
|
|
|
Notes:
Merged-By: nobu <nobu@ruby-lang.org>
|
|
Patch by darkphnx (Dan Wentworth) . Thanks!
[Feature #15964]
|
|
This reverts commit 83498854eb5a824f1f83c31fac18c9279f9ee10d.
This didn't pass rubyspec.
|
|
|
|
Previously, Enumerator::Lazy#with_index was not defined, so it
picked up the default implementation from Enumerator, which was
not lazy.
Based on earlier patch from nobu.
Fixes [Bug #7877]
|
|
Fix following error on `utun*`:
```
1) Error:
TestSocket#test_udp_server:
Errno::ECONNREFUSED: Connection refused - recvmsg(2)
```
|
|
|
|
vm_call_method_missing was dropping VM_CALL_KW_SPLAT, so this just
makes it not drop it, to get the same behavior as calling the method
directly.
|
|
|
|
This reverts commit 3be3948870f6589343c4aecb541e22fae7751b47.
The Solaris environment couldn't lookup the hostname itself by a wrong
setting. Now it is fixed, so try again.
|
|
This reverts commit 84dca8eff0cbcb1c23623b47fb78b0daf5c76e35.
"exceution expired" occurred on Solaris.
https://rubyci.org/logs/rubyci.s3.amazonaws.com/solaris11s-sunc/ruby-master/log/20190901T072504Z.fail.html.gz
|
|
|
|
which are usually optimized away by -O3.
This CI can detect missing exports like
ea84a680755b5a7fa700618cbe78e3b2fc7be01d which was needed for
761346a9604ca2c79777d1d67fb5dcc3c30dbf69.
|
|
to suppress redefinition warnings.
|
|
This reverts commit 8adefd4cf29288f6e43f20efbdd44b215ae16c7a.
I couldn't see any failure on Solaris if the guard is removed.
Give it a try.
|
|
vm_call_opt_send was dropping VM_CALL_KW_SPLAT, so this just makes
it not drop it, to get the same behavior as calling the method
directly.
|
|
calling cfunc
This mirrors earlier changes in keyword argument separation for
calling Ruby methods and calling procs/lambdas, so that behavior
is kept the same.
|
|
|
|
|
|
This shows locations in places it didn't before, such as for
proc calls, and fixes the location for super calls.
This requires making iseq_location non-static and MJIT exported,
which I hope will not cause problems.
|
|
parameters
Previously, there was no warning in this case, even though we will
be changing the behavior in Ruby 3.
Fixes [Bug #14130]
|
|
This warns about a case that we will continue to support.
|
|
Notes:
Merged: https://github.com/ruby/ruby/pull/2395
|
|
Use a [:nokey] entry in this case.
Notes:
Merged: https://github.com/ruby/ruby/pull/2395
|
|
Use false instead of nil for the keyword and keyword rest values
in that case.
Notes:
Merged: https://github.com/ruby/ruby/pull/2395
|
|
The on_params hook will use :nil as the keyword rest argument.
There is a new on_nokw_param hook as well.
This fixes a type issue in the previous code, where an ID was
passed where a VALUE was the declared type. The symbol :nil is
passed instead of the id.
Notes:
Merged: https://github.com/ruby/ruby/pull/2395
|
|
This syntax means the method should be treated as a method that
uses keyword arguments, but no specific keyword arguments are
supported, and therefore calling the method with keyword arguments
will raise an ArgumentError. It is still allowed to double splat
an empty hash when calling the method, as that does not pass
any keyword arguments.
Notes:
Merged: https://github.com/ruby/ruby/pull/2395
|
|
This restores compatibility with Ruby 2.6, splitting the last
positional hash into positional and keyword arguments if it
contains both symbol and non-symbol keys. However, in this case
it will warn, as the behavior in Ruby 3 will be to not split the
hash and keep it as a positional argument.
This does not affect the handling of mixed symbol and non-symbol
keys in bare keywords. Those are still treated as keywords now,
as they were before this patch. This results in different
behavior than Ruby 2.6, which would split the bare keywords and
use the non-Symbol keys as a positional arguments.
Notes:
Merged: https://github.com/ruby/ruby/pull/2395
|
|
Now that keyword splats accept non-Symbols, the type of exception
changes.
Previously, a TypeError (hash key "k1" is not a Symbol) was raised
for this test, but now an ArgumentError (unknown keyword: "k1") is
raised.
Notes:
Merged: https://github.com/ruby/ruby/pull/2395
|
|
Now that keyword splats accept non-Symbols, the inspect value of
the keyword is used instead of the string value.
Notes:
Merged: https://github.com/ruby/ruby/pull/2395
|
|
Notes:
Merged: https://github.com/ruby/ruby/pull/2395
|
|
[Feature #16103]
Close: https://github.com/ruby/ruby/pull/2267
|
|
`umethod.bind_call(obj, ...)` is semantically equivalent to
`umethod.bind(obj).call(...)`. This idiom is used in some libraries to
call a method that is overridden. The added method does the same
without allocation of intermediate Method object. [Feature #15955]
```
class Foo
def add_1(x)
x + 1
end
end
class Bar < Foo
def add_1(x) # override
x + 2
end
end
obj = Bar.new
p obj.add_1(1) #=> 3
p Foo.instance_method(:add_1).bind(obj).call(1) #=> 2
p Foo.instance_method(:add_1).bind_call(obj, 1) #=> 2
```
|
|
These tests were guarded by a RUBY_ENGINE of "ruby" even though they test an official Ruby feature (pread/pwrite added in Ruby 2.5). This commit moves them to the top level of the test case so they will run on other implementations.
Notes:
Merged: https://github.com/ruby/ruby/pull/2412
|
|
Fixes [Bug #11326]
|