Project

General

Profile

Activity

From 04/24/2026 to 04/30/2026

Today

02:27 PM Revision df623125 (git): [ruby/prism] Fix UTF-8 code units to match the number of bytes
(https://github.com/ruby/prism/pull/4098)
https://github.com/ruby/prism/commit/442bd904ed
Vinicius Stock
09:44 AM Revision f037b47a (git): Update ext/Setup template files [ci skip]
nobu (Nobuyoshi Nakada)
07:08 AM Bug #21856: Massive performance degradation of `rb_obj_free` for `T_CLASS` since Ruby 4.0
It's here https://github.com/ruby/ruby/pull/16434
4.0.3 was a security release only, so you can expect to get this fix in 4.0.4 which is intended to be released in may
Earlopain (Earlopain _)
04:33 AM Bug #21856: Massive performance degradation of `rb_obj_free` for `T_CLASS` since Ruby 4.0
Could we possibly check on this again? I checked master and found the change, but couldn't find it in neither 4.0.2 nor in 4.0.3. I looked in the repository on github as well into the official 4.0.3 tarball published on ruby-lang.org. It... mwaldvogel (Michael Waldvogel)
05:26 AM Revision 4a14dc87 (git): Share common code between Enumerator and ArithmeticSequence
nobu (Nobuyoshi Nakada)
03:40 AM Revision e716c6ee (git): [ruby/rubygems] Replace #9506 with a targeted :ruby_repo skip
The blanket skip in checksums_section from #9506 caused 82 ruby-core test
failures whose lockfile expectations legitimately include the bundler
checksum (paths that go through `bundle install` where bundler is
activated as a gem). Revert...
hsbt (Hiroshi SHIBATA)
03:12 AM Revision 5dcc311f (git): enumerator.c: guard eargs during inspect
dummyx
02:42 AM Revision c649d202 (git): [ruby/rubygems] Skip bundler self-checksum on ruby-core in test
fixtures
(https://github.com/ruby/rubygems/pull/9506)
* Skip bundler self-checksum on ruby-core in test fixtures
In ruby-core test setup, bundler is loaded as a default gem and the
bundler.gem cache file is not present on disk where
Lo...
hsbt (Hiroshi SHIBATA)
02:24 AM Revision 7dda33be (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.25 to 2.75.27
- [Release notes](https://github.com/taiki-e...
dependabot[bot]
12:18 AM Revision 88a4764f (git): [ruby/rubygems] Skip bundler self-checksum for unreleased bundlers
(https://github.com/ruby/rubygems/pull/9501)
* Skip bundler self-checksum for unreleased bundlers
Using `Bundler.gem_version.end_with?(".dev")` only skips the own
checksum on master, but patch releases run from a source checkout
(e.g.,...
hsbt (Hiroshi SHIBATA)
12:08 AM Revision d61424bb (git): ZJIT: More recognizable JIT return poison, assert only when RUBY_DEBUG
A good poison value gives a recognizable fault address if someone
erroneously dereferences. Asserting the pointer is not poison shouldn't
be necessary, so move it to RUBY_DEBUG builds.
alanwu (Alan Wu)

04/29/2026

10:24 PM Revision 9f24ba51 (git): ZJIT: Specialize direct sends to methods with post-required positional parameters
Kevin Menard
10:22 PM Revision 62e59f2a (git): ZJIT: Prefer raw pointer over references in with_ruby_vm()
When references show up on in the type declaration, it's an invitation
to think about how long the implicit lifetime is. This code
doesn't do anything tricky lifetime-wise, so it looks better declaring
only raw pointers.
alanwu (Alan Wu)
10:22 PM Revision acbc0ce5 (git): ZJIT: Replace std::mem::transmute with pointer casting
As the documentation puts it, transmute is "incredibly unsafe". We can
express what we need to with pointer casts in these closure FFI
situations, so let's use pointer casts.
alanwu (Alan Wu)
10:22 PM Revision 4d56fc62 (git): YJIT: Replace std::mem::transmute with pointer casting
As the documentation puts it, transmute is "incredibly unsafe". We can
express what we need to with pointer casts in these closure FFI
situations, so let's use pointer casts.
alanwu (Alan Wu)
09:30 PM Revision 072a6a4a (git): Rename `putstring` instruction as `dupstring`
As well as `putchilledstring` as `dupchilledstring`.
This is more consistent with similar `duparray` and `duphash`
instructions and better reflect it's behavior.
byroot (Jean Boussier)
09:11 PM Bug #22009 (Closed): ERROR: AddressSanitizer: attempting to call malloc_usable_size() for pointer which is not owned: with ASAN and DEBUG enabled build
Oh! Looks like this was already fixed by https://github.com/ruby/ruby/pull/16792 jhawthorn (John Hawthorn)
09:02 PM Bug #22009: ERROR: AddressSanitizer: attempting to call malloc_usable_size() for pointer which is not owned: with ASAN and DEBUG enabled build
That makes sense that this crashes. We're allowing the GC to provide xmalloc and xfree, and in Ruby 4.1dev under debug that has additional padding. We should have an xmalloc equivalent of malloc_usable_size (at least in the one place we ... jhawthorn (John Hawthorn)
08:43 PM Feature #21998: Add {Method,UnboundMethod,Proc}#source_range
For
```ruby
l = -> x, y {
x + y
}
l.call(1)
```
ErrorHighlight shows:
```
test.rb:1:in 'block in <main>': wrong number of arguments (given 1, expected 2) (ArgumentError)
caller: test.rb:5
| l.call(1)
^^^^...
Eregon (Benoit Daloze)
08:35 PM Feature #21998: Add {Method,UnboundMethod,Proc}#source_range
I was curious what's the reported location for `ArgumentError`s caused by lambda parameters and how ErrorHighlight highlights them.
For
```ruby
l = lambda { |x, y|
x + y
}
l.call(1)
```
With `parse.y`, the node (`RubyVM::...
Eregon (Benoit Daloze)
05:58 PM Bug #22016: ruby segfaults regularly
Oh, sorry, you asked for more information:
uname -a was in the original bug report, I'm using NetBSD 11.99.5 on x86_64 (= amd64).
wiz (Thomas Klausner)
05:57 PM Bug #22016: ruby segfaults regularly
Ruby does not compile out of the box for me, I'll attach the build log. I've attached the build log of a plain ruby build outside of pkgsrc, same system.
I don't know why it uses clang by default, 'cc' is gcc 14.3.0.
In case you're i...
wiz (Thomas Klausner)
05:16 PM Bug #22016: ruby segfaults regularly
Can you please provide the output of `lscpu` and/or `uname -a` along with the version of `gcc`? What happens when you install this exact Ruby version without pkgsrc, like from git or a tarball? Thanks. luke-gru (Luke Gruber)
01:13 PM Revision 3f75e999 (git): Bump RDoc to latest master (bc0baee) (#16807)
st0012 (Stan Lo)
12:25 PM Revision f1b2b6ba (git): [ruby/openssl] ssl: refactor SSLSocket#{peer_,}finished_message
The variable-sized alloca makes me nervous, even though it turned out
to be safe: the Finished message is 36 bytes long in SSL 3.0 and is
usually smaller in newer protocol versions. However, the alloca is not
actually needed since we can...
rhenium (Kazuki Yamaguchi)
11:15 AM Revision 686b071a (git): [ruby/openssl] pkcs7: fix error check of PKCS7_SIGNER_INFO_set()
This function returns <=0 on error, not only 0.
This is evident by looking at the implementation where it can return a
negative error here [1]. Use in OpenSSL itself also uses the <=0 check [2].
[1] https://github.com/openssl/openssl/bl...
ndossche
11:08 AM Revision a130f137 (git): [ruby/openssl] asn1: add error checks for ASN1_STRING_set() calls
Other calls in the project have such checks, add it consistently
everywhere to raise an exception in case of an error.
https://github.com/ruby/openssl/commit/ac48b6c8af
ndossche
11:07 AM Revision 97e0add5 (git): [ruby/openssl] hmac: enable tests in the FIPS mode
Fix CI with OpenSSL master in the FIPS mode. With the fips provider in
OpenSSL master, HMAC keys shorter than 112 bits are rejected and MD5 is
disallowed. Update tests to use SHA-2 and longer keys.
https://github.com/ruby/openssl/commit...
rhenium (Kazuki Yamaguchi)
10:12 AM Revision 5fa9c730 (git): Update dependencies
Fix-up for d3ef85a100a4d051fcafc6ef6c09c4faaecc086a. nobu (Nobuyoshi Nakada)
09:59 AM Revision e3fe84d2 (git): [ruby/openssl] x509attr: use sk_ASN1_TYPE_new_reserve()
This should avoid reallocations and prevent the main error condition of
the push call.
https://github.com/ruby/openssl/commit/0966d0466e
ndossche
09:59 AM Revision 801fc083 (git): [ruby/openssl] x509attr: check for errors of sk_ASN1_TYPE_push()
This function returns 0 on error.
https://github.com/ruby/openssl/commit/8ca0afb30a
ndossche
09:56 AM Revision a9cbdceb (git): [ruby/openssl] cipher: fix error checks for EVP_CIPHER_CTX_ctrl()
The return value behaviour isn't explicitly documented for OpenSSL.
For LibreSSL, it says [1]:
> EVP_CIPHER_CTX_ctrl() returns 1 for success or 0 for failure.
> ...
So it appears that we need to check for `<= 0` instead of `!0`.
Further...
ndossche
08:30 AM Bug #22018 (Open): ISeq created via `RubyVM::InstructionSequence.compile` don't support coverage
Reproduction:
```ruby
require "coverage"
File.write("/tmp/a.rb", <<~RUBY)
module CoverableRaw
def self.call
"cover up"
end
end
CoverableRaw.call
RUBY
Coverage.start
require "/tmp/a.rb"
p Coverage....
byroot (Jean Boussier)
08:02 AM Revision d3ef85a1 (git): [ruby/prism] Fix array-bounds error with GCC 9
* In file included from /usr/include/string.h:535,
from include/prism/internal/arena.h:12,
from src/prism.c:6:
In function 'memset',
inlined from 'lex_mode_push_regexp' at src/prism.c:290:5:
.../...
Eregon (Benoit Daloze)
07:48 AM Revision eadefdd0 (git): Introduce `IO::Buffer#bit_count`. (#16784)
Samuel Williams
02:26 AM Revision 3345854f (git): Add YJIT test for outdated comment
As of Ruby 4.0, the YJIT comment isn't quite correct because we now
store the reference to the `imemo/fields` object inline.
Which means that a Struct of precisely 78 members (max embeddable on
64bit archs) can cohexist in embedded and ...
byroot (Jean Boussier)
02:25 AM Revision 23215de7 (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.23 to 2.75.25
- [Release notes](https://github.com/taiki-e...
dependabot[bot]
02:09 AM Revision 493d26dc (git): Reject overflowed repeat/null-check IDs in huge regexps (#16801)
Add explicit errors for excessive range-repeat and null-check IDs;
map new errors in regerror; add regression tests for oversized generated
patterns.
make_now_just (Hiroya Fujinami)
01:06 AM Feature #21871: Add Module#undef_const
> emulate this feature by using autoload :Constant, "file/that/raises/exception".
We also suggested studying the possibility of allowing "autoload blocks":
```ruby
autoload :Constant { raise "Constant shouldn't be accessed from #{...
byroot (Jean Boussier)

04/28/2026

10:51 PM Revision 1c39cc81 (git): ZJIT: Use SP for reloading locals (#16746)
* ZJIT: Use SP for reloading locals
* ZJIT: Deduplicate post-send NoEPEscape patch point generation
Nozomi Hijikata
05:38 PM Feature #21871 (Rejected): Add Module#undef_const
This was discussed again at the RubyKaigi developer meeting, but it was not accepted. However, the discussion during the meeting was helpful, as it turns out you can emulate this feature by using `autoload :Constant, "file/that/raises/ex... jeremyevans0 (Jeremy Evans)
03:36 PM Feature #21998: Add {Method,UnboundMethod,Proc}#source_range
Proc's source in the code below consists of 3 parts. `do`, `inside\n<<B; end`, and `exclave\nB`.
```ruby
<<A; tap do
outside injected
A
inside
<<B; end; outside
exclave
B
```
Even if heredocs are used, I think `do` is the s...
tompng (tomoya ishida)
12:56 AM Feature #21998: Add {Method,UnboundMethod,Proc}#source_range
> If I'm understanding you correctly, then what you would like for source_range for the example for foo and bar methods is then:
I don't claim to have any suggestion for HERE docs because of the disjoint problem you mentioned. But cle...
headius (Charles Nutter)
12:41 AM Feature #21998: Add {Method,UnboundMethod,Proc}#source_range
> The only choice for Prism.find there is to return the ForNode
`for` syntax does not parse as a ForNode without the block, so the two are not separable. Calls do parse without the block and remain CallNode. A block is an argument to ...
headius (Charles Nutter)
01:36 PM Bug #22017 (Closed): Backport win32-resolv
The win32-resolv library bundled with ruby 3.4 is half-baked 0.6.2.
It should be updated to 0.6.3 at least, hopefully 0.7.1.
nobu (Nobuyoshi Nakada)
06:21 AM Revision 8d929853 (git): Get rid of rb_matchext_struct
It can simply be merged inside `RMatch`. byroot (Jean Boussier)
03:54 AM Revision 5e6e6781 (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.22 to 2.75.23
- [Release notes](https://github.com/taiki-e...
dependabot[bot]
02:11 AM Revision 2432ed89 (git): Further simplify common use case of NEWOBJ_OF
Only few objects need to pass the starting shape. byroot (Jean Boussier)
02:11 AM Revision e4667e51 (git): Refactor NEWOB_OF for the common protected use case
Almost every objects are now WB protected, with just a few
exceptions, hence we can provide a much simpler interface.
It's also much easier to find the remaining unprotected objects.
byroot (Jean Boussier)
02:11 AM Revision c202bc08 (git): Simplify `NEWOBJ_OF` and introduce `EC_NEWOBJ_OF`
We only very rarely have the execution context available, so
it's preferable to provide a simpler default macro.
byroot (Jean Boussier)
12:39 AM Revision 379b95a2 (git): Get rid of RGENGC_WB_PROTECTED_NODE_CREF
It's unused. byroot (Jean Boussier)
12:39 AM Revision c95a190d (git): Get rid of RGENGC_WB_PROTECTED_BIGNUM
It has been the default for a very long time and there is no good reason to
disable it.
byroot (Jean Boussier)
12:39 AM Revision 70451a40 (git): Get rid of RGENGC_WB_PROTECTED_RATIONAL
It has been the default for a very long time and there is no good reason to
disable it.
byroot (Jean Boussier)
12:39 AM Revision 5e99295f (git): Get rid of RGENGC_WB_PROTECTED_COMPLEX
It has been the default for a very long time and there is no good reason to
disable it.
byroot (Jean Boussier)
12:39 AM Revision 92cba2ef (git): Get rid of RGENGC_WB_PROTECTED_FLOAT
It has been the default for a very long time and there is no good reason to
disable it.
byroot (Jean Boussier)
12:39 AM Revision ac0a319d (git): Get rid of RGENGC_WB_PROTECTED_CLASS
It has been the default for a very long time and there is no good reason to
disable it.
byroot (Jean Boussier)
12:39 AM Revision 9e47f988 (git): Get rid of RGENGC_WB_PROTECTED_MATCH
It has been the default for a very long time and there is no good reason to
disable it.
byroot (Jean Boussier)
12:39 AM Revision e9f372a2 (git): Get rid of RGENGC_WB_PROTECTED_REGEXP
It has been the default for a very long time and there is no good reason to
disable it.
byroot (Jean Boussier)
12:39 AM Revision 83d4117b (git): Get rid of RGENGC_WB_PROTECTED_OBJECT
It has been the default for a very long time and there is no good reason to
disable it.
byroot (Jean Boussier)
12:39 AM Revision 267ce6f8 (git): Get rid of RGENGC_WB_PROTECTED_STRING
It has been the default for a very long time and there is no good reason to
disable it.
byroot (Jean Boussier)
12:39 AM Revision 9307d1b5 (git): Get rid of RGENGC_WB_PROTECTED_STRUCT
It has been the default for a very long time and there is no good reason to
disable it.
byroot (Jean Boussier)
12:39 AM Revision 7040286d (git): Get rid of RGENGC_WB_PROTECTED_HASH
It has been the default for a very long time and there is no good reason to
disable it.
byroot (Jean Boussier)
12:39 AM Revision e603aa0d (git): Get rid of RGENGC_WB_PROTECTED_ARRAY
It has been the default for a very long time and there is no good reason to
disable it.
byroot (Jean Boussier)

04/27/2026

10:54 PM Feature #21795: Methods for retrieving ASTs
kddnewton (Kevin Newton) wrote in #note-21:
> If, regardless, you would like to keep pursuing it, you need to produce working code for those two examples.
Done:
https://github.com/eregon/error_highlight/pull/1
https://github.com/er...
Eregon (Benoit Daloze)
07:05 PM Feature #21795: Methods for retrieving ASTs
kddnewton (Kevin Newton) wrote in #note-23:
> Unless you're once again suggesting we only rely on line/column, which as already mentioned multiple times and rejected multiple times, won't work.
Do you have a concrete example why it w...
Eregon (Benoit Daloze)
12:34 AM Feature #21795: Methods for retrieving ASTs
Necessarily if the ABI changes, it means the AST shape changed. So how can you possibly expect it to work "whether the loaded prism gem ABI matches that or not". If the AST shape changed, then you're guessing. Unless you're once again su... kddnewton (Kevin Newton)
09:50 PM Feature #21953: Allow accessing unshareable objects within a Ractor-local Ruby Box
tikkss (Tsutomu Katsube) wrote in #note-1:
> You might argue, "Why not run it in a multi-process?" However,
> ...
Did you measure the difference in memory usage?
I'd expect it to be small because each Ruby::Box has pretty much a cop...
Eregon (Benoit Daloze)
09:37 PM Feature #21953: Allow accessing unshareable objects within a Ractor-local Ruby Box
I describe the use case of test-unit.
Now, we are implementing `Ractor` based parallel test runner. The tests
are run on non-main ractors.
We have met a lot of `Ractor::IsolationError`. Each time, We have tried
using `freeze` or ...
tikkss (Tsutomu Katsube)
06:47 PM Feature #21998: Add {Method,UnboundMethod,Proc}#source_range
headius (Charles Nutter) wrote in #note-12:
> The target of the break is a semantic detail, not a syntactic one, and it is not determined at parse time.
It does, it is determined at parse time. Break is a syntactic construct.
> .....
Eregon (Benoit Daloze)
12:37 AM Feature #21998: Add {Method,UnboundMethod,Proc}#source_range
> It makes no sense for the range of the syntactic block here to include the entire expression of the call and its arguments.
If I'm understanding you correctly, then what you would like for source_range for the example for `foo` and ...
kddnewton (Kevin Newton)
04:37 PM Revision 5da79da5 (git): [ruby/prism] Fix missing Ripper doc caused by shim with `:nodoc:`
This fixes the missing Ripper documentation, which currently returns 404 Not Found:
https://docs.ruby-lang.org/en/master/Ripper.html
We need to use `:stopdoc:`/`startdoc:` instead of `:nodoc:` to ignore the shim markup.
See also https:...
Masafumi Koba
03:51 PM Revision ef758280 (git): Remove warning in TestISeq#test_compile_file_options
etienne (Étienne Barrié)
03:23 PM Revision 587d03e7 (git): Expose a simplified `rb_newobj_of`
No longer takes an EC, `rb_ec_newobj_of` does. byroot (Jean Boussier)
03:23 PM Revision 79aa1d23 (git): gc.h: refactor NEWOBJ_OF macro
Unifies `rb_wb_unprotected_newobj_of` and `rb_wb_protected_newobj_of`. byroot (Jean Boussier)
02:02 PM Bug #20409 (Open): Missing reporting some invalid breaks
Re-opening, we need a syntax error for parse.y. kddnewton (Kevin Newton)
02:01 PM Bug #20409 (Closed): Missing reporting some invalid breaks
Applied in changeset commit:git|558c10413990cb08b7750895b572b0b59eed0d28.
----------
[ruby/prism] Reject `END { break }` for Ruby 4.0
For [Bug #20409]
https://github.com/ruby/prism/commit/4848eb344e
Earlopain (Earlopain _)
02:01 PM Revision 558c1041 (git): [ruby/prism] Reject `END { break }` for Ruby 4.0
For [Bug #20409]
https://github.com/ruby/prism/commit/4848eb344e
Earlopain (Earlopain _)
11:52 AM Revision e7de4b3d (git): rb_objspace_data_type_memsize: fix compatibility with CALC_EXACT_MALLOC_SIZE
When `CALC_EXACT_MALLOC_SIZE` `ptr` isn't the real allocated pointer.
On macOS giving a wrong pointer to `malloc_usable_size` returns 0,
even with ASAN enabled, however on Linux it does fail.
byroot (Jean Boussier)
05:03 AM Revision 3bec8005 (git): Add test for compile option support
byroot (Jean Boussier)
02:34 AM Revision 1de3deb5 (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.305.0 to ...
dependabot[bot]

04/26/2026

11:24 PM Feature #21998: Add {Method,UnboundMethod,Proc}#source_range
> The example of define_method(:foo) { ... } was given
define_method is just a method call like any other. It should not be included in the range for the syntactic construct that is the block.
What about do..end with a huge piece of c...
headius (Charles Nutter)
02:08 PM Feature #21998: Add {Method,UnboundMethod,Proc}#source_range
We should make sure start line respects the line passed into eval (not sure if that was implicit, but wanted to be sure to call it out).
For the heredocs, I agree that they should be omitted. We made that decision early with Prism bec...
kddnewton (Kevin Newton)
09:03 PM Feature #21795: Methods for retrieving ASTs
kddnewton (Kevin Newton) wrote in #note-21:
> Further evidence that the ABI version is good: since the beginning of 2024, we would only have had to bump the ABI version twice.
How did you determine this? As shown in #note-13, `node...
Eregon (Benoit Daloze)
02:25 PM Feature #21795: Methods for retrieving ASTs
@eregon — I have tried start/end line/column extensively. It did not work at all for Rails or error highlight, and I spent too long on it to revisit it. Also, it has been rejected twice in this thread alone. If, regardless, you would lik... kddnewton (Kevin Newton)
08:39 PM Misc #22001: Adding TruffleRuby in the CI of all default & bundled gems
hsbt (Hiroshi SHIBATA) wrote in #note-3:
> We already have a precedent where TruffleRuby CI for a library stayed broken for over a month with no one fixing it.
> ...
For the record, I did work hard on fixing that and the initial fix t...
Eregon (Benoit Daloze)
11:30 AM Revision c1487868 (git): merge revision(s) a05d5ecb1253521cf3b17815a97a152bac6c3399:
[PATCH] Add write barriers on Hash#rehash nagachika (Tomoyuki Chikanaga)
09:07 AM Revision 8e253ae2 (git): Fix writebarrier in backtrace_initialize_copy
jhawthorn (John Hawthorn)
09:07 AM Revision f0a71599 (git): Fix write barrier in update_classvariable_cache
jhawthorn (John Hawthorn)
09:07 AM Revision 2c729106 (git): Fix writebarrier on rb_class_set_box_classext
jhawthorn (John Hawthorn)
09:07 AM Revision 52a85347 (git): Update mark bits as we go in ibf load
We're allocating as we fill in the ISEQ, which could cause GC, so we
need to be careful values are marked and use write barriers.
When we were loading values here we were issuing write barriers, however
if the iseq was to be marked at t...
jhawthorn (John Hawthorn)
09:07 AM Revision b90415b5 (git): Issue writebarrier_remember after set const tbl
jhawthorn (John Hawthorn)
09:07 AM Revision a05d5ecb (git): Add write barriers on Hash#rehash
jhawthorn (John Hawthorn)
08:14 AM Revision 1056f5ef (git): Hide ractor traversal object hash
This could contain other hidden objects, and so needs to be hidden
itself so as to not be seen by ObjectSpace.each_object
1000.times { ObjectSpace.each_object(Hash){|o| puts o.inspect; ObjectSpace.reachable_objects_from(Class) } }'
...
jhawthorn (John Hawthorn)
08:14 AM Bug #21996 (Closed): Crash when modifying instance variables during inspect or Marshal dump
Applied in changeset commit:git|f2d0ef269b47af7d0e658016903bd8917c32899a.
----------
Add and use rb_ivar_foreach_buffered
Previously, rb_ivar_foreach would walk up the shape tree, but yield
instance variables to the callback as it went...
jhawthorn (John Hawthorn)
08:14 AM Revision f2d0ef26 (git): Add and use rb_ivar_foreach_buffered
Previously, rb_ivar_foreach would walk up the shape tree, but yield
instance variables to the callback as it went. If the object shape was
modified during this callback, particularly with removing an instance
variable, it could result in...
jhawthorn (John Hawthorn)
08:14 AM Revision 96cd1bc7 (git): Fix iv_count for too_complex generic ivar
Previously this branch forgot to assign iv_count when used with a
generic ivar which is too_complex, which could result in it incorrectly
returning 0.
jhawthorn (John Hawthorn)

04/25/2026

04:44 AM Feature #22011: Hash tables with swiss table
<img style="width: 810px;" src="clipboard-202604251344-sv2ro.png"><br>
The Student T test shows that the performance is almost identical, but the memory consumption is confidently lowered by about 3%.
dsh0416 (Delton Ding)
01:00 AM Feature #22011: Hash tables with swiss table
The regression got better controlled with the new patch.
![](https://bugs.ruby-lang.org/attachments/download/10199/memory_top_rss_changes.png)
![](https://bugs.ruby-lang.org/attachments/download/10200/time_by_test_violin_interp.png)
![]...
dsh0416 (Delton Ding)
03:59 AM Bug #22013 (Closed): Array#| deduplication via eql? breaks when total element count exceeds ~16
Applied in changeset commit:git|97c070c244ebd76cbf4d9a5b81dca08f4bda6f05.
----------
[DOC] Clarify array methods using `eql?`
[Bug #22013]
Up to a certain size, only `eql?` is used, but for larger arrays
a Hash is used an `#hash` beco...
byroot (Jean Boussier)
02:39 AM Bug #22013: Array#| deduplication via eql? breaks when total element count exceeds ~16
> It would help to add a note similar to Object#eql? docs
Yes that is what I said.
https://github.com/ruby/ruby/pull/16786
byroot (Jean Boussier)
03:59 AM Revision 97c070c2 (git): [DOC] Clarify array methods using `eql?`
[Bug #22013]
Up to a certain size, only `eql?` is used, but for larger arrays
a Hash is used an `#hash` becomes necessary.
We could consider always checking `#hash` for consistency, but
that would decrease performance.
At the very lea...
byroot (Jean Boussier)

04/24/2026

11:27 PM Bug #22015: Success without RUBY_BOX=1, Failure with RUBY_BOX=1
Related: #21324, #21977
I believe this to be related to Symbol#to_proc, as changing `bundler/resolver/spec_group.rb:41` from:
```ruby
def dependencies
@dependencies ||= @specs.flat_map(&:expanded_dependencies).uniq.sort
...
jneen (Jeanine Adkisson)
03:57 PM Bug #22015 (Open): Success without RUBY_BOX=1, Failure with RUBY_BOX=1
```
$ ruby -v
ruby 4.1.0dev (2026-04-24T13:35:04Z master 52ee497f36) +PRISM [arm64-darwin25]
```
```
$ ruby -e 'require "bundler/inline"; gemfile {}'
```
It ran fine as expected, but it failed when I added RUBY_BOX=1.
```
...
niku (niku _)
11:14 PM Revision 49851c87 (git): Update default gems list at 6342f3ac55796e54c28b9a72b2898c [ci skip]
git[bot]
11:14 PM Revision 6342f3ac (git): [ruby/ipaddr] Bump the version to 1.2.9
https://github.com/ruby/ipaddr/commit/f17f68bcab taketo1113 (Taketo Takashima)
10:54 PM Revision a6f2450f (git): [ruby/ipaddr] Fix IPAddr#== returning true when compared with nil for 0.0.0.0 and ::
https://github.com/ruby/ipaddr/commit/a716379948 taketo1113 (Taketo Takashima)
04:24 PM Bug #22016: ruby segfaults regularly
And here is the output of the process itself:
```
asciidoctor40 -D. -a nofooter -b manpage vms-empire.adoc
/usr/pkg/lib/ruby/4.0.0/x86_64-netbsd/rbconfig.rb:311: [BUG] Segmentation fault at 0x00007f7fff7c3000
ruby 4.0.2 (2026-03-17 r...
wiz (Thomas Klausner)
04:18 PM Bug #22016 (Open): ruby segfaults regularly
When using ruby 4.0.2 on NetBSD-11.99.5/x86_64, built from pkgsrc, I often get core dumps.
Recently it was quite easy to get them using asciidoctor to build the documentation for vms-empire (but that is just one example).
Here is the...
wiz (Thomas Klausner)
04:16 PM Feature #22011: Hash tables with swiss table
From the bench results, we could see some very positive signals in some benches, but it also introduces some regressions, I would try if I could further narrowing down the regressions. dsh0416 (Delton Ding)
03:49 PM Feature #22011: Hash tables with swiss table
Here are the ruby benches results.
![](https://bugs.ruby-lang.org/attachments/download/10193/time_by_test_violin_interp.png)
![](https://bugs.ruby-lang.org/attachments/download/10194/time_by_test_violin_yjit.png)
| Area | interp | yjit...
dsh0416 (Delton Ding)
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)
01:35 PM Revision 52ee497f (git): [ruby/prism] Implement `on_label_end` for ripper
It is emitted for string-like symbols only
https://github.com/ruby/prism/commit/6d63302c7b
Earlopain (Earlopain _)
12:00 PM Bug #22013: Array#| deduplication via eql? breaks when total element count exceeds ~16
byroot (Jean Boussier) wrote in #note-1:
> You are missing the corresponding `hash` method
It would help to add a note similar to `Object#eql?` docs (https://docs.ruby-lang.org/en/master/Object.html#method-i-eql-3F):
> ...
Someone...
andreyruby (Andrey Glushkov)
05:13 AM Bug #22013: Array#| deduplication via eql? breaks when total element count exceeds ~16
Is this a document issue? nobu (Nobuyoshi Nakada)
09:09 AM Revision 0cb9c433 (git): Expose rb_int_parse_cstr() as public API
Move rb_int_parse_cstr() declaration and RB_INT_PARSE_* flags from
internal/bignum.h to the public header include/ruby/internal/intern/bignum.h
so that C extensions can use this function without writing their own
prototype declarations.
...
jinroq (Jinroq SAITOH)
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)
 

Also available in: Atom