Project

General

Profile

Activity

From 04/18/2026 to 04/24/2026

Today

05:14 AM Feature #22011: Hash tables with swiss table
I see that the benchmarks might be affected, since st_numhash/symbol hash path looks like returning constant 128 on bits 25..31, which increases the hash collision, under investigating. dsh0416 (Delton Ding)
05:13 AM Bug #22013: Array#| deduplication via eql? breaks when total element count exceeds ~16
Is this a document issue? nobu (Nobuyoshi Nakada)
02:24 AM Revision 0a1cb0a8 (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.19 to 2.75.20
- [Release notes](https://github.com/taiki-e...
dependabot[bot]
12:45 AM Revision 7e1039e1 (git): [ruby/rubygems] Update gem creation guide URL to rubygems.org
Update the gem creation guide links in the CLI output and gemspac template.
The previous Bundler guide URL now redirects to RubyGems Guides.
https://github.com/ruby/rubygems/commit/0b469edf03
y-onishi
12:44 AM Revision 11e0e7cc (git): [ruby/rubygems] Point recovery instructions at bundle pristine under Bundler
gem pristine does not reach gems that Bundler installed under
BUNDLE_PATH, so the guidance emitted when no_build_extension or
no_install_plugin is set needs a Bundler-native equivalent. Override
warn_skipped_extensions and warn_skipped_p...
hsbt (Hiroshi SHIBATA)
12:44 AM Revision 7844f72f (git): [ruby/rubygems] Cover stale plugin wrapper removal in no_install_plugin spec
The existing spec only checked that the wrapper is skipped on a fresh
install. Add a version upgrade case so that when a later version of the
gem no longer ships plugins, the previously generated wrapper is removed
even though no_install...
hsbt (Hiroshi SHIBATA)
12:44 AM Revision 487ea390 (git): [ruby/rubygems] Honor --no-build-extension for git-sourced gems
Gem::Resolver::GitSpecification#install calls Gem::Installer#build_extensions
directly, so the guard at the main install path did not cover git sources.
Move the options check into build_extensions itself so every caller skips the
build ...
hsbt (Hiroshi SHIBATA)
12:44 AM Revision a3c2ff3e (git): [ruby/rubygems] Add no_build_extension and no_install_plugin specs to windows_tag_group
https://github.com/ruby/rubygems/commit/51d3b3e76a
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
hsbt (Hiroshi SHIBATA)
12:44 AM Revision 8dc70751 (git): [ruby/rubygems] Remove stale plugin wrappers even when --no-install-plugin is specified
When a gem upgrades from a version with plugins to one without,
generate_plugins normally removes the old wrapper files. Skipping
generate_plugins entirely with --no-install-plugin prevented this
cleanup, leaving stale wrappers that woul...
hsbt (Hiroshi SHIBATA)
12:44 AM Revision ab9d60c4 (git): [ruby/rubygems] Add Bundler spec for no_install_plugin setting
https://github.com/ruby/rubygems/commit/0659cc7739
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
hsbt (Hiroshi SHIBATA)
12:44 AM Revision c6166528 (git): [ruby/rubygems] Document no_build_extension and no_install_plugin settings in bundle-config
The quality spec requires all Bundler settings to be documented in
the bundle-config man page.
https://github.com/ruby/rubygems/commit/48d494326f
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
hsbt (Hiroshi SHIBATA)
12:44 AM Revision 19a0fe51 (git): [ruby/rubygems] Skip load_plugin when --no-install-plugin is specified
Without this change, reinstalling or upgrading a gem with
--no-install-plugin would still execute a pre-existing plugin wrapper
left by a previous install via load_plugin. This defeats the opt-out.
https://github.com/ruby/rubygems/commi...
hsbt (Hiroshi SHIBATA)
12:44 AM Revision fe51923c (git): [ruby/rubygems] Add warnings with recovery instructions when skipping extensions or plugins
When extensions or plugins are skipped via --no-build-extension or
--no-install-plugin, warn the user and point them to the appropriate
gem pristine command to re-enable later.
https://github.com/ruby/rubygems/commit/d2e7f125db
Co-Auth...
hsbt (Hiroshi SHIBATA)
12:44 AM Revision 7a2c0892 (git): [ruby/rubygems] Support no_build_extension and no_install_plugin settings in Bundler
Extend the --no-build-extension and --no-install-plugin support to
Bundler's installation paths. RubyGemsGemInstaller#install now
respects these options, and the settings are propagated from
Bundler::Settings through Source::RubyGems to ...
hsbt (Hiroshi SHIBATA)
12:44 AM Revision 39c72051 (git): [ruby/rubygems] Check plugin file existence before loading in load_plugin
When plugins are not installed (e.g. via --no-install-plugin), the
plugin files do not exist on disk. Without this check, load_plugin
would attempt to load non-existent files and produce spurious
LoadError warnings.
https://github.com/r...
hsbt (Hiroshi SHIBATA)
12:44 AM Revision f408ae99 (git): [ruby/rubygems] Add --[no-]build-extension and --[no-]install-plugin options to gem install
These options allow users to opt out of building native extensions and
installing plugins during gem installation, providing an equivalent to
npm's --ignore-scripts for mitigating arbitrary code execution vectors.
Both options default t...
hsbt (Hiroshi SHIBATA)
12:23 AM Misc #22001 (Rejected): Adding TruffleRuby in the CI of all default & bundled gems
I'm opposed to adopting this as a blanket policy.
We already have a precedent where TruffleRuby CI for a library stayed broken for over a month with no one fixing it.
https://github.com/ruby/rdoc/pull/1586
Even with the ability...
hsbt (Hiroshi SHIBATA)

04/23/2026

11:58 PM Revision 16ad249a (git): [ruby/ipaddr] Fix private?, link_local? and loopback? methods to avoid mistaking public IPv6 as IPv4-mapped
https://github.com/ruby/ipaddr/commit/c1383a3356 Adrien Rey-Jarthon
11:49 PM Revision fd9cee5f (git): [ruby/prism] Fix incompatibilities for `on_word_sep` in ripper
It was mostly good, just a few edgecases:
* word_sep always only contains a single line. if there are multiple lines, it is also multiple word_sep
* Handle trailing whitespace
The excluded testcase is interpolation mixed with heredoc.
T...
Earlopain (Earlopain _)
10:48 PM Feature #22011: Hash tables with swiss table
Just a side note, enlarging `struct st_table` by 16B as some consequence for various objects sizes (e.g. Hash goes from pool 80 to pool 96, but a bunch of other structs embed `struct st_table`).
I had a vague plan to collocate the `bi...
byroot (Jean Boussier)
01:34 PM Feature #22011: Hash tables with swiss table
I found some crash cases, that I need to fix it first. Also, I am running the full ruby-bench against the master branch on linux and windows to see if I've missed anything. dsh0416 (Delton Ding)
10:39 AM Feature #22011: Hash tables with swiss table
add ruby bench results dsh0416 (Delton Ding)
10:18 AM Feature #22011: Hash tables with swiss table
fix some regression bugs dsh0416 (Delton Ding)
10:38 PM Bug #22013: Array#| deduplication via eql? breaks when total element count exceeds ~16
You are missing the corresponding `hash` method:
```ruby
def hash
[self.class, id].hash
end
```
It is somewhat implied by the mention of `#eql?` (hash based equality) but the documentation could be more explicit of cour...
byroot (Jean Boussier)
07:35 PM Bug #22013 (Open): Array#| deduplication via eql? breaks when total element count exceeds ~16

## Problem description
The documentation for `Array#|` states:
> Returns the union of self and other_array; duplicates are removed; order is preserved; items are compared using `eql?`
However, when the total number of elements...
andreyruby (Andrey Glushkov)
08:51 PM Feature #22014 (Open): Support `||` and `&&` operations in coverage
https://bugs.ruby-lang.org/issues/13901 added support for branch coverage, but did not include `||` and `&&` branches
i.e.
```
def self.even_and_positive(number)
number.even? && number >= 0
end
```
Currently, this is consi...
G-Rath (Gareth Jones)
03:01 PM Feature #22012: Data class should respond to #dig
This was a conscious design decision on Data implementaion, that underlines its nature.
Struct has a two-fold nature: it is both "a mutable structured object" and "a container" (has `#[]`, `#each`, includes `Enumerable`).
Data is ...
zverok (Victor Shepelev)
12:18 PM Feature #22012 (Open): Data class should respond to #dig
`Data`s cousin, `Struct` already responds to `#dig`. `Data` objects can show up in deeply nested objects as well, and the semantics of this should be nearly identical to `Struct#dig` kolbrich (Kevin Olbrich)
04:48 AM Revision 7d4941d3 (git): ZJIT: Remove `JITState#iseq` (#16774)
While working on implementing a new inliner for ZJIT, I keep running into an issue where the wrong iseq pointer is being used. Since `JITState#iseq` and `FrameState#iseq` end up being the same value in the absence of inlining, I don't th... Kevin Menard
01:40 AM Revision c25d561c (git): ZJIT: Add a YarvInsnIdx type for clarity (#16783)
Kevin Menard

04/22/2026

12:45 PM Feature #22011 (Open): Hash tables with swiss table
This change adds a Swiss-table-inspired probing layer to Ruby's core `st_table`, and shrinks `st_table_entry` from 24 B to 16 B by moving the stored hash into a parallel array. It is built and enabled by default; `--disable-swiss-st` rev... dsh0416 (Delton Ding)
07:45 AM Revision 42b3cdc5 (git): Remove discard qualifiers warning with C23 strchr
C23 has qualifier-preserving standard library functions, so calling
strchr with a `const char *` will return a `const char *`. We can change
the type of the local variables because we don't mutate the strings.
etienne (Étienne Barrié)
02:24 AM Revision f6b0f318 (git): Bump the github-actions group across 1 directory with 2 updates
Bumps the github-actions group with 2 updates in the / directory: [ruby/setup-ruby](https://github.com/ruby/setup-ruby) and [taiki-e/install-action](https://github.com/taiki-e/install-action).
Updates `ruby/setup-ruby` from 1.302.0 to ...
dependabot[bot]
12:36 AM Revision 2f223e90 (git): [ruby/erb] Version 4.0.3.1
k0kubun (Takashi Kokubun)
12:36 AM Revision a53f3d57 (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)

04/21/2026

11:56 PM Revision e8ef5265 (git): [ruby/erb] Version 4.0.4.1
k0kubun (Takashi Kokubun)
11:56 PM Revision 85a0a764 (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)
11:50 PM Revision 5bd3e85e (git): Make `rb_enc_str_coderange` inlinable by default
This is a generalization of the optimization done in re.c
as part of d0fbdb005cecd8513aeacb234365d71f9a9b521e.
Code that deal with coderange can benefit significantly from
avoiding that function call, assuming coderange is often already...
byroot (Jean Boussier)
07:14 PM Revision cba70c35 (git): - iseq.c: fix passing frozen option to compile_file_prism
palkan (Vladimir Dementyev)
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)
 

Also available in: Atom