Project

General

Profile

Activity

From 04/15/2026 to 04/21/2026

Today

02:01 PM Feature #21998: Add {Method,UnboundMethod,Proc}#source_range
I discussed this in detail with @mame and @matz.
@mame (to reply here too) what I meant is using Prism with the `Method|UnboundMethod|Proc` and the `source_range` to find the Prism node, and then compute the max end offset by walking th...
Eregon (Benoit Daloze)
01:54 PM Feature #21795: Methods for retrieving ASTs
I discussed this in detail with @mame and @matz.
One observation from me is the addition of `Ruby::Node` (which duplicates a very large part of the Prism Ruby API, >100 classes) is mostly motivated from using `node_id`, because reusin...
Eregon (Benoit Daloze)
01:42 PM Feature #21962: Add deep_freeze for recursive freezing
At the meeting @matz said he was positive that `deep_freeze` is "freeze but recursively".
More precisely:
* `String.deep_freeze` => freezes `String` like `String.freeze` but not anything further like `Object` or so.
(This might unex...
Eregon (Benoit Daloze)
01:11 PM Misc #21922: Permissions for committers for ex-default/bundled/unbundled gems repositories
I'll be happy to help as part of the Legacy Gems Maintenance Team. st0012 (Stan Lo)
01:09 PM Misc #22001: Adding TruffleRuby in the CI of all default & bundled gems
As discussed in person today, let's see if we can configure TruffleRuby runs in a separate yml file so we can [disable the workflow](https://docs.github.com/en/actions/how-tos/manage-workflow-runs/disable-and-enable-workflows) when it fa... st0012 (Stan Lo)
08:10 AM Revision cb26283b (git): [ruby/erb] Version 6.0.1.1
k0kubun (Takashi Kokubun)
08:10 AM Revision c35379df (git): [ruby/erb] Prohibit def_method on marshal-loaded ERB instances
Extends the @_init guard to def_method so that an ERB object created
via Marshal.load (which bypasses initialize) raises ArgumentError
instead of evaluating arbitrary source. def_module and def_class both
delegate to def_method and are c...
k0kubun (Takashi Kokubun)
07:49 AM Bug #22010 (Open): Update to Unicode 18.0
Unicode 18.0 has been in alpha since February 2026, which closed on March 31. Beta review is scheduled to start in May. duerst (Martin Dürst)
07:40 AM Revision 36a22e04 (git): Update default gems list at 8b77fda2aefd88031aabc23e332f27 [ci skip]
git[bot]
07:39 AM Revision 8b77fda2 (git): [ruby/erb] Version 6.0.4
https://github.com/ruby/erb/commit/4d2b45e140 k0kubun (Takashi Kokubun)
07:38 AM Revision d1589536 (git): [ruby/erb] Prohibit def_method on marshal-loaded ERB instances
Extends the @_init guard to def_method so that an ERB object created
via Marshal.load (which bypasses initialize) raises ArgumentError
instead of evaluating arbitrary source. def_module and def_class both
delegate to def_method and are c...
k0kubun (Takashi Kokubun)
07:30 AM Revision 47e06127 (git): class.c: Make cvc_tbl a managed object
[Bug #21952]
Solves the double-free or use after-free concern with boxes.
Now entries can safely be used for copy-on-write.
Also is likely necessary to make it save to read cvar from
secondary ractors, as allowed since: ab32c0e690b805c...
byroot (Jean Boussier)
07:16 AM Revision 5658d5f0 (git): Update bundled gems list as of 2026-04-21
git[bot]
07:02 AM Bug #22009: ERROR: AddressSanitizer: attempting to call malloc_usable_size() for pointer which is not owned: with ASAN and DEBUG enabled build
With Claude Code help, It only reproduces with both ASAN and DEBUG options enabled. But not sure if this is the right fix though.
https://github.com/ruby/ruby/commit/e47063e5bc52929924b633cffed33fc9132030c4
yahonda (Yasuo Honda)
07:00 AM Bug #22009: ERROR: AddressSanitizer: attempting to call malloc_usable_size() for pointer which is not owned: with ASAN and DEBUG enabled build
Here is the entire log generated by `make test-spec MSPECOPT="spec/ruby/library/objectspace/dump_all_spec.rb" 2>&1 | tee error.log` yahonda (Yasuo Honda)
06:58 AM Bug #22009 (Open): ERROR: AddressSanitizer: attempting to call malloc_usable_size() for pointer which is not owned: with ASAN and DEBUG enabled build
### Background
I am using ruby-head built and deployed by https://github.com/ruby/ruby-dev-builder for my repository.
https://github.com/rsim/oracle-enhanced/blob/master/.github/workflows/ruby_head.yml
Recently, the `ruby-head` ve...
yahonda (Yasuo Honda)
03:18 AM Feature #22008 (Open): RUBY_INTERNAL_EVENT_NEWOBJ should run earlier, with fully uninitialized object
`RUBY_INTERNAL_EVENT_NEWOBJ` is an internal tracepoint event, accessible only to C. I'd consider it an unstable semi-private API, really intended to be used by only ObjectSpace. The documentation states:
* in internal events, **you can ...
jhawthorn (John Hawthorn)
02:23 AM Revision 9dd446f1 (git): Bump dependabot/fetch-metadata
Bumps the github-actions group with 1 update in the / directory: [dependabot/fetch-metadata](https://github.com/dependabot/fetch-metadata).
Updates `dependabot/fetch-metadata` from 3.0.0 to 3.1.0
- [Release notes](https://github.com/de...
dependabot[bot]

04/20/2026

08:40 PM Revision c92f8b03 (git): wasm: Define `jit_exec` only if any JIT is enabled
```
../src/vm.c:566:1: warning: unused function 'jit_exec' [-Wunused-function]
566 | jit_exec(rb_execution_context_t *ec)
| ^~~~~~~~
```
nobu (Nobuyoshi Nakada)
12:56 PM Revision c568944b (git): [ruby/json] Force ensure_valid_encoding to be inlined.
And move the encoding convertion logic in another function with NOINLINE.
The overwelming majority of strings are correctly encoded, so we
want to inline the very cheap check, however we don't want to
inline the much larger piece of cod...
samyron (Scott Myron)
10:31 AM Revision 1dcb7acb (git): [ruby/openssl] x509store, ssl: check for error of CRYPTO_set_ex_data()
This can technically fail because it internally performs allocations.
Also confirmed by the man page [1].
[1] (among other functions on this page) https://docs.openssl.org/3.5/man3/BIO_get_ex_new_index
https://github.com/ruby/openssl/c...
ndossche
10:04 AM Revision b4c8c8a6 (git): [ruby/openssl] pkcs7: fix error check of PKCS7_RECIP_INFO_set()
This function actually returns a value <=0 on error, but it is not
documented as such.
Example from OpenSSL code [1] and implementation [2] indicate as such.
[1] https://github.com/openssl/openssl/blob/4b8ddae690d6449005e474bfdfe73106d4...
ndossche
09:55 AM Revision 83b7a4d9 (git): [ruby/openssl] x509cert: check for error of X509_set_serialNumber()
This function may return 0 on error [1].
[1] https://manpages.debian.org/stretch/libssl-doc/X509_set_serialNumber.3ssl.en.html
https://github.com/ruby/openssl/commit/c6caa4f1c1
ndossche
09:44 AM Revision 359f671f (git): [ruby/openssl] x509name: check for error of X509_NAME_cmp()
These functions may return -2 to indicate an error according to the
manual [1]. This can also be confirmed when looking at the code as it
may call into i2d_X509_NAME() which can fail [2].
In such cases, the failure is reinterpreted as a ...
ndossche
07:26 AM Revision cf25b0bd (git): [DOC] Update bundled gems list at 35e7f2c2f4840de027e5ebb6e7a5f9
git[bot]
02:31 AM Revision 35e7f2c2 (git): Bump the github-actions group across 1 directory with 2 updates
Bumps the github-actions group with 2 updates in the / directory: [msys2/setup-msys2](https://github.com/msys2/setup-msys2) and [taiki-e/install-action](https://github.com/taiki-e/install-action).
Updates `msys2/setup-msys2` from 2.31....
dependabot[bot]
02:09 AM Revision f45bb9ba (git): Force binary encoding before matching in source_encoding_spec
After the syntax_suggest sync at 23ea206a58d, raw source bytes leak
into SyntaxError output, which breaks the regex match on CI machines
running under LC_ALL=C where ruby_exe returns a US-ASCII string.
https://rubyci.s3.amazonaws.com/de...
hsbt (Hiroshi SHIBATA)
01:15 AM Revision 6e9ad14d (git): Make NEWS.md release-link footer idempotent
Seed available_footnotes from the existing release-tag link defs in the
file before overlaying freshly fetched URLs, so gems whose Octokit
fetches are skipped this run keep their URLs instead of being stranded
at their old positions. Wit...
hsbt (Hiroshi SHIBATA)
12:23 AM Revision 7ecca26f (git): [Tests] Add test cases for String#getbyte and String#setbyte
Cover behavior documented in rdoc but not asserted in test/ruby/test_string.rb:
* getbyte: negative index, out-of-range (positive and negative), empty string.
* setbyte: return value, negative index, out-of-range (positive and negative)...
Augustin Gottlieb

04/19/2026

07:19 AM Revision f3931808 (git): [DOC] Update bundled gems list at 1a171d75dfd9dda2439cc5306afd29
git[bot]
07:11 AM Revision 1a171d75 (git): Update bundled gems list as of 2026-04-19
git[bot]
02:14 AM Revision 8f02f644 (git): [ruby/json] Use RB_ENC_CODERANGE to first check the cached coderange before calling rb_enc_str_coderange if the coderange is unknown.
https://github.com/ruby/json/commit/4ef7a45654 samyron (Scott Myron)

04/18/2026

11:21 PM Bug #22007: Inconsistent type checking on rescue
byroot (Jean Boussier) wrote in #note-8:
> I suspect removing that limitation wouldn't prevent JITs from optimizing the overwhelming majority of `rescue` statements as they'd still only list one of a few classes.
Well, it wouldn't be...
headius (Charles Nutter)
08:59 PM Bug #22007: Inconsistent type checking on rescue
Eregon (Benoit Daloze) wrote in #note-2:
> I think any expression should be allowed and just call `===` on them.
Agreed. To me `rescue` is just a shorthand for `rescue e; case e; when ` but that is strangely limited.
I suspect rem...
byroot (Jean Boussier)
12:08 AM Bug #22007: Inconsistent type checking on rescue
We can't change this without breaking user code. Things like
```
irb(main):003> def resolve; SyntaxError; end
=> :resolve
irb(main):004> begin; raise SyntaxError, 'lol'; rescue resolve; end
=> nil
irb(main):005> begin; raise Argu...
kddnewton (Kevin Newton)
10:32 PM Feature #21962: Add deep_freeze for recursive freezing
I don't have a strong opinion here, but one argument I could see for inclusion in core is to optimize frozen constants, e.g.
```ruby
SCHEMA = [
{ type: :foo, tags: ["a", "b"] },
{ type: :bar, tags: ["c", "d"] },
...
].deep_...
byroot (Jean Boussier)
09:07 PM Revision 699c13ee (git): Update default gems list at 7ba005099bd6326ef218ac7afe1d17 [ci skip]
git[bot]
09:06 PM Revision 7ba00509 (git): [ruby/json] Release 2.19.4
https://github.com/ruby/json/commit/6688a814bf byroot (Jean Boussier)
11:09 AM Revision 3803204f (git): [ruby/json] Fix references to NAN and INFINITY in documentation comments
https://github.com/ruby/json/commit/f1e6163ee1 Michael Yang
07:36 AM Misc #21922: Permissions for committers for ex-default/bundled/unbundled gems repositories
I can help maintaining these no primary maintainer gems as a member of "Legacy Gems Maintenance Team". kou (Kouhei Sutou)
07:09 AM Revision 52a80bb9 (git): [DOC] Update bundled gems list at d6c68b65ee1f0d704b33dac527317f
git[bot]
04:29 AM Feature #21998: Add {Method,UnboundMethod,Proc}#source_range
Eregon (Benoit Daloze) wrote in #note-7:
> We can easily compute the end of heredoc if the API returns `}`
How do you determine whether a block contains a heredoc? Consider:
- `{ <<X }`: heredoc
- `{ x<<X }`: shift operator
- `{...
mame (Yusuke Endoh)
03:54 AM Feature #21998: Add {Method,UnboundMethod,Proc}#source_range
Eregon (Benoit Daloze) wrote in #note-7:
> For the start position I think either is fine.
> ...
The `proc` part is irrelevant to the source of the block, and is only a method call receiver for a block argument. We wouldn't include any ...
headius (Charles Nutter)

04/17/2026

11:28 PM Bug #22007: Inconsistent type checking on rescue
zenspider (Ryan Davis) wrote in #note-5:
> so what should `rescue /regexp/` do?
It would do `/regexp/ === exception`, which is not useful but consistent.
The `assert_raises` example is interesting, I recall https://github.com/test...
Eregon (Benoit Daloze)
09:56 PM Bug #22007: Inconsistent type checking on rescue
Eregon (Benoit Daloze) wrote in #note-2:
> I think a better fix, related to this issue, would be to stop checking the class of rescue clauses, I think any expression should be allowed and just call `===` on them.
> ...
so what should `...
zenspider (Ryan Davis)
09:54 PM Bug #22007: Inconsistent type checking on rescue
The actual place where this showed up is in `assert_raises(*exp)` (edited for succinctness):
```ruby
def assert_raises *exp
msg = "#{exp.pop}.\n" if String === exp.last
exp << StandardError if exp.empty?
be...
zenspider (Ryan Davis)
09:39 PM Bug #22007: Inconsistent type checking on rescue
I think the better fix would be to reject literal types that are clearly not going to match. Ideally, the only cases that should be admitted to a rescue would be constant accesses, or other expressions that could potentially resolve a ty... headius (Charles Nutter)
09:01 PM Bug #22007: Inconsistent type checking on rescue
I think a better fix, related to this issue, would be to stop checking the class of rescue clauses, I think any expression should be allowed and just call `===` on them.
So one could do e.g.:
```ruby
begin
raise "nope"
rescue ->...
Eregon (Benoit Daloze)
08:59 PM Bug #22007: Inconsistent type checking on rescue
The reason is `rescue` clauses are evaluated lazily, and stop at the first matching one.
I believe this is by design for efficiency.
Evaluating every `rescue` clause when not necessary would be some overhead and have potentially unwant...
Eregon (Benoit Daloze)
08:38 PM Bug #22007 (Open): Inconsistent type checking on rescue
this works fine (but I don't think it should):
```ruby
begin
raise "nope"
rescue RuntimeError, /why am I allowed?/, "or me?" => e
# yay
end
```
whereas this version shows a type error, which seems right:
```ruby
begin
be...
zenspider (Ryan Davis)
10:48 PM Revision d6c68b65 (git): Bump yard
Bumps the bundler group with 1 update in the /spec/bundler/realworld/fixtures/tapioca directory: [yard](https://yardoc.org).
Updates `yard` from 0.9.37 to 0.9.42
---
updated-dependencies:
- dependency-name: yard
dependency-version: ...
dependabot[bot]
08:49 PM Feature #21963: A solution to completely avoid allocated-but-uninitialized objects
Thank you for reviewing this ticket.
I agree with both points.
I thought it would be nice-to-have to also have this for classes defined in Ruby but as you say the worst case is NoMethodError, and the specifics of the proposal are mostly...
Eregon (Benoit Daloze)
06:00 AM Feature #21963: A solution to completely avoid allocated-but-uninitialized objects
Two comments on this proposal.
First, I am not fond of exposing this as a Ruby-level opt-in (Class#safe_initialization). The classes that actually benefit are C-implemented ones, where uninitialized state can cause segfaults. Pure Rub...
matz (Yukihiro Matsumoto)
08:24 PM Feature #21998: Add {Method,UnboundMethod,Proc}#source_range
For the start position I think either is fine.
I think from the `p` of `proc` is more useful because it gives extra context to what the block is given (a block can't exist on its own, it's always part of something bigger syntax-wise).
...
Eregon (Benoit Daloze)
02:39 PM Feature #21998: Add {Method,UnboundMethod,Proc}#source_range
@matz What should the following return?
```ruby
f = proc { <<END }
xxx
END
f.source_range #=> Start position: from the `p` of `proc`? Or from the `{`?
#=> End position: up to the `}`? Or up to the `D` of `END`?
...
mame (Yusuke Endoh)
02:05 PM Feature #21998: Add {Method,UnboundMethod,Proc}#source_range
Thank you for the proposal. Introducing a new method rather than extending `source_location` is the right direction, given the compatibility issues we hit.
I approve the shape of this feature, including:
- The class name `Ruby::Sou...
matz (Yukihiro Matsumoto)
06:30 PM Bug #21993: `rb_gc_update_tbl_refs` is incorrectly documented as the dcompact pair for `rb_mark_tbl_no_pin`, and is unsafe for `st_table`s with non-VALUE keys
Yeah I think that'd be fine! To be honest I never ever knew these APIs existed, I've been researching the GC and that's how I found it, so I suspect they might not be very common? ivoanjo (Ivo Anjo)
05:50 PM Bug #21993: `rb_gc_update_tbl_refs` is incorrectly documented as the dcompact pair for `rb_mark_tbl_no_pin`, and is unsafe for `st_table`s with non-VALUE keys
Oh yeah, thanks. There's even a helpful comment for it. I think changing `rb_gc_update_tbl_refs` to only move values probably makes sense. We could add something like `rb_mark_hash_nopin_values` where it marks values for moving but pins ... luke-gru (Luke Gruber)
05:12 PM Bug #21993: `rb_gc_update_tbl_refs` is incorrectly documented as the dcompact pair for `rb_mark_tbl_no_pin`, and is unsafe for `st_table`s with non-VALUE keys
I guess objects that get a finalizer don't move -- e.g. `gc_is_moveable_obj` ==> `FALSE` so that's what made the finalizer table never be affected by this detail. ivoanjo (Ivo Anjo)
04:56 PM Revision fb38a1c5 (git): [ruby/openssl] pkey: fix memory leak when derived key is too large
Unlikely to happen in practice, but mirrors other similar checks that
also free the context.
https://github.com/ruby/openssl/commit/fd28a16519
Nora Dossche
04:31 PM Misc #22006: Usage of deprecated input in gem sync workflows
Again, I was not sure what you were proposing from reading your description, but I think we could define a shared action that just calls "Create GitHub App token" and "Sync to ruby/ruby". We still have to make sure credentials are availa... k0kubun (Takashi Kokubun)
08:43 AM Misc #22006 (Closed): Usage of deprecated input in gem sync workflows
I guess maybe the appid needs to change some day, or the wait for workflow breaks (unlikely in the near future). I just thought it could be nice to have that all bundled in a central place.
Anyways, I'm not the one that does all the u...
Earlopain (Earlopain _)
11:41 AM Feature #21962: Add deep_freeze for recursive freezing
matz (Yukihiro Matsumoto) wrote in #note-4:
> `Ractor.make_shareable` does more than deep freezing and exists for Ractor. Its presence does not by itself justify `deep_freeze` in core.
But deep freezing is the most visible effect, an...
headius (Charles Nutter)
04:54 AM Feature #21962: Add deep_freeze for recursive freezing
`Ractor.make_shareable` does more than deep freezing and exists for Ractor. Its presence does not by itself justify `deep_freeze` in core.
In my opinion, deep freezing is a rare need in practice, and the `ice_nine` gem seems to cover ...
matz (Yukihiro Matsumoto)
11:28 AM Revision 11e3c78b (git): [ruby/rubygems] Fix installing gems with native extensions + transitive dependencies
I am seeing the following error during bundle install:
```
Gem::MissingSpecError: Could not find 'ffi' (>= 1.15.5) among 48 total gem(s) (Gem::MissingSpecError)
```
This is reproducible with:
```ruby
source 'https://rubygems.org'
gem...
nicholasdower (Nick Dower)
10:00 AM Revision 27af8317 (git): Fix timeout_scale= call to use the correct receiver
* See https://github.com/ruby/test-unit-ruby-core/pull/23 Eregon (Benoit Daloze)
09:11 AM Misc #21922 (Assigned): Permissions for committers for ex-default/bundled/unbundled gems repositories
The comment in https://bugs.ruby-lang.org/issues/21922#note-4 accurately reflects the current status for the most part. However, to be more precise: historically, Ruby committers could freely merge changes (such as misc/doc or bug fixes)... hsbt (Hiroshi SHIBATA)
07:15 AM Misc #21922: Permissions for committers for ex-default/bundled/unbundled gems repositories
I'd like to suggest we settle the design before changing the permissions.
Specifically:
1. The current policy around default/bundled/unbundled gems should be written down. `doc/maintainers.md` is outdated, and until it's updated, d...
matz (Yukihiro Matsumoto)
07:34 AM Revision 509b0e4d (git): Fixed the wrong dev version of strscan
hsbt (Hiroshi SHIBATA)
07:32 AM Revision 88f18fde (git): Update with the correct versions from Ruby 4.0.0 release
hsbt (Hiroshi SHIBATA)
07:22 AM Misc #22005: Missing information about CVE on cve.org
One more question. What is the process with H1 disclosure? Because to me it seems that the H1 report is still private despite being referenced in the GHSA vo.x (Vit Ondruch)
07:08 AM Misc #22005: Missing information about CVE on cve.org
Thanks. I appreciate that 🙏 vo.x (Vit Ondruch)
02:26 AM Misc #22005 (Closed): Missing information about CVE on cve.org
I published https://github.com/ruby/zlib/security/advisories/GHSA-g857-hhfv-j68w yesterday.
After that, https://www.cve.org/CVERecord?id=CVE-2026-27820 is available now.
It seems that CVEs issued from GitHub are not published on cve.o...
hsbt (Hiroshi SHIBATA)
07:18 AM Bug #20409: Missing reporting some invalid breaks
Yes, it is OK to make it `SyntaxError`.
Matz.
matz (Yukihiro Matsumoto)
07:13 AM Revision 6c5f1225 (git): Generate sub-bullets for RubyGems and bundler
RubyGems and bundler were skipped outright in collect_gem_updates, so
NEWS.md never picked up the rubygems/rubygems releases shipped between
the X.Y.0 baseline and the in-development X.(Y+1).0.dev. Wire them
through resolve_repo (RubyGem...
hsbt (Hiroshi SHIBATA)
07:04 AM Revision 9d6deeba (git): Use the X.Y.0 release as the gem-version baseline
stdgems.org's "X.Y" key tracks the latest 4.0.x patch level, so once a
gem gets bumped in a Ruby patch release the diff baseline shifts forward
and history that should appear in NEWS.md for the next minor disappears.
Prefer the explicit ...
hsbt (Hiroshi SHIBATA)
07:00 AM Revision c45dddeb (git): Tidy up NEWS.md updater leftovers
* Drop the bundler- tag-prefix handling from fetch_release_range,
collect_gem_updates, and format_release_diff. collect_gem_updates skips
the bundler gem before any of these run, so the special-case prefix
stripping never had a cha...
hsbt (Hiroshi SHIBATA)
06:54 AM Revision 17506269 (git): Extract sub-bullet formatting into format_release_diff
The " * 1.2.3 to [v1.2.4][gem-v1.2.4], ..." sub-bullet was assembled in
two places with the same expression. Pull it into a single helper so the
formatting and the bundler-prefix stripping live in one spot.
Co-Authored-By: Claude Opus ...
hsbt (Hiroshi SHIBATA)
06:51 AM Revision 28852145 (git): Read current gem versions from repo state instead of NEWS.md
The "to" side of the diff used to come from parsing NEWS.md, which made
this script depend on update-NEWS-gemlist.rb having already written the
right versions there. Read the authoritative sources directly: scan
{ext,lib}/**/*.gemspec fo...
hsbt (Hiroshi SHIBATA)
06:43 AM Revision fbe968e6 (git): Drop dead code from NEWS.md updater
* Remove the bundler branch in resolve_repo: collect_gem_updates skips
bundler before resolve_repo is ever consulted, so the mapping was
unreachable.
* Inline the gem_name_normalized ternary, which had the same value in both
arms.
...
hsbt (Hiroshi SHIBATA)
06:41 AM Revision 466f6755 (git): Handle network failures in NEWS.md updater
GitHub API failures (rate limit, transient 5xx, repo missing) used to abort
the whole script mid-run, leaving NEWS.md in a partially regenerated state.
Wrap the per-gem Octokit call so a single failure only skips that gem with
a stderr w...
hsbt (Hiroshi SHIBATA)
06:36 AM Revision 13df62bb (git): Clean up orphaned release-tag link refs in NEWS.md updater
When update-NEWS-gemlist.rb drops a bundled/default gem entry from NEWS.md
(because it no longer differs from the previous-release snapshot), the
matching `[gem-vX.Y.Z]: ...` link definitions were left behind by
update-NEWS-github-releas...
hsbt (Hiroshi SHIBATA)
04:58 AM Misc #21916: DevMeeting before RubyKaigi 2026
I asked Matz which topics we should talk in the meeting, and the summary is here: https://hackmd.io/6u5CqS2aS2yIvPTs08PHFg?both
Matz will arrive at the venue at 14:00, so please catch him if you want to talk with him.
(I'll be ther...
ko1 (Koichi Sasada)
04:38 AM Feature #21795: Methods for retrieving ASTs
Thanks for the analysis in #13, especially the finding about node_id fragility across Prism versions.
But I don't think the offset-based approach solves the real problem. It makes the identifier more robust, but the node returned is s...
matz (Yukihiro Matsumoto)
02:29 AM Misc #21948 (Closed): benchmark gem maintainer
Added write permission to you. hsbt (Hiroshi SHIBATA)
02:24 AM Revision cf91f202 (git): Bump taiki-e/install-action
Bumps the github-actions group with 1 update in the / directory: [taiki-e/install-action](https://github.com/taiki-e/install-action).
Updates `taiki-e/install-action` from 2.75.15 to 2.75.16
- [Release notes](https://github.com/taiki-e...
dependabot[bot]

04/16/2026

11:03 PM Bug #21993: `rb_gc_update_tbl_refs` is incorrectly documented as the dcompact pair for `rb_mark_tbl_no_pin`, and is unsafe for `st_table`s with non-VALUE keys
Looking into this further, it looks like `gc_update_table_refs` is only used once internally, with the finalizer_table. It looks to me like it's used wrong there because the key (finalized object) is not pinned so can be moved, but the s... luke-gru (Luke Gruber)
09:50 PM Bug #21993: `rb_gc_update_tbl_refs` is incorrectly documented as the dcompact pair for `rb_mark_tbl_no_pin`, and is unsafe for `st_table`s with non-VALUE keys
Nice catch! I think this would only be a problem if the key was a number that was also a valid pointer into the Ruby heap and it happened to point to a T_MOVED object. If it's another pointer from malloc or xmalloc it shouldn't be an iss... luke-gru (Luke Gruber)
09:32 PM Bug #21685: Unnecessary context-switching, especially bad on multi-core machines.
Ruby 3.3 is security maitenance status now. I don't backport normal bug to Ruby 3.3. hsbt (Hiroshi SHIBATA)
05:05 PM Bug #21685: Unnecessary context-switching, especially bad on multi-core machines.
@ko1 @hsbt Would it be possible to backport https://github.com/ruby/ruby/pull/15840 to Ruby 3.3, 3.4, and 4.0? We're seeing a significant regression after upgrading to Ruby 3.2 where this contention causes Sidekiq worker threads to silen... stanhu (Stan Hu)
07:24 PM Revision 9c682d3d (git): Set a default EnvUtil.timeout_scale for TruffleRuby to help avoid transient failures
Eregon (Benoit Daloze)
06:20 PM Misc #22006: Usage of deprecated input in gem sync workflows
> But this made me think that perhaps this mechanism should be a composite action or something similar? Then you don't need to update it in so many places (currently 47) when something changes.
I'm not sure what you're proposing. The ma...
k0kubun (Takashi Kokubun)
07:51 AM Misc #22006 (Closed): Usage of deprecated input in gem sync workflows
`create-github-app-token` deprecated `app-id` in favor of `client-id` in https://github.com/actions/create-github-app-token/releases/tag/v3.1.0.
Since it will probably be removed in the next major version, all workflow files need to b...
Earlopain (Earlopain _)
05:23 PM Bug #21999 (Third Party's Issue): Sometimes getting segfault and sometimes getting a "Floating point exception" when running some ractor code involving BigDecimal
Fixed in https://github.com/ruby/bigdecimal/pull/528 tompng (tomoya ishida)
07:49 AM Revision a5e5fec1 (git): Update default gems list at 23ea206a58d12d7d197271b30fd802 [ci skip]
git[bot]
07:48 AM Revision 23ea206a (git): Sync `syntax_suggest`
Contains https://github.com/ruby/syntax_suggest/commit/87ad865d394c15ddcec85b74d52d6dd77d590c4b and https://github.com/ruby/syntax_suggest/commit/707459562ee410cc7627ceaae1bc0b3874cb5a35 Earlopain (Earlopain _)
07:48 AM Revision 722c4efb (git): Fix branch name for `syntax_suggest` sync
Followup to https://github.com/ruby/ruby/pull/16674, I dropped this by accident Earlopain (Earlopain _)
07:14 AM Revision b6d0e56d (git): Update bundled gems list as of 2026-04-16
git[bot]
06:17 AM Revision 8ee25f73 (git): [ruby/rubygems] Add commented-out rubygems_mfa_required to bundle gem template
Package registries are active supply chain attack targets. Recent
high-profile incidents include the Axios NPM compromise
(https://socket.dev/blog/axios-npm-package-compromised) and the LiteLLM
PyPI compromise (https://docs.litellm.ai/bl...
matheusrich (Matheus Richard)
05:49 AM Revision d47f6248 (git): [ruby/json] Reduce warnings
```
../test/json/json_ryu_fallback_test.rb:177: warning: ambiguous first argument; put parentheses or a space even after `-` operator
../test/json/json_ryu_fallback_test.rb:178: warning: ambiguous first argument; put parentheses or a spa...
znz (Kazuhiro NISHIYAMA)
02:25 AM Revision ebb11093 (git): [DOC] Update bundled gems list at 1732ba6f94b6166e2cd232df901947
git[bot]
02:24 AM Revision 1732ba6f (git): Bump the github-actions group across 1 directory with 3 updates
Bumps the github-actions group with 3 updates in the / directory: [ruby/setup-ruby](https://github.com/ruby/setup-ruby), [github/codeql-action](https://github.com/github/codeql-action) and [taiki-e/install-action](https://github.com/taik... dependabot[bot]
01:58 AM Revision 8cc42fcf (git): [DOC] Fix wrong hash key in calling_methods.rdoc example
sato.kei
01:48 AM Misc #22005: Missing information about CVE on cve.org
We recently switched our CVE Numbering Authority from MITRE to GitHub, which may be causing this. Previously, MITRE would update cve.org records on their own after we published advisories on www.ruby-lang.org, but it seems GitHub may not... hsbt (Hiroshi SHIBATA)
01:45 AM Misc #21922: Permissions for committers for ex-default/bundled/unbundled gems repositories
Yes, that was me.
I disabled issues/PRs rather than archiving because archiving forces me to unarchive and re-archive every time I need to make config changes or emergency fixes. But I understand it makes past discussions inaccessible...
hsbt (Hiroshi SHIBATA)
01:22 AM Revision 9e5d1c37 (git): Skip Redmine link comment when the URL is already in the PR body
If the PR title or body already contains the full bugs.ruby-lang.org
URL for a referenced ticket, there is no need to post a redundant link
in a comment.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
hsbt (Hiroshi SHIBATA)
01:20 AM Revision 1daa0eae (git): Fetch PR data once to avoid duplicate API calls
Extract the PR API call into the review method and pass it to
review_non_fork_branch and review_redmine_links so the same endpoint
is not fetched twice per run.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
hsbt (Hiroshi SHIBATA)
01:20 AM Revision 8177af52 (git): Add Redmine ticket link comments to auto review PR
When a pull request title or body contains references like [Bug #22003],
[Feature #12345], or [Misc #67890], automatically post a comment with
links to the corresponding bugs.ruby-lang.org issues.
Co-Authored-By: Claude Opus 4.6 (1M con...
hsbt (Hiroshi SHIBATA)
12:32 AM Revision e6508f09 (git): [DOC] fix typos and improve clarity in build guide (#16753)
Co-authored-by: Bob Singh <bobsingh.dev@users.noreply.gitlab.com> Bob Singh

04/15/2026

10:01 PM Revision 429c4992 (git): ZJIT: Fix bindgen ordering for rb_flo_to_i
The zjit-bindgen CI check regenerates cruby_bindings.inc.rs from
headers and diffs against the committed file. Since rb_flo_to_i is
declared next to rb_float_plus/minus/mul/div in internal/numeric.h,
bindgen emits it there. Match that or...
khasinski (Chris Hasiński)
10:01 PM Revision 03f1b569 (git): ZJIT: Keep flo_to_i static, add rb_flo_to_i public wrapper
The previous commit exposed flo_to_i as a non-static global, which
tripped tool/leaked-globals because it lacks the rb_ prefix.
Keep flo_to_i static and add a new public wrapper rb_flo_to_i in
numeric.c that delegates to it. ZJIT now ca...
khasinski (Chris Hasiński)
10:01 PM Revision aaad9e0f (git): ZJIT: Move flo_to_i helper to zjit.c and use original flo_to_i
Address review feedback:
1. Move the helper from jit.c (shared YJIT/ZJIT glue) to zjit.c since
it is only used by ZJIT.
2. Instead of duplicating the truncation logic, export flo_to_i from
numeric.c and call it from the ZJIT helper...
khasinski (Chris Hasiński)
10:01 PM Revision 4cbb9d14 (git): ZJIT: Inline Float#to_i
Add FloatToInt HIR instruction that truncates a Flonum to Integer
via rb_jit_flo_to_i with GC preparation. The helper uses trunc()
for truncation toward zero, then returns Fixnum (LONG2FIX) or
Bignum (rb_dbl2big) depending on magnitude.
...
khasinski (Chris Hasiński)
10:01 PM Revision c25acd47 (git): ZJIT: Inline Float arithmetic (+, -, *, /)
Add FloatAdd, FloatSub, FloatMul, FloatDiv HIR instructions that
lower to gen_prepare_leaf_call_with_gc followed by a direct ccall to
rb_float_plus/minus/mul/div. This skips CCallWithFrame overhead
(frame push/pop, stack and locals spill...
khasinski (Chris Hasiński)
09:44 PM Revision 9eea01fc (git): [ruby/date] Exclude test causing transient timeouts on TruffleRuby
https://github.com/ruby/date/commit/840494d1ae Eregon (Benoit Daloze)
07:34 PM Revision 9d46b0c7 (git): ZJIT: Fix getlocal with level=0 reading stale EP data (#16736)
* ZJIT: Fix getlocal with level=0 reading stale EP data
YARVINSN_getlocal always loaded from EP memory, even for level=0
locals. But setlocal_WC_0 only updates the JIT's FrameState without
writing to EP. When the Ruby compiler emits get...
khasinski (Chris Hasiński)
04:45 PM Revision 658e6108 (git): Update default gems list at 44d8d828b3062e0c4591a83db8e556 [ci skip]
git[bot]
04:44 PM Revision 44d8d828 (git): [ruby/erb] Version 6.0.3
Sorry, I forgot to push the 6.0.2 bump https://github.com/ruby/erb/commit/8626c822ea8009008fb5884cfc949cbcafbe9680 to master.
The tag was branched off of https://github.com/ruby/erb/commit/3d4dc31905e978d46f1eeda7bacaa469ce543733.
To av...
k0kubun (Takashi Kokubun)
04:14 PM Bug #22003 (Closed): .bundle extensions not built when doing out-of-source build
Applied in changeset commit:git|c4b3630f5ec500b0d8699cffe214ada3161d0de8.
----------
[Bug #22003] Refactor template/configure-ext.mk.tmpl
- Select extension library directories by globbing extconf.rb.
- Exclude extensions for test befo...
nobu (Nobuyoshi Nakada)
11:04 AM Bug #22003 (Closed): .bundle extensions not built when doing out-of-source build
Hi, I encountered a pretty edge case extension build bug.
When building Ruby out-of-source and executing the configure script with a full path in a workspace that contains "test" in its name, it fails to build all the extensions in th...
Kulikjak (Jakub Kulik)
04:14 PM Revision c4b3630f (git): [Bug #22003] Refactor template/configure-ext.mk.tmpl
- Select extension library directories by globbing extconf.rb.
- Exclude extensions for test before uniquifing bundled gems.
- Use `Dir.glob` base option to remove prefixed srcdir.
nobu (Nobuyoshi Nakada)
04:13 PM Misc #21922: Permissions for committers for ex-default/bundled/unbundled gems repositories
@hsbt Please don't disable issues and pull requests like on https://github.com/ruby/set. It makes all the discussion and context that was done there inaccessible.
Why not archive like you said?
(I assume you made these changes. If ...
Earlopain (Earlopain _)
04:03 PM Revision 14b243b2 (git): Skip auto-request-review on Cargo.lock (#16743)
k0kubun (Takashi Kokubun)
03:31 PM Misc #22005 (Closed): Missing information about CVE on cve.org
The CVE-2026-27820 was fixed and disclosed more than one month ago:
https://www.ruby-lang.org/en/news/2026/03/05/buffer-overflow-zlib-cve-2026-27820/
However, there is still no public information on https://www.cve.org/CVERecord?id...
vo.x (Vit Ondruch)
02:54 PM Bug #22004 (Open): parse.y doesn't executes loop body with `while true || true` condition
```rb
while true || true
puts 1
end
```
This should never exit but with parse.y, the body is never executed. It seems to happen when one of the conditions is a truthy literal. Something similar happens with `unitl`:
```rb
un...
Earlopain (Earlopain _)
01:47 PM Bug #22002 (Closed): argument stack underflow (-1)
Applied in changeset commit:git|d077df24a2256d760cc534b242b28822d4ef6376.
----------
[Bug #22002] Never pop when compiling branch predicate
The value is always needed. Now prism emits the same instructions as parse.y for the added test...
Earlopain (Earlopain _)
11:55 AM Bug #22002: argument stack underflow (-1)
It's a prism-specific issue and there are a few other usages that cause a similar result that I found. I fixed those in https://github.com/ruby/ruby/pull/16750 Earlopain (Earlopain _)
04:51 AM Bug #22002: argument stack underflow (-1)
I can repro on both 3.4 and 4.0.
byroot (Jean Boussier)
12:47 AM Bug #22002 (Closed): argument stack underflow (-1)
The following lines of code:
```ruby
sleep(0.1) until defined?(@variable)
@variable
```
produce this error:
```
home@My-Air testing % bundle exec ruby test.rb
-- raw disasm--------
trace: 1
0000 jump ...
Anonymous
01:47 PM Revision d077df24 (git): [Bug #22002] Never pop when compiling branch predicate
The value is always needed. Now prism emits the same instructions as parse.y for the added test case.
`defined?`/`flip-flop` caused `argument stack underflow`, `and`/`or` segfaulted during runtime.
Earlopain (Earlopain _)
01:21 PM Bug #21999: Sometimes getting segfault and sometimes getting a "Floating point exception" when running some ractor code involving BigDecimal
Shorter reproduction code:
~~~ruby
require 'bigdecimal'
4.times.map do
Ractor.new do
loop { raise unless BigDecimal(3.14) }
end
end
sleep 1
GC.start
~~~
I guess this is a bug of BigDecimal's float parsing logic. If the...
tompng (tomoya ishida)
09:51 AM Revision 1bdce358 (git): iseq.c: rb_estimate_iv_count handle no superclass
[Bug #21992]
When redefining `BasicObject#initialize` there's no super class to
access.
byroot (Jean Boussier)
09:38 AM Revision 75387fd3 (git): [ruby/rubygems] Fix Style/HashSyntax offenses in definition_spec.rb
https://github.com/ruby/rubygems/commit/97d05b3fc5
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
hsbt (Hiroshi SHIBATA)
09:38 AM Revision 1bc44ad4 (git): [ruby/rubygems] Remove extra guard conditions to preserve existing behavior
The original PR added @remote and aggregate_global_source? checks to
precompute_source_requirements_for_indirect_dependencies?, but these
conditions did not exist in the current codebase and would change the
method's behavior in cases wh...
hsbt (Hiroshi SHIBATA)
09:38 AM Revision 945c6ec3 (git): [ruby/rubygems] Print a warning for a potential confusion from the indirect dependencies.
Print a warning when a confusion by the indirect dependencies may happen.
See CVE-2020-36327 for the security risk.
https://github.com/ruby/rubygems/commit/403d6744b2
Jun Aruga
07:13 AM Revision e14897a0 (git): Update bundled gems list as of 2026-04-15
git[bot]
06:38 AM Revision 84f76922 (git): [ruby/json] Fix parsing of *negative* out of bound floats.
https://github.com/ruby/json/commit/1072482184 byroot (Jean Boussier)
06:21 AM Revision 5b4d95b8 (git): [ruby/json] Fix handling out of of range exponent in numbers
Fix: https://github.com/ruby/json/issues/970
If the parsed exponent overflows a `int32_t` passing it
to ryu is incorrect.
We could pass it to `rb_cstr_to_dbl` but then Ruby will emit
an annoying warning, instead we can coerce to `0.0` ...
byroot (Jean Boussier)
02:41 AM Revision b21043f8 (git): Constify pack functions
nobu (Nobuyoshi Nakada)
02:24 AM Revision 40189f8f (git): Bump the github-actions group across 1 directory with 2 updates
Bumps the github-actions group with 2 updates in the / directory: [lewagon/wait-on-check-action](https://github.com/lewagon/wait-on-check-action) and [taiki-e/install-action](https://github.com/taiki-e/install-action).
Updates `lewagon...
dependabot[bot]
 

Also available in: Atom