Activity
From 01/29/2026 to 02/04/2026
Today
-
10:12 PM Revision bc849a18 (git): [DOC] Fix links in Regexp (#16018)
-
10:08 PM Revision 48d2c7fd (git): [DOC] Harmonize certain Module methods (#15804)
-
06:04 PM Revision 91672629 (git): ZJIT: Upgrade self to HeapBasicObject after setinstancevariable (#16065)
- If self is an immediate, setinstancevariable would have raised.
Therefore we can conclude that self must not be an immediate. This helps
us match YJIT type upgrades (YJIT will upgrade to UnknownHeap or
something similar). -
03:42 PM Revision 5571212f (git): ZJIT: Remove specialized instructions (#16034)
- * ZJIT: Fix codegen for GuardSuperMethodEntry
We need to register the VALUE in the generated code so that it is
visible to the GC. This may be the cause of a crash in the test suite
that Alan found.
* ZJIT: Use LoadField+GuardBitEquals... -
03:00 PM Revision 540ea720 (git): Add myself as a prism maintainer
-
02:58 PM Revision 673c37d7 (git): [ruby/prism] Rewrite "version: nearest" to require no maintenance
- Currently I see myself not updating this when a new version is added.
Instead, rewrite it to just work with new versions:
* Try to set the version
* If that doesn't succeed, check if it is lower
* If it isn't lower, it must be higher
W... -
12:16 PM Bug #21860 (Closed): Process.fork: the child may deadlock on `th->interrupt_lock` in `threadptr_interrupt_exec_cleanup`
- 3.4 backport PR: https://github.com/ruby/ruby/pull/16060
3.3 backport PR: https://github.com/ruby/ruby/pull/16061
-
12:09 PM Bug #21860: Process.fork: the child may deadlock on `th->interrupt_lock` in `threadptr_interrupt_exec_cleanup`
- Oh, it has been fixed by https://github.com/ruby/ruby/pull/12981
-
11:45 AM Bug #21860 (Closed): Process.fork: the child may deadlock on `th->interrupt_lock` in `threadptr_interrupt_exec_cleanup`
- We recently observed some deadlocked processes. These got deadlock during child initialization right after `Process.fork`.
Based on the `gdb` session, the child is deadlocked in `threadptr_interrupt_exec_cleanup`, which suggest `th->i... -
09:50 AM Revision 1258992b (git): [ruby/rubygems] Fix gzip cache corruption when recovering from HTTP 416 responses
- When a Range request returns 416 (Range Not Satisfiable), the recovery
path manually added an "Accept-Encoding: gzip" header before retrying.
This bypasses Ruby's automatic gzip decompression mechanism.
Ruby's Net::HTTP only sets decode... -
09:22 AM Revision 9cc2242e (git): [ruby/rubygems] bin/rake man:build
- https://github.com/ruby/rubygems/commit/5e95eba208
-
09:22 AM Revision 395ad09c (git): [ruby/rubygems] Clarify local gem override docs to require git-sourced gems
- https://github.com/ruby/rubygems/commit/a4a5cdb12c
-
09:09 AM Bug #21859: Inconsistent behaviors in Regexp lookbehind/lookahead with capture groups
- Useful context for this issue which would make sense to add the description is this `Regexp` item from the NEWS of 3.3:
https://github.com/ruby/ruby/blob/master/doc/NEWS/NEWS-3.3.0.md
> The cache-based optimization now supports looka... -
09:01 AM Bug #21859 (Closed): Inconsistent behaviors in Regexp lookbehind/lookahead with capture groups
- An interesting fact is TruffleRuby/TRegex seems to report exactly the opposite for these 4 Regexp whether they are linear:
```
truffleruby 33.0.1 (2026-01-20), like ruby 3.3.7, Oracle GraalVM Native [x86_64-linux]
irb(main):001> Regex... -
07:32 AM Revision c3b6f2e9 (git): Load `rubygems/platform.rb` after setting up the load path
-
07:28 AM Revision 444a3609 (git): Fix the load path in building extensions and encodings
- Add `tool/lib` under the source directory instead of the source
directory itself, as there is no library to be loaded. - 06:02 AM Revision 03a17fac (git): [ruby/rubygems] Add test case for git sources with transitive dependencies
- https://github.com/ruby/rubygems/commit/00c8bb7bc5
Co-authored-by: hsbt <12301+hsbt@users.noreply.github.com> -
06:02 AM Revision 0c2ded4a (git): [ruby/rubygems] Require parent path source to contain matching specs before selecting it as replacement
- https://github.com/ruby/rubygems/commit/7c89d2588d
-
06:02 AM Revision e6483d98 (git): [ruby/rubygems] Added failing example
- https://github.com/ruby/rubygems/commit/73735b503c
-
05:46 AM Revision 779c3f92 (git): Expand realpath to symlink when running with macOS
- Co-authored-by: Nobuyoshi Nakada <nobu@ruby-lang.org>
-
05:40 AM Revision d26940e8 (git): Revert "Comment out to disable ppc64le and s390x CI builds"
- This reverts commit e1655dad3a00a7b4026c653ff7c611811e7e34da.
-
05:00 AM Bug #21669 (Closed): Thoroughly implement void value expression check
- Applied in changeset commit:git|c8b2a453d0fe099064e095d165ce38ee8c3eef38.
----------
[Bug #21669] Fix void value expression check for `rescue`
If any `rescue` node is non-void, the enclosing block is also
non-void. -
04:28 AM Revision cb303ff4 (git): [Bug #21669] Fix void value expression check for pattern-matching
- If the all `in` and `else` branches are void, the `case` is also void.
-
04:28 AM Revision baaf0ccb (git): [Bug #21669] Fix void value expression check for block
- A block containing a void statement that is not contained in a branch
is also void. -
04:28 AM Revision 35b95ec2 (git): [Bug #21669] Add more void value expression check for `if`
- If the both branches are void, the `if`/`unless` is also void.
-
04:28 AM Revision 932ce048 (git): [Bug #21669] Implement void value expression check for `case`/`when`
- If the all `when` and `else` branches are void, the `case` is also
void. -
04:28 AM Revision 4f360107 (git): [Bug #21669] Fix void value expression check for `rescue`-else
- If `rescue`-else node is void, the `rescue`-body is also void.
-
04:28 AM Revision c8b2a453 (git): [Bug #21669] Fix void value expression check for `rescue`
- If any `rescue` node is non-void, the enclosing block is also
non-void. -
04:28 AM Revision 995c80bc (git): Make `rb_node_case2_t` and `rb_node_case3_t` aliases of rb_node_case_t
-
03:40 AM Revision 2ba2950d (git): show loadavg if the test fails
- to survey the following failure:
```
1) Failure:
TestFile#test_stat [/tmp/ruby/src/trunk-repeat20/test/ruby/test_file.rb:412]:
Expected |1770056232.744032 - 1770056230.6465776| (2.097454309463501) to be <= 1.
```
BTW I found that `te... -
03:25 AM Revision 2dc4e872 (git): [ruby/rubygems] Lock diff-lcs < 2.0
- https://github.com/ruby/rubygems/commit/23aecf4a86
-
03:10 AM Revision 42c1d1dc (git): add deps
02/03/2026
-
11:12 PM Revision d2ce6dd4 (git): tool: Update a comment `ifchange` [ci skip]
-
11:10 PM Revision c10b93cd (git): tool: Support `$NO_COLOR` in `ifchange`
-
08:14 PM Bug #21859: Inconsistent behaviors in Regexp lookbehind/lookahead with capture groups
- Thank you, I understand now what you meant.
Should this issue be changed to a feature request? -
05:59 PM Bug #21859: Inconsistent behaviors in Regexp lookbehind/lookahead with capture groups
- > Isn't it impossible? To match, regexp needs to satisfy negative lookahead, so there should not be anything to capture.
As you wrote, captures are not available OUTSIDE of negative lookahead and also in MatchData.
But in `/(?!([a-z]... -
04:11 PM Bug #21859: Inconsistent behaviors in Regexp lookbehind/lookahead with capture groups
- > I think `Regexp.linear_time?(/(?<=(a))/)` matches in linear time.
I apologize, it seems I got distracted and forgot to actually check the execution times.
But this is interesting behavior. Maybe constant-size lookahead can be optim... -
10:58 AM Bug #21859: Inconsistent behaviors in Regexp lookbehind/lookahead with capture groups
- First issue
> This should be false in both cases.
I think `Regexp.linear_time?(/(?<=(a))/)` matches in linear time.
If the issue is just for inconsistency between lookahead and lookbehind, it's not a bug.
Here's an example:
~... -
07:13 PM Misc #21804 (Closed): Getting setup-ruby Earlier
- Done, see https://github.com/ruby/setup-ruby/pull/848#issuecomment-3840213501 for details.
-
04:26 PM Bug #21669: Thoroughly implement void value expression check
- prism is done, it just needs the parse.y changes from https://github.com/ruby/ruby/pull/15498 that @nobu prepared
-
04:26 PM Bug #21669 (Open): Thoroughly implement void value expression check
-
03:54 PM Bug #21669 (Closed): Thoroughly implement void value expression check
- Applied in changeset commit:git|3237be163c313af0b6626b209e55bdb0b33c9f0f.
----------
[Bug #21669] Thoroughly implement void value expression check (prism) -
03:49 PM Revision 3237be16 (git): [Bug #21669] Thoroughly implement void value expression check (prism)
-
03:09 PM Revision 6a4e53f9 (git): [ruby/prism] Directly use `ruby_version` from `ruby/version.h`
- When I initially wrote this, I used `RUBY_VERSION` so it's easier to stub in tests
But turns out that doesn't work in CRuby tests
https://github.com/ruby/prism/commit/e30e2591de -
03:09 PM Revision ebef4dba (git): [ruby/prism] RB_GC_GUARD() the VALUE for RSTRING_PTR() to ensure the char* does not move
- * See https://github.com/ruby/prism/pull/3886#discussion_r2741579984.
https://github.com/ruby/prism/commit/98603ce8cc -
12:33 PM Revision 4bf1cb08 (git): [ruby/prism] Better guard against syntax invalid code in ripper lex translator
- Closes https://github.com/ruby/prism/pull/3899
Also better compatibility by only dropping
the last token if it is actually EOF
https://github.com/ruby/prism/commit/128ab52be9 -
10:59 AM Revision cf22fe7f (git): Lock to install uutils-coreutils@0.5.0
-
09:18 AM Revision f1201bcf (git): [ruby/rubygems] Update vendored resolv to 0.7.0
- https://github.com/ruby/rubygems/commit/844a05543b
-
09:03 AM Revision 5ebccee5 (git): check zeros
- raise when assert_linear_performance measures only zeros to check the following error:
```
1) Error:
TestRegexp#test_linear_performance:
Test::Unit::ProxyError: nil can't be coerced into Integer
/home/opc/ruby/src/master/test/ruby... -
08:42 AM Revision f045a820 (git): try to extend timeout
- for the following failure:
```
1) Timeout:
TestResolvDNS#test_multiple_servers_with_timeout_and_truncated_tcp_fallback
``` -
08:25 AM Revision 2a57e636 (git): try to extend timeout for repeated refine test
- for the following failure:
```
1) Error:
TestRefinement#test_refining_module_repeatedly:
Test::Unit::ProxyError: execution of Test::Unit::CoreAssertions#assert_in_out_err expired timeout (10 sec)
pid 56455 exit 0
| ok
|
... -
08:24 AM Revision 8cb3663a (git): Try to send SEGV to show C bt
- for the following failure
```
1) Error:
TestClass#test_safe_multi_ractor_subclasses_list_mutation:
Test::Unit::ProxyError: execution of Test::Unit::CoreAssertions#assert_separately expired timeout (10 sec)
pid 814469 killed by... -
08:17 AM Revision 07a0b68a (git): apply timeout scale in wait_exception
- to avoid such case:
```
1) Failure:
TestProcess#test_wait_exception [/tmp/ruby/src/trunk-asserts-nopara/test/ruby/test_process.rb:1588]:
[ruby-dev:49176] [Bug #11340]: 3.696015712 seconds to interrupt Process.wait.
Expected 3.696015712... -
08:11 AM Revision 25422c0d (git): use SIGSEGV on ractor timeout
- to show C level backtrace for the following failure:
```
1) Error:
TestObjSpaceRactor#test_undefine_finalizer:
Test::Unit::ProxyError: execution of Test::Unit::CoreAssertions#assert_separately expired timeout (10 sec)
pid 861177 kille... -
08:07 AM Revision 2f8ab8e4 (git): filter TracePoint :line events by file
- in target_thread test to avoid such failure:
```
1) Failure:
TestSetTraceFunc#test_enable_target_thread [/tmp/ruby/src/trunk/test/ruby/test_settracefunc.rb:2595]:
<[#<Thread:0x000078ca3d778460 run>,
#<Thread:0x000078ca3d778460 ru... - 07:56 AM Revision 3820b354 (git): Fix typo: wich → which in ractor.md
- Co-authored-by: hsbt <12301+hsbt@users.noreply.github.com>
-
07:50 AM Revision c0eca60e (git): [ruby/json] Remove codepaths under !RUBY_INTEGER_UNIFICATION
- This was for pre Ruby 2.4 support which we dropped a while ago.
https://github.com/ruby/json/commit/b11ce01ca6 - 07:38 AM Revision 81a19adb (git): Update default gems list at 112c86e2640f596a4b7eeca6ebbe8c [ci skip]
-
07:36 AM Revision 112c86e2 (git): [ruby/json] Release 2.18.1
- https://github.com/ruby/json/commit/6ec6e7baff
-
07:24 AM Revision 41238ccd (git): [ruby/json] fbuffer_append_str: assume string
- https://github.com/ruby/json/commit/fff25c9f4b
-
07:24 AM Revision 06633246 (git): [ruby/json] Ensure `Generator::State` is kept on the stack
- Fix: https://github.com/ruby/json/issues/929
When calling `cState_partial_generate` from `mHash_to_json` or other
`to_json` funcs, `VState` becomes unreachable very quickly, hence the
compiler may optimize it out of the stack, and make ... -
07:13 AM Revision e1655dad (git): Comment out to disable ppc64le and s390x CI builds
- They are cancelled after new permission.
https://github.com/IBM/actionspz/issues/75
Other Ubuntu jobs unexpectedly terminated with their cancellation. -
04:06 AM Revision cf060ad6 (git): [ruby/resolv] [DOC] undocument private module/methods
- https://github.com/ruby/resolv/commit/73f6bb6edb
-
03:50 AM Revision c00b5029 (git): [ruby/win32-registry] [DOC] document the namespace module
- https://github.com/ruby/win32-registry/commit/3de1a0b727
-
03:44 AM Revision 184d4be8 (git): [ruby/timeout] [DOC] document the private instance method
- https://github.com/ruby/timeout/commit/52e85fed75
02/02/2026
-
10:09 PM Revision 99d90125 (git): [DOC] Improve docs for Coverage.start
-
09:18 PM Revision c104ede5 (git): Make Ractor::Port embeddable
-
08:55 PM Bug #21859 (Closed): Inconsistent behaviors in Regexp lookbehind/lookahead with capture groups
- First issue: `Regexp.linear_time?` is `false` for a positive lookahead with a capture, but `true` for a positive lookbehind:
```ruby
irb(main):002> Regexp.linear_time?(/(?=(a))/)
=> false
irb(main):003> Regexp.linear_time?(/(?<=(a))/... -
07:36 PM Feature #21858: `Kernel#Hash` considers `to_h` too
- +1
Actually I think this is just an oversight. #to_h was added to Struct, Hash, NilClass in Ruby 2.0, and to Array, Enumerable in Ruby 2.1; previously there was just #to_hash. And `Hash()` remained unchanged instead of adapting to the n... -
11:59 AM Feature #21858: `Kernel#Hash` considers `to_h` too
- https://github.com/ruby/ruby/pull/16036
-
11:51 AM Feature #21858 (Open): `Kernel#Hash` considers `to_h` too
- 1. `Kernel#Integer` uses `to_int` first and `to_i` second
2. `Kernel#Array` uses `to_ary` first and `to_a` second
3. `Kernel#Hash` only uses `to_hash`
I don't quite understand why there is a need for differential treatment here.
... -
06:26 PM Revision 03090e2e (git): [ruby/prism] Change `bin/prism errors` to take source and print errors
- This is more akin to how all the other ones work.
Instead I added most of this to the errors test like focusing
a few specifically and creating new expectations.
https://github.com/ruby/prism/commit/b21922b0a1 -
06:26 PM Revision 30d2e0cd (git): [ruby/prism] Add escaping for doxygen token comment
- Many characters have special meaning and break formatting
https://github.com/ruby/prism/commit/0b9d516c26 - 05:06 PM Revision 99794321 (git): [ruby/openssl] Update the steps to generate the base64-based examples.
- * More precisely
* Updating the rsa-1.pem file path.
https://github.com/ruby/openssl/commit/d86270d1df - 05:06 PM Revision e690a8f3 (git): [ruby/openssl] Fix test_pkcs12.rb in FIPS.
- * OpenSSL::PKCS12.create calling the PKCS12_create() has the argument mac_iter
which uses a MAC key using PKCS12KDF which is not FIPS-approved.
* OpenSSL::PKCS12.new with base64-encoded example calling PKCS12_parse()
verifies the MAC... -
04:17 PM Revision a2ca4aa9 (git): [DOC] Update incorrect class documentation
- `RCLASS_PRIME_CLASSEXT_PRIME_WRITABLE` doesn't exist, it's
`RCLASS_PRIME_CLASSEXT_WRITABLE`. -
02:32 PM Revision 3cbdedb6 (git): Fix `VCS::GIT#export_changelog`
- + gmake RELNAME=master@0f1eea09490 AUTOCONF=autoconf dist
/home/chkbuild/.rbenv/versions/3.4.8/bin/ruby --disable=gems ./tool/make-snapshot \
-srcdir=. -packages=gzip,zip,all \
-unicode-version=17.0.0 \
tmp master@0f1eea... -
01:04 PM Bug #21856: Massive performance degradation of `rb_obj_free` for `T_CLASS` since Ruby 4.0
- I spent some time trying to fix this, I think it's possible but is a pretty major refactoring.
In 3.4:
Classes have a `subclasses` doubly-linked list, which is necessary to be able to iterate subclasses efficiently.
As to be able ... -
11:12 AM Bug #21856: Massive performance degradation of `rb_obj_free` for `T_CLASS` since Ruby 4.0
- So the regression is indeed a consequence of the Box introduction.
When sweeping a Class, we need to remove the backreference from `rb_classext_struct.box_super_subclasses` and `rb_classext_struct.box_module_subclasses`, and for each ... -
10:23 AM Bug #21856: Massive performance degradation of `rb_obj_free` for `T_CLASS` since Ruby 4.0
- I reduced the benchmark to:
```ruby
# frozen_string_literal: true
require "bundler/inline"
gemfile do
source 'https://rubygems.org'
gem "benchmark-ips"
end
Benchmark.ips do |x|
x.report("singleton") do
Object.... -
10:16 AM Bug #21856: Massive performance degradation of `rb_obj_free` for `T_CLASS` since Ruby 4.0
- I'm able to repro on my machine, even though the different isn't quite as bad (more like 30% slower).
Profile of ruby 3.4.7: https://share.firefox.dev/4rw3mv0
Profile of ruby 4.0.0: https://share.firefox.dev/4rtvrmt
The striking d... -
10:39 AM Bug #21855: Bundle `win32-registry` or implement it without `fiddle`
- I recommended to make `win32-registry` a bundled gem in #20775, but maybe it was forgotten to that time. I still think this would be the best solution.
- 05:00 AM Revision 9715b29a (git): Update array.rb
- Co-authored-by: Nobuyoshi Nakada <nobu@ruby-lang.org>
- 05:00 AM Revision 9368ec5e (git): Rewrite Array#find in ruby
- Inspired by https://bugs.ruby-lang.org/issues/20182 and https://github.com/ruby/ruby/pull/9533.
This PR provides a performance boost to Array#find when run using JIT
compilation. This is achieved by implementing Array#find in Ruby, whic... - 04:55 AM Revision 70cc932d (git): [ruby/rubygems] Fix nil `@revision` in `git_proxy.rb`
- https://github.com/ruby/rubygems/commit/69d955eb67
-
03:12 AM Revision 34f848b3 (git): [DOC] Fix hash style in Hash#dig
-
02:56 AM Revision 3ab35e5e (git): [DOC] Doc for Module.new
- 01:04 AM Revision 5cf40870 (git): [DOC] Fix typos in IO::Buffer's docs
02/01/2026
-
11:56 PM Feature #21857 (Open): Introduce to_proc pattern
- When object has some logics, we can use `&object` syntax with Enumerable or Array, etc.
```ruby
users.any?(&:admin?)
```
There are some times when I want to write pattern matching similar to the syntax, but currently we either ha... - 10:43 PM Revision 198b52f5 (git): [ruby/rubygems] Bump the rb-sys group across 2 directories with 1 update
- Bumps the rb-sys group with 1 update in the /test/rubygems/test_gem_ext_cargo_builder/custom_name/ext/custom_name_lib directory: [rb-sys](https://github.com/oxidize-rb/rb-sys).
Bumps the rb-sys group with 1 update in the /test/rubygems/t... -
08:57 PM Revision 4e196af1 (git): Use ruby_sized_xfree
-
08:10 PM Bug #21856 (Open): Massive performance degradation of `rb_obj_free` for `T_CLASS` since Ruby 4.0
- Loofah sanitization is noticeably slower
```
Ruby: 3.4.8
Loofah: 2.25.0
Nokogiri: 1.19.0
Iterations: 100000
user system total real
Loofah.fragment + scrub!(:prune... -
03:27 PM Revision a93604b5 (git): [DOC] Fix dead links in options.md
-
02:57 PM Revision 911c1ca2 (git): Win32: keep --with-opt-dir as-is unless it is a real path
- Allow to expand environment variables in Makefile.
E.g.:
```batch
set VCPKG_INSTALLED=%HOME%\vcpkg\vcpkg_installed
win32\configure.bat "--with-opt-dir=$(VCPKG_INSTALLED)/$(MACHINE)-windows"
``` -
02:57 PM Revision 2ed81743 (git): Win32: strip double quotes from the batch file name
-
02:32 PM Revision 24bdf6a4 (git): transcode.c: Use ruby_sized_xfree
-
02:32 PM Revision 32f25969 (git): thread_pthread.c: Use ruby_sized_xfree
-
02:32 PM Revision 1f58302e (git): internal/gc.h: Remove inlined allocation decorator functions
-
02:32 PM Revision 0a6e365f (git): eval_jump.c: Use ruby_sized_xfree
-
02:32 PM Revision 62da4806 (git): vm_eval.c,vm_trace.c: Use ruby_sized_xfree
-
11:17 AM Revision 1276c233 (git): thread.c: use ruby_sized_xfree for fdset and interupt tasks
-
11:17 AM Revision 4d5cd811 (git): ractor_sync.c: use ruby_sized_xfree
-
11:17 AM Revision ecb28ce3 (git): prism_compile.c: use ruby_sized_xfree
-
11:17 AM Revision 9fa0cdc9 (git): vm_method.c: use sized free for css and method_definition
-
11:17 AM Revision 44b5971e (git): string.c: use ruby_sized_xfree in a few more cases
-
11:17 AM Revision d328412d (git): Use ruby_sized_xfree to free embedded Hash and Set
-
11:17 AM Revision dc6cdb17 (git): proc.c: use ruby_sized_xfree to free rb_binding_t
-
11:17 AM Revision b39c1af4 (git): cont.c: use ruby_sized_xfree to free the stack
- Also use mimalloc rather than raw malloc for `rb_jit_cont`.
-
11:17 AM Revision 3fcd36ff (git): memory_view.c: Use ruby_sized_xfree
-
08:37 AM Revision 3b2ad4b7 (git): Check the suffix argument always if given
- It also must be ASCII-compatible and must not contain null byte, as
well as the path argument. -
07:20 AM Revision d90f78b5 (git): Compare pointers with the end of path
01/31/2026
-
10:52 PM Revision 14ccd151 (git): [DOC] Fix broken links with slash character
-
10:48 PM Revision 0796c9a3 (git): [DOC] Remove unneeded link (#16014)
-
10:45 PM Revision 75d9c4c6 (git): [DOC] Fix link in IO
-
10:45 PM Revision 64f35ada (git): [DOC] Fix link in Hash
-
10:44 PM Revision 6019cc9d (git): [DOC] Fix link in File
-
10:28 PM Bug #21854: ruby-prof breaks on 4.0.1
- Ok - I will remove this functionality from ruby-prof then.
-
06:59 PM Revision 66fdb15a (git): thread_sync.c: Fix leak in Queue and SizedQueue
- This was introduced in 8ce61f90ba4aea3d52e92e258c3803b8b885726e
-
04:54 PM Revision 4c1120b5 (git): ractor.c: Replace ruby_xfree by ruby_sized_xfree
-
04:54 PM Revision 4292aed1 (git): string.c: Replace ruby_xfree by ruby_sized_xfree
-
04:54 PM Revision 250fdd13 (git): iseq.c: Replace ruby_xfree by ruby_sized_xfree
-
04:54 PM Revision 50e987bd (git): imemo.c: Replace ruby_xfree by ruby_sized_xfree
-
04:54 PM Revision 9cc71cb9 (git): Use static memory instead of mimalloc for the VM, main ractor, main thread.
- Also allocate fibers with ruby_xmalloc.
-
04:54 PM Revision 0b4b30af (git): cont.c: Replace ruby_xfree by ruby_sized_xfree
- Notable exception for `fiber_free` because fibers are allocated
with `ruby_mimmalloc`. - 02:02 PM Revision 4ea3d8c7 (git): [DOC] Example usage for --zjit-dump-hir (#16021)
- I found learning about the HIR format difficult because I couldn't get ruby/miniruby to output it using the --zjit-dump-hir option. I eventually realised it won't be generated unless the zjit-call-threshold is reached (default 30).
-
09:41 AM Revision 7ef8c470 (git): Enable check for core data types by `RUBY_DEBUG`
-
09:41 AM Revision eae7300a (git): Typed data check for core data types
-
09:35 AM Revision bd6fa7f5 (git): ruby_xfree: reject memory allocated by ruby_mimalloc
-
09:35 AM Revision db52e985 (git): compile.c: Replace ruby_xfree by ruby_sized_xfree
-
09:35 AM Revision 54df6cdd (git): concurrent_set.c: Replace ruby_xfree by ruby_sized_xfree
-
09:35 AM Revision a7d4a9df (git): class.c: Replace ruby_xfree by ruby_sized_xfree when applicable
-
09:35 AM Revision bcbc6ed5 (git): bignum.c: Replace ruby_xfree by ruby_sized_xfree when applicable
-
09:35 AM Revision 0584f9fb (git): gc.c: Replace ruby_xfree by ruby_sized_xfree when applicable
-
09:35 AM Revision 050c0014 (git): variable.c: Replace ruby_xfree by ruby_sized_xfree when applicable
-
08:51 AM Revision 801cdfef (git): Fix wrong declaration of `rb_optimized_call`
- `recv` is used as the input argument to `GetProcPtr`, which is a
`VALUE`.
Fix up ruby/ruby#6691. - 06:59 AM Revision 24285072 (git): Update bundled gems list as of 2026-01-31
- 04:33 AM Revision 957887b3 (git): [DOC] Fix typo: regsiter to register (#16020)
-
03:42 AM Revision e8d8f50f (git): Clear age and unprotected bits for page at once
- This aims to speed up sweeping by clearing all age and wb_unprotected
bits for unmarked objects. This should be faster because we can clear
up to a whole plane of objects (64 slots) at once. -
03:42 AM Revision 6327f593 (git): Use bit plane for age bits
- Previously we used two adjacent bits in the same word to store the
object's age. This changes that to instead store the age in the same bit
position across two adjacent words. This makes age use the exact same
bit positions as the other ...
01/30/2026
-
10:10 PM Revision 737809bf (git): [DOC] Fix link in ARGF
-
06:46 PM Revision d7553015 (git): [ruby/prism] Handle String-like objects for Ripper.sexp
- * RSpec relies on this in
https://github.com/rspec/rspec/blob/rspec-support-v3.13.6/rspec-support/lib/rspec/support/source.rb#L57
which is given an RSpec::Support::EncodedString.
* CI failure caused by this on truffleruby:
https://... -
05:29 PM Revision 1298f9ac (git): ZJIT: Support CFunc inlining in InvokeSuper (#16004)
- Also generally make the CFunc process look more like `optimize_c_calls`.
-
02:54 PM Feature #21852: New improved allocator function interface
- It only does it for classes defined in C, and if they do all state copying in `copy_allocator`.
I think this would be valuable to have for any class, i.e. also for classes defined in Ruby and not in C. -
01:41 PM Feature #21852: New improved allocator function interface
- > Inventing a new Ruby-level protocol for copying objects and for creation without uninitialized state would be great.
Yes, this is somewhat what this new allocator API does. It also solves the problem that the Ractor API must be able... -
01:31 PM Feature #21852: New improved allocator function interface
- byroot (Jean Boussier) wrote in #note-2:
> Indeed. Technically it wouldn't be required, but I think it's more reliable to do it there than in `initialize_copy` as the later could be redefined and cause corruption.
That could cause le... -
01:13 PM Feature #21852: New improved allocator function interface
- > Are initialize_copy/initialize_dup/initialize_clone still called when using a copy_allocator?
Yes, it is unchanged.
> ...
Indeed. Technically it wouldn't be required, but I think it's more reliable to do it there than in `initial... -
12:37 PM Feature #21852: New improved allocator function interface
- Are `initialize_copy/initialize_dup/initialize_clone` still called when using a `copy_allocator`?
In the `backtrace_alloc` example you seem to already do some copying in that function, which then makes it unclear where the copying shoul... -
02:24 PM Revision 9be01bc7 (git): gc.c: also verify sized_xrealloc old size
-
01:48 PM Revision 3c100019 (git): st.c: Use ruby_sized_xfree
- Followup: https://github.com/ruby/ruby/pull/15989
This feeds the GC with useful allocation metrics, but also ensure
we're correctly keeping track of our allocation sizes which is
beneficial for safety.
It also allows to use C23's `free... -
12:23 PM Feature #21853: Make Embedded TypedData a public API
- > How do embedded typed datas handle this, do they raise an exception in such a case?
Unfortunately not. It end up with data corruption.
> ...
Makes sense.
-
12:13 PM Feature #21853: Make Embedded TypedData a public API
- Good point! How do embedded typed datas handle this, do they raise an exception in such a case?
Seems tricky given the `DATA_PTR(obj)` API returning a pointer.
I'd actually love if we had a separate API for changing the data pointer as ... -
12:08 PM Revision dddb6511 (git): Compare the canonical type name [ci skip]
- Members of node types are defined using the canonical types, instead
of the typedef names. -
11:59 AM Bug #21855 (Open): Bundle `win32-registry` or implement it without `fiddle`
- `win32-registry` (a default gem), is currently implemented via `fiddle` (a bundled gem). This makes it impossible to use under bundler without adding `fiddle` to the gemfile.
In the past it has lead to issues like https://bugs.ruby-la... -
07:16 AM Bug #21854: ruby-prof breaks on 4.0.1
- > Do you have a recommendation for what ruby-prof should do instead? ~~ Maybe it is simple as listen only for NEWOBJ?~~ This feature was added to ruby-prof 7 years ago, so I would prefer not to all of a sudden yank it out.
Did it ever... -
02:28 AM Bug #21854: ruby-prof breaks on 4.0.1
- Ok, looking at the exposed events, there does not seem to be one that lets you know when an object is created. Can an "official" one be added?
If ruby-prof tracked the object ids for each RUBY_INTERNAL_EVENT_NEWOBJ call and then asked ... -
01:02 AM Bug #21854: ruby-prof breaks on 4.0.1
- Thanks for the update @jhawthorn and link.
Do you have a recommendation for what ruby-prof should do instead? ~~ Maybe it is simple as listen only for `NEWOBJ`?~~ This feature was added to ruby-prof 7 years ago, so I would prefer not t... -
05:08 AM Revision 5911a523 (git): [ruby/rubygems] Handle symlink TMPDIR with macOS
- https://github.com/ruby/rubygems/commit/cf08f1ec4c
-
05:08 AM Revision 9bf8aaa2 (git): [ruby/rubygems] Revert "[ruby/rubygems] Revert "Merge pull request #8989 from nobu/test-tmpdir""
- This reverts commit https://github.com/ruby/rubygems/commit/6e00da098aba.
https://github.com/ruby/rubygems/commit/c6abdae812 - 02:32 AM Revision edc132c3 (git): Bump actions/cache in /.github/actions/setup/directories
- Bumps [actions/cache](https://github.com/actions/cache) from 5.0.2 to 5.0.3.
- [Release notes](https://github.com/actions/cache/releases)
- [Changelog](https://github.com/actions/cache/blob/main/RELEASES.md)
- [Commits](https://github.co... - 02:31 AM Revision 25d91f46 (git): Bump actions/cache from 5.0.2 to 5.0.3
- Bumps [actions/cache](https://github.com/actions/cache) from 5.0.2 to 5.0.3.
- [Release notes](https://github.com/actions/cache/releases)
- [Changelog](https://github.com/actions/cache/blob/main/RELEASES.md)
- [Commits](https://github.co... -
01:06 AM Revision 0d66488f (git): Remove dead gc_stat_sym_weak_references_count
- 12:27 AM Revision 604090cb (git): Update default gems list at 5068fe85e6f7e662cd6e15f5ed7b80 [ci skip]
-
12:26 AM Revision 5068fe85 (git): [ruby/resolv] v0.7.1
- https://github.com/ruby/resolv/commit/8fc05c1cb6
01/29/2026
- 11:34 PM Revision ef583c93 (git): Fix NEWOBJ hook calling `rb_obj_memsize_of` on TypedData object (#16002)
- Fix NEWOBJ hook calling cruby functions on objects not filled yet.
Objects like `TypedData` need to be zeroed out when calling `rb_obj_memsize_of`.
Other object types need `fields_obj` to be 0 when they don't have one, etc.
Fixes [Bug ... -
11:27 PM Bug #21851: Performance difference between / operator and fdiv
- No, this isn't causing me any issues, I just would prefer fdiv for my own codebase for readability. But with that large of a performance difference I think I would stick with "/".
- 11:24 PM Revision 5fec5456 (git): ZJIT: Optimize `super` calls to C function targets (#15993)
- This PR is an extension of the work in #15816. There, we optimized `super` calls where the target method was an ISeq. The code bailed on any other `super` target method type.
The discussion for that PR included the ZJIT stats from runni... -
10:32 PM Revision 91619f02 (git): gc.c: Verify provided size in `rb_gc_impl_free`
- For now the provided size is just for GC statistics, but in the future
we may want to forward it to C23's `free_sized` and passing an incorrect
size to it is undefined behavior. -
10:17 PM Revision 457bb11a (git): [ruby/mmtk] Add weak_references_count to GC.stat
- https://github.com/ruby/mmtk/commit/86fa2fd4af
-
10:10 PM Bug #21854 (Third Party's Issue): ruby-prof breaks on 4.0.1
- I would argue that this is a bug in ruby-prof. `RUBY_INTERNAL_EVENT_NEWOBJ` is an internal event, so the semantics of exactly when it fires and the state the object is in are not documented and may change. In Ruby 4.0 (specifically http...
-
08:15 AM Bug #21854 (Third Party's Issue): ruby-prof breaks on 4.0.1
- ruby-prof breaks on 4.0.x with segmentation faults. See failing github pipelines:
https://github.com/ruby-prof/ruby-prof/actions/runs/21465420365/job/61826466398
(note the failures for ruby 3.x are some test that fail, not segmenta... -
08:43 PM Revision d9cc3c27 (git): ZJIT: Remove PadPatchPoint instructions when lowering to LIR (#15974)
- Basic blocks in LIR should only ever end in control flow instructions such as jump or return. PadPatchPoint is not control flow, so we should not emit it at the end of blocks when lowering.
-
08:30 PM Revision cfa3a4a7 (git): ZJIT: Make printout and identifier name consistent for `Guard{AnyBit,NoBits}Set`
-
07:24 PM Revision acc41457 (git): ZJIT: Support inlining send-with-block (#15998)
- Autosplat only happens due to `yield` or `.call`, neither of which is permitted in our trivial inliner.
-
07:12 PM Revision b51a1126 (git): IO::Buffer.map seems not shareable across processes on OpenBSD
- * See https://rubyci.s3.amazonaws.com/openbsd-current/ruby-master/log/20260129T163005Z.fail.html.gz
-
06:02 PM Revision 33d82847 (git): ZJIT: Support polymorphic send without block (#15949)
- Break out the different cases into different blocks in the bytecode to HIR parser. Use a `RefineType` to plumb the case's type through so the type specialization can see it. Then join the logic back to the rest of the current block after...
- 06:00 PM Revision fbff0c93 (git): ZJIT: Handle `nil` case for `getblockparamproxy` (#15986)
- Resolves https://github.com/Shopify/ruby/issues/772
Adds profiling for the `getblockparamproxy` YARV instruction and handles the `nil` block case by pushing `nil` instead of the block proxy object, improves `ratio_in_zjit` a tiny bit (0... -
02:26 PM Bug #21840 (Open): Locking a mutex can lead to starvation
- I wasn't aware of those old issues. I'll take a look, thanks!
I reverted the commit because of issues with a `Monitor` test in CI. I thought it was related to this change, but the test kept failing even after the revert. It turns out it... -
01:33 PM Bug #21840: Locking a mutex can lead to starvation
- Really cool! I wonder if this will end up solving https://bugs.ruby-lang.org/issues/19717 as well / https://github.com/ruby/ruby/pull/8331 is an old PR for it.
-
11:01 AM Revision 5299276e (git): win32: Prevent broken substitution string when variable is undefined
- Avoids an issue where `%undefined:A=B%` expands to a literal `A=B`
because the parser fails to find the variable before the colon, then
parses the following percent as the next variable expansion. Added a
definition check to ensure safe... -
11:01 AM Revision b5ecfd1e (git): Win32: Refactor target detection
- Previously, Visual C++ had only one toolchain for the x86 family, and
the only option was to select the target processor level.
In recent versions, there are multiple toolchains with the same
command name for each host/target platform c... -
11:01 AM Revision 6cc20960 (git): Win32: Make `optdirs` and `pathlist` macros overridable
- Also consider paths with space at splitting the `--with-opt-dir`
argument. -
11:01 AM Revision 1cc2e68f (git): Win32: Refactor configure
- * Enable double-quoted options with an `=` sign.
* Replace `$` with `$$` in the batch file without CPP.
* Support for `--with-destdir`.
* Allow Makefile macro definition. (Close GH-15935) -
11:01 AM Revision 6d07151e (git): Win32: Mark batch files in gitattributes
-
10:13 AM Revision d3d1a974 (git): Update to ruby/spec@8c98a84
-
08:08 AM Revision e48ed4b9 (git): Do not open to write the fixture files
-
08:08 AM Revision d3ea389d (git): Remove too platform sensitive assertions
-
08:08 AM Revision 62493b57 (git): Fix assertions not to be affected by the default encoding
-
07:36 AM Revision cd26647f (git): Remove dangling taintedness macros
- 07:04 AM Revision ba8b0b3a (git): Update bundled gems list as of 2026-01-29
- 06:09 AM Revision 6f16e87f (git): [ruby/open-uri] Improve URI.open documentation with usage example
- This improves the `URI.open` method documentation by adding a code example requiring `open-uri` as a basic usage.
When reading the current documentation first, I didn't realize that `open-uri` was required to call the method.
I believe ... -
05:02 AM Revision 40e3e43b (git): [ruby/net-http] [DOC] Fix links in requests.rb
- https://github.com/ruby/net-http/commit/a232aea2fc
-
02:35 AM Revision fa09afb1 (git): [ruby/prism] Support `version: "nearest"`.
- This clamps to supported versions based on the current Ruby version.
https://github.com/ruby/prism/commit/eb63748e8b -
02:05 AM Revision 0c30897d (git): [ruby/rubygems] Remove outdated TODO in RemoteFetcher
- https://github.com/ruby/rubygems/commit/cc81b8b228