Activity
From 06/12/2025 to 06/18/2025
06/18/2025
-
10:58 PM Revision 3290d3d7 (git): ZJIT: Support invokebuiltin opcodes (#13632)
- * `invokebuiltin`
* `invokebuiltin_delegate`
* `invokebuiltin_delegate_leave`
These instructions all call out to a C function, passing EC, self, and
some number of arguments. `invokebuiltin` gets the arguments from the
stack, whereas th... - 06:09 PM Revision c57efbfb (git): Fix `heap-use-after-free` in `free_fast_fallback_getaddrinfo_entry` (#13231)
- This change addresses the following ASAN error:
```
==36597==ERROR: AddressSanitizer: heap-use-after-free on address 0x512000396ba8 at pc 0x7fcad5cbad9f bp 0x7fff19739af0 sp 0x7fff19739ae8
WRITE of size 8 at 0x512000396ba8 thread T0
... - 06:09 PM Revision 584365af (git): Ensure that memory is not freed before calling `free_fast_fallback_getaddrinfo_*` (#12661)
- Ensure that `getaddrinfo_entry` and `getaddrinfo_shared` exist before free them in the main thread.
-
05:47 PM Revision 45ddafb9 (git): Fix use-after-free when resizing exivars (#13637)
- Fix generic_ivar_set_shape_ivptr for table rebuild
[Bug #21438]
Previously GC could trigger a table rebuild of the generic ivar
st_table in the middle of calling the st_update callback. This could
cause entries to be reallocated or rea... -
05:18 PM Revision 521b2fcb (git): Add missing write barrier for hash on iseq
- Found by wbcheck
-
05:18 PM Revision 1bfd6493 (git): Add write barrier to rb_cArray_empty_frozen
- Found by wbcheck
-
05:18 PM Revision d5adf851 (git): Add write barrier to rb_cHash_empty_frozen
- Found by wbcheck
-
05:18 PM Revision 121f967b (git): More write barriers to local_iseq and parent_iseq
- Found by wbcheck
-
05:18 PM Revision 99de3890 (git): Use write barriers when loading catch table
- Found by wbcheck
-
05:18 PM Revision 61230f53 (git): Add missing write barriers to ibf_load
- Found by wbcheck
-
05:18 PM Revision db572489 (git): Fix a missing write barrier to mandatory_only_iseq
- Found by wbcheck
-
05:17 PM Revision 6b3fa235 (git): Add write barrier on tm_from_time->timew
- We want to always use time_set_timew, as timew is 64-bit even on 32-bit
platforms so we need to be careful to both write that size, but still
trigger write barriers if we end up with a heap object. -
05:17 PM Revision 0e2067df (git): Add missing write barrier to time_init_copy
-
05:17 PM Revision 7439f353 (git): Write barrier for zone on time
-
05:08 PM Revision bb0d6296 (git): Add write barrier for hash in obj_traverse_i
- We are inserting directly into the st_table, so we need to issue a write
barrier from the hash. -
05:08 PM Revision f951ce37 (git): Add missing writebarrier on move_leave
- This object was newly allocated on move_enter, so some GC may happen and
it may have been marked by move_leave, so we need to issue an
rb_gc_writebarrier_remember so that any new references are seen afer the
memcpy from the old object. -
05:08 PM Revision 89b3e471 (git): Add write barriers from Ractor::Port to Ractor
- Ractor::Port will mark the ractor, so we must issue a write barrier.
This was detected by wbcheck, but we've also seen it in CI:
verify_internal_consistency_reachable_i: WB miss (O->Y) 0x000071507d8bff80 ractor/port/Ractor::Port ra... -
02:06 PM Bug #21443 (Closed): Backport: Fix heap-use-after-free in free_fast_fallback_getaddrinfo_entry
- https://github.com/ruby/ruby/pull/13652
-
12:40 PM Bug #21443 (Closed): Backport: Fix heap-use-after-free in free_fast_fallback_getaddrinfo_entry
- Please backport the following AddressSanitizer error into Ruby 3.4
https://github.com/ruby/ruby/pull/13231
I did not find a ticket related to the original fix.
Thank you! -
12:53 PM Bug #21444 (Closed): Crash in GC after accessing `object_id` (`obj_free` called for broken object)
- ```rb
require 'bundler/inline'
gemfile do
source 'https://rubygems.org'
gem 'rubocop'
end
require 'objspace'
require 'tmpdir'
3.times { GC.start }
GC.disable
Dir.mktmpdir do |dir|
Dir.chdir(dir) do
File.open... -
11:26 AM Revision aaa956e8 (git): Now irb is a bundled gem and needs rubygems
-
10:08 AM Feature #21442: Make tsort to bundled gems
- https://github.com/ruby/ruby/pull/13649
-
10:07 AM Feature #21442 (Assigned): Make tsort to bundled gems
- In last year, I gave up to make `tsort` to bundled gems because `set` depends `tsort`.
https://github.com/ruby/set/blob/29a253d2259e8d6d9b313dec8418ec5ed0caab08/lib/set.rb#L786
Fortunately, `set` is now core class. So, there is no ... -
08:44 AM Misc #20968: `Array#fetch_values` unexpected method name in stack trace
- I have updated the behavior to (mostly) suppress the display of `<internal:...>` frames in a backtrace. The algorithm works as follows:
* When internal frames appear in a sequence, it retains only one frame -- the one directly called ... -
05:52 AM Misc #20968 (Closed): `Array#fetch_values` unexpected method name in stack trace
- Applied in changeset commit:git|10767283dd0277a1d780790ce6bde67cf2c832a2.
----------
Exclude internal frames from backtrace
This changeset suppresses backtrace locations like
`<internal:array>:211` as much as possible.
Before the patc... -
08:15 AM Revision 4eaa245f (git): Restore ignored test target for mswin
-
07:13 AM Revision 332f83d1 (git): Enabled the released versions of bundled gems that are working fine with Ruby HEAD
- 07:06 AM Revision 13a2b9fa (git): Update bundled gems list as of 2025-06-18
-
06:39 AM Bug #21210: IO::Buffer gets invalidated on GC compaction
- I think @alanwu means the mutable buffer path (IO::Buffer.for w/ block) uses rb_str_locktmp to pin the String's malloc'ed content memory (not RString), while the immutable buffer path (IO::Buffer.for w/o block) utilizes CoW to obtain a f...
-
05:51 AM Revision 2606a36a (git): Update bundled version of debug and use the dev version of irb
-
05:51 AM Revision b7cb29b6 (git): Add a test for the previous commit
-
05:51 AM Revision 10767283 (git): Exclude internal frames from backtrace
- This changeset suppresses backtrace locations like
`<internal:array>:211` as much as possible.
Before the patch:
```
$ ruby -e '[1].fetch_values(42)'
<internal:array>:211:in 'Array#fetch': index 42 outside of array bounds: -1...1 (Index... -
05:51 AM Revision ca10c521 (git): refactor: rename bt_update_cfunc_loc to bt_backpatch_loc
- In preparation for using it to update not only cfunc frames but also
internal frames, the function (and related variable names) are chagned.
I felt that the word "backpatch" is more appropriate than the more
general verb "update" here. -
04:46 AM Bug #21312 (Closed): ruby 3.5-dev installs a gemspec for rdoc that misses dependencies
- Applied in changeset commit:git|ecf1746fa4b899692514e68719227f04f9d6c1cc.
----------
Use the original gemspec from release package of RDoc
[Bug #21312]
https://bugs.ruby-lang.org/issues/21312
https://github.com/ruby/rdoc/pull/1379 -
04:45 AM Revision f0d32ee8 (git): net-imap and irb are not working with dev version of RDoc
- Because they are required markdown.rb provided by release package.
-
04:45 AM Revision ecf1746f (git): Use the original gemspec from release package of RDoc
- [Bug #21312]
https://bugs.ruby-lang.org/issues/21312
https://github.com/ruby/rdoc/pull/1379
06/17/2025
-
10:51 PM Revision 3cfd71e7 (git): Fix minor typos in comments, specs, and docs
- Just a bit of minor cleanup
Signed-off-by: Tim Smith <tsmith84@gmail.com> -
10:33 PM Revision c6a66454 (git): Fix early write barrier rb_marshal_define_compat
- This write barrier occurred before the entry was added to the table, so
if GC occurred when inserting into the table, the write could be missed. -
10:32 PM Revision a7dc515c (git): Fix too early writebarrier in tally_up
- After returning from the callback in st_update is the point that the
hash table may be resized, which could trigger a GC and mark the table
being used for the tally.
RUBY_GC_LIBRARY=wbcheck WBCHECK_VERIFY_AFTER_WB=1 ./miniruby -e '(... -
10:03 PM Bug #21441 (Closed): SEGV during thread cleanup if profiler calls thread_profiles_frames at wrong time - Applied in changeset commit:git|e3ec101cc21613550ef87b7bd8432a69c7e639de.
----------
thread_cleanup: set CFP to NULL before clearing ec's stack
We clear the CFP first so that if a sampling profiler interrupts the current thread during ... -
08:58 PM Bug #21441: SEGV during thread cleanup if profiler calls thread_profiles_frames at wrong time
- I opened a PR [here](https://github.com/ruby/ruby/pull/13643).
This may need to be backported. -
08:45 PM Bug #21441 (Closed): SEGV during thread cleanup if profiler calls thread_profiles_frames at wrong time
- During thread cleanup, if a ruby sampling profiler calls `thread_profile_frames` at just the wrong time, the ec's stack is cleared but the CFP still exists on the EC, so `thread_profile_frames` assumes it can walk the stack and crashes.
... - 10:03 PM Revision e3ec101c (git): thread_cleanup: set CFP to NULL before clearing ec's stack
- We clear the CFP first so that if a sampling profiler interrupts the current thread during `rb_ec_set_vm_stack`,
`thread_profile_frames` returns early instead of trying to walk the stack that's no longer set on the ec.
The early return ... -
04:46 PM Revision b0662602 (git): Follow up testunit
- * Update method names.
* Sort shuffled tests by names. -
04:46 PM Revision 1a527929 (git): Revert "Temporary pend unknown behavior of parallel tests"
- This reverts commit 980f61935f6e8331e0908dc963e60fb727ab4d8c, which
seems no longer needed. -
02:41 PM Bug #20998: rb_str_locktmp() changes flags of frozen strings and string literals - ______________________________________________
-
07:16 AM Bug #20998: rb_str_locktmp() changes flags of frozen strings and string literals
- @hanazuki Thanks for the link, I wish I found that earlier. It confirms that it was already broken which is the same conclusion I came to.
hanazuki (Kasumi Hanazuki) wrote in #note-20:
> FYI: IO::Buffer is now broken (by a recent change... -
02:06 PM Revision c99cb62d (git): Fix up tool/auto-style.rb
- Do not clear the commit-wide flags per file.
-
01:28 PM Revision 8faa3232 (git): Add missing write barriers in `rb_imemo_fields_clone`.
-
01:28 PM Revision cd9f447b (git): Refactor generic fields to use `T_IMEMO/fields` objects.
- Followup: https://github.com/ruby/ruby/pull/13589
This simplify a lot of things, as we no longer need to manually
manage the memory, we can use the Read-Copy-Update pattern and
avoid numerous race conditions.
Co-Authored-By: Étienne Ba... -
01:28 PM Revision 164486a9 (git): Refactor `rb_imemo_fields_new` to not assume T_CLASS
-
01:28 PM Revision fb68721f (git): Rename `imemo_class_fields` -> `imemo_fields`
-
01:28 PM Revision 4cb0205f (git): Handle false positives in tool/auto-style.rb
-
11:51 AM Revision 0933400f (git): ZJIT: Add codegen (and FrameState) for GetConstPath
- Issue a call to rb_vm_opt_getconstant_path() like the interpreter, but
since that allocates the IC, we need to save the PC before calling. Add
FrameState to GetConstPath to get access to the PC. -
11:35 AM Revision 01ff17fa (git): ZJIT: Parse opt freeze insns to HIR
- * `opt_hash_freeze`
* `opt_ary_freeze`
* `opt_str_freeze`
* `opt_str_uminus`
Similar to `opt_neq`, but there are no args for `freeze`
Co-authored-by: ywenc <ywenc@github.com>
Co-authored-by: Max Bernstein <max@bernsteinbear.com> -
11:18 AM Revision 9e5c74f2 (git): [ruby/prism] [DOC] Fix a typo in comment
- ruby/ruby#13636
https://github.com/ruby/prism/commit/e13d4f19db
Co-Authored-By: Tim Smith <tsmith84@gmail.com> -
11:00 AM Revision 9e839d3c (git): Optimize `benchmark/vm_ivar_of_class`
- ```
compare-ruby: ruby 3.5.0dev (2025-06-17T08:45:40Z master e9d35671d2) +PRISM [arm64-darwin24]
last_commit=[ruby/json] Fix a typo
built-ruby: ruby 3.5.0dev (2025-06-17T09:27:05Z opt-getivar-for-cl.. ed1d7cd778) +PRISM [arm64-darwin24]
... -
10:05 AM Bug #20452: Ruby 3.3 on Alpine Linux results in a relatively shallow SystemStackError exception
- Halfway on the way to 3.5 now. I want to help out if I am able to, but right now I'm not sure what the holdup is.
-
09:41 AM Revision 9647dca1 (git): [ruby/tempfile] [DOC] Fix a typo
- ruby/ruby#13636
https://github.com/ruby/tempfile/commit/366d9ccb8f
Co-Authored-By: Tim Smith <tsmith84@gmail.com> -
08:45 AM Revision e9d35671 (git): [ruby/json] Fix a typo
- ruby/ruby#13636
https://github.com/ruby/json/commit/6fc2c4b6ab
Co-Authored-By: Tim Smith <tsmith84@gmail.com> -
07:53 AM Bug #21438 (Closed): use-after-free when resizing exivars
- The remaining issue was fixed in 055fef00a1c27fdc8293114dc134ca7910b1dc79.
Backport PRs:
- 3.4: https://github.com/ruby/ruby/pull/13637
- 3.3: https://github.com/ruby/ruby/pull/13638
Note that the bug while possible is quit... -
07:30 AM Revision 89926891 (git): Adjust indent [ci]
-
07:10 AM Bug #21210: IO::Buffer gets invalidated on GC compaction
- alanwu (Alan Wu) wrote in #note-5:
> Looks like the mutable string buffer code paths pin using rb\_str\_locktmp().
Does `rb_str_locktmp()` pin? I couldn't see anything like that from the usage of the flag it sets. -
05:57 AM Bug #21210 (Closed): IO::Buffer gets invalidated on GC compaction
- Applied in changeset commit:git|8aac19d5987150cf5c45fee73c7a949ca472f488.
----------
io_buffer: Reimplement dcompact for IO::Buffer
The `source` field in IO::Buffer can have a String or an IO::Buffer
object, if not nil.
- When the `so... -
06:09 AM Revision a3f2f7b7 (git): lewagon/wait-on-check-action didn't need bot token
-
06:09 AM Revision 4e2db1ff (git): [rubygems/rubygems] Etc exemption on Windows is no longer necessary
- https://github.com/rubygems/rubygems/commit/228f59e3ab
-
06:09 AM Revision 89ce782f (git): [rubygems/rubygems] Reword a couple of specs to further clarify them
- https://github.com/rubygems/rubygems/commit/e28b5e306f
-
06:09 AM Revision 632bf3b5 (git): [rubygems/rubygems] Migrate mirror probe specs to use the compact index API
- Could potentially fix some flakies we're using and make the specs more
"modern" and simplifies them because less fallbacks are involved.
https://github.com/rubygems/rubygems/commit/30da9a1a93 -
06:09 AM Revision 3319d3d7 (git): [rubygems/rubygems] Consistently use instance variables directly
- I don't think the indirection improve things.
https://github.com/rubygems/rubygems/commit/b408b28844 -
06:09 AM Revision 0a62e82a (git): [rubygems/rubygems] Fix `gem install` sometimes compiling the wrong source files
- If a previous copy of a gem is already installed, RubyGems will not
reinstall the gem but only recompile its extensions. This seems like a
good idea, but only if the gem is being installed from the registry.
If we are installing a local... -
06:09 AM Revision 0c2f0ffa (git): [rubygems/rubygems] Refactor some logic to create extconf files for tests
- https://github.com/rubygems/rubygems/commit/9a859078ab
-
06:09 AM Revision fadcee3b (git): [rubygems/rubygems] Use `Dir.chdir` with a block
- I don't see any warnings.
https://github.com/rubygems/rubygems/commit/395df777a2 -
06:09 AM Revision 459f265b (git): [rubygems/rubygems] Cleanup dead code, RubyGems 3.3 is no longer supported
- https://github.com/rubygems/rubygems/commit/945a29a477
-
06:01 AM Revision 055fef00 (git): Free after insert in generic_ivar_set_shape_fields
- Previously we were performing a realloc and then inserting the new value
into the table. If the table was flagged as requiring a rebuild, this
could trigger GC work and marking within that GC could access the fields
freed by realloc. -
05:57 AM Revision 8aac19d5 (git): io_buffer: Reimplement dcompact for IO::Buffer
- The `source` field in IO::Buffer can have a String or an IO::Buffer
object, if not nil.
- When the `source` is a String object. The `base` field points to the
memory location of the String content, which can be embedded in
RSTRING, ... -
05:57 AM Revision 4cc58c3a (git): Revert "Mark rb_io_buffer_type references declaratively"
- This reverts commit 6012145299cfa4ab561360c78710c7f2941a7e9d.
-
05:52 AM Revision 67366413 (git): [ruby/win32-registry] Minor readme improvements and typo fixes
- - Put shell commands in code blocks so they can easily be copied from
the GitHub UI directly
- Fix a few typos
- Fix a dead link to MSDN
Signed-off-by: Tim Smith <tsmith84@gmail.com>
https://github.com/ruby/win32-registry/commit/61a4... -
03:30 AM Revision a60bf9e6 (git): * adjust indent
-
03:30 AM Revision c09619d9 (git): Auto-style indent
-
03:20 AM Revision 21c7131d (git): Run git without shell
-
03:20 AM Revision 9255db4b (git): Run auto-style only when pull-request
- 01:07 AM Revision 50c6bd47 (git): Update vm->self location and mark it in vm.c for consistency
06/16/2025
-
11:21 PM Bug #20998: rb_str_locktmp() changes flags of frozen strings and string literals
- FYI: IO::Buffer is now broken (by a recent change) because the embedded Strings are not pinned, and I'm proposing a fix at #21210
-
09:00 PM Bug #20998: rb_str_locktmp() changes flags of frozen strings and string literals
- ioquatix (Samuel Williams) wrote in #note-16:
> My usage of `rb_str_locktmp` isn't about mutation, it's about making sure the pointer doesn't change. Could compacting GC cause embedded frozen strings to be moved?
rb_str_locktmp() doe... -
08:59 PM Bug #20998 (Closed): rb_str_locktmp() changes flags of frozen strings and string literals
- Applied in changeset commit:git|83fb07fb2c97b9922450979fa4a56f43324317a9.
----------
[Bug #20998] Check if the string is frozen in rb_str_locktmp() & rb_str_unlocktmp() -
11:20 PM Revision b1410c1c (git): ZJIT: Add codegen for StringCopy
- Prior to this commit we compiled `putstring` and `putchilledstring` to
`StringCopy`, but then failed to compile past HIR.
This commit adds codegen for `StringCopy` to call `rb_ec_str_ressurrect`
as the VM does for these instructions. -
08:59 PM Revision 2956573b (git): Add test for `IO::Buffer.for(frozen_string) {}` and omit rb_str_{,un}locktmp in that case
-
08:59 PM Revision 83fb07fb (git): [Bug #20998] Check if the string is frozen in rb_str_locktmp() & rb_str_unlocktmp()
- 07:24 PM Revision cce4bfdc (git): ZJIT: Add support for putspecialobject (#13565)
- * ZJIT: Add support for putspecialobject
* Address feedback
* Update tests
* Adjust the indentation of a Ruby test
---------
Co-authored-by: Takashi Kokubun <takashikkbn@gmail.com> -
10:20 AM Revision 260ac23a (git): Use `success` option to check if the process failed
-
10:18 AM Revision f0371efb (git): Suppress stderr output in `TestRubyOptions#assert_segv`
- It is checked against the given `list`, do not print the same output
twice. -
10:16 AM Revision 85e61eac (git): Use the message given to `TestRubyOptions#assert_segv`
-
07:16 AM Bug #21438 (Open): use-after-free when resizing exivars
- Reopening because the fix we merged need some more work:
```
ruby(rb_vm_bugreport) ../src/vm_dump.c:1175
ruby(rb_bug_for_fatal_signal+0xf5) [0x55800a5c2d45] ../src/error.c:1130
ruby(sigsegv+0x46) [0x55800a31d176] ../src/signal.c:93... -
05:33 AM Revision c59f66b6 (git): CI: Fix spec_opts
-
05:18 AM Revision 311aa0df (git): Launchable: Terminate Launchable CLI process quickly by sending singa… (#13622)
- Launchable: Terminate Launchable CLI process quickly by sending singals to a process group
Sometimes, the timeout errors occurred in Compilations workflow, this is because Launchable CLI process was not terminated correctly. To address ... -
01:03 AM Revision ddb412f6 (git): [rubygems/rubygems] Fix redefinition warnings when using modern RubyGems with old Bundler
- https://github.com/rubygems/rubygems/commit/ce7e8e92ca
06/15/2025
-
04:24 PM Bug #21436 (Closed): Date#ajd returns incorrect positive values due to integer overflow for large negative years - Applied in changeset commit:git|022c18b60d2245980abcdd7b5195eebca73b8809.
----------
[ruby/date] [Bug #21436] check for fixnum lower bound in `m_ajd`
Issue - https://bugs.ruby-lang.org/issues/21436
Apparently, the lower bound check is... - 04:12 PM Revision 022c18b6 (git): [ruby/date] [Bug #21436] check for fixnum lower bound in `m_ajd`
- Issue - https://bugs.ruby-lang.org/issues/21436
Apparently, the lower bound check is missing, which results in overflow & wrapping later on in RB_INT2FIX
Signed-off-by: Dmitry Dygalo <dmitry.dygalo@workato.com>
https://github.com/ruby... -
04:11 PM Bug #21437 (Closed): Date#hash may return different values for equal dates with large years - Applied in changeset commit:git|c1877d431e76f4a782d51602fa8487e98d302956.
----------
[ruby/date] [Bug #21437] Date#hash for large years
Addresses https://bugs.ruby-lang.org/issues/21437
Signed-off-by: Dmitry Dygalo <dmitry.dygalo@work... - 04:11 PM Revision c1877d43 (git): [ruby/date] [Bug #21437] Date#hash for large years
- Addresses https://bugs.ruby-lang.org/issues/21437
Signed-off-by: Dmitry Dygalo <dmitry.dygalo@workato.com>
https://github.com/ruby/date/commit/31f07bc576 -
02:59 PM Revision 9a840fd2 (git): Relax the criteria of flaky weak_references count test
-
02:59 PM Revision a259ce40 (git): Simplify weak_references count test initialization
- Using an enumerator does not resolve the intermittent failures: 100+
failures in 10,000 iterations. -
02:59 PM Revision 04925c66 (git): Add `--keep-repeating` option
- It directs the program to continue repeating the tests the specified
number of times, even if any tests fail along the way. -
01:37 PM Revision d60144a4 (git): Implement COLON3 NODE locations
-
01:37 PM Revision c584790b (git): Implement COLON2 NODE locations
-
01:35 PM Revision 2d96400c (git): Fix typo in error message for shape_id verification
-
01:35 PM Revision 251cfdfe (git): Fix typo in rb_bug message for unreachable code
-
01:34 PM Revision ef66aef7 (git): Fix typo in NEWS.md
-
11:58 AM Revision b670a04a (git): Fix a missing double quote
-
11:24 AM Revision 36a04de9 (git): Dump with debugger before killing stuck worker
-
04:41 AM Revision c88c2319 (git): Skip test_exivar_resize_with_compaction_stress on s390x
-
04:18 AM Bug #21380: Use-After-Free in String#split with In-Block String Modification
- ruby_3_3 commit:8908cb07829628115f7455508c2d5885ac99c939 merged revision(s) commit:fa85d23ff4a02985ebfe0716b0ff768f5b4fe13d.
-
04:16 AM Bug #21356: Error when accessing local variable named "default" with Binding#local_variable_get
- The numbered parameter checks in Binding#local_variable_get was introduced at commit:993fd96ce6bb763e08207bb3d53824d5d46d07a4 ([Bug #20965], [Bug #21049]). The changeset was not backported into ruby_3_3. I decide to mark this ticket "DON...
-
04:00 AM Bug #20009: Marshal.load raises exception when load dumped class include non-ASCII
- In my understanding, with commit:097d742a1ed53afb91e83aef01365d68b763357b Marshal.load could cause error with bytes stream which was dumped from older version ruby. If this is right, I don't want to backport the change to stable branch.
-
03:51 AM Revision 8908cb07 (git): merge revision(s) fa85d23ff4a02985ebfe0716b0ff768f5b4fe13d: [Backport #21380]
- [Bug #21380] Prohibit modification in String#split block
Reported at https://hackerone.com/reports/3163876 -
03:01 AM Revision f5ada7d1 (git): Skip the optional capi digest specs if fiddle is not installed
- Should fix a failure on the OpenBSD RubyCI machine.
-
12:53 AM Bug #20998: rb_str_locktmp() changes flags of frozen strings and string literals
- My usage of `rb_str_locktmp` isn't about mutation, it's about making sure the pointer doesn't change. Could compacting GC cause embedded frozen strings to be moved?
-
12:02 AM Feature #21435: Kernel#then_try as a conditional #then
- `optional` -> `then_try`
06/14/2025
-
02:39 PM Feature #21435: Kernel#then_try as a conditional #then
- @Alexander.Senko I don't think my opinion weights much here, but here it is, nevertheless.
When writing in "chaining" style (which I know is not everybody's favorite), "do this transformation/next step conditionally" is indeed a frequ... -
11:50 AM Bug #20998: rb_str_locktmp() changes flags of frozen strings and string literals
- PR at https://github.com/ruby/ruby/pull/13615
-
08:44 AM Bug #21255: Can't build Ruby with Windows SDK 10.0.26100
- ruby_3_3 commit:a205407e165e4570b8b6d6e4b7a019b51962ecba merged revision(s) commit:72bda0f981c7136f50254c433bbfb97a953f634b.
-
08:43 AM Revision a205407e (git): merge revision(s) 72bda0f981c7136f50254c433bbfb97a953f634b: [Backport #21255]
- [Bug #21255] Win32: Do not export `__declspec(selectany)` symbols
```
x64-vcruntime140-ruby350.def : error LNK2001: unresolved external symbol Avx2WmemEnabledWeakValue
``` -
08:41 AM Bug #21283: Some tests of TestMkmfConvertible is failing with VS2022 17.14.0 preview 4.0
- ruby_3_3 commit:dc88822c3eabbd3f5ac080b1ff1059b1f0066bd2 merged revision(s) commit:e1adb6cb15129a54df0c55a337e98b92b2a55e3f.
-
08:41 AM Revision dc88822c (git): merge revision(s) e1adb6cb15129a54df0c55a337e98b92b2a55e3f: [Backport #21283]
- Win: Suppress false warnings from Visual C 17.14.1
https://developercommunity.visualstudio.com/t/warning-C5287:-operands-are-different-e/10877942?
It is not able to silence "operands are different enum types"
wa... -
06:53 AM Revision 32737f8a (git): Adjust indent [ci skip]
-
06:29 AM Bug #21438 (Closed): use-after-free when resizing exivars
- Applied in changeset commit:git|5342d9130beb44f9aa1dddbb7f6276bf01c7404f.
----------
Fix generic_ivar_set_shape_field for table rebuild
[Bug #21438]
Previously GC could trigger a table rebuild of the generic fields
st_table in the mid... -
06:29 AM Revision 39697ffd (git): Remove fields_tbl in gen_fields_lookup_ensure_size
-
06:29 AM Revision 5342d913 (git): Fix generic_ivar_set_shape_field for table rebuild
- [Bug #21438]
Previously GC could trigger a table rebuild of the generic fields
st_table in the middle of calling the st_update callback. This could
cause entries to be reallocated or rearranged and the update to be for
the wrong entry.
... -
05:55 AM Revision 74cdf872 (git): Remove test_object_id_race_free_with_stress_compact
- This test was written for another implementation of `#object_id`
which had complex interations with GC, that's not the case of
the implementation that was actually merged. - 03:32 AM Revision 68625a23 (git): Fix blocking operation cancellation. (#13614)
- Expose `rb_thread_resolve_unblock_function` internally.
-
03:14 AM Bug #21340: Bump autoconf version to properly handle C23 bool/stdbool defines
- ruby_3_3 commit:5de0c228a34dc919b663b547f933fb276333fdce merged revision(s) commit:2297afda7ff3926c51fea700dfbf0f0eb4fea1e5.
-
02:41 AM Revision 5de0c228 (git): merge revision(s) 2297afda7ff3926c51fea700dfbf0f0eb4fea1e5: [Backport #21340]
- Include stdbool.h without checking with autoconf
As reported in <https://bugs.ruby-lang.org/issues/21340>, older autoconf
have an AC_HEADER_STDBOOL that's incompatible with C23. Autoconf 2.72
fixed the macro, but... -
02:39 AM Bug #21354: Symbol#to_proc is not ractor safe
- ruby_3_3 commit:d5c8fd2043f4425c3fe2a87558dfbd80ebff9911 merged revision(s) commit:f6cbf499bc98b851034fffb49fcbb59d495f6f7b.
-
02:39 AM Revision d5c8fd20 (git): merge revision(s) f6cbf499bc98b851034fffb49fcbb59d495f6f7b: [Backport #21354]
- Fix Symbol#to_proc (rb_sym_to_proc) to be ractor safe
In non-main ractors, don't use `sym_proc_cache`. It is not thread-safe
to add to this array without a lock and also it leaks procs from one
ractor to another.... -
02:04 AM Bug #21048: [Prism] rescue in modifier form with condition behaves differently
- Backporting c2908613368b2ae404d094a15df61d830fc46dc9 depends on many changesets about prism in ruby_3_3. Please make a backport pull request.
- 12:54 AM Revision c45c600e (git): Add `open_timeout` as an overall timeout option for `Socket.tcp` (#13368)
- * Add `open_timeout` as an overall timeout option for `Socket.tcp`
[Background]
Currently, `TCPSocket.new` and `Socket.tcp` accept two kind of timeout options:
- `resolv_timeout`, which controls the timeout for DNS resolution
- `connect...
06/13/2025
-
09:50 PM Revision 15084fbc (git): Get rid of FL_EXIVAR
- Now that the shape_id gives us all the same information, it's no
longer needed. -
09:50 PM Revision 6dbe24fe (git): Use the `shape_id` rather than `FL_EXIVAR`
- We still keep setting `FL_EXIVAR` so that `rb_shape_verify_consistency`
can detect discrepancies. -
09:50 PM Revision b51078f8 (git): Enforce consistency between shape_id and FL_EXIVAR
- The FL_EXIVAR is a bit redundant with the shape_id.
Now that the `shape_id` is embedded in all objects on all archs,
we can cheaply check if an object has any fields with a simple
bitmask. -
08:24 PM Revision f2d7c6af (git): Suppress unused-variable warning
-
07:45 PM Revision 39569da4 (git): Work around CI failures coming from Launchable
- https://github.com/ruby/ruby/actions/runs/15640729145/job/44067161266
-
07:40 PM Revision 69148a87 (git): ZJIT: Partially enable btest on CI (#13613)
-
05:46 PM Revision a99d941c (git): Add SHAPE_ID_HAS_IVAR_MASK for quick ivar check
- This allow checking if an object has ivars with just a shape_id
mask. -
05:46 PM Revision fb0dbbc0 (git): [ruby/date] d_lite_marshal_load: copy ivars in the right order
- https://github.com/ruby/date/commit/dbf4e957dc
-
05:40 PM Revision 99a72df1 (git): [ruby/date] Remove references to FL_EXIVAR
- This flag isn't really meant to be public, it's an implementation
detail of Ruby.
And checking it before calling `rb_copy_generic_ivar` only save
a function call.
https://github.com/ruby/date/commit/8175252653 -
05:29 PM Feature #21346: Introduce `String#ensure_suffix`
- I think `with_suffix` would be a bit clearer for the implemented semantics.
-
05:23 PM Misc #21385: Namespace: Suggesting a rename
- hsbt (Hiroshi SHIBATA) wrote in #note-19:
> ClassLoader (joke)
I'm not sure how I missed this but indeed this feature seems very much like Java's ClassLoader,
i.e., a way to load files/"features"/modules/classes again in their own i... - 04:28 PM Revision 4a2b53ae (git): * remove trailing spaces. [ci skip]
-
04:27 PM Revision e22fc73c (git): Fix a race condition in object_id for shareable objects
- If an object is shareable and has no capacity left, it isn't
safe to store the object ID in fields as it requires an object
resize which can't be done unless all field reads are synchronized.
In this very specific case we create the obj... -
03:54 PM Revision 0674f7df (git): ZJIT: Only write LIR output of HIR instructions with output
-
03:54 PM Revision f208e017 (git): ZJIT: Add codegen for SideExit
-
03:13 PM Revision 97ea756e (git): test/ruby/test_ractor.rb: avoid outputting anything
-
03:13 PM Revision 545e99da (git): mmtk: Get rid of unused reference to FL_EXIVAR
-
12:09 PM Revision 1d11e1be (git): Suppress unused-variable warning
-
10:48 AM Revision a66d823c (git): CI: Fix launchable timeout
- `setup_launchable` needs to run the current shell, not in a subshell.
-
10:35 AM Revision 583ce06c (git): Normalize subseconds using `wideint_t` instead of `time_t`
-
10:35 AM Revision b8de3cfb (git): Conversion is needed between `WIDEVALUE` and `VALUE`
-
10:35 AM Revision c7f5ae98 (git): The device numbers in `struct statx` may be larger than `dev_t`
- `dev_t` is already 64-bit in glibc, but on some platforms like Alpine
Linux and Android NDK, `makedev` is defined as more than 32-bit (
promoting to `unsigned long long` then left-shifting by 32bit), while
`dev_t` is still 32-bit. -
10:03 AM Revision 071aa02a (git): shape.c: cleanup unused IDs
- id_frozen and id_t_object are no longer used.
id_object_id no longer need to be exposed. -
08:08 AM Revision dd4c5acc (git): vm_callinfo.h: Stick to using user flags
- For some unclear reasons VM_CALLCACHE_UNMARKABLE
and VM_CALLCACHE_UNMARKABLE used global flags rather than the
available IMEMO_FL_USER flags. -
06:16 AM Bug #21440 (Closed): Cannot create instances of frozen Data subclasses
- Applied in changeset commit:git|2e7e78cd590d20aa9d41422e96302f3edd73f623.
----------
[Bug #21440] Stop caching member list in frozen Data/Struct class -
05:25 AM Bug #21440: Cannot create instances of frozen Data subclasses
- Also `Class.new(Struct.new(:a)).freeze.new`.
-
03:35 AM Bug #21440 (Closed): Cannot create instances of frozen Data subclasses
- This fails since Data was added in Ruby 3.2:
```ruby
Class.new(Data.define(:a)).freeze.new
# can't modify frozen #<Class:#<Class:0x000079cf41253160>>: #<Class:0x000079cf41253160> (FrozenError)
```
Note that the error occurs even... -
05:22 AM Revision 2e7e78cd (git): [Bug #21440] Stop caching member list in frozen Data/Struct class
-
03:55 AM Revision 64c421db (git): [rubygems/rubygems] Surpressing warning for CGI library of Ruby 3.5+
- ```
❯ bin/rspec ./spec/bundler/friendly_errors_spec.rb
/Users/hsbt/Documents/github.com/rubygems/rubygems/bundler/spec/bundler/friendly_errors_spec.rb:5: warning: CGI library is removed from Ruby 3.5. Please use cgi/escape instead for CG... -
03:55 AM Revision 22a7f6b6 (git): [rubygems/rubygems] Recognize JRuby loaded from a classloader, not just any JAR
- Such is the case if you embed JRuby into an application dynamically (such
as via OSGi). From my test environment:
```
irb(main):006:0> $LOADED_FEATURES.grep(/cli.rb/)
=> ["uri:classloader:/META-INF/jruby.home/lib/ruby/stdlib/bundler/cli... -
03:55 AM Revision 73532ecf (git): [rubygems/rubygems] Update bundled tls certs
- By running tool/update_bundled_ca_certificates.rb
Signed-off-by: Samuel Giddins <segiddins@segiddins.me>
https://github.com/rubygems/rubygems/commit/54f5278450 -
02:14 AM Revision 7cfdcde0 (git): Expect aligned pointer for the atomic operations
-
12:18 AM Revision 7fa3e1a1 (git): ZJIT: Write a callee frame on JIT-to-JIT calls (#13579)
- Co-authored-by: Max Bernstein <tekknolagi@gmail.com>
06/12/2025
-
09:03 PM Bug #21090 (Closed): SEGV from require in Thread in Ractor
- Applied in changeset commit:git|b28f3443122c4e5461877d704618c752e56ca8b0.
----------
Use a T_DATA for cross_ractor_require
[Bug #21090]
The struct was previously allocated on the stack, which could be freed
if the Thread is terminated... -
08:13 PM Revision ef9301a6 (git): Ensure crr->feature is an fstring
-
08:13 PM Revision b28f3443 (git): Use a T_DATA for cross_ractor_require
- [Bug #21090]
The struct was previously allocated on the stack, which could be freed
if the Thread is terminated. Moving this to a T_DATA on the heap should
mean this is no longer an issue.
1000.times { Ractor.new { th = Thread.new { re... -
08:13 PM Revision a34fcf40 (git): Add a new_thread flag to rb_interrupt_exec
- Previously rb_ractor_interrupt_exec would use an intermediate function
to create a new thread with the actual target function, replacing the
data being passed in with a piece of malloc memory holding the "next"
function and the original ... - 08:13 PM Revision 97994c77 (git): Only use regex internal reg_cache when in main ractor
- Using this `reg_cache` is racy across ractors, so don't use it when in a
ractor. Also, its use across ractors can cause a regular expression created
in 1 ractor to be used in another ractor (an isolation bug). -
07:23 PM Revision 6e36841d (git): Free rb_native_thread memory at fork
- We never freed any resources of rb_native_thread at fork because it would
cause it to hang. This is because it called rb_native_cond_destroy for
condition variables. We can't call rb_native_cond_destroy here because
according to the spe... -
03:33 PM Bug #21439 (Closed): Crash with PM_SPLAT_NODE compiler error (Prism) - Applied in changeset commit:git|5ec9a392cdf7f971221dc073dd466bce877d8acb.
----------
[Bug #21439] Fix `PM_SPLAT_NODE` compilation error in for loops (#13597)
[Bug #21439] Fix PM_SPLAT_NODE compilation error in for loops
This commit fi... -
02:32 PM Bug #21439: Crash with PM_SPLAT_NODE compiler error (Prism)
- I have a PR for it here: https://github.com/ruby/ruby/pull/13597
- 03:33 PM Revision 5ec9a392 (git): [Bug #21439] Fix `PM_SPLAT_NODE` compilation error in for loops (#13597)
- [Bug #21439] Fix PM_SPLAT_NODE compilation error in for loops
This commit fixes a crash that occurred when using splat nodes (*) as
the index variable in for loops. The error "Unexpected node type for
index in for node: PM_SPLAT_NODE" w... -
03:08 PM Revision 7c22330c (git): Allocate `rb_shape_tree` statically
- There is no point allocating it during init, it adds
a useless indirection. -
03:08 PM Revision de4b9103 (git): Get rid of GET_SHAPE_TREE()
- It's a useless indirection.
-
03:08 PM Revision e070d935 (git): Get rid of `rb_shape_lookup`
-
03:08 PM Revision 0292b702 (git): shape.h: make RSHAPE static inline
- Since the shape_tree_ptr is `extern` it should be possible to
fully inline `RSHAPE`. -
02:02 PM Revision d55c463d (git): Fix memory leak of Ractor basket when sending to closed Ractor
- The following script leaks memory:
r = Ractor.new { }
r.value
10.times do
100_000.times do
r.send(123)
rescue Ractor::ClosedError
end
puts `ps -o rss= -p #{$$}`
end
Before:
18508
... -
12:55 PM Revision a74c3852 (git): Make setting and accessing class ivars lock-free
- Now that class fields have been deletated to a T_IMEMO/class_fields
when we're in multi-ractor mode, we can read and write class instance
variable in an atomic way using Read-Copy-Update (RCU).
Note when in multi-ractor mode, we always ... -
11:43 AM Revision 8b5ac5ab (git): Fix class instance variable inside namespaces
- Now that classes fields are delegated to an object with its own
shape_id, we no longer need to mark all classes as TOO_COMPLEX. - 07:30 AM Revision 81209719 (git): Move more NilClass methods to ruby
- ```
$ make benchmark ITEM=nilclass COMPARE_RUBY="/opt/rubies/ruby-master/bin/ruby"
/opt/rubies/3.4.2/bin/ruby --disable=gems -rrubygems -I../benchmark/lib ../benchmark/benchmark-driver/exe/benchmark-driver \
--executa... -
06:44 AM Feature #21435: Kernel#then_try as a conditional #then
- @zverok, what do you think about it? May `#then` get a conditional counterpart?
-
05:58 AM Revision 3abdd424 (git): Turn `rb_classext_t.fields` into a T_IMEMO/class_fields
- This behave almost exactly as a T_OBJECT, the layout is entirely
compatible.
This aims to solve two problems.
First, it solves the problem of namspaced classes having
a single `shape_id`. Now each namespaced classext
has an object that... -
05:28 AM Revision 166ff187 (git): [rubygems/rubygems] Removed ccache or sccache from args of Rust builder
- ```
" = note: some arguments are omitted. use `--verbose` to show all linker arguments\n" +
" = note: error: unexpected argument '-W' found\n" +
" \n" +
" tip: to pass '-W' as a value, use '-- -W'\n" +
" ... -
01:34 AM Revision 4585ccd9 (git): [ruby/strscan] Update extconf.rb
- (https://github.com/ruby/strscan/pull/158)
- `have_func` includes "ruby.h" by default.
- include "ruby/re.h" where `rb_reg_onig_match` is declared.
https://github.com/ruby/strscan/commit/1ac96f47e9 -
01:11 AM Revision 7854b71e (git): Supress a few more tsan errors
-
01:11 AM Revision f91c8083 (git): gdbinit: fix printing of T_DATA