Age | Commit message (Collapse) | Author |
|
|
|
|
|
|
|
Ruby uses a recursive algorithm for handling control/meta escapes
in strings (read_escape). However, the equivalent code for regexps
(tokadd_escape) in did not use a recursive algorithm. Due to this,
Handling of control/meta escapes in regexp did not have the same
behavior as in strings, leading to behavior such as the following
returning nil:
```ruby
/\c\xFF/ =~ "\c\xFF"
```
Switch the code for handling \c, \C and \M in literal regexps to
use the same code as for strings (read_escape), to keep behavior
consistent between the two.
Fixes [Bug #14367]
Notes:
Merged: https://github.com/ruby/ruby/pull/4495
|
|
|
|
|
|
http://ci.rvm.jp/logfiles/brlog.trunk-test.20210216-182358
```
1)
$LOAD_PATH.resolve_feature_path raises LoadError if feature cannot be found FAILED
Expected LoadError but no exception was raised (nil was returned)
/tmp/ruby/v3/src/trunk-test/spec/ruby/language/predefined_spec.rb:1275:in `block (3 levels) in <top (required)>'
/tmp/ruby/v3/src/trunk-test/spec/ruby/language/predefined_spec.rb:1259:in `block in <top (required)>'
/tmp/ruby/v3/src/trunk-test/spec/ruby/language/predefined_spec.rb:1258:in `<top (required)>'
```
|
|
|
|
|
|
|
|
variable pattern
https://github.com/ruby/dev-meeting-log/blob/master/DevelopersMeeting20201210Japan.md#feature-17371-reintroduce-expr-in-pat-ktsj
|
|
|
|
|
|
Fixes [Bug #14726]
Notes:
Merged: https://github.com/ruby/ruby/pull/3330
|
|
|
|
|
|
|
|
|
|
|
|
https://github.com/ruby/ruby/runs/1337845174
|
|
|
|
[Feature #17260] One-line pattern matching using tASSOC
R-assignment is rejected instead.
Notes:
Merged-By: nobu <nobu@ruby-lang.org>
|
|
|
|
|
|
|
|
And `-w` option turns it on.
Notes:
Merged: https://github.com/ruby/ruby/pull/3481
|
|
|
|
* Remove freezestring instruction since this was the only usage for it.
* [Feature #17104]
Notes:
Merged: https://github.com/ruby/ruby/pull/3488
|
|
Fixes [Bug #14895]
Notes:
Merged: https://github.com/ruby/ruby/pull/3502
|
|
|
|
|
|
Notes:
Merged: https://github.com/ruby/ruby/pull/3163
|
|
|
|
This makes:
```ruby
args = [1, 2, -> {}]; foo(*args, &args.pop)
```
call `foo` with 1, 2, and the lambda, in addition to passing the
lambda as a block. This is different from the previous behavior,
which passed the lambda as a block but not as a regular argument,
which goes against the expected left-to-right evaluation order.
This is how Ruby already compiled arguments if using leading
arguments, trailing arguments, or keywords in the same call.
This works by disabling the optimization that skipped duplicating
the array during the splat (splatarray instruction argument
switches from false to true). In the above example, the splat
call duplicates the array. I've tested and cases where a
local variable or symbol are used do not duplicate the array,
so I don't expect this to decrease the performance of most Ruby
programs. However, programs such as:
```ruby
foo(*args, &bar)
```
could see a decrease in performance, if `bar` is a method call
and not a local variable.
This is not a perfect solution, there are ways to get around
this:
```ruby
args = Struct.new(:a).new([:x, :y])
def args.to_a; a; end
def args.to_proc; a.pop; ->{}; end
foo(*args, &args)
# calls foo with 1 argument (:x)
# not 2 arguments (:x and :y)
```
A perfect solution would require completely disabling the
optimization.
Fixes [Bug #16504]
Fixes [Bug #16500]
Notes:
Merged: https://github.com/ruby/ruby/pull/3157
|
|
|
|
Notes:
Merged: https://github.com/ruby/ruby/pull/3080
|
|
|
|
|
|
|
|
Deprerecated constants which had been warned since 2.4.
|
|
Notes:
Merged: https://github.com/ruby/ruby/pull/2996
|
|
This changes the following warnings:
* warning: class variable access from toplevel
* warning: class variable @foo of D is overtaken by C
into RuntimeErrors. Handle defined?(@@foo) at toplevel
by returning nil instead of raising an exception (the previous
behavior warned before returning nil when defined? was used).
Refactor the specs to avoid the warnings even in older versions.
The specs were checking for the warnings, but the purpose of
the related specs as evidenced from their description is to
test for behavior, not for warnings.
Fixes [Bug #14541]
Notes:
Merged: https://github.com/ruby/ruby/pull/2987
|
|
By using spec/mspec/tool/remove_old_guards.rb.
Notes:
Merged: https://github.com/ruby/ruby/pull/2997
|
|
Notes:
Merged: https://github.com/ruby/ruby/pull/2892
|
|
Notes:
Merged: https://github.com/ruby/ruby/pull/2892
|
|
|
|
When providing a single array to a block that takes a splat, pass the
array as one argument of the splat instead of as the splat itself,
even if the block also accepts keyword arguments. Previously, this
behavior was only used for blocks that did not accept keywords.
Implements [Feature#16166]
Notes:
Merged: https://github.com/ruby/ruby/pull/2502
|
|
|
|
|
|
Notes:
Merged: https://github.com/ruby/ruby/pull/2920
|