| Age | Commit message (Collapse) | Author |
|
|
|
16 beta
|
|
[PATCH] [Bug #21666] Get rid of use of unspecified values
|
|
|
|
acb29f7fa1497463ed3bdd65549ef20b61beda64: [Backport #21402]
ruby2_keywords warnings: Quote non-UTF8 method names fully
It used to quote only part of the method name because NUL byte in
the method terminates the C string:
```
(irb)> "abcdef".encode("UTF-16LE").bytes
=> [97, 0, 98, 0, 99, 0, 100, 0, 101, 0, 102, 0]
```
```
expected: /abcdef/
actual: warning: Skipping set of ruby2_keywords flag for a (method not defined in Ruby)\n".
```
Do not respect ruby2_keywords on method/proc with post arguments
Previously, ruby2_keywords could be used on a method or proc with
post arguments, but I don't think the behavior is desired:
```ruby
def a(*c, **kw) [c, kw] end
def b(*a, b) a(*a, b) end
ruby2_keywords(:b)
b({foo: 1}, bar: 1)
```
This changes ruby2_keywords to emit a warning and not set the
flag on a method/proc with post arguments.
While here, fix the ruby2_keywords specs for warnings, since they
weren't testing what they should be testing. They all warned
because the method didn't accept a rest argument, not because it
accepted a keyword or keyword rest argument.
|
|
[Backport #20009]
|
|
[Bug #20009] Support marshaling non-ASCII name class/module
|
|
stat command is not provided on Windows
|
|
The message from dlerror is not our concern.
|
|
|
|
[Bug #21094] Update nested module names when setting temporary name
|
|
d3abee739f4feb91bb9aaae33877d70c8c576db0: [Backport #21095]
Prefer `uname -n` over `hostname`. (#12647)
Add fallback for `hostname` if `uname` isn't available. (#12655)
|
|
[Bug #20280]
Backport of #10014.
|
|
Do not pollute toplevel namespace
|
|
`Fiber#raise` recursively raises on nested resuming_fiber. (#10482)
* Improve consistency of `Fiber.current.raise`.
|
|
|
|
https://rubyci.s3.amazonaws.com/rhel_zlinux/ruby-3.3/log/20240528T214850Z.fail.html.gz
```
1)
Execution variable $: default $LOAD_PATH entries until sitelibdir included have @gem_prelude_index set FAILED
Expected ["/home/chkbuild/build/20240528T214850Z/mspec/lib/mspec/lib",
"/home/chkbuild/build/20240528T214850Z/mspec/lib",
"./ruby/tool/lib",
"/home/linux1/chkbuild/tmp/build/20240528T214850Z/lib/ruby/site_ruby/3.3.0",
"/home/linux1/chkbuild/tmp/build/20240528T214850Z/lib/ruby/site_ruby/3.3.0/s390x-linux",
"/home/linux1/chkbuild/tmp/build/20240528T214850Z/lib/ruby/site_ruby",
"/home/linux1/chkbuild/tmp/build/20240528T214850Z/lib/ruby/vendor_ruby/3.3.0",
"/home/linux1/chkbuild/tmp/build/20240528T214850Z/lib/ruby/vendor_ruby/3.3.0/s390x-linux",
"/home/linux1/chkbuild/tmp/build/20240528T214850Z/lib/ruby/vendor_ruby",
"/home/linux1/chkbuild/tmp/build/20240528T214850Z/lib/ruby/3.3.0",
"/home/linux1/chkbuild/tmp/build/20240528T214850Z/lib/ruby/3.3.0/s390x-linux"].include? "/home/chkbuild/build/20240528T214850Z/lib/ruby/site_ruby/3.3.0"
to be truthy but was false
/home/chkbuild/build/20240528T214850Z/rubyspec/language/predefined_spec.rb:885:in `block (2 levels) in <top (required)>'
/home/chkbuild/build/20240528T214850Z/rubyspec/language/predefined_spec.rb:846:in `<top (required)>'
```
It does have /home/linux1/chkbuild/tmp/build/20240528T214850Z/lib/ruby/site_ruby/3.3.0,
so it seems actually fine. It seems to be failing due to its setup
issues. Skipping this until we figure out how to fix it.
|
|
d19d683a354530a27b4cbb049223f8dc70c75849,de1a586ecc2ee7f465f0c0a69291054136a3a819: [Backport #20250] (#10308)
rb_obj_setup: do not copy RUBY_FL_SEEN_OBJ_ID
[Bug #20250]
We're seting up a new instance, so it never had an associated
object_id.
proc.c: get rid of `CLONESETUP`
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
[Bug #20253]
All the way down to Ruby 1.9, `Proc`, `Method`, `UnboundMethod`
and `Binding` always had their own specific clone and dup routine.
This caused various discrepancies with how other objects behave
on `dup` and `clone. [Bug #20250], [Bug #20253].
This commit get rid of `CLONESETUP` and use the the same codepath
as all other types, so ensure consistency.
NB: It's still not accepting the `freeze` keyword argument on `clone`.
Co-Authored-By: Étienne Barrié <etienne.barrie@gmail.com>
|
|
In the extension libraries in spec/ruby/optional/capi, do not care
about deprecated declarations.
|
|
|
|
`Set::VERSION` was not defined in old set.rb bundled with ruby 3.2 or
earlier.
Also add comment for spec/mspec/tool/remove_old_guards.rb.
|
|
|
|
|
|
|
|
Since Ruby 3.0, Ruby has passed a keyword splat as a regular
argument in the case of a call to a Ruby method where the
method does not accept keyword arguments, if the method
call does not contain an argument splat:
```ruby
def self.f(obj) obj end
def self.fs(*obj) obj[0] end
h = {a: 1}
f(**h).equal?(h) # Before: true; After: false
fs(**h).equal?(h) # Before: true; After: false
a = []
f(*a, **h).equal?(h) # Before and After: false
fs(*a, **h).equal?(h) # Before and After: false
```
The fact that the behavior differs when passing an empty
argument splat makes it obvious that something is not
working the way it is intended. Ruby 2 always copied
the keyword splat hash, and that is the expected behavior
in Ruby 3.
This bug is because of a missed check in setup_parameters_complex.
If the keyword splat passed is not mutable, then it points to
an existing object and not a new object, and therefore it must
be copied.
Now, there are 3 specs for the broken behavior of directly
using the keyword splatted hash. Fix two specs and add a
new version guard. Do not keep the specs for the broken
behavior for earlier Ruby versions, in case this fix is
backported. For the ruby2_keywords spec, just remove the
related line, since that line is unrelated to what the
spec is testing.
Co-authored-by: Nobuyoshi Nakada <nobu@ruby-lang.org>
|
|
|
|
|
|
|
|
|
|
Otherwise you can have work in some circumstance but not in others.
|
|
|
|
LibreSSL seems not to support `scrypt`.
https://rubyci.s3.amazonaws.com/openbsd-current/ruby-master/log/20231105T233005Z.fail.html.gz
```
1)
OpenSSL::KDF.scrypt creates the same value with the same input ERROR
NoMethodError: undefined method `scrypt' for module OpenSSL::KDF
```
|
|
|
|
Do not use a variable as a format string. Also we usually don't
expect non-ascii data in C string literals.
|
|
|
|
This reverts commit d434765faead1583ca9008bb579067a288085b93.
|
|
|
|
|
|
Enable the test commented out in ruby/ruby@d0f5dc9eac78ecade459.
Extracted from GH-7033, that is for initialization at start up time
and this test is unrelated to it.
|
|
This patch introduce M:N thread scheduler for Ractor system.
In general, M:N thread scheduler employs N native threads (OS threads)
to manage M user-level threads (Ruby threads in this case).
On the Ruby interpreter, 1 native thread is provided for 1 Ractor
and all Ruby threads are managed by the native thread.
From Ruby 1.9, the interpreter uses 1:1 thread scheduler which means
1 Ruby thread has 1 native thread. M:N scheduler change this strategy.
Because of compatibility issue (and stableness issue of the implementation)
main Ractor doesn't use M:N scheduler on default. On the other words,
threads on the main Ractor will be managed with 1:1 thread scheduler.
There are additional settings by environment variables:
`RUBY_MN_THREADS=1` enables M:N thread scheduler on the main ractor.
Note that non-main ractors use the M:N scheduler without this
configuration. With this configuration, single ractor applications
run threads on M:1 thread scheduler (green threads, user-level threads).
`RUBY_MAX_CPU=n` specifies maximum number of native threads for
M:N scheduler (default: 8).
This patch will be reverted soon if non-easy issues are found.
[Bug #19842]
|
|
The test for integer part was separated at dc54574adefe.
|
|
Remove the bad example that can lead to misunderstanding as if this
precision is defined in Ruby.
|
|
|
|
|
|
It failed with `NameError` because `Html3` is defined in the file that
`CGI::HtmlExtension` autoloads.
|
|
Previously, Kernel#lambda returned a non-lambda proc when given a
non-literal block and issued a warning under the `:deprecated` category.
With this change, Kernel#lambda will always return a lambda proc, if it
returns without raising.
Due to interactions with block passing optimizations, we previously had
two separate code paths for detecting whether Kernel#lambda got a
literal block. This change allows us to remove one path, the hack done
with rb_control_frame_t::block_code introduced in 85a337f for supporting
situations where Kernel#lambda returned a non-lambda proc.
[Feature #19777]
Co-authored-by: Takashi Kokubun <takashikkbn@gmail.com>
Notes:
Merged: https://github.com/ruby/ruby/pull/8405
|
|
|
|
[Bug #19012]
man recvmsg(2) states:
> Return Value
> These calls return the number of bytes received, or -1 if an error occurred.
> The return value will be 0 when the peer has performed an orderly shutdown.
Not too sure how one is supposed to make the difference between a packet of
size 0 and a closed connection.
Notes:
Merged: https://github.com/ruby/ruby/pull/6407
|
|
- String#start_with?
- String#delete_prefix
- String#delete_prefix!
Notes:
Merged: https://github.com/ruby/ruby/pull/8296
|
|
* Skip RBS test.
Notes:
Merged-By: ioquatix <samuel@codeotaku.com>
|