Activity
From 10/07/2026 to 10/13/2026
Today
-
09:39 AM Ruby Revision b10b8048 (git): io_buffer.c: use rb_off_t consistently
- Fix an rb_off_t value being implicitly converted to off_t and then back
to rb_off_t. -
09:29 AM Ruby Revision 9d123b1e (git): Saturate parser columns at INT_MAX
- Token columns are int, so a token past column INT_MAX got a negative column, and the excerpt shown for a syntax error there was read from before the line.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> -
09:29 AM Ruby Revision e5e36b4e (git): Range-check parser columns with rb_len2int
- rb_long2int is a plain cast where int and long have the same width, so on 64-bit mswin a column past INT_MAX wrapped instead of raising RangeError as it does on LP64.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> -
09:29 AM Ruby Revision c68782a2 (git): Hold heredoc offsets in rb_len_t
- Where rb_len_t is wider than long, a heredoc opener past column LONG_MAX made the long offset negative, and the identifier and the restored lexer position were read from before the line.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropi... -
09:29 AM Ruby Revision 4f42bb94 (git): Hold parser string lengths in rb_len_t
- rb_parser_string_t kept its length in a long, so rb_str_to_parser_string had to reject a String longer than LONG_MAX where rb_len_t is wider than long. Now the parser string holds the whole length and the check is gone.
Co-Authored-By: ... - 08:05 AM Ruby Revision 2722027e (git): Update default gems list at 53e7d061f90ae80236e7a917b924ea [ci skip]
-
08:04 AM Ruby Revision 53e7d061 (git): [ruby/json] Release 3.1.0
- https://github.com/ruby/json/commit/a15b2ba603
-
07:32 AM Ruby Revision 72afd0b0 (git): [ruby/json] Refactor `rfc8785_sort_keys_proc`
- https://github.com/ruby/json/commit/d09e383d19
- 07:09 AM Ruby Revision ee0f83a7 (git): Update bundled gems list as of 2026-10-13
-
06:29 AM Ruby Feature #22431: Add `IO#unpack` and `IO#unpack1`
- The current `String#unpack` has its signature as:
```
String#unpack(template, offset: 0, &block)
```
The concern for unbounded IO read can be potentially solved by having a `maxlen` option:
```
IO#unpack(template, maxlen = n... -
03:14 AM Ruby Feature #22431: Add `IO#unpack` and `IO#unpack1`
- I understand the motivation and have wanted this myself, but there seem to be many things to consider. `unpack` has specifiers like `X` and `@` that do not fit streams. We would also need to decide how to handle specifiers with unbounded...
-
04:14 AM Ruby Revision 83fdd0da (git): [ruby/mmtk] Build with LTO when able
- https://github.com/ruby/mmtk/commit/2dbb8005aa
-
02:09 AM Ruby Bug #22432 (Open): Range#include? returns true for the end of an empty range of single-character Strings
- A Range whose ends are both single ASCII characters reports that it includes its end even when the range is empty.
```ruby
r = "z".."a"
r.to_a #=> []
r.include?("a") #=> true
r.member?("a") #=> true
r.cover?("a") #=> ... -
12:46 AM Ruby Revision f81c2121 (git): Index the regexp match cache by OnigPosition
- The match cache index, the fail count and the threshold to enable the cache grow with the string length times the number of cache points, but were long, which is 32-bit on mswin. There the following raised RegexpError (failed to allocate...
-
12:46 AM Ruby Revision c5c692c8 (git): Traverse shareable Arrays by rb_len_t
- RARRAY_LENINT raises RangeError for an Array longer than INT_MAX. Ractor.make_shareable failed on one after freezing it, and so did Ractor.shareable? and Ractor.make_shareable(copy: true).
Co-Authored-By: Claude Opus 5.5 <noreply@anthro... -
12:46 AM Ruby Revision cb86c6d7 (git): Count the Array#product positions in rb_len_t
- An int counter overflows once an array has more than INT_MAX elements. On LP64, product with a block then yielded the element at index 1 after the one at INT_MAX, instead of the one at 2**31.
Co-Authored-By: Claude Opus 5.5 <noreply@ant... -
12:27 AM Ruby Revision c83f90c6 (git): [ruby/zlib] Return the full input length from Zlib::ZStream#avail_in
- The int cast turned a remainder longer than INT_MAX into a wrong or negative number.
https://github.com/ruby/zlib/commit/d23d925f67
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
10/12/2026
-
10:43 PM Ruby Feature #22431 (Open): Add `IO#unpack` and `IO#unpack1`
- I would like to have ruby add `IO#unpack` and `IO#unpack1` that effectively does both `IO#read(...)` and `String#unpacking(...)` in one call.
This can significantly improve the performance of consuming data in a variable-length encodi... -
08:40 PM Ruby Revision 55e03ec0 (git): [ruby/prism] Fix buffer length append check 0
- https://github.com/ruby/prism/commit/812fd04263
-
05:01 PM Ruby Revision 98fd04f7 (git): [ruby/prism] attach_comments
- Revisit how we attach comments, allowing consumers to do it in C.
https://github.com/ruby/prism/commit/eb3528e580 -
03:11 PM Ruby Revision 31ace4fd (git): [ruby/prism] Use SSE2, not SSSE3
- Pre-compilation could potentially enable SSSE3, when the target
the code is being installed on might not actually have it. In
order to use more modern instruction sets, we need runtime
detection. It's simpler just to rely on the baseline... -
02:55 PM Ruby Revision ad29ad7a (git): [ruby/json] Handle invalid encoding in JSON path keys
- https://github.com/ruby/json/commit/e19f7d75a6
-
02:28 PM Ruby Revision 86f192cf (git): [ruby/json] parser.c: only update the stack once fully spilled
- https://github.com/ruby/json/commit/78d6a83a3c
-
02:22 PM Ruby Revision c5597ac4 (git): [ruby/json] Fix parsing of number with out of range negative exponents
- https://github.com/ruby/json/commit/6ea62016fb
-
01:57 PM Ruby Revision 817023b8 (git): [ruby/json] Fix parsing of unescaped NULL bytes in strings
- https://github.com/ruby/json/commit/1b67eb3db2
-
01:51 PM Ruby Revision 90e7ab3a (git): [ruby/json] ResumableParser: fix handling of incomplete unicode escape
- `spe` is the string end, so if the escape is incomplete, it doesn't
mean we reached the end of stream, hence it's a syntax error, not
an EOS error.
https://github.com/ruby/json/commit/c1a4372837 -
01:40 PM Ruby Bug #22427: `--enable=zjit` does not enable ZJIT
- Thanks, Proposed fix in https://github.com/ruby/ruby/pull/19307
-
04:59 AM Ruby Bug #22427 (Open): `--enable=zjit` does not enable ZJIT
- `ruby --help` lists `zjit` under "Features" (`zjit Method-based JIT compiler (default: disabled).`), but `--enable=zjit` alone does not enable ZJIT, while `--enable=yjit` does enable YJIT.
```
$ ruby -v
ruby 4.0.7 (2026-09-15 revis... -
12:34 PM
Ruby
Feature #13677 (Closed): Add more details to error "Name or service not known (SocketError)"
- Applied in changeset commit:git|36f2a8e807a44dc3761e023498887f92a12e7735.
----------
[Feature #13677] Add host to addrinfo resolution errors
hostname is added as a suffix to getaddrinfo error messages. for
example, a "name or service n... - 12:33 PM Ruby Revision 36f2a8e8 (git): [Feature #13677] Add host to addrinfo resolution errors
- hostname is added as a suffix to getaddrinfo error messages. for
example, a "name or service not known" error message becomes "name or
service not known for `invalidthost.com`. -
11:39 AM Ruby Revision bb12f054 (git): [ruby/prism] Initialize `filepath` option to the empty string
- Same as `current_string`, set it to be empty.
Similarly, when populating user-provided options, we need to check the lengh, same as for `encoding`.
Closes https://github.com/ruby/prism/issues/4249
https://github.com/ruby/prism/commit/c... -
09:45 AM Ruby Revision 9e8bf735 (git): [ruby/mmtk] Resize objects to optimal size when moving
- https://github.com/ruby/mmtk/commit/6d83b67d9a
-
09:35 AM Ruby Bug #22430 (Open): regex counted group with a zero-width iteration misses a match
- repro:
```ruby
/\A(?:a|^){2}\z/.match?("a") # true
/\A(?:a|^){2,3}\z/.match?("a") # false
/\A(?:\B|a){3}\z/.match?("aa") # false
/\A(?:^a*){2,3}\z/.match?("a") # false
```
Perl and Python return true for all four. Possib... -
09:33 AM Ruby Bug #22429 (Open): regex empty capture group in a counted loop prevents a match
- repro:
```ruby
/\A(?:(){1,2}?a)+\z/.match?("aa") # false
/\A(?:(?:){1,2}?a)+\z/.match?("aa") # true
/\A(?:(){1,2}a)+\z/.match?("aa") # true
```
An empty capture `()` behaves differently from `(?:)`. Perl, Python and Onig... -
09:10 AM Ruby Revision a125858d (git): [ruby/digest] Limit the hexencode and bubblebabble results by RB_LEN_MAX
- The result is a String, whose length can exceed LONG_MAX on mswin.
https://github.com/ruby/digest/commit/de4c1f26d7
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> -
08:55 AM Ruby Revision 26e67c38 (git): Use the default timeout in test_super_in_refined_prepended_module_method_in_thread
- The 1 second timeout expired on the Windows runners, although the child had finished all its assertions without an error. Use the default like the other tests in this file.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> -
08:22 AM Ruby Revision 8382f95c (git): Prevent double free for too big repetition quantifiers (#13332)
- Prevent double free for too big repetition quantifiers
The previous implementation calls `free(node)` twice (on parsing and compiling a
regexp) when it has an error, so it leads to a double-free issue. This
commit enforces `free(node)` ... -
08:22 AM Ruby Bug #22428 (Open): Fiber scheduler: rb_nogvl returns as if the function ran when an offloaded operation is cancelled before execution
- ## Description
When a fiber scheduler cancels an offloaded blocking operation before a worker starts it, `rb_nogvl` returns normally even though the function never ran. It returns the zero-initialized result, so the caller cannot dist... -
08:21 AM Ruby Revision 2d1859ff (git): Reject a compiled program too big for its offset type
- Concatenated large repeats reach a program past INT_MAX from a few hundred
kilobytes of source, and the offsets emitted into it wrap. Cap the size
while the program is emitted, which does not depend on the length pass that
overflows alo... -
08:21 AM Ruby Revision f8005098 (git): Avoid overflow in the quantifier expansion size check
- Nested bounded repeats let the int product tlen * qn->lower overflow, so
the check that keeps the compiler from unrolling a large repeat could pass
for an enormous one, hanging the compile or emitting wrapped jump offsets.
Compare agains... -
08:15 AM Ruby Revision 0e01c2a8 (git): [ruby/json] More hardening against adversarial `encode` methods
- https://github.com/ruby/json/commit/429c109458
-
08:11 AM Ruby Revision 78a31f67 (git): [ruby/json] Index the generated JSON array by rb_len_t
- An int index overflows on an Array longer than INT_MAX, which LP64 and now mswin can hold.
https://github.com/ruby/json/commit/8df32ab074
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> -
07:31 AM Ruby Revision 3edde2d2 (git): Size the CGI.escapeHTML overflow test by rb_len_t
- The test assumed the length is narrower than size_t wherever unsigned long is, which stops holding once rb_len_t widens on mswin. It keeps running on mingw.
https://bugs.ruby-lang.org/issues/22400
Co-Authored-By: Claude Opus 5.5 <norep... -
07:31 AM Ruby Revision 08a554ec (git): Accept the long long conversion error in the IO::Buffer.string spec
- The size is converted to rb_len_t, and the message names long long instead of long once rb_len_t widens on mswin.
https://bugs.ruby-lang.org/issues/22400
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> -
07:31 AM Ruby Revision 29c5e0bc (git): Check the Array#product size against the rb_len_t range
- MUL_OVERFLOW_LONG_P falls back to LONG_MIN and LONG_MAX without the overflow builtin, so once rb_len_t widens on mswin it would reject a product of 2**31 or more that the result array can hold.
https://bugs.ruby-lang.org/issues/22400
C... -
07:31 AM Ruby Revision 3d73c09f (git): Keep the branch target count of the coverage cache as rb_len_t
- LONG2FIX and FIX2LONG would narrow it to long once rb_len_t widens on mswin, where Fixnum is also only 31 bits.
https://bugs.ruby-lang.org/issues/22400