| Age | Commit message (Collapse) | Author |
|
splat (#15870)
Add pushtoarray insn to fix segfault with forwarding + splat
Example insns diff for `def x = [3]; def a(...) = b(*x, 2, 3, ...)`
== disasm: #<ISeq:a@-e:1 (1,13)-(1,42)>
local table (size: 1, argc: 0 [opts: 0, rest: -1, post: 0, block: -1, kw: -1@-1, kwrest: -1])
[ 1] "..."@0
0000 putself ( 1)[Ca]
0000 putself
0000 opt_send_without_block <calldata!mid:x, argc:0, FCALL|VCALL|ARGS_SIMPLE>
0000 splatarray true
0000 putobject 2
0000 putobject 3
+0000 pushtoarray 2
0000 getlocal_WC_0 "..."@0
0000 sendforward <calldata!mid:b, argc:1, ARGS_SPLAT|ARGS_SPLAT_MUT|FCALL|FORWARDING>, nil
0000 leave [Re]
This matches the insns produced by parse.y
|
|
https://bugs.ruby-lang.org/issues/21831
|
|
|
|
|
|
[PATCH] Fix sleep spurious wakeup from sigchld (#15802)
When sleeping with `sleep`, currently the main thread can get woken up from sigchld
from any thread (subprocess exited). The timer thread wakes up the main thread when this
happens, as it checks for signals. The main thread then executes the ruby sigchld handler
if one is registered and is supposed to go back to sleep immediately. This is not ideal but
it's the way it's worked for a while. In commit 8d8159e7d8 I added writes to `th->status`
before and after `wait_running_turn` in `thread_sched_to_waiting_until_wakeup`, which is
called from `sleep`. This is usually the right way to set the thread's status, but `sleep`
is an exception because the writes to `th->status` are done in `sleep_forever`. There's a
loop that checks `th->status` in `sleep_forever`. When the main thread got woken up from
sigchld it saw the changed `th->status` and continued to run the main thread instead of
going back to sleep.
The following script shows the error. It was returning instead of sleeping forever.
```ruby
t = Thread.new do
sleep 0.3
`echo hello` # Spawns subprocess
puts "Subprocess exited"
end
puts "Main thread sleeping..."
result = sleep # Should block forever
puts "sleep returned: #{result.inspect}"
```
Fixes [Bug #21812]
|
|
[PATCH] [Bug #21819] Data objects without members should also be frozen
|
|
[PATCH] Skip test_write_binary(GemSingletonTest) at rbs tests
```
Errno::EACCES: Permission denied @ rb_file_s_rename
...
D:/a/ruby/ruby/src/lib/rubygems/util/atomic_file_writer.rb:42:in 'File.rename'
```
It may caused with atomic_file_writer.rb
|
|
[PATCH] [Bug #21814] Fix negative bignum modulo
If modulo is zero, do not apply bias even if the divisor is zero.
`BIGNUM_POSITIVE_P` is true even on bignum zero.
|
|
[PATCH] fix underflow
|
|
These benchmarks should be working fine now.
|
|
on `has_commit` check for the `backport` command.
I don't maintain local "master" branch on my ruby repository for stable
branch maintenance. I want just running `git fetch origin` to make it
work. It should work for those who pull origin/master into their local
master too.
|
|
When requiring a file like "benchmark/ips", the warning system would
incorrectly warn about the "benchmark" gem not being a default gem,
even when the user has "benchmark-ips" (a separate third-party gem)
in their Gemfile.
The fix checks if a hyphenated version of the require path exists in
the bundle specs before issuing a warning. For example, requiring
"benchmark/ips" now checks for both "benchmark" and "benchmark-ips"
in the Gemfile.
[Bug #21828]
|
|
|
|
to remind us of skipped benchmarks in the CI job names
|
|
|
|
|
|
Because checking the current box is not a cheap process.
|
|
Without this change, classes (including iclass) are allocated
as un-boxable classes after initializing user boxes (after starting
script evaluation). Under this situation, iclasses are created as
un-boxabled class when core modules are included by a class in the
root box, then it causes problems because it's in the root box but
it can't have multiple classexts.
This change makes it possible to allocate boxable classes even after
initializing user boxes. Classes create in the root box will be
boxable, and those can have 2 or more classexts.
|
|
[Feature #19630]
This dangerous behavior was removed in 4.0 (996cae65f3cc8fed60c6bb758b00882cac49389d)
but the documentation wasn't updated.
|
|
|
|
|
|
`$~` and its accessors are related to regular expressions, but are not
themselves.
|
|
This reverts commit 8d097bc472fc66221dee23bb8f9e0dddac16db23.
|
|
* [DOC] Add back Rust 1.85.0 requirement to NEWS.md
Addresses k0kubun's review in https://github.com/ruby/ruby/pull/15711#issuecomment-3690541074
NEWS.md serves both CRuby developers as well as end-users. As the
release date closes in, it probably gets seen by more users than
core developers (on the blog for example).
Most users probably don't build Ruby by hand, and instead that is
abstracted through tools like ruby-install or a package manager.
For some users these tools may install pre-built binaries where
they exist, in which case the Rust requirement doesn't apply. In
other instances, the tools merely automate the build, in which case
the correct rustc version is required to enable support.
It is also a little confusing to talk about "enabling support for
the JIT during the build" vs "enabling the JIT at runtime".
This copy attempts to balance all of the above and hopefully gets
the correct points across all intended audiences.
* Apply suggestion from k0kubun
Co-authored-by: Takashi Kokubun <takashikkbn@gmail.com>
---------
Co-authored-by: Takashi Kokubun <takashikkbn@gmail.com>
|
|
jump, branchif, etc don't invalidate locals in the JIT; they might in the interpreter because they can execute arbitrary code, but the JIT side exits before that happens.
|
|
Test of 6.0.0 is not working with 4.0.0 stable version.
https://github.com/ruby/actions/actions/runs/20488398805/job/58875672023#step:20:362
```
rake aborted!
NoMethodError: undefined method 'cov_filter=' for #<Hoe:0x00007fdb550fc840> (NoMethodError)
self.cov_filter = %w[ tmp ]
^^^^^^^^^^^^^
/home/runner/work/actions/actions/ruby-4.0.0/gems/src/minitest/Rakefile:20:in 'block in <top (required)>'
/home/runner/work/actions/actions/ruby-4.0.0/.bundle/gems/hoe-3.20.0/lib/hoe.rb:394:in 'BasicObject#instance_eval'
/home/runner/work/actions/actions/ruby-4.0.0/.bundle/gems/hoe-3.20.0/lib/hoe.rb:394:in 'Hoe.spec'
/home/runner/work/actions/actions/ruby-4.0.0/gems/src/minitest/Rakefile:11:in '<top (required)>'
/home/runner/work/actions/actions/ruby-4.0.0/.bundle/gems/rake-13.3.1/exe/rake:27:in '<top (required)>'
(See full trace by running task with --trace)
```
|
|
This reverts commit c17307ac22f37f74786a4f016121c6ee8cc38915.
|
|
|
|
|
|
|
|
|
|
|
|
This reverts commit ba2f6972193cdbd7c1e77e26212513e47926b115.
Box already used ruby_api_version_name.
|
|
This reverts commit 31ff07ed1eb05d01f7da3c017d542137a3db1e94.
* Don't add a test which only runs on production release
* https://github.com/ruby/actions/actions/runs/20486784889/job/58870959976
* Don't add a new line to `ruby --help`
* https://github.com/ruby/ruby/pull/14142#issuecomment-3689829564
|
|
This reverts commit 9b576cd6255aba97e5e2f55f4b09f00c7dd0e839.
|
|
`Dir.mktmpdir` concatenates a random base-36 number separated by "-",
so may generate pathnames containing "-j2".
|
|
|
|
|
|
```
scheduler.c:44:5: warning: ignoring return value of ‘write’ declared with attribute ‘warn_unused_result’ [-Wunused-result]
44 | write(blocking_state->notify_descriptor, "x", 1);
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
```
|
|
Since 50e5c542cc0541fb38e52766d88d87bd8a96b072, `constat_reset` is no
longer used.
|
|
3.7.5 is not working with rbs-3.10.0
https://github.com/ruby/ruby/actions/runs/20480628393/job/58853288287#step:22:353
```
D:/a/ruby/ruby/src/.bundle/gems/test-unit-3.7.5/lib/test/unit/testcase.rb:641:in 'block (2 levels) in Test::Unit::TestCase#run': failed to allocate memory (NoMemoryError)
```
|
|
|
|
|
|
|
|
|
|
|
|
|
|
As for Ruby v4.0.0-preview3, ZJIT support is enabled by default on
supported platforms. The previous phrasing is not relevant for most
users. Replaced with brief instructions for enabling the JIT itself.
|
|
|
|
|