Activity
From 04/05/2026 to 04/11/2026
Today
-
06:14 AM Ruby Bug #21990: [ruby-talk:444791] Regression: Ruby 4.0 constantly crashing
- The C backtrace in the crash report seem bogus. Almost none of it make sense. Most of the functions on the stack can't possibly call each others.
Using `gdb` or `lldb` to produce a backtrace from a core dump might help.
-
05:57 AM Ruby Bug #21952 (Closed): Ruby::Box double free at process exit when `fiddle/import` is required in multiple boxes
- Applied in changeset commit:git|c0d86a0103de7130943d54b4a290b76ec7e0c135.
----------
class.c: rb_class_duplicate_classext also dup content of cvc_tbl
[Bug #21952]
Shallow copying the table result in the same memory being shared
betwee... -
04:13 AM Ruby Bug #21952: Ruby::Box double free at process exit when `fiddle/import` is required in multiple boxes
- As I commented, https://github.com/ruby/ruby/pull/16595 looks good to me.
-
05:57 AM Ruby Revision c0d86a01 (git): class.c: rb_class_duplicate_classext also dup content of cvc_tbl
- [Bug #21952]
Shallow copying the table result in the same memory being shared
between multiple box, causing double free when one of the box
is garbage collected.
04/10/2026
-
09:34 PM Ruby Bug #21991 (Open): `$!` stays as the first exception in Ruby Box
- Description
---
When Ruby Box is enabled (`RUBY_BOX=1`), `$!` inside `rescue` does not change after the first exception.
`$!` is expected to show the exception for each `rescue` block, but it always shows the first one.
Steps t... - 09:09 PM Ruby Revision 044a43f4 (git): ZJIT: Trace infer_types as a sub-pass of other passes (#16714)
- This helps us see how much time it takes in compiler tracing.
-
08:06 PM Ruby Bug #21990 (Open): [ruby-talk:444791] Regression: Ruby 4.0 constantly crashing
- (Filed for a user on ruby-talk who can't get registered here for some reason)
After upgrade to ruby 4.0, all our Rails applications are continuously
crashing on different nodes at different locations.
All the applications were run... -
07:35 PM Ruby Revision 4978bfb2 (git): ZJIT: `fmt::Debug` for VALUE in hex. Shorthand for rb_obj_info()
- The default `{:?}` still always prints the pointer address and never
dereferences it, but now in hex.
The "alternate" flag lets you do `println!("{my_ruby_object:#?}")` and
get a rich printout like `VALUE(0x000000010232fd00 T_CLASS/Obje... -
07:32 PM Ruby Revision 5ffaaf04 (git): ZJIT: Assert no side exits in assert_compiles()
- Most of the time, we want to assert that we compile and the compiled
code runs without exiting. A small number of tests trigger side exits,
and those are changed to use assert_compiles_allowing_exits().
```console
$ rg -F 'assert_compil... - 07:26 PM Ruby Revision 304d37f7 (git): ZJIT: Fix hanging loop (#16711)
- https://github.com/ruby/ruby/pull/16122 (c272297e8a9f2b8034739b915707910b4e568479) worked for maximal SSA but
does not work for "normal" SSA. This is because it used information
propagating across block args/params as a proxy for trackin... -
06:39 PM Ruby Revision 573b16aa (git): Bump RDoc to latest master (4913d56) (#16713)
- Update the pinned RDoc revision to pick up the latest changes from
ruby/rdoc master. -
06:15 PM Ruby Feature #21695: Optimizing Ruby performance with Ruby itself instead of Rust
- ufuk (Ufuk Kayserilioglu) wrote in #note-8:
How do get from compile time code generation to runtime compilation?
I am using these hacks I mentioned and many other related hacks to make a JIT compiler. My point is that using Ruby to ... -
08:30 AM Ruby Feature #21695: Optimizing Ruby performance with Ruby itself instead of Rust
- @fredlinhares
A really long time ago, while i was working with ruby and wxWidgets (C++ lib), i worked on this:
https://github.com/Hanmac/rwx/blob/master/ext/main.hpp#L538
Where I was writing C macros to help me with writing getter... - 03:42 PM Ruby Revision 678b2c1a (git): [ruby/rubygems] Update man pages date
- https://github.com/ruby/rubygems/commit/087625017a
- 03:42 PM Ruby Revision 21836339 (git): [ruby/rubygems] fix formatting for BUNDLE_PREFER_PATCH variable in man page
- https://github.com/ruby/rubygems/commit/5bdf29f86c
-
02:44 PM Ruby Revision c30d74b3 (git): Ensure version from bundled_gems is used in tool/rdoc-srcdir (#16712)
- Use version from bundled_gems in tool/rdoc-srcdir
Previously, `tool/rdoc-srcdir` used `Dir.glob(...).first` to find
bundled gems like rdoc and tsort. This picks the first match
alphabetically, which can select a stale older version when... -
01:30 PM Ruby Revision 4245f8e1 (git): [DOC] Harmonize ::atime and #atime methods (#16620)
-
01:06 PM Ruby Revision 7f4db64f (git): Emit already initialzed constant warnings in a single call
- When decorating `Warning.warn`, it's much more convenient to get
the whole warning in a single string. -
11:30 AM Ruby Feature #20205: Enable `frozen_string_literal` by default
- > we would benefit from a programmatic flag
It already exists:
```ruby
RubyVM::InstructionSequence.compile_option = {frozen_string_literal: true}
```
To be set early during the boot process (typically at the top of `config/bo... -
10:45 AM Ruby Feature #20205: Enable `frozen_string_literal` by default
- I'm converting my Monolith (TableCheck) today to use it, and I realized that we would benefit from a programmatic flag `Ruby.enable_frozen_string_literal` (similar to `RubyVM::YJIT.enable` and Rails' `config.yjit = true`). You'd set this...
-
09:56 AM Ruby Feature #20205: Enable `frozen_string_literal` by default
- > Perhaps we can get major app maintainers like Shopify switching on RUBYOPT="--enable-frozen-string-literal" throughout their ecosystem?
The Shopify monolith has been compatible with frozen string literals for several years, or at l... -
05:42 AM Ruby Feature #20205: Enable `frozen_string_literal` by default
- Hi, can we please make a concrete plan to get this done?
Perhaps we can get major app maintainers like Shopify switching on `RUBYOPT="--enable-frozen-string-literal"` throughout their ecosystem? And a push to add `frozen_string_literal:... -
09:49 AM Ruby Revision cfec60d4 (git): dir.c: cache and revalidate working directory
- `rb_dir_getwd_ospath()` is called quite frequently, but
the overwhelming majority of the time, the current directory
didn't change.
We can also assume that most of the time, `PATH_MAX` is enough
for `getcwd`, hence we can first attempt ... -
09:23 AM Ruby Feature #21987: Assume `chdir(2)` isn't called and cache `rb_dir_getwd_ospath()`
- > Is this still the case? I removed some of this in
My bad. My first prototype of that change was months ago, this is indeed no longer the case.
> ...
Yes, that was my backup plan from the start. The problem is that on macOS, `open(2)... -
07:56 AM Ruby Feature #21987: Assume `chdir(2)` isn't called and cache `rb_dir_getwd_ospath()`
- byroot (Jean Boussier) wrote:
> For some implementations, allocating a `T_DATA` to avoid leaks in case of failure.
Is this still the case? I removed some of this in https://github.com/ruby/ruby/commit/126b657bd103a1abf4b572ade557ffdc... -
06:36 AM Ruby Feature #21987: Assume `chdir(2)` isn't called and cache `rb_dir_getwd_ospath()`
- Hum, that's a case i didn't think of indeed... Might be a deal breaker.
-
02:26 AM Ruby Feature #21987: Assume `chdir(2)` isn't called and cache `rb_dir_getwd_ospath()`
- byroot (Jean Boussier) wrote:
> This however assumes that C extensions or other native libraries never call `chdir(2)` after executing Ruby, or at least always reset it before yielding back to Ruby.
And no other process renames the d... -
07:56 AM Ruby Revision b154cfa9 (git): Add a fastpath for `rb_str_normalize_ospath`
- This extra check is a hotspot for path operations on
macOS.
It was added in 9962aad7b0184e385b40c26c5a109bff7abbe43c
because of a limitation of HFS+.
But all the invalid characters are outside of ASCII range,
and most paths are ASCII, ... -
06:37 AM Ruby Revision 36b0ae02 (git): Add single byte fast path to `File.expand_path`
- Similar to previous changes to `File.join` & al.
```
compare-ruby: ruby 4.1.0dev (2026-04-09T12:24:09Z master c919778017) +PRISM [arm64-darwin25]
built-ruby: ruby 4.1.0dev (2026-04-09T17:42:24Z expand-path-mbenc 4fd047f73c) +PRISM [arm6... - 03:02 AM Ruby Revision 84412ffa (git): Bump the github-actions group across 1 directory with 2 updates
- Bumps the github-actions group with 2 updates in the / directory: [actions/github-script](https://github.com/actions/github-script) and [taiki-e/install-action](https://github.com/taiki-e/install-action).
Updates `actions/github-script... -
12:39 AM Ruby Revision 4c2ae6e2 (git): Always ensure room in rb_obj_embedded_size
- Although the issue only occurred on debug builds, we should always be
requesting a size large enough to fit the object when it expands to the
heap, rather than just hoping the GC provides enough room.
04/09/2026
-
11:26 PM Ruby Revision 0c1ce03b (git): ZJIT: Make `hir::types::Class` not final and have it include metaclasses
- Every class boots with a metaclass, and all metaclasses are subclasses
of Class, so `types::Class` has no business in `ExactBitsAndClass`.
In fact, we should never see an object whose RBasic::class is exactly
rb_cClass because classes ge... -
08:55 PM Ruby Revision 8aa2322b (git): Add slot size assertion to ar_force_convert_table
- Co-authored-by: Luke Gruber <luke.gru@gmail.com>
Co-authored-by: Matt Valentine-House <matt@eightbitraptor.com> -
08:55 PM Ruby Revision 0b5862f4 (git): Don't use fixed-size hashes for cdhash
- This caused out of bounds writes because of converting to a st_table.
Co-authored-by: Luke Gruber <luke.gru@gmail.com>
Co-authored-by: Matt Valentine-House <matt@eightbitraptor.com> -
06:52 PM Ruby Feature #21695: Optimizing Ruby performance with Ruby itself instead of Rust
- So, what you are doing is code-generation at compile time using ERB templates, which is cool! But, I find it a stretch to call it meta-programming, since the C code isn't writing C code at runtime, everything is happening at compile time...
-
06:21 PM Ruby Feature #21695: Optimizing Ruby performance with Ruby itself instead of Rust
- Let me try to elaborate as much as I can.
Rust is not as fast as C; it is as fast as the equivalent C. However, C allows us to use some valid memory management techniques that are impossible in Rust unless you use considerable amount... -
12:50 PM Ruby Bug #21984: RubyVM::AST can't tell if an array is passed to break/next/return
- The honest answer is, not really. It's probably fine to stay as is, and I would be okay with closing this.
For context, I've been building a translation layer from RubyVM::AbstractSyntaxTree to Prism, hoping it might help with a migra... -
10:16 AM Ruby Bug #21984: RubyVM::AST can't tell if an array is passed to break/next/return
- The same thing can be also said to `a=[1,2]` and `a=1,2`.
In Prism, these are both parsed as ArrayNode with/without opening and closing.
In AbstractSyntaxTree, the non-abstract parts (bracket) are dropped. I think it's just a restricti... -
12:24 PM Ruby Revision c9197780 (git): Remove extra sentinel from shape capacities
- This isn't a 0 terminated list anymore because we iterate over
heaps_count directly. So we don't need to allocate an extra byte for the
sentinel -
12:24 PM Ruby Revision 3c28bb53 (git): Make it obvious that field count guard is for debug
- This is because when `RVALUE_OVERHEAD` is positive, ie. when
`RACTOR_CHECK_MODE` is enabled and we need to store the pointer to the
owning ractor, we need to make sure there is enough space to store it.
With the previous size pools the ... -
12:24 PM Ruby Revision 5381f0fa (git): Replace sweeping_heaps map with a counter
- We implemented some bit twiddling logic with an unsigned int to have a
neat way of tracking which heaps were currently sweeping, but we
actually don't need to care which heap is sweeping right now, just
whether some are or not, so we can... -
12:24 PM Ruby Revision 2fd891f2 (git): Use the pre-processor to generate slot sizes and reciprocals
-
12:24 PM Ruby Revision 80e3a8d2 (git): Fix zjit hir tests
-
12:24 PM Ruby Revision a8009c98 (git): Allow flex in heap growth threshold
- Add a 7/8 multiplier to the min_free_slots checks in
gc_sweep_finish_heap and gc_marks_finish, allowing heaps to be up to
~12.5% below the free slots target without triggering a major GC or
forced growth.
With 12 heaps instead of 5, eac... -
12:24 PM Ruby Revision 5c968c50 (git): Cache has_sweeping_pages as a bitfield
-
12:24 PM Ruby Revision aa5f1922 (git): Update tests for new pool layout
-
12:24 PM Ruby Revision b6658c1e (git): Introduce RVALUE_SIZE GC constant
- Add GC::INTERNAL_CONSTANTS[:RVALUE_SIZE] to store the usable size
(excluding debug overhead) of the smallest pool that can hold a standard
RVALUE. -
12:24 PM Ruby Revision c9b70883 (git): Introduce power-of-two size pools
- Replace the RVALUE_SLOT_SIZE-multiplier based pool sizes with explicit
power-of-two (and near-power-of-two) slot sizes. On 64-bit this gives
12 heaps (32, 40, 64, 80, 96, 128, 160, 256, 512, 640, 768, 1024)
instead of 5, providing finer ... -
12:24 PM Ruby Revision 2567e76e (git): Handle small pools in shape capacity calculation
- When pool slot sizes can be smaller than sizeof(struct RBasic) (e.g. a
32-byte pool on 64-bit where RBasic is 16 bytes), the capacity
calculation would underflow. Guard against this by setting capacity to
0 for pools too small to hold fi... -
12:24 PM Ruby Revision 93710423 (git): Guard rb_obj_embedded_size for zero fields
- With smaller pool sizes (e.g. 32 bytes), an RObject with 0 embedded
fields would request a size smaller than the minimum meaningful object.
Ensure at least 1 field worth of space so the embedded size is always
large enough for a valid RO... -
12:24 PM Ruby Revision 772bde30 (git): Use sizeof(VALUE) for pointer alignment checks
-
12:24 PM Ruby Revision ce9d6c89 (git): Rename SIZE_POOL_COUNT to HEAP_COUNT in tests
-
11:48 AM Ruby Bug #21988 (Closed): `return a, &b` should be syntax error
- Applied in changeset commit:git|51a3f0847782095340df5dbc8fb87450dbc1fbe7.
----------
[ruby/prism] Reject `return` and similar with block pass argument
Same handling as for `yield`. Fixes [Bug #21988]
https://github.com/ruby/prism/comm... -
11:12 AM Ruby Bug #21988: `return a, &b` should be syntax error
- https://github.com/ruby/prism/pull/4072
-
10:11 AM Ruby Bug #21988 (Closed): `return a, &b` should be syntax error
- `return a, &b` is syntax error in parse.y, but accepted in Prism
~~~ruby
Prism.parse_success?('return a, &b')
#=> true
RubyVM::AbstractSyntaxTree.parse('return a, &b')
#=> block argument should not be given (SyntaxError)
~~~
W... -
11:48 AM Ruby Revision 51a3f084 (git): [ruby/prism] Reject `return` and similar with block pass argument
- Same handling as for `yield`. Fixes [Bug #21988]
https://github.com/ruby/prism/commit/2dd20183ad -
10:45 AM Ruby Bug #21989 (Open): Fiber initialization failure on WASI/ruby.wasm raises TypeError instead of FiberError
- ## Summary
When building Ruby for WASM and using it via `ruby.wasm`, if Fiber initialization fails, the following error may occur:
```text
TypeError: wrong argument type false (expected Class)
```
instead of the expected `Fibe... -
09:13 AM Ruby Feature #21987 (Open): Assume `chdir(2)` isn't called and cache `rb_dir_getwd_ospath()`
- ### Context
I'm looking at optimizing Ruby applications boot time, and one very common operation that seems wasteful is that when interpreting relative paths
we keep calling `ruby_getcwd()`, even though its result almost never change... -
08:34 AM Ruby Revision 03757030 (git): mkmf: check for C++ compiler
- It may be set to "false" if usable compiler is not found.
-
06:10 AM Ruby Revision b94a7ec7 (git): Suppress rev-parse error message when out-of-place build
-
05:19 AM Ruby Revision c091c186 (git): Fix thread leaks
- Wait for terminated threads to finish.
-
05:13 AM Ruby Revision 4b6a467a (git): mkmf: skip if C++ compiler not found
-
05:05 AM Ruby Bug #21986 (Closed): RubyVM::AST incorrect location for literals followed by modifier `if`
- Applied in changeset commit:git|4644e4f2fafe45e2c49f18bc9712d0f5fff3d341.
----------
[Bug #21986] Fix location of numeric literal
When checking for suffixes, do not flush the numeric literal token
even if no suffix is found. -
04:32 AM Ruby Revision 4644e4f2 (git): [Bug #21986] Fix location of numeric literal
- When checking for suffixes, do not flush the numeric literal token
even if no suffix is found. -
03:18 AM Ruby Revision f4b5566d (git): mkmf: grep all occurrences in cpp output
- Apple clang aborts if cpp output is closed in middle, and leaves the
preprocessed source and reproduction shell script. -
03:18 AM Ruby Revision aaa27ee0 (git): mkmf: Redirect egrep command input
-
03:18 AM Ruby Revision f104525c (git): mkmf: cpp_command in C++ mode
- 02:25 AM Ruby Revision a4fa75ee (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.0 to 2.75.1
- [Release notes](https://github.com/taiki-e/i...
04/08/2026
-
10:49 PM Ruby Revision 949bee21 (git): Add ruby_version_is guard to CVE-2019-8322 spec for changing displayed message
-
10:49 PM Ruby Revision 4edfd93c (git): Merge RubyGems/Bundler 4.0.10
-
10:49 PM Ruby Revision dc13b5ad (git): Merge RubyGems/Bundler 4.0.9
-
10:49 PM Ruby Revision 36084c24 (git): Merge RubyGems/Bundler 4.0.8
-
10:49 PM Ruby Revision f13b3911 (git): Merge RubyGems/Bundler 4.0.7
-
10:49 PM Ruby Revision 019c261c (git): Merge RubyGems/Bundler 4.0.6
- 10:18 PM Ruby Revision 6ccabf1e (git): ZJIT: Guard an array is not frozen before popping from it
- 10:18 PM Ruby Revision ddb60fe3 (git): ZJIT: Guard that an array is not frozen before modifying it
- ArrayPush calls out to the fast-path, not checking for frozen-ness. In
debug mode, this leads to crashes. In release mode, silent erroneous
modifications. - 10:18 PM Ruby Revision 9b6066c4 (git): ZJIT: Suggest correct command in bisect script
- 10:18 PM Ruby Revision 64a49051 (git): ZJIT: Detect bad configuration in make command in bisect script
- 10:18 PM Ruby Revision b2432095 (git): ZJIT: Require Ruby 3.4+ in bisect script
- 09:45 PM Ruby Revision b53186a4 (git): ZJIT: Load immediate into register before masking (#16677)
- This otherwise causes a crash on e.g. https://github.com/ruby/ruby/pull/15220:
thread '<unnamed>' (18071) panicked at zjit/src/codegen.rs:2511:21:
internal error: entered unreachable code: with_num_bits should not be used for: V... -
09:44 PM Ruby Revision aa7e671c (git): ZJIT: [DOC] induce_breakpoint! behaves differently when ZJIT is on
-
09:05 PM Ruby Feature #21695: Optimizing Ruby performance with Ruby itself instead of Rust
- fredlinhares (Frederico Linhares) wrote in #note-5:
> Sorry for the delay. I was busy until very recently, but I will be more active from now on. Here is the repository: https://gitlab.com/fredlinhares/pre_c
There is hardly any cod... -
05:42 PM Ruby Feature #21695: Optimizing Ruby performance with Ruby itself instead of Rust
- Sorry for the delay. I was busy until very recently, but I will be more active from now on. Here is the repository: https://gitlab.com/fredlinhares/pre_c
-
08:24 PM Ruby Revision 82470d8b (git): Allow fixed size hashes to be allocated in smaller slots
- When we allocate a RHash using `rb_hash_new_capa()`, if `capa` is
larger than `8` it's directly allocated as an `st_stable` in a `80B`
slot.
However if the requested size if lesser or equal to 8, we allocate
it as an `ar_table` in a `16... -
07:52 PM Ruby Revision d6528d63 (git): compile.c: avoid needless rehash
- These were introduced in 165e10b6cf73f723c2f6af676b70aeb2d8cf85c9
when these hashes were allocated with `rb_hash_new()`.
But since 4fb1438b9d7f617c7a8dc37935a960a24219e697 they are allocated
with the right size, making the rehashing pur... -
07:00 PM Ruby Revision 5cf6c842 (git): rb_gc_obj_needs_cleanup_p: skip sweep for most imemo/fields
- There is only two rare cases where they need to be sweeped:
- If they are so large that they're heap allocated.
- If they have an object_id (and id2ref_tbl exist but
we can't check that here) - 06:26 PM Ruby Revision 30e31488 (git): ZJIT: Fix land race (#16686)
- Just update some HIR tests.
-
05:50 PM Ruby Bug #21986 (Closed): RubyVM::AST incorrect location for literals followed by modifier `if`
- ```
irb(main):001> RubyVM::AbstractSyntaxTree.parse("1.0if true")
=> (SCOPE@1:0-1:10 tbl: [] args: nil body: (IF@1:0-1:10 (TRUE@1:6-1:10) (FLOAT@1:3-1:3 1.0) nil))
irb(main):002> RubyVM::AbstractSyntaxTree.parse("1if true")
=> (SCOPE... - 05:34 PM Ruby Revision 6d6f927d (git): ZJIT: Merge reduce_send_without_block_to_ccall and reduce_send_to_ccall (#16675)
- Thread through special handling of the potential block argument.
- 05:34 PM Ruby Revision d3f7d2c7 (git): ZJIT: Pull load out of IsBlockParamModified (#16673)
- This makes IsBlockParamModified pure and the loads more understandable
to load-store forwarding. - 04:45 PM Ruby Revision 8886990a (git): ZJIT: Add polymorphic support for getblockparamproxy (#16636)
-
02:34 PM Ruby Feature #21982: Add `Decimal` as a core numeric class
- Oh, gotcha. Yeah we would not be able to optimize C code. Maybe one day it will motivate a pure Ruby impl but today is not that day.
-
07:06 AM Ruby Feature #21982: Add `Decimal` as a core numeric class
- > ZJIT will be able to "see through" and even elide general Ruby object allocations when possible.
I assume this will remain limited to objects and methods defined in Ruby? `BigDecimal` is implemented in C, and I don't think it could... -
02:17 PM Ruby Bug #21984: RubyVM::AST can't tell if an array is passed to break/next/return
- I don't think that fix works:
```
$ ./ruby -e 'pp RubyVM::AbstractSyntaxTree.parse("tap { break 1, 2 }")'
(SCOPE@1:0-1:18 tbl: [] args: nil body: (ITER@1:0-1:18 (FCALL@1:0-1:3 :tap nil) (SCOPE@1:4-1:18 tbl: [] args: nil body: (BREAK... -
04:53 AM Ruby Bug #21984: RubyVM::AST can't tell if an array is passed to break/next/return
- Changing this causes the rbs tests to fail.
https://github.com/ruby/ruby/actions/runs/24117591586/job/70364654030?pr=16678#step:14:828
``` diff
class Hello
- def with_return: () -> (1 | "2" | :x)
? ^
+ ... -
02:02 AM Ruby Bug #21984 (Open): RubyVM::AST can't tell if an array is passed to break/next/return
- ```
irb(main):005> RubyVM::AbstractSyntaxTree.parse("tap { break [1, 2, 3] }")
=> (SCOPE@1:0-1:23 tbl: [] args: nil body: (ITER@1:0-1:23 (FCALL@1:0-1:3 :tap nil) (SCOPE@1:4-1:23 tbl: [] args: nil body: (BREAK@1:6-1:21 (LIST@1:12-1:21 (... -
01:00 PM Ruby Revision 7209523f (git): [ruby/openssl] kdf: fix wrong OPENSSL_cleanse() calls
- Embarrassingly, the previous commits introduced OPENSSL_cleanse() calls
against the temporary struct instead of the buffer content. Thanks to
nagachika for noticing.
https://github.com/ruby/openssl/commit/8eca3efad4 -
11:08 AM Ruby Revision a5c9e840 (git): [ruby/openssl] kdf: release GVL in OpenSSL::KDF.scrypt
- scrypt is another password hashing algorithm, so releasing the GVL is
useful.
https://github.com/ruby/openssl/commit/dd2f6ba892 -
11:08 AM Ruby Revision 5c7e3c20 (git): [ruby/openssl] kdf: release GVL in OpenSSL::KDF.pbkdf2_hmac
- Since PBKDF2 runs single-threaded and is typically configured to take
several hundred milliseconds or longer, it is a perfect candidate to be
run without the GVL.
https://github.com/ruby/openssl/commit/2a24966414 -
10:59 AM Ruby Revision ad82b727 (git): Skip `imemo_tmpbuf` sweeping when the buffer was eagerly freed.
- `imemo_tmpbuf` can be skipped if `ptr` is `NULL` which is often
the case if `RB_ALLOCV_END` was used. -
08:25 AM Ruby Revision 1fb0aca3 (git): imemo.h: Extract rb_imemo_needs_cleanup_p
-
05:50 AM Ruby Bug #21985 (Closed): RubyVM::AST negative numbers do not include - in location
- Applied in changeset commit:git|24a2ba09af13b7c969733ea9370ad59d2442f4c9.
----------
[Bug #21985] Include the `-` in the negative numbers location -
02:30 AM Ruby Bug #21985 (Closed): RubyVM::AST negative numbers do not include - in location
- ```
irb(main):007> RubyVM::AbstractSyntaxTree.parse("-1")
=> (SCOPE@1:0-1:2 tbl: [] args: nil body: (INTEGER@1:1-1:2 -1))
irb(main):008>
``` -
05:50 AM Ruby Revision 24a2ba09 (git): [Bug #21985] Include the `-` in the negative numbers location
-
05:43 AM Ruby Revision 0cebedd0 (git): Fix the order of `assert_equal` arguments
- The expected value should be first, second the actual value.
-
05:39 AM Ruby Revision c8c0af3c (git): [ruby/rubygems] Fix grammar in gem installer cache comment
- Change "and lock the mutex" to "and to lock the mutex" for correct
parallel infinitive structure.
https://github.com/ruby/rubygems/commit/94f9267b72
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> -
05:39 AM Ruby Revision 539cb5e1 (git): [ruby/rubygems] Use eq matcher instead of be for string comparison in newgem template
- be checks object identity which will fail for newly-allocated strings.
eq checks value equality and is the correct matcher here.
https://github.com/ruby/rubygems/commit/828440937b
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@a... -
05:39 AM Ruby Revision f5ad01ea (git): [ruby/rubygems] Fix wrong expected value in Rust extension test templates
- The Rust function hello("world") returns "Hello world, from Rust!" but
the Ruby test templates expected "Hello earth, from Rust!", causing
generated tests to fail immediately after bundle gem --ext=rust.
https://github.com/ruby/rubygems... -
05:39 AM Ruby Revision 42b74bdb (git): [ruby/rubygems] Fix typos in comments and documentation
- https://github.com/ruby/rubygems/commit/72bdf54b6d
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> - 05:05 AM Ruby Revision b11091ca (git): [ruby/rubygems] Use distinct gemspec filenames in stub_with_version and stub_without_version helpers
- Agent-Logs-Url: https://github.com/ruby/rubygems/sessions/4028db0e-e050-48af-9704-4219653a4753
https://github.com/ruby/rubygems/commit/951ef62f76
Co-authored-by: hsbt <12301+hsbt@users.noreply.github.com> - 05:05 AM Ruby Revision fdc2a611 (git): [ruby/rubygems] Fix gemspec filename inconsistencies in stub_with_version and stub_without_version
- Agent-Logs-Url: https://github.com/ruby/rubygems/sessions/8de78edb-b0d3-4fd3-bdad-898184561abd
https://github.com/ruby/rubygems/commit/5a87b86515
Co-authored-by: hsbt <12301+hsbt@users.noreply.github.com> - 04:27 AM Ruby Revision 3f850711 (git): [ruby/rubygems] Fix typo in test description: 'to' -> 'do'
- Agent-Logs-Url: https://github.com/ruby/rubygems/sessions/9cf2fa2e-02a9-4dde-a833-8ad11974e1eb
https://github.com/ruby/rubygems/commit/5ac4c8400b
Co-authored-by: hsbt <12301+hsbt@users.noreply.github.com> - 04:24 AM Ruby Revision a0092d2a (git): [ruby/rubygems] Fix test_execute_allowed_push_host response message to match freebird gem
- Agent-Logs-Url: https://github.com/ruby/rubygems/sessions/61efd9ab-67d3-4ce2-b81d-4b6e8ef07f99
https://github.com/ruby/rubygems/commit/bf73b51866
Co-authored-by: hsbt <12301+hsbt@users.noreply.github.com> - 04:24 AM Ruby Revision 6d4e0064 (git): [ruby/rubygems] Fix lockfile DEPENDENCIES section to use 'rubocop' instead of 'parallel_tests'
- Agent-Logs-Url: https://github.com/ruby/rubygems/sessions/dd120552-e56f-4a0e-9143-ec483aa07bfc
https://github.com/ruby/rubygems/commit/56a98274c3
Co-authored-by: hsbt <12301+hsbt@users.noreply.github.com> - 03:52 AM Ruby Revision 76eb974b (git): [ruby/rubygems] Fix inconsistent indentation at line 481 in git_spec.rb
- Agent-Logs-Url: https://github.com/ruby/rubygems/sessions/a9efe3b4-99c9-4af2-9954-a65a2859edfc
https://github.com/ruby/rubygems/commit/3d4e90a355
Co-authored-by: hsbt <12301+hsbt@users.noreply.github.com> -
02:41 AM Ruby Revision 9232d14a (git): [DOC] Fill missing stars
- 02:24 AM Ruby Revision 3e299ba8 (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.74.0 to 2.75.0
- [Release notes](https://github.com/taiki-e/i...
04/07/2026
-
10:11 PM Ruby Bug #21640: Core Pathname is missing 3 methods / is partially-defined
- This should be solved with https://github.com/ruby/ruby/pull/16358, great!
-
07:01 PM Ruby Revision f62bec1b (git): Fix sync for `syntax_suggest`
- It is a bit special in that is uses `spec` for tests. Since https://github.com/ruby/ruby/pull/15015 those did not
get synced anymore.
This fixes the mapping to what is was before and pulls in missing changes -
06:57 PM Ruby Feature #21695: Optimizing Ruby performance with Ruby itself instead of Rust
- I am curious about this gem and will give it a read over if you post the link here.
-
06:48 PM Ruby Feature #21982: Add `Decimal` as a core numeric class
- I am hopeful that in the medium-long term, ZJIT will be able to "see through" and even elide general Ruby object allocations when possible. We have some more cleanup and feature work before that becomes possible (for example, a function ...
-
05:03 PM Ruby Revision d7da1987 (git): [ruby/syntax_suggest] Rename lex to token where appropriate
- I had a bit of trouble following what is going on.
Lexing produces tokens, this renames to reflect that.
https://github.com/ruby/syntax_suggest/commit/d3386ab6f4 - 04:28 PM Ruby Revision 3a5bb48c (git): Fix "attrest" typo (#16672)
-
04:19 PM Ruby Revision 406c2fa6 (git): [ruby/syntax_suggest] Fix typo for %I delimiter check
- Also add tests for the other types which currently don't have one
https://github.com/ruby/syntax_suggest/commit/db2dca2def -
04:10 PM Ruby Revision 17e77473 (git): [ruby/syntax_suggest] Remove now unnecessary `core_ext` fallback
- https://github.com/ruby/syntax_suggest/commit/c6bd4b53e6
-
04:10 PM Ruby Revision 27d32327 (git): [ruby/syntax_suggest] Remove workaround for ripper not lexing the entire source
- Maybe ripper fixed it since then. But prism also doesn't have this problem.
https://github.com/ruby/syntax_suggest/commit/8bc383b2a4 -
04:10 PM Ruby Revision 63a90d20 (git): [ruby/syntax_suggest] Prism is always present on Ruby 3.3
- Allows to remove some compatibility code with ripper
https://github.com/ruby/syntax_suggest/commit/3f2e9a7657 -
04:10 PM Ruby Revision 76016cc3 (git): [ruby/syntax_suggest] Raise minimum supported ruby version to 3.3
- I want to start porting this to prism without the translation layer.
https://github.com/ruby/syntax_suggest/commit/540d4840ab -
10:24 AM Ruby Revision 2fda295c (git): [DOC] Doc for File::Stat
-
08:26 AM Ruby Revision fcd21008 (git): Allow sharing middlesubstring if the terminator is present
- Sharing middle substrings have been behind a compilation flags for
a very long time, and it's unclear if we'll ever make it the default.
However, we can still share middle substrings without breaking the
zero-terminated contract if the ... -
08:25 AM Ruby Bug #21983 (Closed): RubyVM::AST no way to find &nil
- Applied in changeset commit:git|13926009ba829f42037719b9a163a41a8d67abed.
----------
[Bug #21983] Make `&nil` distinguishable from nonexistent block arg -
08:23 AM Ruby Revision 13926009 (git): [Bug #21983] Make `&nil` distinguishable from nonexistent block arg
-
08:15 AM Ruby Revision 42e0660b (git): string.c: str_subseq propagate coderange when it is 7bit
- Any substring of a 7bit string will be 7bit.
-
05:10 AM Ruby Revision 4c659a98 (git): [ruby/rubygems] Address review feedback on tmp directory path resolution
- Use source_root.parent instead of hardcoded relative path to derive the
repository root, so the code remains correct if the support file is ever
moved. Also fix the example Gemfile source path in DEBUGGING.md to
reflect the new top-level... -
05:10 AM Ruby Revision 7b77603c (git): [ruby/rubygems] Move bundler test tmp directory from bundler/tmp to top-level tmp
- The bundler tests were writing temporary files to bundler/tmp, but this
moves them to the repository's top-level tmp directory instead, which is
already covered by .gitignore. All references in CI workflows, SimpleCov
filters, rubocop ex... - 02:25 AM Ruby Revision 90924bc3 (git): Bump the github-actions group across 1 directory with 3 updates
- Bumps the github-actions group with 3 updates in the / directory: [ruby/setup-ruby](https://github.com/ruby/setup-ruby), [lewagon/wait-on-check-action](https://github.com/lewagon/wait-on-check-action) and [taiki-e/install-action](https:/...
-
12:17 AM Ruby Revision fa8c9194 (git): ZJIT: Profiling: Separate bits for T_CLASS and T_MODULE
- So I don't need to use is_subclass_of(). We already have two branches
for the two types during profiling anyways. -
12:17 AM Ruby Revision 158c1fdb (git): ZJIT: Print the Cptr, not a pointer to the pointer
- Previously, we had none-sensical lines such as:
```
v15:CPtr[CPtr(0x1008)] = Const CPtr(0x1010)
```
Which was a contradiction as the pointer in the type specialization
should match the pointer on the right hand side. -
12:17 AM Ruby Revision 35346add (git): ZJIT: Print CUInt64 in hex when sign bit is set
- It's likely some sort of mask or flags. Hexadecimal is more compact.
-
12:17 AM Ruby Revision d2653493 (git): ZJIT: Guard `T_*` in addition to shape in polymorphic getivar
- This is a8f3c34556 ("ZJIT: Add missing guard on ivar access on
T_{DATA,CLASS,MODULE}") but for the polymorphic implementation in HIR
build.
04/06/2026
-
10:36 PM Ruby Revision a2a69b42 (git): Add assertion to rb_class_alloc
- We should only ever call rb_class_alloc with a T_CLASS. Adding this
assert/assumption allows us to elide later checks for T_CLASS> -
10:36 PM Ruby Revision 20211460 (git): Use RB_BUILTIN_TYPE in RCLASS_SINGLETON_P
- This should avoid us emitting the check for a special constant.
-
10:33 PM Ruby Revision 3e851ea7 (git): Avoid box st_lookup in rb_class_real
- 09:38 PM Ruby Revision 7687c4d6 (git): ZJIT: Trace compile events and invalidation events (#16666)
- Trace compiles with `--zjit-trace-compiles` and invalidation events with `--zjit-trace-invalidation`. See [sample trace](https://ui.perfetto.dev/#!/?url=https://bernsteinbear.com/tmp-perfetto/perfetto-24803.fxt) (in a moment, when the fi...
-
08:42 PM Ruby Revision 8dd73008 (git): ZJIT: Replace Option<i32> with Recompile enum for side exit recompilation (#16665)
-
06:42 PM Ruby Revision 70e8654b (git): Update to ruby/spec@9ccd716
-
06:42 PM Ruby Revision 8d6c676f (git): Update to ruby/mspec@e1e5d4b
-
05:53 PM Ruby Revision 16da5f23 (git): Revert "Double sweep byte budget to preserve heap 1 behavior"
- This reverts commit c617c5ec85ff69a5a8b13c56d51fcd234c00e1e2.
-
05:53 PM Ruby Revision 7ddcaa40 (git): Double sweep byte budget to preserve heap 1 behavior
- Anchors the historical 2048/1024 slot counts on the 80-byte
heap instead of the 40-byte heap. This isolates whether the
major GC elimination seen in railsbench was caused by heap 1's
halved budget in the previous commit. -
05:53 PM Ruby Revision 39381957 (git): Convert incremental sweep budget from slots to bytes
- Larger slot pools are less heavily used, so a fixed slot count
over-services them relative to allocation pressure. Divide a
byte budget by heap->slot_size so the effective per-step slot
count tapers inversely with slot size. -
04:47 PM Ruby Bug #21983: RubyVM::AST no way to find &nil
- I am guessing that the `&nil` case should read `block: false` by comparing it to the `**nil` case:
```shell
❯ ruby -e 'pp RubyVM::AbstractSyntaxTree.parse("def foo(**nil); end")'
(SCOPE@1:0-1:19
tbl: []
args: nil
body:
(DEFN... -
03:41 PM Ruby Bug #21983 (Closed): RubyVM::AST no way to find &nil
- ```
$ ./ruby -e 'pp RubyVM::AbstractSyntaxTree.parse("def foo(&nil); end")'
(SCOPE@1:0-1:18
tbl: []
args: nil
body: (DEFN@1:0-1:18 mid: :foo body: (SCOPE@1:0-1:18 tbl: [] args: (ARGS@1:8-1:12 pre_num: 0 pre_init: nil opt: nil fir... -
01:03 PM Ruby Feature #21982: Add `Decimal` as a core numeric class
- I don't have a particular opinion on this feature, but if the main concern is performance, I think `bigdecimal` could likely be optimized first. Of course having to allocate an object will always be slower than an immediate, but as menti...
-
05:59 AM Ruby Feature #21982: Add `Decimal` as a core numeric class
- What version of bigdecimal did you use for the benchmark?
We've released [bigdecimal v4.1.1](https://github.com/ruby/bigdecimal/releases/tag/v4.1.1) 2 days ago.
The calculation performance is improved in this version by supporting an e... -
12:40 PM Ruby Revision 0e94ca39 (git): [ruby/prism] Implement `on_op` for ripper
- Mostly the same as for `on_kw`.
Stop comparing order for a handful of events. They are emitted by ripper in a order that is
not easy for prism to replicate. For example in`foo, bar, baz = 123`, `op` for `=` is emitted
before the last ma... -
09:49 AM Ruby Revision a371a207 (git): [ruby/resolv] Refine `Resolv::LOC::Alt#to_s`
- Extract the first element instead of `join.to_i` (`String#unpack1` is
available since ruby 2.4.0, but this gem still supports 2.3).
https://github.com/ruby/resolv/commit/f518da95ae -
09:49 AM Ruby Revision 380f9477 (git): [ruby/resolv] Tighten argument check in `Resolv::LOC::Alt.create`
- Limit the range from -100 km to the upper limit of the 32-bit
representation.
https://github.com/ruby/resolv/commit/e6dfbe7cb0 -
09:49 AM Ruby Revision 38411cad (git): [ruby/resolv] Fix centimeters representation in `Resolv::LOC::Size#to_s`
- `Size` smaller than 1m was represented as rational.
```ruby
Resolv::LOC::Size.create("0.01m").to_s #=> "1/100m"
```
Fix to represent in the proper form for `create`.
https://github.com/ruby/resolv/commit/2ff9e0585d -
09:49 AM Ruby Revision b59ae161 (git): [ruby/resolv] Tighten argument check in `Resolv::LOC::Size.create`
- Limit the size to between 0cm and less than 100,000km.
https://github.com/ruby/resolv/commit/9d9e0c3044 -
09:49 AM Ruby Revision d6518b19 (git): [ruby/resolv] Fix subsecond representation in `Resolv::LOC::Coord#to_s`
- - Leading zeros in fractional part are significant, must not be
suppressed.
- Use `Integer#divmod` to calculate division and module at once.
- Use simple comparison for exact match than regexp.
https://github.com/ruby/resolv/commit/0e... -
09:49 AM Ruby Revision 6527727c (git): [ruby/resolv] Tighten argument check in `Resolv::LOC::Coord.create`
- Limit the east-west direction to 180 degrees or less and the
north-south direction to 90 degrees or less, respectively.
https://github.com/ruby/resolv/commit/8075a1fe76 -
09:49 AM Ruby Revision 90e2253d (git): [ruby/resolv] Fix `Resolv::LOC::Coord` hemisphere calculation
- Fix `Resolv::LOC::Coord.create` hemisphere handling for LOC
coordinates. `hemi` was always `1` because `m[4]` matched `([NESW])`.
https://github.com/ruby/resolv/commit/043b5bf624 -
09:49 AM Ruby Revision 53b5f9ea (git): [ruby/resolv] Use `Regexp#match` to achieve matched data
- This method is available since ruby 1.9.0.
https://github.com/ruby/resolv/commit/1e05d06fbd -
09:49 AM Ruby Revision eebd2f7d (git): [ruby/resolv] Use early return and remove useless assignments
- https://github.com/ruby/resolv/commit/451d3f367c
-
09:34 AM Ruby Revision 9dab3c51 (git): [DOC] Mention `Hash#default_proc=` affects Proc object from `Hash#to_proc`
- ```ruby
h = {foo: 0, bar: 1, baz: 2}
proc = h.to_proc
proc.call(:nosuch) # => nil
h.default_proc = proc {'wow!'} # This affects `proc` immediately
proc.call(:nosuch) # => 'wow!'
```
This behavior is a bit of surprise to me, and I could ... - 09:23 AM Ruby Revision e0a7dad9 (git): Update bundled gems list as of 2026-04-06
-
09:22 AM Ruby Revision ed6e7006 (git): Pin RBS to avoid bigdecimal validation failure (#16664)
-
08:28 AM Ruby Revision 995eba76 (git): Fix pinned gems being removed from bundled_gems by update script
- Using `next` in `-p` mode skips the implicit `print $_`, causing
pinned gem lines (e.g. rbs) to be silently dropped from the output.
Replace `next` with an `unless` guard so the line is always printed.
Co-Authored-By: Claude Opus 4.6 (1... - 02:30 AM Ruby Revision 3ef41a52 (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.71.2 to 2.73.0
- [Release notes](https://github.com/taiki-e/i... -
01:53 AM Ruby Revision 5b00c057 (git): Manually cherry pick from https://github.com/ruby/rubygems/pull/9416/changes/7cd3b9a08a4e1ad47170eafe026932d1492fdfa1
04/05/2026
-
07:39 PM Ruby Feature #21869: Add receive_all Method to Ractor API for Message Batching
- This is my first pr and issue. I’m unsure about the current status — is the request rejected, or are there any actions required from my side?
-
01:58 PM Ruby Revision a3c372a6 (git): Fix error when `lsof` did not work
-
01:51 PM Ruby Feature #21795: Methods for retrieving ASTs
- The implications of that are, assuming this proposal is implemented based on start line/column + end line/column (or equivalently, start & end offsets):
* No need for `node_id` to implement this feature
* This feature works with both `... -
01:46 PM Ruby Feature #21795: Methods for retrieving ASTs
- I thought more about `node_id` and I found at least one case where it is problematic with different versions of Prism.
The problem is the `node_id` from the bytecode is computed by the builtin Prism parser used by `prism_compile.c`, whil... -
01:37 PM Ruby Revision 13ebc536 (git): [DOC] Fill missing stars
-
01:37 PM Ruby Revision 21d36098 (git): Fix error when `lsof` did not work
-
01:21 PM Ruby Feature #21982: Add `Decimal` as a core numeric class
- naruse (Yui NARUSE) wrote in #note-2:
> Combining two different precision decimals doesn't sound reasonable.
> ...
I think that's probably fair. I was thinking Fixnum/Flonum and their heap counterparts, but that's backing the same prec... -
01:17 PM Ruby Feature #21982: Add `Decimal` as a core numeric class
- Eregon (Benoit Daloze) wrote in #note-1:
> For context, how much of this is AI-generated?
I implemented the i128 fixed-point arithmetic by porting Roc's Dec, then used AI to explore Ruby-specific optimizations (interpreter fast paths, Y... -
01:00 PM Ruby Feature #21982: Add `Decimal` as a core numeric class
- Combining two different precision decimals doesn't sound reasonable.
It should use a single precision to ease to understand how it works.
We long discussed about decimal including introducing based on C _Decimal128, but I don't under... -
11:44 AM Ruby Feature #21982: Add `Decimal` as a core numeric class
- For context, how much of this is AI-generated?
Is it necessary to be faster than BigDecimal, for which realistic use cases?
Could BigDecimal be improved instead?
I think the bar for a new numeric core type is very high, and this w... -
10:28 AM Ruby Revision 661344b1 (git): [ruby/prism] Adapt `ParametersNode#signature` to `ErrorRecoveryNode`
- No need to list them all out anymore, it's just a single possibility now
https://github.com/ruby/prism/commit/893f2734cb -
10:27 AM Ruby Revision 79b5c50b (git): [ruby/prism] Fix type for `ArrayPatternNode#rest`
- It can only ever be one of these two
https://github.com/ruby/prism/commit/f871ce0260 -
09:03 AM Ruby Revision fbea5f0f (git): Fix error when `lsof` is not found
-
05:13 AM Ruby Feature #21704: Expose rb_process_status_new to C extensions
- @akr
> Why Process::Status object is created in such situations?
Because `Process::Status` represents either "the result of waitpid" or "errno of waitpid" and is used to transfer this information until it's finally consumed by the end ...