| Age | Commit message (Collapse) | Author |
|
Notes:
Merged: https://github.com/ruby/ruby/pull/2794
|
|
This removes the warnings added in 2.7, and changes the behavior
so that a final positional hash is not treated as keywords or
vice-versa.
To handle the arg_setup_block splat case correctly with keyword
arguments, we need to check if we are taking a keyword hash.
That case didn't have a test, but it affects real-world code,
so add a test for it.
This removes rb_empty_keyword_given_p() and related code, as
that is not needed in Ruby 3. The empty keyword case is the
same as the no keyword case in Ruby 3.
This changes rb_scan_args to implement keyword argument
separation for C functions when the : character is used.
For backwards compatibility, it returns a duped hash.
This is a bad idea for performance, but not duping the hash
breaks at least Enumerator::ArithmeticSequence#inspect.
Instead of having RB_PASS_CALLED_KEYWORDS be a number,
simplify the code by just making it be rb_keyword_given_p().
Notes:
Merged: https://github.com/ruby/ruby/pull/2794
|
|
It is considered a mistake, because calling this method with no
arguments has no effect.
Notes:
Merged: https://github.com/ruby/ruby/pull/2806
|
|
Notes:
Merged: https://github.com/ruby/ruby/pull/2800
|
|
Notes:
Merged: https://github.com/ruby/ruby/pull/2800
|
|
Notes:
Merged: https://github.com/ruby/ruby/pull/2800
|
|
`NoMethodError` has been raised instead of `FrozenError`.
Notes:
Merged: https://github.com/ruby/ruby/pull/2800
|
|
* MinGW - skip spec in spec/ruby/optional/capi/thread_spec.rb
C-API Thread function rb_thread_call_without_gvl
-- runs a C function with the global lock unlocked and unlocks IO with the generic RUBY_UBF_IO
stops/freezes spec tests
See https://bugs.ruby-lang.org/issues/16265
* MinGW - skip test test/resolv/test_dns.rb
Test times out in CI (both AppVeyor & Actions), cannot repo locally
* MinGW - skip test test/ruby/test_thread_queue.rb
* Add Actions mingw.yml
|
|
* Deciding lambdaness of (f << g) using g
* Use version guards for spec changes
Notes:
Merged-By: XrXr
|
|
|
|
[Bug #16450]
|
|
warnings
|
|
objspace->id_to_obj_tbl can contain died objects because of lazy
sweep, so that it should check liveness.
|
|
We want to introduce consistency and better compatibility with unixen,
but the Windows APIs doues not have consistency fundamentally and
we can not found any logical way...
This reverts commit 61aff0cd189e67fa6f2565639ad0128fa33b88fc.
|
|
* Use Queue for synchronization.
* Don't use `sleep 0.2` and use `th.join` because created thread
can raise an exception after 0.2 seconds.
|
|
`foo(*rest, post, **empty_kw)` is compiled like
`foo(*rest + [post, **empty_kw])`, and `**empty_kw` is removed by
"newarraykwsplat" instruction.
However, the method call still has a flag of KW_SPLAT, so "post" is
considered as a keyword hash, which caused a segfault.
Note that the flag cannot be removed if "empty_kw" is not always empty.
This change fixes the issue by compiling arguments with "newarray"
instead of "newarraykwsplat".
[Bug #16442]
|
|
But not changes another cases, such as "file.rb."
[Bug #15267]
|
|
Before this commit, Kernel#lambda can't tell the difference between a
directly passed literal block and one passed with an ampersand.
A block passed with an ampersand is semantically speaking already a
non-lambda proc. When Kernel#lambda receives a non-lambda proc, it
should simply return it.
Implementation wise, when the VM calls a method with a literal block, it
places the code for the block on the calling control frame and passes a
pointer (block handler) to the callee. Before this commit, the VM
forwards block arguments by simply forwarding the block handler, which
leaves the slot for block code unused when a control frame forwards its
block argument. I use the vacant space to indicate that a frame has
forwarded its block argument and inspect that in Kernel#lambda to detect
forwarded blocks.
This is a very ad-hoc solution and relies *heavily* on the way block
passing works in the VM. However, it's the most self-contained solution
I have.
[Bug #15620]
Notes:
Merged: https://github.com/ruby/ruby/pull/2289
|
|
|
|
[Feature #16420]
|
|
[Feature #16420]
|
|
To manage `Warning[category]` flags. Only `-W:deprecated` and
`-W:no-deprecated` are available now. [Feature #16345]
|
|
(old)
test.rb:4: warning: The last argument is used as the keyword parameter
test.rb:1: warning: for `foo' defined here; maybe ** should be added to the call?
(new)
test.rb:4: warning: The last argument is used as keyword parameters; maybe ** should be added to the call
test.rb:1: warning: The called method `foo' is defined here
|
|
[Bug #16438]
|
|
[Bug #16438]
|
|
[Bug #16438]
|
|
[Feature #16419]
|
|
Fixed misspellings reported at [Bug #16437], only in ruby and rubyspec.
|
|
|
|
[Feature #16433]
|
|
|
|
|
|
Errno::EROFS may occur when the source tree is placed in a
read-only filesystem.
|
|
|
|
|
|
[Bug #16424]
Notes:
Merged: https://github.com/ruby/ruby/pull/2754
|
|
Except for ASCII-8BIT. [Bug #16422]
|
|
same as `rand(endless_range)`
Before:
```
$ ruby -e 'rand(..1)'
Traceback (most recent call last):
2: from -e:1:in `<main>'
1: from -e:1:in `rand'
-e:1:in `-': nil can't be coerced into Integer (TypeError)
```
After:
```
$ ruby -e 'rand(..1)'
Traceback (most recent call last):
1: from -e:1:in `<main>'
-e:1:in `rand': Numerical argument out of domain (Errno::EDOM)
```
|
|
Notes:
Merged: https://github.com/ruby/ruby/pull/2739
|
|
|
|
Paths start with the root are absolute on cygwin, regardless the
drive letter.
|
|
|
|
This makes behavior the same as super in instance_eval in method
in class. The reason this wasn't implemented before is that
there is a check to determine if the self in the current context
is of the expected class, and a module itself can be included
in multiple classes, so it doesn't have an expected class.
Implementing this requires giving iclasses knowledge of which
class created them, so that super call in the module method
knows the expected class for super calls. This reference
is called includer, and should only be set for iclasses.
Note that the approach Ruby uses in this check is not robust. If
you instance_eval another object of the same class and call super,
instead of an TypeError, you get super called with the
instance_eval receiver instead of the method receiver. Truly
fixing super would require keeping a reference to the super object
(method receiver) in each frame where scope has changed, and using
that instead of current self when calling super.
Fixes [Bug #11636]
Notes:
Merged: https://github.com/ruby/ruby/pull/2717
|
|
related https://bugs.ruby-lang.org/issues/16177
Notes:
Merged: https://github.com/ruby/ruby/pull/2736
|
|
* Make it correctly handle lambdas
* Make it iterate over the block if block is given
The original implementation was flawed, based on lazy_set_method
instead of lazy_add_method.
Note that there is no implicit map when passing a block, the return
value of the block passed to with_index is ignored, just as it
is for Enumerator#with_index. Also like Enumerator#with_index,
when called with a block, the return value is an enumerator without
the index.
Fixes [Bug #16414]
Notes:
Merged: https://github.com/ruby/ruby/pull/2742
|
|
https://rubyci.org/logs/rubyci.s3.amazonaws.com/ubuntu1604/ruby-master/log/20191210T003005Z.log.html.gz
```
.../test/ruby/test_keyword.rb:2711: warning: `*' interpreted as argument prefix
```
|
|
This allows passing keywords through a normal argument splat in a
Proc. While needing ruby2_keywords support for methods is more
common, there is code that delegates keywords through normal
argument splats in procs, including code in Rails. For that
reason, it makes sense to expose this for procs as well.
Internally, ruby2_keywords is not tied to methods, but iseqs,
so this just allows for setting the ruby2_keywords for the iseq
related to the proc.
Notes:
Merged: https://github.com/ruby/ruby/pull/2728
|
|
```
1) Error:
TestFileExhaustive#test_socket_p:
ArgumentError: too long unix socket path (109bytes given but 108bytes max)
/export/home/users/chkbuild/cb-sunc/tmp/build/20191207T024036Z/ruby/test/ruby/test_file_exhaustive.rb:155:in `initialize'
```
|
|
|
|
Introduce new RUBY_DEBUG option 'ci' to inform Ruby interpreter
that an interpreter is running on CI environment.
With this option, `rb_bug()` shows more information includes
method entry information, local variables information for each
control frame.
|