| Age | Commit message (Collapse) | Author |
|
Musl is (of course) not glibc. Its confstr(3) does not understand
_CS_GNU_LIBC_VERSION. That's fair. Problem is, its unistd.h has that
constant defined for unknown reason. We cannot blindly say the libc is
glibc by looking at it. Instead we have to kick it, then see if it
quacks like a duck.
See https://git.musl-libc.org/cgit/musl/tree/include/unistd.h
|
|
Keeping empty keyword splats for ruby2_keywords methods was
necessary in 2.7 to prevent the final positional hash being
treated as keywords. Now that keyword argument separation
has been committed, the final positional hash is never
treated as keywords, so there is no need to keep empty
keyword splats when using ruby2_keywords.
Notes:
Merged: https://github.com/ruby/ruby/pull/2857
|
|
Sort the results which matched single wildcard or character set in
binary ascending order, unless `sort: false` is given. The order
of an Array of pattern strings and braces are not affected.
Notes:
Merged: https://github.com/ruby/ruby/pull/2846
|
|
In #2818, `Hash.ruby2_keywords!` has renamed to `Hash.ruby2_keywords_hash`.
Notes:
Merged: https://github.com/ruby/ruby/pull/2849
|
|
|
|
It was found that a feature to check and add ruby2_keywords flag to an
existing Hash is needed when arguments are serialized and deserialized.
It is possible to do the same without explicit APIs, but it would be
good to provide them as a core feature.
https://github.com/rails/rails/pull/38105#discussion_r361863767
Hash.ruby2_keywords_hash?(hash) checks if hash is flagged or not.
Hash.ruby2_keywords_hash(hash) returns a duplicated hash that has a
ruby2_keywords flag,
[Bug #16486]
Notes:
Merged: https://github.com/ruby/ruby/pull/2818
|
|
It is useful for a program that dumps and load arguments (like drb).
In future, they should deal with both positional arguments and keyword
ones explicitly, but until ruby2_keywords is deprecated, it is good to
support the flag in marshal.
The implementation is similar to String's encoding; it is dumped as a
hidden instance variable.
[Feature #16501]
Notes:
Merged: https://github.com/ruby/ruby/pull/2830
|
|
|
|
[Feature #16432]
|
|
|
|
Split with the matched part when the separator matches the empty
part at the beginning. [Bug #11014]
|
|
`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]
|
|
[Feature #8948] [Feature #16377]
Since Regexp literals always reference the same instance,
allowing to mutate them can lead to state leak.
Notes:
Merged: https://github.com/ruby/ruby/pull/2705
|
|
If this value is less than zero, then the mask check is guaranteed to
fail as well, so we might as well rely on that.
Notes:
Merged: https://github.com/ruby/ruby/pull/2808
|
|
|
|
|
|
[Bug #16498]
|
|
`Binding#source_location` returns the `__FILE__` when created, and
may not be an absolute or real path. And in the `eval` context
with an explicit file name, `__dir__` also returns that name.
On the other hand, `__FILE__` in `require`d script file has been
expanded at searching the library.
|
|
```
.../ruby/test/ruby/test_keyword.rb:3509: warning: assigned but unused variable - bug8993
.../ruby/test/ruby/test_object.rb:83: warning: assigned but unused variable - f
.../ruby/test/ruby/test_object.rb:95: warning: method redefined; discarding old initialize_clone
.../ruby/test/ruby/test_object.rb:84: warning: previous definition of initialize_clone was here
```
|
|
script_compiled event for TracePoint should not be invoked on
compile error (SyntaxError) because it is not "compiled".
[Bug #16459]
|
|
This makes it possible to initialize_clone to correctly not freeze
internal state if the freeze: false keyword is passed to clone.
If clone is called with freeze: true or no keyword, do not pass
a second argument to initialize_clone to keep backwards
compatibility.
This makes it so that external libraries that override
initialize_clone but do not support the freeze keyword will fail
with ArgumentError if passing freeze: false to clone. I think that
is better than the current behavior, which succeeds but results in
an unfrozen object with frozen internals.
Fix related issues in set and delegate in stdlib.
Fixes [Bug #14266]
Notes:
Merged: https://github.com/ruby/ruby/pull/2816
|
|
This removes the warning that was added in
3802fb92ff8c83eed3e867db20f72c53932f542d, and switches the behavior
so that the eval does not use the binding's __FILE__ and __LINE__
implicitly.
Fixes [Bug #4352]
Notes:
Merged: https://github.com/ruby/ruby/pull/2816
|
|
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.
|