Activity
From 04/02/2026 to 04/08/2026
Today
-
02:34 PM 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 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 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 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 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 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 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 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 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 Revision 1fb0aca3 (git): imemo.h: Extract rb_imemo_needs_cleanup_p
-
05:50 AM 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 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 Revision 24a2ba09 (git): [Bug #21985] Include the `-` in the negative numbers location
-
05:43 AM Revision 0cebedd0 (git): Fix the order of `assert_equal` arguments
- The expected value should be first, second the actual value.
-
05:39 AM 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 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 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 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 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 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 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 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 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 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 Revision 9232d14a (git): [DOC] Fill missing stars
- 02:24 AM 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 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 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 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 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 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 Revision 3a5bb48c (git): Fix "attrest" typo (#16672)
-
04:19 PM 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 Revision 17e77473 (git): [ruby/syntax_suggest] Remove now unnecessary `core_ext` fallback
- https://github.com/ruby/syntax_suggest/commit/c6bd4b53e6
-
04:10 PM 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 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 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 Revision 2fda295c (git): [DOC] Doc for File::Stat
-
08:26 AM 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 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 Revision 13926009 (git): [Bug #21983] Make `&nil` distinguishable from nonexistent block arg
-
08:15 AM 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 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 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 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 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 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 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 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 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 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 Revision 3e851ea7 (git): Avoid box st_lookup in rb_class_real
- 09:38 PM 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 Revision 8dd73008 (git): ZJIT: Replace Option<i32> with Recompile enum for side exit recompilation (#16665)
-
06:42 PM Revision 70e8654b (git): Update to ruby/spec@9ccd716
-
06:42 PM Revision 8d6c676f (git): Update to ruby/mspec@e1e5d4b
-
05:53 PM Revision 16da5f23 (git): Revert "Double sweep byte budget to preserve heap 1 behavior"
- This reverts commit c617c5ec85ff69a5a8b13c56d51fcd234c00e1e2.
-
05:53 PM 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 Revision eebd2f7d (git): [ruby/resolv] Use early return and remove useless assignments
- https://github.com/ruby/resolv/commit/451d3f367c
-
09:34 AM 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 Revision e0a7dad9 (git): Update bundled gems list as of 2026-04-06
-
09:22 AM Revision ed6e7006 (git): Pin RBS to avoid bigdecimal validation failure (#16664)
-
08:28 AM 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 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 Revision 5b00c057 (git): Manually cherry pick from https://github.com/ruby/rubygems/pull/9416/changes/7cd3b9a08a4e1ad47170eafe026932d1492fdfa1
04/05/2026
-
07:39 PM 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 Revision a3c372a6 (git): Fix error when `lsof` did not work
-
01:51 PM 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 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 Revision 13ebc536 (git): [DOC] Fill missing stars
-
01:37 PM Revision 21d36098 (git): Fix error when `lsof` did not work
-
01:21 PM 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 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 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 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 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 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 Revision fbea5f0f (git): Fix error when `lsof` is not found
-
05:13 AM 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 ...
04/04/2026
-
07:14 PM Feature #21982 (Open): Add `Decimal` as a core numeric class
- # Feature: Add `Decimal` as a core numeric class
## Abstract
Add `Decimal < Numeric` to Ruby core: exact base-10 arithmetic using a tagged immediate VALUE (like Fixnum) for small values, promoting to a 128-bit heap object for large... -
04:34 AM Revision 3b624553 (git): LeakChecker: skip CLOSE_WAIT sockets
- Those FDs still live in the kernel space but have been closed in the
user space. -
03:22 AM Bug #21787: `IO::Buffer` Integer Overflow in Range Validation Leads to Out-of-Bounds Memory Access
- ruby_4_0 already contains commit:c353b625297162024b5a80480664e599dd49a294 and commit:f430fbbfacea5690d790dd9060ca4118431fc2fb.
-
03:20 AM Bug #21844: Inconsistent ArgumentError message for Data::define.new
- ruby_4_0 commit:7ba583d753411a39dec78ea6e7c8d2701b04c118 merged revision(s) commit:c27ae8d91aadca0660070ee1eeae9598b1fe47ee, commit:b6e6ccc6c22ebb464ce101e42a14e7daea2a80b6, commit:cbca59377ebfa1bc1183322fa9d9d0067d445c24.
-
03:20 AM Revision 7ba583d7 (git): merge revision(s) c27ae8d91aadca0660070ee1eeae9598b1fe47ee, b6e6ccc6c22ebb464ce101e42a14e7daea2a80b6, cbca59377ebfa1bc1183322fa9d9d0067d445c24: [Backport #21844]
- [ruby/psych] Remove excessive check of message
Make `Data#initialize` reject `Integer` keys
[Bug #21844] Fix error message -
03:17 AM Bug #21856: Massive performance degradation of `rb_obj_free` for `T_CLASS` since Ruby 4.0
- ruby_4_0 commit:2b22593ac1 already merged.
-
03:17 AM Bug #21954: NoMethodError instead of Gem::LoadError on gem activation problem in Ruby 4.0.2
- ruby_4_0 commit:fda2bc4ee3045a17ca52ca6075cdd955a813fbc1 merged revision(s) commit:8ecf28f9384207590be73d5f2a95859cff9c526a.
-
03:17 AM Revision fda2bc4e (git): merge revision(s) 8ecf28f9384207590be73d5f2a95859cff9c526a: [Backport #21954]
- [ruby/rubygems] Fix NoMethodError in Gem.try_activate when activation conflicts occur
-
03:16 AM Bug #21959: rb_internal_thread_event_hooks_rw_lock is not reinitialized after fork causing deadlocks
- ruby_4_0 commit:c38f8732c4ae6448cf05c795ddd5df4040ceeea8 merged revision(s) commit:c8155822c460a5734d700cd468d306ca03b44ce4.
-
03:16 AM Revision c38f8732 (git): merge revision(s) c8155822c460a5734d700cd468d306ca03b44ce4: [Backport #21959]
- reinit rb_internal_thread_event_hooks_rw_lock at fork
-
03:16 AM Bug #21961: Marshal.load freeze option fail to freeze linked strings
- ruby_4_0 commit:4fa4d71d751a4efeb5616ca7227fa57df0e718b0 merged revision(s) commit:54c4694994cc3bcfea9058b22ba3e68af6aaf740.
-
03:16 AM Revision 4fa4d71d (git): merge revision(s) 54c4694994cc3bcfea9058b22ba3e68af6aaf740: [Backport #21961]
- marshal.c: properly freeze linked strings
-
03:15 AM Bug #21971: Backport commit 5de4cc560864 / PR #15848
- ruby_4_0 commit:6b7f5aa73199616fd438847059187a95c0c6ef0f merged revision(s) commit:5de4cc56086493689701e86aa0ccf6a4a4a87d75.
-
03:14 AM Revision 6b7f5aa7 (git): merge revision(s) 5de4cc56086493689701e86aa0ccf6a4a4a87d75: [Backport #21971]
- Fix regexp performance regression for patterns starting with s/k
04/03/2026
-
10:35 PM Revision 6ab9b225 (git): ZJIT: Add IseqVersion::is_invalidated() method
- Address review feedback: use a method instead of directly comparing
.status == IseqStatus::Invalidated. -
10:35 PM Revision 83447d55 (git): ZJIT: Recompile getivar on guard_shape_failure
-
10:35 PM Revision 48dd4b14 (git): ZJIT: Deduplicate redundant GuardType instructions in fold_constants
- When two GuardType instructions in the same basic block guard the same
value with the same (or narrower) type, the second guard is redundant.
For example, `(n - 1) + (n - 2)` generates two `GuardType n, Fixnum`
— one for each subtraction... -
10:35 PM Revision 0fde80f0 (git): ZJIT: Add TODO to subsume guard dedup into GVN
-
10:35 PM Revision 153ab6be (git): ZJIT: Simplify guard dedup with Iterator::find
-
04:13 PM Revision 892991bd (git): ZJIT: Fallback ifunc invokeblock when tag check fails (#16608)
-
04:08 AM Revision 9ef2153c (git): Fix condition, `0` is truethy in Ruby [ci skip]
- 02:23 AM Revision 480d0375 (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.1 to 2.71.2
- [Release notes](https://github.com/taiki-e/i... -
12:36 AM Feature #21981 (Open): Remove CREF rewriting for methods on cloned classes/modules
- When a class or module is cloned, Ruby currently rewrites the CREF chain of each copied method so that it points at the new class instead of the original. I don't think this should happen, and methods on a cloned class should retain thei...
-
12:30 AM Revision 6200574d (git): Fix bug reference number and tracker ID to match Bug #21342
-
12:30 AM Revision bbe94d9b (git): Fix typo "rescured" to "rescued"
-
12:17 AM Revision 23175641 (git): Revert "ZJIT: Skip TestOpenURI and TestOpenURISSL (#16603)"
- This reverts commit 33b9d2ab9f45a0c66665fb8dc40ddebd07c7b7b7.
-
12:17 AM Revision 6ebe6f97 (git): Revert "ZJIT: Skip TestOpenURIProxy on Linux (#16606)"
- This reverts commit d368d42ec6b50cece947556a2185ce73fa493bfe.
-
12:17 AM Revision 61bef957 (git): YJIT: ZJIT: Use opt-level=1 on dev builds to avoid SystemStackError
- Despite adding rb_ec_stack_check() to Rust code entry points, we've seen
SystemStackError causing test failures due to debug builds consume too
much native stack space. Let's use opt-level=1 so rustc/LLVM are more
efficient with stack sp... -
12:17 AM Revision b8c35082 (git): ZJIT: Avoid transmute dodging rustc/LLVM int-to-ptr miscompilation
- The transmute triggered a miscompilation on Rust 1.85.0, where the
callback was "optimized" to unconditional go to a `SIGTRAP`ping
instruction.
While later Rust versions don't have the same miscompilation, it seems
that this is also par...
04/02/2026
-
11:27 PM Revision a6c6e563 (git): Fix random timeout in test_thread_join_during_finalizers on Windows (#16650)
- Reduce the number of spawned processes from 50 to 20 and increase the
timeout from 30s to 60s. Process creation is expensive on Windows, and
the combination caused the test to exceed the 30s limit on Windows CI. -
11:05 PM Revision 1d98daa1 (git): Relax RSS limit in test_named_structs_are_not_rooted
- The default limit of 2.0 is too tight for RSS measurements on macOS,
causing random CI failures when the ratio lands just above 2.0 (e.g.
2.05). Increase to 2.2 to account for normal RSS measurement noise.
https://github.com/ruby/ruby/a... -
10:50 PM Revision 85146a5f (git): ZJIT: Use CFP_PC in warn_unused_block for outlined PC (#16649)
- warn_unused_block uses the caller's PC to build a dedup key for the
unused block warning table. When called from ZJIT-compiled code via
rb_vm_send, cfp->pc may be stale (poisoned or uninitialized) because
ZJIT stores the real PC in cfp->... -
09:34 PM Revision e957b3a9 (git): YJIT: Stop checking rb_zjit_enabled_p on YJIT callbacks (#16648)
-
09:29 PM Revision bcd14796 (git): Fix random Broken pipe error in TestOpenURI#test_read_timeout
- The server thread writes the HTTP response while the client has a
0.1s read_timeout. On slow CI (especially Windows), the client can
time out and close the socket before the server finishes writing
headers or the response body, causing E... -
08:59 PM Revision 409b88d9 (git): Fix race condition between linking ruby and update-default-gemspecs
- `yes-update-default-gemspecs` uses `$(XRUBY)` which execs the ruby
binary, but only depended on `main` (extensions and encodings).
When `make runirb` runs with parallel jobs, the linker may still be
writing the ruby binary while `update-... -
08:34 PM Revision b2e032dc (git): auto_request_review.yml: Un-fork auto-request-review
- The PR has been upstreamed.
-
07:26 PM Revision 7aa3cbb0 (git): Convert K&R function definitions in configure.ac
-
06:46 PM Bug #21980 (Open): RubyVM::AST offsets are incorrect when BOM
- When there is a BOM on a file, the offsets are incorrect for nodes. See:
```
RubyVM::AbstractSyntaxTree.parse("\xEF\xBB\xBF1").source # => "\xEF"
```
-
01:22 PM Feature #21976: Add $SECONDS, $RANDOM, and other bashisms
- Sorry to be late: https://github.com/nobu/bashism
-
11:56 AM Bug #21933: Ruby::Box: named capture local variable can become nil after non-matching lines
- I opened a pull request with a fix and regression test for this issue:
https://github.com/ruby/ruby/pull/16644
-
11:17 AM Revision e866d953 (git): Prism: Close the open file once finished reading
-
11:08 AM Bug #21974 (Closed): Cannot inspect RubyVM::AST for CDECL
- Applied in changeset commit:git|4009b713a64f469e593ffbc5bb4b37eff43f3be3.
----------
[Bug #21974] Fix RubyVM::AST inspection for ::Foo = 1 (#16642)
* Fix AST CDECL children for top-level constants
* Simplify cdecl AST regression test -
09:00 AM Bug #21974: Cannot inspect RubyVM::AST for CDECL
- I have created a fix for this https://github.com/ruby/ruby/pull/16642
-
11:08 AM Revision 4009b713 (git): [Bug #21974] Fix RubyVM::AST inspection for ::Foo = 1 (#16642)
- * Fix AST CDECL children for top-level constants
* Simplify cdecl AST regression test - 05:36 AM Revision 3319be01 (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.70.4 to 2.71.1
- [Release notes](https://github.com/taiki-e/i... -
04:49 AM Revision b7eb96ec (git): Our test suite is broken with rb_sys-0.9.125 bacause we can't build json extension
-
04:37 AM Feature #21979 (Open): `String#unpack`/`String#unpack1` should allow negative offset
- https://bugs.ruby-lang.org/issues/18254#note-14
I think `String#unpack`/`String#unpack1` should allow negative offset as well as the other methods, for example `String#slice` that is referred to in the description.
[ruby/ruby#16641]... -
04:30 AM Feature #18254: Add an `offset` parameter to String#unpack and String#unpack1
- I wasn't aware that negative offset is not allowed.
Shouldn't `unpack`/`unpack1` also allow it as well as the other methods, `String#slice`, `String#[]` and so on? -
04:13 AM Bug #20948 (Closed): Constant references incorrectly cached in `module (expr)::Foo`
- Applied in changeset commit:git|91ae69860591f0dfc85571cfbd023dd199e17e73.
----------
Use compile-time flag to indicate dynamic CREFs
The inline constant cache previously used `RCLASS_SINGLETON_P` to detect
"unstable" CREFs that need ic... -
04:13 AM Revision 91ae6986 (git): Use compile-time flag to indicate dynamic CREFs
- The inline constant cache previously used `RCLASS_SINGLETON_P` to detect
"unstable" CREFs that need ic_cref stored and checked on every IC hit.
This caused the `class << self` pattern to create inline caches which
requires extra checks a... -
03:56 AM Revision 07e52c81 (git): Fix `TestSocket#test_bintime`
- `String#unpack` does not allow negative offset.
- 03:17 AM Revision 81df2bda (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... -
02:53 AM Revision b59fe8e7 (git): [ruby/rubygems] Handle empty result gracefully in gem pristine --only-missing-extensions
- When no gems have missing extensions (e.g. on JRuby where
missing_extensions? always returns false), display an informational
message instead of raising Gem::Exception.
https://github.com/ruby/rubygems/commit/738d2dbdf6
Co-Authored-By:... -
02:53 AM Revision cb75f04f (git): [ruby/rubygems] Skip missing_extensions? check on JRuby
- JRuby does not require extension rebuilds when switching JRuby or Java
versions because Java extensions are shipped pre-compiled and JRuby does
not expose a version-specific C API. This means missing_extensions?
returning true on JRuby i... -
02:53 AM Revision 79c0a025 (git): [ruby/rubygems] Use IO.copy_stream to drain remaining gzip data instead of read
- Replace gzio.read with IO.copy_stream(gzio, IO::NULL) to avoid
allocating a potentially large string when discarding unconsumed
compressed data.
https://github.com/ruby/rubygems/commit/e4d0196887
Co-Authored-By: Claude Opus 4.6 (1M con... -
02:53 AM Revision 9233eae6 (git): [ruby/rubygems] Consume remaining gzip data in open_tar_gz to suppress zlib warning
- When a GzipReader is closed before all compressed data is consumed,
zlib emits "attempt to close unfinished zstream; reset forced" warning.
This happens in open_tar_gz because the TarReader stops reading at the
end-of-archive marker, lea... -
02:43 AM Revision 27f24a37 (git): [ruby/rubygems] Fix incompatible function pointer type error with Xcode 26.5 beta
- Xcode 26.5 beta ships a clang that promotes -Wincompatible-function-pointer-types to an error by default. The test's inline C extension defined `VALUE foo()` (taking no arguments) but passed it to `rb_define_global_function` which expect...
-
02:21 AM Bug #21978 (Closed): Fix class variable cache isn't invalidated via modules
- Applied in changeset commit:git|dd3542a0cd00b40d406763e85ac12a1086bab682.
----------
Fix class variable cache not invalidated by class_variable_set
The previous invalidation walked subclasses but missed cvars from
included modules, and... -
02:21 AM Revision dd3542a0 (git): Fix class variable cache not invalidated by class_variable_set
- The previous invalidation walked subclasses but missed cvars from
included modules, and skipped invalidation when creating a new cvar on
modules entirely. Always invalidate when a new class variable is
created, since this should be relat... -
12:18 AM Revision f0c73671 (git): Revert "ZJIT: Clean up branching in polymorphic opt_send_without_block HIR construction (#16634)"
- This reverts commit 77b803cfc833233a49b497a9342f16c9237833e6.
There is a new NULL dereference in tool/test/testunit/test_sorting.rb
that seem to have started with this commit.