96353 Commits

Author SHA1 Message Date
Takashi Kokubun
e04267a14b v4.0.1 v4.0.1 2026-01-12 18:02:40 -08:00
Takashi Kokubun
a10f7fac1f Sync Prism to 1.8.0 2026-01-12 17:59:55 -08:00
Takashi Kokubun
ac596948d4 merge revision(s) 7e81bf5c0c8f43602e6d901f4253dca2f3d71745: [Backport #21812]
[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]
2026-01-12 17:14:52 -08:00
Takashi Kokubun
6273c59a6e merge revision(s) d7a6ff8224519005d2deeb3f4e98689a8a0835ad: [Backport #21819]
[PATCH] [Bug #21819] Data objects without members should also be frozen
2026-01-12 17:13:00 -08:00
Takashi Kokubun
3601b6c2c1 merge revision(s) 9824724b2ffe583302e9318c6eff7a440478125f: [Backport #21815]
[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
2026-01-12 17:11:36 -08:00
Takashi Kokubun
893dcb5f25 merge revision(s) 19e539c9ee1701b34189fa0c1feb942adeb0e326: [Backport #21814]
[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.
2026-01-12 17:05:12 -08:00
Takashi Kokubun
b170f02e0f merge revision(s) 4e0bb58a0a374b40b7691e7b7aa88e759a0fc9f2: [Backport #21811]
[PATCH] fix underflow
2026-01-12 17:02:01 -08:00
Stan Lo
cc4ce48f12 Remove ruby-bench excludes
These benchmarks should be working fine now.
2026-01-12 17:01:27 -08:00
Takashi Kokubun
e52aee688b redmine-backporter.rb: Check remote-tracking branch
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.
2026-01-12 16:59:42 -08:00
Chris Hasiński
8d764da357 Fix incorrect bundled gems warning for hyphenated gem names
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]
2026-01-08 09:08:38 -08:00
Takashi Kokubun
be5d24eb03 Add k0kubun as CODEOWNERS 2026-01-05 13:47:53 -08:00
Takashi Kokubun
e7b92abf3a ruby-bench: Prefer --excludes over rm -rf
to remind us of skipped benchmarks in the CI job names
2026-01-05 13:42:15 -08:00
Hiroshi SHIBATA
34aa97ed60 Disabled to run lobsters benchmark because it didn't work with Ruby 4.1 yet 2026-01-05 13:41:58 -08:00
Hiroshi SHIBATA
d555ddcfb3 uutils-coreutils 0.5.0 has been removed uutils wrapper 2026-01-05 13:21:10 -08:00
Satoshi Tagomori
9b2ff68f17 Box: skip checking the current box is the root box
Because checking the current box is not a cheap process.
2026-01-05 13:00:14 -08:00
Satoshi Tagomori
b3371c6ae5 Box: allocate classes as boxable when it happens in the root box
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.
2026-01-05 13:00:14 -08:00
Jean Boussier
35c140f92b [DOC] Remove outdated documentation about command injection
[Feature #19630]

This dangerous behavior was removed in 4.0 (996cae65f3cc8fed60c6bb758b00882cac49389d)
but the documentation wasn't updated.
2025-12-26 13:23:56 +01:00
NARUSE, Yui
553f1675f3 v4.0.0 v4.0.0 2025-12-25 12:20:40 +09:00
Nobuyoshi Nakada
d375bcc965
[DOC] Escape capitalized word "data" not to be linked unexpectedly 2025-12-25 11:56:41 +09:00
Nobuyoshi Nakada
b908306f99 [DOC] Reword "Regular Expression" to "Matched Data"
`$~` and its accessors are related to regular expressions, but are not
themselves.
2025-12-25 11:49:32 +09:00
Hiroshi SHIBATA
84edb8456e
Revert "Rollback to minitest-5.27.0"
This reverts commit 8d097bc472fc66221dee23bb8f9e0dddac16db23.
2025-12-25 11:47:08 +09:00
Godfrey Chan
3c4cda10eb
[DOC] Add back Rust 1.85.0 requirement to NEWS.md (#15728)
* [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>
2025-12-25 09:06:50 +09:00
Max Bernstein
3e82da7232
ZJIT: Don't mark control-flow opcodes as invalidating locals (#15694)
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.
2025-12-24 22:37:25 +00:00
Hiroshi SHIBATA
8d097bc472 Rollback to minitest-5.27.0
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)
```
2025-12-25 06:52:46 +09:00
Hiroshi SHIBATA
26a1a522b7
Revert "Rollback to test-unit 3.7.3"
This reverts commit c17307ac22f37f74786a4f016121c6ee8cc38915.
2025-12-25 05:47:34 +09:00
Soutaro Matsumoto
8caea03213 rbs_skip_tests_windows 2025-12-25 05:46:44 +09:00
Soutaro Matsumoto
b92bc96541 Skip test to avoid NoMemoryError 2025-12-25 05:46:44 +09:00
Soutaro Matsumoto
d0193e9240 Bundle test-unit 3.7.5 2025-12-25 05:46:44 +09:00
Stan Lo
96d876534e Bump RDoc to 7.0.3 2025-12-25 05:45:16 +09:00
NARUSE, Yui
479f8682c8 Remove extra help 2025-12-24 23:52:45 +09:00
NARUSE, Yui
29ffc5d624 Reapply "Extract ruby_api_version_name"
This reverts commit ba2f6972193cdbd7c1e77e26212513e47926b115.

Box already used ruby_api_version_name.
2025-12-24 23:07:35 +09:00
NARUSE, Yui
285e22edc5 Revert "Add link to Ruby options doc in help text"
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
2025-12-24 22:55:44 +09:00
NARUSE, Yui
ba2f697219 Revert "Extract ruby_api_version_name"
This reverts commit 9b576cd6255aba97e5e2f55f4b09f00c7dd0e839.
2025-12-24 22:55:44 +09:00
Nobuyoshi Nakada
8de2622c12
Fix a fragile test
`Dir.mktmpdir` concatenates a random base-36 number separated by "-",
so may generate pathnames containing "-j2".
2025-12-24 22:11:58 +09:00
Yusuke Endoh
f00abcfdc3 Prevent "warning: assigned but unused variable - it" 2025-12-24 21:29:00 +09:00
Yusuke Endoh
17e4f28c27 Remove unintentional return 2025-12-24 21:29:00 +09:00
Yusuke Endoh
2d0d95305c ext/-test-/scheduler/scheduler.c: explicitly ignore the result of write
```
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);
      |     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
```
2025-12-24 21:09:33 +09:00
Nobuyoshi Nakada
df1c9a06ac
Win32: Remove an unused function
Since 50e5c542cc0541fb38e52766d88d87bd8a96b072, `constat_reset` is no
longer used.
2025-12-24 19:49:07 +09:00
Hiroshi SHIBATA
c17307ac22 Rollback to test-unit 3.7.3
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)
```
2025-12-24 19:44:54 +09:00
Hiroshi SHIBATA
6e20e92d0a Disable auto-update of bundled gems 2025-12-24 19:44:54 +09:00
Hiroshi SHIBATA
aaed4ccc64
Restore gem updates that are accidentally deleted 2025-12-24 17:32:39 +09:00
Hiroshi SHIBATA
ca67e72bcd
Added release histories of default/bundled gems from Ruby 3.4.8 2025-12-24 17:26:10 +09:00
Hiroshi SHIBATA
1c07158203
Update to test-unit 3.7.5 at NEWS.md 2025-12-24 16:10:41 +09:00
Hiroshi SHIBATA
422ff27370
Added https://github.com/ruby/net-http/issues/205 to NEWS.md 2025-12-24 16:10:00 +09:00
git
04a6462201 Update bundled gems list as of 2025-12-24 2025-12-24 06:55:30 +00:00
Godfrey Chan
88d6c5aaa8
[DOC] Update ZJIT status in NEWS.md
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.
2025-12-24 15:43:40 +09:00
Satoshi Tagomori
f7b48456eb Box: show the fully qualified URL of the Ruby::Box doc 2025-12-24 15:10:25 +09:00
Nobuyoshi Nakada
352de161ff Remove an extra dot from RUBY_API_VERSION_STR 2025-12-24 14:41:02 +09:00
yui-knk
fc19ce0a01 Lrama v0.7.1 2025-12-24 13:10:51 +08:00
Nobuyoshi Nakada
44693ee329 Fix a possible memory leak in dtoa
Fix GH-15061
2025-12-24 14:05:41 +09:00