Project

General

Profile

Activity

From 08/27/2025 to 09/02/2025

09/02/2025

11:21 PM Revision de6df750 (git): test_io_wait.rb: Increase a timeout for a flaky test
like 68682a5d2b2
https://github.com/ruby/ruby/actions/runs/17417763247/job/49449895757?pr=14433
k0kubun (Takashi Kokubun)
10:57 PM Revision 85fd5d5a (git): ZJIT: Use Copy instead of Clone
aidenfoxivey-shop (Aiden Fox Ivey)
10:57 PM Revision d51ea6be (git): ZJIT: Remove unnecessary return statements
aidenfoxivey-shop (Aiden Fox Ivey)
10:57 PM Revision efd2746b (git): ZJIT: Remove unnecessary .into calls
aidenfoxivey-shop (Aiden Fox Ivey)
10:57 PM Revision 8e8f2ba2 (git): ZJIT: Use copied over map(|x| *x)
aidenfoxivey-shop (Aiden Fox Ivey)
10:57 PM Revision d0ea036e (git): ZJIT: Use .is_some_and
aidenfoxivey-shop (Aiden Fox Ivey)
10:57 PM Revision f23d8662 (git): ZJIT: Use is_empty over compare with ""
aidenfoxivey-shop (Aiden Fox Ivey)
10:55 PM Revision 98a88944 (git): ZJIT: Use inspect_err on Result values (#14431)
k0kubun (Takashi Kokubun)
10:28 PM Revision 61d5fb21 (git): ext/-test-/tracepoint/gc_hook.c: Fix GC safety issue
TestTracepointObj#test_teardown_with_active_GC_end_hook was failing on
some platforms due to a Proc that is not marked being passed around.
Neither rb_tracepoint_new() nor rb_postponed_job_preregister() promise
to mark their callback `vo...
alanwu (Alan Wu)
09:09 PM Revision 4c0b6815 (git): ZJIT: Remove unneeded test exclusions (#14430)
Stan Lo
09:05 PM Feature #21557: Ractor.shareable_proc to make sharable Proc objects, safely and flexibly
A full cfg wouldn't work 100% because of methods `catch` and `throw`, among other things like you mentioned. I think a best-effort static analysis is okay, as long as it's not a huge effort. I'm not sure that we actually need captured va... luke-gru (Luke Gruber)
07:53 PM Revision c1c0b324 (git): test_gc.rb: Attempt to stabilize test_interrupt_in_finalizer
This fails way too often across many environments. I don't think this
test is healthy.
https://github.com/ruby/ruby/actions/runs/17343611722/job/49240735401
Before we give up on it, let me see if this helps.
k0kubun (Takashi Kokubun)
07:46 PM Revision e21988c9 (git): test_settracefunc.rb: Increase a timeout
https://github.com/ruby/ruby/actions/runs/17413734881/job/49436975287 k0kubun (Takashi Kokubun)
07:20 PM Revision 77a421fb (git): ZJIT: Clear jit entry from iseqs after TracePoint activation (#14407)
ZJIT: Remove JITed code after TracePoint is enabled Stan Lo
06:58 PM Revision e0a7da93 (git): ZJIT: Rename gen_save_pc to gen_prepare_call_with_gc (#14427)
k0kubun (Takashi Kokubun)
06:28 PM Revision bdaff44b (git): ZJIT: Propagate and count CompileError on exits (#14408)
k0kubun (Takashi Kokubun)
05:43 PM Revision f210e813 (git): Update rbs sha to the latest aaa-3.9.x (#14426)
k0kubun (Takashi Kokubun)
05:41 PM Revision c0266272 (git): ZJIT: NewRangeFixnum instruction (#14409)
* Failing optimization tests for NewRangeFixnum
* NewRangeFixnum general idea
* Use gen_prepare_call_with_gc on gen_new_range_fixnum; add additional hir tests
* Remove unused NewRange rewrite trigger when neither range is Fixnum liter...
altxtech (André Soares)
05:38 PM Revision 8e1b5cba (git): test_socket.rb: Permit ProxyError for Windows
https://github.com/ruby/ruby/actions/runs/17410747983/job/49427074277 k0kubun (Takashi Kokubun)
05:34 PM Revision b1b4984f (git): test_thread_cv.rb: Increase a timeout for a thread test
https://github.com/ruby/ruby/actions/runs/17410747983/job/49427074277 k0kubun (Takashi Kokubun)
05:07 PM Revision 9158b19b (git): test_transcode.rb: Increase a timeout for Ractor tests
https://github.com/ruby/ruby/actions/runs/17408924679/job/49420774667 k0kubun (Takashi Kokubun)
05:04 PM Revision a8df3f66 (git): ZJIT: Unskip a Ractor bootstrap test (#14421)
ZJIT: Unskip Ractor bootstrap test Stan Lo
03:50 PM Revision f0cc93c1 (git): ZJIT: Bump default --zjit-call-threshold to 30 (#14410)
k0kubun (Takashi Kokubun)
01:22 PM Revision 636da19e (git): Output parent object info when marking T_NONE
peterzhu2118 (Peter Zhu)
01:22 PM Revision 8c73da9e (git): Output T_NONE object info to bug report
rb_obj_info_dump outputs to stderr, which is not outputted to the bug
report, so this information is lost.
peterzhu2118 (Peter Zhu)
01:22 PM Revision eec38310 (git): Refactor T_NONE checking in default.c
peterzhu2118 (Peter Zhu)
11:34 AM Feature #17398: SyntaxError in endless method
It is easy for prism to accept this as well: https://github.com/ruby/prism/pull/3632
I checked the above examples and prism seems to interpret them in the same way.
Earlopain (Earlopain _)
03:22 AM Feature #17398 (Assigned): SyntaxError in endless method
Ok, then we need a patch for prism mame (Yusuke Endoh)
03:13 AM Feature #17398: SyntaxError in endless method
Sounds reasonable, considering existing grammar.
Matz.
matz (Yukihiro Matsumoto)
09:01 AM Feature #20437: Could the licensing conditions be made less ambiguous?
Coming back here looking at https://github.com/ruby/rdoc/issues/401#issuecomment-209224627 . I'd still be interested to hear from @Matz and wish the license was clearer. vo.x (Vit Ondruch)

09/01/2025

11:50 PM Bug #21559: Unicode normalization nfd -> nfc -> nfd is not reversible
@duerst Thank you, I appreciate you taking care of it. ima1zumi (Mari Imaizumi)
04:09 AM Bug #21559: Unicode normalization nfd -> nfc -> nfd is not reversible
@ima1zumi Not sure this is even allowed, but I'm sure I'm responsible for this behavior, and want to fix it myself, so I change the Assignee to myself. duerst (Martin Dürst)
12:50 AM Bug #21559: Unicode normalization nfd -> nfc -> nfd is not reversible
This looks like a bug. Per Unicode TR15, the identity toNFD(x) == toNFD(toNFC(x)) must be maintained. https://unicode.org/reports/tr15/#Design_Goals
It seems the NFC process is combining characters across U+11930, even though its CCC is...
ima1zumi (Mari Imaizumi)
06:38 PM Bug #21558: Regexp.union with multiple regexps returns a non-shareable object (should be shareable if possible)
There is also #8948. I didn't get time to try it, but anyone is welcome to try and find if there are any failures in CI/the test suites and if so how to fix them. Eregon (Benoit Daloze)
01:50 PM Feature #21556: Add true? and false? methods to NilClass, TrueClass, FalseClass, and String
shan (Shannon Skipper) wrote in #note-4:
> I wonder if the inclusion of the String variant could be considered again even though it has been merged? Is there a domain where `"true"` and `"false"` Strings are used? The Rails variant tryi...
Phalado (Raphael Cordeiro)
01:44 PM Feature #21556: Add true? and false? methods to NilClass, TrueClass, FalseClass, and String
austin (Austin Ziegler) wrote in #note-3:
> Phalado (Raphael Cordeiro) wrote in #note-2:
> ...
Well, the idea is to recognize true/false values, ignoring truthy/falsy values because of JSON.
I also think this is something very 'Ruby' to...
Phalado (Raphael Cordeiro)
12:54 AM Feature #21556: Add true? and false? methods to NilClass, TrueClass, FalseClass, and String
I wonder if the inclusion of the String variant could be considered again even though it has been merged? Is there a domain where `"true"` and `"false"` Strings are used? The Rails variant trying to support env vars makes more sense to m... shan (Shannon Skipper)
12:34 PM Bug #21534: ppc64le bootstraptest/test_ractor.rb aborted (core dumped) on configure cppflags=-DRUBY_DEBUG and -O3
I want to lower my priority for this task, because the issue only can happen on the configuring with cppflags=-DRUBY_DEBUG and -O3. The case is not a typical workflow.
And if I find the root cause of this issue, I need to prepare a mi...
jaruga (Jun Aruga)
08:34 AM Revision f9bffff3 (git): remove `Ractor#take`
[Feature #21262] ko1 (Koichi Sasada)
06:13 AM Feature #20163: Introduce #bit_count method on Integer
I prefer an exception for popcount to negative values.
I think an array of Fixnums (63 bit signed integers) can be used for mutable bit array.
(Ruby's Integer is immutable. So mutable bit array needs a mutable data structure.)
In...
akr (Akira Tanaka)
03:56 AM Feature #17398 (Open): SyntaxError in endless method
Thanks, it looks good. @matz what do you think? mame (Yusuke Endoh)
03:50 AM Feature #17398: SyntaxError in endless method
> Note that private def hello = puts "Hello" does not parse for technical reason.
It's possible.
Patch is https://github.com/yui-knk/ruby/tree/bug_17398.
This change allows single endless method definition with command body as an ar...
yui-knk (Kaneko Yuichiro)
03:30 AM Bug #18878: parse.y: Foo::Bar {} is inconsistently rejected
Note: 9930363aab6ac4b8d7034baff85cd86c17953dc9 was the commit to allow `Foo::Bar {}` in parse.y. yui-knk (Kaneko Yuichiro)
01:44 AM Bug #18878: parse.y: Foo::Bar {} is inconsistently rejected
Patch:
* Support only `Foo::Bar {} + 1`: https://github.com/yui-knk/ruby/tree/bug_18878_2
* Support both `Foo::Bar {} + 1` and `Foo::Bar do end` (and `Foo::Bar do end + 1`): https://github.com/yui-knk/ruby/tree/bug_18878
yui-knk (Kaneko Yuichiro)

08/31/2025

11:17 PM Revision ed0ffcdc (git): Remove unnecessary Enumerable#each_slice
This method has been a built-in feature since Ruby 1.8.7, so this
fallback implementation is no longer needed.
Ref: https://docs.ruby-lang.org/en/3.4/NEWS/NEWS-1_8_7.html
ima1zumi (Mari Imaizumi)
09:07 PM Bug #21559: Unicode normalization nfd -> nfc -> nfd is not reversible
```ruby
"s\u{11930 323 11930 307}".unicode_normalize(:nfc).dump #=> "\u1E69\u{11930}\u{11930}"
"s\u{323 307}".unicode_normalize(:nfc).dump #=> "\u1E69"
```
Are U+0323 and U+0307 composed to `s` jumping over U+11930?
nobu (Nobuyoshi Nakada)
12:52 PM Bug #21559 (Closed): Unicode normalization nfd -> nfc -> nfd is not reversible
I expect `nfd(nfc(str)) == nfd(str)` but found a string that doesn't.
~~~ruby
# Ruby 3.1 - 3.5
str = "s\u{11930}\u{323}\u{11930}\u{307}"
p str.unicode_normalize(:nfd) == str.unicode_normalize(:nfc).unicode_normalize(:nfd)
#=> fals...
tompng (tomoya ishida)
09:31 AM Revision 266393d3 (git): CI: Adjust time frame before the release
nobu (Nobuyoshi Nakada)
06:55 AM Bug #21558: Regexp.union with multiple regexps returns a non-shareable object (should be shareable if possible)
I've found an issue that already talked about it https://bugs.ruby-lang.org/issues/17256. niku (niku _)
06:42 AM Bug #21558: Regexp.union with multiple regexps returns a non-shareable object (should be shareable if possible)
> Regexp.union creates a new instance, except for a single Regexp argument case.
Ah, that makes perfect sense now. Thank you for the detailed explanation.
```irb
irb(main):001> a = /a/
=> /a/
irb(main):002> a.__id__
=> 7232
ir...
niku (niku _)
04:42 AM Bug #21558: Regexp.union with multiple regexps returns a non-shareable object (should be shareable if possible)
Another example is `Range`.
All instances of `Range` are automatically frozen so they are Ractor-shareable.
Personally, I think freezing all `Regexp` instances also may be nice, but that's a different story than `Regexp.union`.
nobu (Nobuyoshi Nakada)
04:25 AM Bug #21558 (Feedback): Regexp.union with multiple regexps returns a non-shareable object (should be shareable if possible)
`Regexp.union` creates a new instance, except for a single `Regexp` argument case.
And it is impossible to revert a Ractor-shareable object to non-Ractor-shareable.
So it feels natural that the new instance is not Ractor-shareable as w...
nobu (Nobuyoshi Nakada)
02:54 AM Bug #21558 (Feedback): Regexp.union with multiple regexps returns a non-shareable object (should be shareable if possible)
Regexp.union returns a non-shareable object when given multiple Regex arguments. Is this expected behavior?
It would be preferable if the resulting Regexp were shareable, since single-argument `Regexp.union` does produce a shareable obj...
niku (niku _)
12:00 AM Feature #21556: Add true? and false? methods to NilClass, TrueClass, FalseClass, and String
Phalado (Raphael Cordeiro) wrote in #note-2:
> nobu (Nobuyoshi Nakada) wrote in #note-1:
> ...
If you're checking a string for the value `"true"`, you're not checking for an exact `true` or `false` value. This is a data conversion appl...
austin (Austin Ziegler)

08/30/2025

10:58 PM Feature #21556: Add true? and false? methods to NilClass, TrueClass, FalseClass, and String
nobu (Nobuyoshi Nakada) wrote in #note-1:
> Phalado (Raphael Cordeiro) wrote:
> ...
Data received on requests and JSON conversion. It's not unusual that a Boolean is converted to a String, or users end up filling in as a String instead...
Phalado (Raphael Cordeiro)
09:02 PM Misc #21549: DevMeeting-2025-09-11
* [Feature #21555] Add support for predicate attribute reader names (eregon)
* As noticed by @Dan0042 there are now 7 tickets asking the same feature.
* Would matz be OK to add it? 9 years ago matz said no in https://bugs.ruby-lang...
Eregon (Benoit Daloze)
10:07 AM Misc #21549: DevMeeting-2025-09-11
* [Bug #21168] Prism doesn't require argument parentheses (in some cases) when a block is present but parse.y does (earlopain)
* This was previously discussed in a dev meeting https://bugs.ruby-lang.org/issues/21134
* matz said he ...
Earlopain (Earlopain _)
08:38 PM Feature #21550: Ractor.shareable_proc/shareable_lambda to make sharable Proc object
I wrote my detailed proposal in #21557. Eregon (Benoit Daloze)
08:38 PM Feature #21557 (Closed): Ractor.shareable_proc to make sharable Proc objects, safely and flexibly
Following #21039 and #21550, this is a complete proposal which does not require reading these previous proposals (since that caused some confusion).
That way, it is hopefully as clear as possible.
It also explains how it solves everyth...
Eregon (Benoit Daloze)
06:24 PM Bug #21538 (Closed): initialize_dup not called when duping class/module
Applied in changeset commit:git|5c7dfe85a1dc49334e2828791f0ade42eee662db.
----------
Initialize class dup/clone before calling initialize_dup/initialize_clone
Previously, you could override the class initialize_dup/initialize_clone
met...
jeremyevans (Jeremy Evans)
02:13 AM Bug #21538: initialize_dup not called when duping class/module
I found a simple fix for all issues: https://github.com/ruby/ruby/pull/14412 jeremyevans0 (Jeremy Evans)
12:16 AM Bug #21538: initialize_dup not called when duping class/module
The example given isn't a bug. `initialize_dup` is called on the new instance (in this example, the instance of `Class`), and `dup` does not copy singleton classes. If you define `Class#inititialize_dup`, it works as expected:
```ruby...
jeremyevans0 (Jeremy Evans)
06:24 PM Revision 5c7dfe85 (git): Initialize class dup/clone before calling initialize_dup/initialize_clone
Previously, you could override the class initialize_dup/initialize_clone
method and the class hierarchy would not be set correctly inside the
method before calling super.
This removes Module#initialize_copy, and instead makes Object#dup...
jeremyevans (Jeremy Evans)
01:41 PM Revision dd4e7801 (git): Add NODE SCLASS locations
Add locations to struct `RNode_SCLASS`.
memo:
```
@ ProgramNode (location: (1,0)-(1,18))
+-- locals: []
+-- statements:
@ StatementsNode (location: (1,0)-(1,18))
+-- body: (length: 1)
+-- @ SingletonClassNode (location:...
S_H_ (Shun Hiraoka)
12:17 PM Revision 395bda2f (git): object.c: make rb_obj_class_must static inline
byroot (Jean Boussier)
12:14 PM Revision d89e7347 (git): object.c: refactor rb_obj_class and rb_class_real
byroot (Jean Boussier)
12:14 PM Revision f5da6395 (git): Kernel#class skip null check
`Kernel#class` can't possibly be called on an hidden object,
hence we don't need to check for `klass == 0`.
```
compare-ruby: ruby 3.5.0dev (2025-08-30T01:45:42Z obj-class 01a57bd6cd) +YJIT +PRISM [arm64-darwin24]
built-ruby: ruby 3.5.0...
byroot (Jean Boussier)
12:14 PM Revision 01b89528 (git): object.c: improve fake_class_p to also handle T_MODULE
This requires ensuring T_MODULE never has FL_SINGLETON set,
so RMODULE_IS_REFINEMENT had to be moved.
byroot (Jean Boussier)
12:14 PM Revision fd0c772d (git): Micro-optimize Object#class
Since `BUILTIN_TYPE` and `RCLASS_SINGLETON_P` are both stored in
`RBasic.flags`, we can combine these two checks in a single bitmask.
This rely on `T_ICLASS` and `T_CLASS` not overlapping, and assume
`klass` is always either of these ty...
byroot (Jean Boussier)
09:56 AM Bug #21168: Prism doesn't require argument parentheses (in some cases) when a block is present but parse.y does

I found out that this was discussed in a developer meeting: https://github.com/ruby/dev-meeting-log/blob/c35441297cd397fa3626ca0aa38efd7c61e430b2/2025/DevMeeting-2025-03-13.md?plain=1#L323
matz said:
> matz: I'll reply it. I like...
Earlopain (Earlopain _)
01:45 AM Revision 01a57bd6 (git): CI: Warn longstanding development revision of bundled gems
nobu (Nobuyoshi Nakada)
01:17 AM Revision d94e0a7b (git): CI: bundled_gems.yml: Split commit and push
nobu (Nobuyoshi Nakada)
12:54 AM Bug #21342: Segfault: invalid keeping_mutexes when using Mutex in Thread then Fiber after GC
Just for the sake of cross-referencing related issues: https://bugs.ruby-lang.org/issues/18818 ioquatix (Samuel Williams)

08/29/2025

10:57 PM Feature #21555: Add support for predicate attribute reader names
Dan0042 (Daniel DeLorme) wrote in #note-2:
> Also related to #5781 #11167 #12046 #15991 #19708
> ...
Wow! There's already an open ticket for this exact issue even. I apologize for not properly searching before filing. I should have jus...
shan (Shannon Skipper)
07:16 AM Feature #21555: Add support for predicate attribute reader names
> This feature is only supported for attr_reader and attr, not attr_writer or attr_accessor, since setter methods cannot have question marks.
Using the same logic, `attr_accessor :enabled?` could generate `#enabled?` and `#enabled=` w...
byroot (Jean Boussier)
04:07 AM Feature #21555: Add support for predicate attribute reader names
Also related to #5781 #11167 #12046 #15991 #19708
Popular eh?
Dan0042 (Daniel DeLorme)
10:50 PM Feature #21556 (Feedback): Add true? and false? methods to NilClass, TrueClass, FalseClass, and String
Phalado (Raphael Cordeiro) wrote:
> Sometimes we need to check for an exact `true` or `false` value. This can be a string or a boolean value.
For what situation, and why mixing strings and `true`/`false`?
It sounds like depending on...
nobu (Nobuyoshi Nakada)
05:28 PM Feature #21556 (Feedback): Add true? and false? methods to NilClass, TrueClass, FalseClass, and String
Sometimes we need to check for an exact `true` or `false` value. This can be a string or a boolean value.
Usually, what I do to solve this is something like `value.to_s == true`, this way covering for strings, booleans, and nil values...
Phalado (Raphael Cordeiro)
10:40 PM Feature #20163: Introduce #bit_count method on Integer
tenderlovemaking (Aaron Patterson) wrote in #note-16:
> When would you use a negative number unless it's a mistake in your code?
I don't have a strong argument. Raising an exception sounds good to me.
garrison (Garrison Jensen)
09:54 PM Feature #20163: Introduce #bit_count method on Integer
It seems like the Python folks didn't have too serious a discussion about handling negative numbers.
https://github.com/python/cpython/issues/74068#issuecomment-1093743975
https://github.com/python/cpython/issues/74068#issuecomment-1...
tenderlovemaking (Aaron Patterson)
09:37 PM Feature #20163: Introduce #bit_count method on Integer
garrison (Garrison Jensen) wrote in #note-15:
> [Python ignores the sign](https://docs.python.org/3/library/stdtypes.html#int.bit_count). It seems friendlier to match that behavior than throw an exception.
> ...
When would you use a ne...
tenderlovemaking (Aaron Patterson)
07:00 PM Feature #20163: Introduce #bit_count method on Integer
[Python ignores the sign](https://docs.python.org/3/library/stdtypes.html#int.bit_count). It seems friendlier to match that behavior than throw an exception.
``` ruby
(-x).popcount == x.popcount
```
garrison (Garrison Jensen)
05:43 PM Feature #20163: Introduce #bit_count method on Integer
mame (Yusuke Endoh) wrote in #note-10:
> What are the intended use cases for this proposal?
> ...
My experience is similar. I've used it for sets (like I linked above) as well as modeling [undirected graphs](https://tenderlovemaking.c...
tenderlovemaking (Aaron Patterson)
01:42 PM Feature #20163: Introduce #bit_count method on Integer
> but since many other languages, even Python, provide support for popcount, why not?
Usually a higher bar than that is required for a new method to be added to Ruby.
I personally don't have an immediate use case to point to (exc...
byroot (Jean Boussier)
01:12 PM Feature #20163: Introduce #bit_count method on Integer
x64 and ARM have specialized CPU instructions
https://godbolt.org/z/xvGvzsvd9
and Ruby already uses it internally, for instance
https://github.com/ruby/ruby/blob/dc555a48e750b4d50eb7a7000ca1bfb927fa9459/string.c#L2209
That said, ...
ahorek (Pavel Rosický)
12:46 PM Feature #20163: Introduce #bit_count method on Integer
I also think popcount of a negative number should raise error because of the ambiguity.
One way to extend popcount to negative number is using a relationship below, derived from the fact that `-5 == 0b111...11111011` has 1 fewer bits co...
tompng (tomoya ishida)
10:15 AM Feature #20163: Introduce #bit_count method on Integer
What are the intended use cases for this proposal?
My experience (in other languages) involves two use cases of popcount:
* Bitboards for game AI (like Reversi) to count pieces.
* Succinct data structures (like LOUDS Tries) for ra...
mame (Yusuke Endoh)
07:09 AM Feature #20163: Introduce #bit_count method on Integer
> What is the behavior for negative values?
IMO, the only behavior that makes sense in the context of a language with arbitrary size integers is to ignore the sign bit.
byroot (Jean Boussier)
12:56 AM Feature #20163: Introduce #bit_count method on Integer
What is the behavior for negative values?
The proposal describes two implenentations that returns different values.
```
p (-5).to_s(2).count("1") #=> 2
def bit_count(n)
count = 0
while n > 0
n &= n - 1 # Flip the lea...
akr (Akira Tanaka)
10:34 PM Revision 96c89385 (git): Shrink ruby_bug version guard in anticipation of 3.4.6 release
Fix for this bug was merged into ruby_3_4 in 5a42d267bfabc86f86cae2e83de24b1b86bc316a
and should go out in the next 3.4.x release.
alanwu (Alan Wu)
10:05 PM Revision d4d510da (git): Document Makefile rules in tool/enc-unicode.rb [ci skip]
alanwu (Alan Wu)
08:43 PM Bug #21540: prism allows `foo && return bar` when parse.y doesn't
I got a PR https://github.com/ruby/prism/pull/3630 that aims to fix this. Earlopain (Earlopain _)
07:55 PM Revision 3f3a54ef (git): Add rb_jit_vm_unlock and share it in ZJIT and YJIT
Stan Lo
07:55 PM Revision 56105049 (git): Add rb_jit_vm_lock_then_barrier and share it in ZJIT and YJIT
Stan Lo
07:55 PM Revision 2f6a9c51 (git): Add rb_jit_multi_ractor_p and share it in ZJIT and YJIT
Stan Lo
07:40 PM Revision cc07159f (git): [DOC] rb_str_resurrect(): Reword to remove wrong guess; used by zlib
alanwu (Alan Wu)
06:43 PM Revision 39f3cab8 (git): YJIT: Stop sharing rb_vm_send among different instructions (#14393)
Takashi Kokubun
05:42 PM Revision 99bf47ab (git): ZJIT: Report stats for unhandled call types
Max Bernstein
05:42 PM Revision 710c5c8e (git): ZJIT: Increment dynamic_send_count for Send too
Max Bernstein
04:58 PM Revision dba0f725 (git): Extend timeout-minutes for macOS --repeat-count=2
https://github.com/ruby/ruby/actions/runs/17308244022/job/49136485007
I'm not sure if it's stuck forever at the end or happens to take that
much time around the end of it, but let me just try this first.
If it doesn't work, something's...
k0kubun (Takashi Kokubun)
04:46 PM Revision b6f4b539 (git): ZJIT: Specialize monomorphic GetIvar (#14388)
Specialize monomorphic `GetIvar` into:
* `GuardType(HeapObject)`
* `GuardShape`
* `LoadIvarEmbedded` or `LoadIvarExtended`
This requires profiling self for `getinstancevariable` (it's not on the operand
stack).
This also optimizes `Ge...
tekknolagi (Maxwell Bernstein)
04:40 PM Revision fc4f8c87 (git): YJIT: Drop yjit-bench CI job (#14394)
Takashi Kokubun
04:32 PM Revision 7f4a6afa (git): ZJIT: Remove special case for defined?(method call) (#14401)
This was fixed in https://github.com/ruby/ruby/pull/14308
Thanks, Stan, for noticing.
Fixes https://github.com/Shopify/ruby/issues/703
tekknolagi (Maxwell Bernstein)
02:22 PM Revision df133442 (git): ZJIT: Repurpose ExitCounters for unhandled YARV insns (#14392)
Takashi Kokubun
07:25 AM Revision dc555a48 (git): Remove no longer used file [ci skip]
nobu (Nobuyoshi Nakada)
07:03 AM Revision 001299d3 (git): Update bundled gems list as of 2025-08-29
git[bot]
02:35 AM Revision 1f2a102f (git): `Module#attr` family accepts strings as well as symbols
nobu (Nobuyoshi Nakada)
01:20 AM Revision 1b6a5479 (git): Backport GH-13617 for s390x (#13757)
hsbt (Hiroshi SHIBATA)
12:33 AM Revision 85eb33d9 (git): Relax thresholds for array, object, and string compaction verification
These tests failed with RHEL10
https://rubyci.s3.amazonaws.com/rhel10/ruby-master/log/20250828T093003Z.fail.html.gz
hsbt (Hiroshi SHIBATA)

08/28/2025

10:56 PM Feature #21555 (Rejected): Add support for predicate attribute reader names
After manually aliasing predicate methods many times, I wanted to propose letting `attr_reader` take predicate method names that correspond to instance variables of the base name without a trailing question mark. https://github.com/ruby/... shan (Shannon Skipper)
10:46 PM Revision 51cd8776 (git): ZJIT: Add missing rb_zjit_cme_invalidate
k0kubun (Takashi Kokubun)
10:46 PM Revision 3cc66977 (git): ZJIT: Compile Insn::Send
k0kubun (Takashi Kokubun)
10:02 PM Revision 4992d2c2 (git): YJIT: rb_ivar_get_at skip ractor checks
Using `assume_single_ractor_mode` we can skip all ractor safety
checks if we're in single ractor mode.
```
compare-ruby: ruby 3.5.0dev (2025-08-27T14:58:58Z merge-vm-setivar-d.. 5b749d8e53) +YJIT +PRISM [arm64-darwin24]
built-ruby: ruby...
byroot (Jean Boussier)
10:02 PM Revision 3646596e (git): YJIT: rb_ivar_get_at assume leaf-call when single ractor
The only exception it could raise is if we're in multi ractor mode. byroot (Jean Boussier)
10:02 PM Revision b6d4882c (git): YJIT: getinstancevariable cache indexes for types other than T_OBJECT
While accessing the ivars of other types is too complicated to
realistically generate the ASM for it, we can at least provide
the ivar index as to not have to lookup the shape tree every
time.
```
compare-ruby: ruby 3.5.0dev (2025-08-27...
byroot (Jean Boussier)
09:21 PM Revision b1dbcd3c (git): YJIT simplify gen_get_iver and gen_set_ivar
The `shape_id` now includes 3 bits for the `heap_id`.
It is always non-zero for `T_OBJECT` and always zero for all
other types.
Hence all these allocator checks are no longer necessary.
byroot (Jean Boussier)
08:45 PM Revision bf3d6a17 (git): ZJIT: Add code_region_bytes stat (#14389)
* ZJIT: Add code_region_bytes stat
* Share more logic among --zjit and --zjit-stats
Takashi Kokubun
07:42 PM Feature #20163: Introduce #bit_count method on Integer
I would also like a `popcount` method. I prefer `popcount` over `bit_count`. I wrote my own [here](https://github.com/tenderlove/bitz/blob/93cedfe8f571e106ced753b3060c92507845e178/lib/bitz/set.rb#L332-L337) (but it only deals with singl... tenderlovemaking (Aaron Patterson)
07:07 PM Bug #19288: Ractor JSON parsing significantly slower than linear parsing
The situation with ractors has improved a lot since the last update to this thread. I encourage you to try out ruby master if you can.
```
Running benchmark "json_parse_float" (1/2)
+ /Users/luke/.rubies/master-release/bin/ruby -I h...
luke-gru (Luke Gruber)
06:14 PM Revision 041450ad (git): rb_ivar_delete: also re-embed T_IMEMO/fields
Right now JITs don't generate any code to access ivar on types
other than T_OBJECT, but they might soon, so we must ensure
two IMEMO/fields can't have the same `shape_id` but diffent
embed/heap status.
byroot (Jean Boussier)
05:50 PM Revision fa3c23eb (git): ZJIT: Prepare getglobal for non-leaf call (#14387)
Depending on the user's warning level, getting certain global variables
may lead to calling `Warning#warn`, which can be redefined by the user.
This fixes another `bootstraptest/test_yjit.rb` failure.
Stan Lo
05:35 PM Revision b47ea34a (git): ZJIT: Fix a flipped stat
I'm sorry.
Another follow-up on https://github.com/ruby/ruby/pull/14378
k0kubun (Takashi Kokubun)
05:31 PM Revision c2d99d06 (git): ZJIT: Fix a typo
follow-up on https://github.com/ruby/ruby/pull/14378 k0kubun (Takashi Kokubun)
05:20 PM Revision 7d670ead (git): ZJIT: Disable profiling in compile_iseq (#14385)
This catches both the interpreter-JIT and JIT-JIT cases.
Fixes https://github.com/Shopify/ruby/issues/719
Max Bernstein
05:14 PM Revision 85217252 (git): ZJIT: Generate code for ArrayExtend
Max Bernstein
05:14 PM Revision 07e28ba4 (git): ZJIT: Generate code for DefinedIvar
Max Bernstein
05:14 PM Revision b108f117 (git): ZJIT: Generate code for ToArray, ToNewArray
Max Bernstein
05:14 PM Revision ec55b5b9 (git): ZJIT: Generate code for ArrayPush
Max Bernstein
05:14 PM Revision ca0ef794 (git): ZJIT: Generate code for HashDup
Max Bernstein
04:40 PM Revision 11f115b0 (git): ZJIT: Track if object is a T_OBJECT
We will (for now) only cache ivar reads from T_OBJECTs. Max Bernstein
04:40 PM Revision b95700f1 (git): ZJIT: Track object embedded bit
This lets us know where to look for an ivar: in the object or indirect
elsewhere in the heap.
Max Bernstein
04:31 PM Revision 737ffd33 (git): ZJIT: Add Ractor mode PatchPoint for ivar get/set (#14375)
* ZJIT: Add Ractor mode PatchPoint for ivar get/set
* ZJIT: Only add single ractor patchpoint to class/module receivers
* ZJIT: Improve Ractor mode patch point comments
Co-authored-by: Takashi Kokubun <takashikkbn@gmail.com>
--------...
st0012 (Stan Lo)
03:58 PM Revision c4c93a07 (git): ZJIT: Refactor stats implementations (#14378)
* ZJIT: Refactor stats implementations
* s/num_send_dynamic/dynamic_send_count/
Takashi Kokubun
02:34 PM Feature #21515: Add `&return` as sugar for `x=my_calculation; return x if x`
vo.x (Vit Ondruch) wrote in #note-1:
> Proposal like this always reminds me:
> ...
How does `my_var&.something` read? The safe navigator is not exactly simple english - you need to know what it does. Comedically, though, it does conjur...
nhorton (Noah Horton)
02:29 PM Feature #21515: Add `&return` as sugar for `x=my_calculation; return x if x`
nobu (Nobuyoshi Nakada) wrote in #note-3:
> Why not:
> ...
I have not seen it done this way. I will say that I started to say this did not work until I fully processed the `and` in this, so I am not sure on the legibility, but I think it...
nhorton (Noah Horton)
02:27 PM Feature #21515: Add `&return` as sugar for `x=my_calculation; return x if x`
Earlopain (Earlopain _) wrote in #note-2:
> I would prefer it like this:
> ...
I agree that this syntax would be solid if it worked.
nhorton (Noah Horton)
01:55 PM Revision 4fc0db73 (git): CI: ubuntu-ibm.yml: Add GitHub Actions ppc64le case
Note that the default configure option `./configure cppflags=-DRUBY_DEBUG` with
the default optimization level `-O3`, causes the following Ractor test and other
tests failing. So, we don't set the option in ppc64le case.
```
$ make btes...
Jun Aruga
01:55 PM Revision dd09d898 (git): CI: ubuntu-ibm.yml: Refactor
* Remove logic that was used for the ubuntu.yml, but not used for
ubuntu-ibm.yml.
* Add a dummy Ubuntu x86_64 case to make this CI pass on fork repositories.
This case only runs on fork repositories.
Jun Aruga
01:55 PM Revision 8eb1ed56 (git): Revert "CI: Drop Ubuntu s390x temporarily."
This reverts commit c3c74e0d31c0c7327d2eb2c79b253d6500c6f2c0. Jun Aruga
01:21 PM Revision 05fc0118 (git): rb_ivar_delete: allow complex transition
`rb_ivar_delete` would force a new shape to be created.
And in the case of a shape exhaustion, it wouldn't handle
T_CLASS/T_MODULE correctly.
byroot (Jean Boussier)
01:20 PM Revision d19a1eee (git): ZJIT: Enable no-fail-fast on zjit-test
Stan Lo
01:20 PM Revision 89e18473 (git): ZJIT: Update doc about snapshot update
Stan Lo
01:20 PM Revision 6b7ed4ca (git): ZJIT: Add zjit-test-update for updating insta snapshot
Stan Lo
01:05 PM Revision 2edfc51a (git): Make Thread::Queue and SizedQueue support compaction
peterzhu2118 (Peter Zhu)
10:01 AM Revision 6023195f (git): Abandon `ruby` target on the others than GNU make
The default non-transformed name, `ruby` target was added for the case
of `--program-transform-name` and similars, but it was occasionally
added even when no such option is used.
nobu (Nobuyoshi Nakada)
09:02 AM Feature #21550: Ractor.shareable_proc/shareable_lambda to make sharable Proc object
Yes, that's the idea.
Yes it's feasible via static analysis (e.g. in `compile.c`).
It would be somewhat conservative but I think that's good enough, I'll give more details in my proposal.
I think a possible simple way is to use "if a cap...
Eregon (Benoit Daloze)
08:20 AM Feature #21550: Ractor.shareable_proc/shareable_lambda to make sharable Proc object
> I think there is a misunderstanding there: Option 4 does not prohibit writing to captured variables, it never proposed that. Ruby code can write to all local variables, always.
Ok I misunderstood.
```ruby
def sh(bl)
Ractor....
ko1 (Koichi Sasada)
08:14 AM Feature #21550: Ractor.shareable_proc/shareable_lambda to make sharable Proc object
ko1 (Koichi Sasada) wrote in #note-15:
> So I will merge option 1 soon.
> ...
Please wait, I believe you and matz did not understand my proposal.
I will make a clear proposal ASAP.
Eregon (Benoit Daloze)
08:07 AM Feature #21550: Ractor.shareable_proc/shareable_lambda to make sharable Proc object
ko1 (Koichi Sasada) wrote in #note-14:
> @Eregon let's me clarify your proposal.
> ...
I think there is a misunderstanding there: Option 4 does *not* prohibit writing to captured variables, it never proposed that. Ruby code can write to ...
Eregon (Benoit Daloze)
04:18 AM Feature #21550: Ractor.shareable_proc/shareable_lambda to make sharable Proc object
I confirmed with Matz that
* option 2 is too complex and therefore rejected.
* option 3 is also rejected because `|;n|` represents shadowing, not capturing.
* option 1 is preferable: not the best, but the better one among these.
(I met ...
ko1 (Koichi Sasada)
02:08 AM Feature #21550: Ractor.shareable_proc/shareable_lambda to make sharable Proc object
@Eregon let's me clarify your proposal.
* Option 4 is your proposal on https://bugs.ruby-lang.org/issues/21039#note-21, which prohibit any writing to the captured outer variables from inside/outside of the block
* This proposal is cle...
ko1 (Koichi Sasada)
08:18 AM Feature #21539: Facilitate walking native and interpreter (and jit?) stacks from outside of the ruby process
+1 this would be really cool as well for the [Datadog profiler](https://github.com/datadog/dd-trace-rb) as we currently rely on access to internal headers and thus are together with rbspy/rbperf on the group of "needs to be updated whene... ivoanjo (Ivo Anjo)
07:25 AM Revision e7fb87ee (git): Populate ivar caches for types other than T_OBJECT
`vm_setinstancevariable` had a codepath to try to match the inline
cache for types other than T_OBJECT, but the cache population path
in `vm_setivar_slowpath` was exclusive to T_OBJECT, so `vm_setivar_default`
would never match anything....
byroot (Jean Boussier)
06:35 AM Revision b85b2b84 (git): [ruby/error_highlight] Remove a branch for Ruby 3.1
https://github.com/ruby/error_highlight/commit/d3063cde62 mame (Yusuke Endoh)
06:35 AM Revision 2e27f6e1 (git): [ruby/error_highlight] Drop Ruby 3.1 support
... as it is already EOL
https://github.com/ruby/error_highlight/commit/f15489216a
mame (Yusuke Endoh)
06:27 AM Feature #21543: Point ArgumentError to the call site
Merged at commit:85e0c98cf0537c2049bfbbc2e21228264db90e00. mame (Yusuke Endoh)
06:26 AM Feature #21543 (Closed): Point ArgumentError to the call site
Applied in changeset commit:git|ed8fe53e80e16f9bff592333a3082981f39216e1.
----------
Allow to get a NODE_SCOPE node of dummy stack frame of ArgumentError
Previously, it was not possible to obtain a node of the callee's
`Thread::Backtra...
mame (Yusuke Endoh)
04:03 AM Feature #21543 (Assigned): Point ArgumentError to the call site
Thank you everyone. I also talked with @matz, and he said "give it a try."
I have prepared https://github.com/ruby/error_highlight/pull/61 . Matz was reluctant to change the backtrace itself, so I implemented it without modifying the ...
mame (Yusuke Endoh)
03:44 AM Feature #21543 (Closed): Point ArgumentError to the call site
Applied in changeset commit:git|2ccb2de677849732181224cb9fd1a831dbaac4c0.
----------
Make `RubyVM::AST.of` return a parent node of NODE_SCOPE
This change makes `RubyVM::AST.of` and `.node_id_for_backtrace_location`
return a parent node...
mame (Yusuke Endoh)
06:26 AM Revision 85e0c98c (git): [ruby/error_highlight] Show a dedicated snippet for "wrong number of arguments" error
This is an experimental implementation for
https://bugs.ruby-lang.org/issues/21543.
```
test.rb:2:in 'Object#foo': wrong number of arguments (given 1, expected 2) (ArgumentError)
caller: test.rb:6
| foo(1)
^^^
cal...
mame (Yusuke Endoh)
03:44 AM Revision ed8fe53e (git): Allow to get a NODE_SCOPE node of dummy stack frame of ArgumentError
Previously, it was not possible to obtain a node of the callee's
`Thread::Backtrace::Location` for cases like "wrong number of
arguments" by using `RubyVM::AST.of`. This change allows that retrieval.
This is preparation for [Feature #21...
mame (Yusuke Endoh)
03:44 AM Revision 2ccb2de6 (git): Make `RubyVM::AST.of` return a parent node of NODE_SCOPE
This change makes `RubyVM::AST.of` and `.node_id_for_backtrace_location`
return a parent node of NODE_SCOPE (such as NODE_DEFN) instead of the
NODE_SCOPE node itself.
(In future, we may remove NODE_SCOPE, which is a bit hacky AST node.)
...
mame (Yusuke Endoh)
02:29 AM Misc #21549: DevMeeting-2025-09-11
* [Bug #18878] parse.y: Foo::Bar {} is inconsistently rejected (yui-knk)
* Do we also support `Foo::Bar do end` (and `Foo::Bar do end + 1`)?
* [Feature #17398] SyntaxError in endless method
* Patch for `private def hello = puts "Hell...
yui-knk (Kaneko Yuichiro)
12:37 AM Bug #21548: SEGV: gc/default/default.c with rbs tests
Thanks @peterzhu2118. I didn't see same failure after commit:e3e87258ddadf763d9b0b11678935250f9bcc6c3 hsbt (Hiroshi SHIBATA)
12:34 AM Revision 38297e47 (git): CI: windows: Skip rebuilding vcpkg packages when cache restored
nobu (Nobuyoshi Nakada)
12:34 AM Revision 958bdafd (git): CI: windows: Use possibly faster device for TMP/TEMP
nobu (Nobuyoshi Nakada)
12:34 AM Revision ffc17447 (git): Save vcpkg cache with master and stable branches
hsbt (Hiroshi SHIBATA)

08/27/2025

11:02 PM Revision 47102845 (git): ZJIT: Pessimize locals in the presence of send (with block) (#14374)
We can refine this later by some kind of analysis of the block we're
sending to: maybe it doesn't write to our locals, or at least doesn't
write to all of them.
tekknolagi (Maxwell Bernstein)
10:56 PM Revision 984e05a1 (git): ZJIT: Count dynamic dispatch (SendWithoutBlock)
Max Bernstein
10:56 PM Revision fb3d2a2a (git): ZJIT: Increment specific counter on side-exit
Max Bernstein
10:29 PM Bug #21503: \p{Word} does not match on \p{Join_Control} while docs say it does
Backport for 3.4 done in commit:5a42d267bfabc86f86cae2e83de24b1b86bc316a alanwu (Alan Wu)
10:26 PM Bug #21535: `NoMethodError` becomes `NameError`when using `...` delegation and method call indirection
Backport for 3.4 done in commit:0d367ce65fe4e85f207a8ca5f1f331dd90c6992e alanwu (Alan Wu)
06:14 PM Bug #21535 (Closed): `NoMethodError` becomes `NameError`when using `...` delegation and method call indirection
Applied in changeset commit:git|886268856ba7c70a6eaf25eeb402e6ebed9e851e.
----------
Fix bad NameError raised using sendforward instruction through vcall
If you called a VCALL method and the method takes forwarding arguments
and then y...
Anonymous
10:19 PM Revision 0d367ce6 (git): Fix bad NameError raised using sendforward instruction through vcall
If you called a VCALL method and the method takes forwarding arguments
and then you forward those arguments along using the sendforward
instruction, the method_missing class was wrongly chosen as NameError
instead of NoMethodError. This ...
Luke Gruber
10:17 PM Revision 5a42d267 (git): Make word prop match join_control to conform to UTS 18
See <https://bugs.ruby-lang.org/issues/19417#note-3>.
https://unicode.org/reports/tr18/#word states word should match join_control chars.
It did not previously:
```ruby
[*0x0..0xD799, *0xE000..0x10FFFF].map { |n| n.chr 'utf-8' } => al...
janosch-x (Janosch Müller)
09:52 PM Bug #21546: `prefix` in ruby.pc is wrong when `--enable-load-relative`
3.4 backport done in commit:d49c7d0661faa964099b8c28ac316e33ae641051 alanwu (Alan Wu)
09:51 PM Bug #21402: ruby2_keywords affects methods/procs with post arguments
3.4 backport done in commit:fd036dbc3f39e6bdce735edf9ca187a690fe2079 alanwu (Alan Wu)
09:29 PM Revision fd036dbc (git): Do not respect ruby2_keywords on method/proc with post arguments
Previously, ruby2_keywords could be used on a method or proc with
post arguments, but I don't think the behavior is desired:
```ruby
def a(*c, **kw) [c, kw] end
def b(*a, b) a(*a, b) end
ruby2_keywords(:b)
b({foo: 1}, bar: 1)
```
This...
jeremyevans (Jeremy Evans)
09:19 PM Feature #21039: Ractor.make_shareable breaks block semantics (seeing updated captured variables) of existing blocks
Rereading this, I think I misread/misunderstood some parts:
matz (Yukihiro Matsumoto) wrote in #note-28:
> We discussed at the developers' meeting, and had the conclusion that the original issue cannot be addressed if we use make_sha...
Eregon (Benoit Daloze)
09:13 PM Revision d49c7d06 (git): [Backport #21546] Make the generated pc file relocatable
nobu (Nobuyoshi Nakada)
09:05 PM Feature #21550: Ractor.shareable_proc/shareable_lambda to make sharable Proc object
Regarding `define_method`, it's as-if it would try `Ractor.shareable_proc` with option 4 semantics automatically on the block/Proc, and if that succeeds use that, if it fails then make the method not callable from a Ractor and use block/... Eregon (Benoit Daloze)
08:52 PM Feature #21550: Ractor.shareable_proc/shareable_lambda to make sharable Proc object
Option 3 doesn't seem good because it would break the block if the block is run on Ruby 3.4 and before, as the value of `a` would be `nil`.
One would need to have 2 copies of the block which is clearly inconvenient.
I think Ractor shoul...
Eregon (Benoit Daloze)
08:06 PM Feature #21550: Ractor.shareable_proc/shareable_lambda to make sharable Proc object
ko1 (Koichi Sasada) wrote in #note-9:
> Option 2 (allow accesses only on lexical blocks) is rejected by Matz, so I want to introduce 1 or 3.
Where did matz say that? In https://bugs.ruby-lang.org/issues/21550#note-5 he said:
> ...
`I'd ...
Eregon (Benoit Daloze)
07:19 PM Feature #21550: Ractor.shareable_proc/shareable_lambda to make sharable Proc object
ko1 (Koichi Sasada) wrote in #note-9:
> I made a patch to disallow accessing to any outer variables and I found that I can't write ostruct case:
> ...
I think 3 is a good idea, but I think we could introduce it in later versions of Rub...
tenderlovemaking (Aaron Patterson)
06:15 PM Feature #21550: Ractor.shareable_proc/shareable_lambda to make sharable Proc object
I made a patch to disallow accessing to any outer variables and I found that I can't write ostruct case:
```ruby
# ostruct-0.6.3/lib/ostruct.rb
def new_ostruct_member!(name) # :nodoc:
unless @table.key?(name) || is_method_protect...
ko1 (Koichi Sasada)
08:46 AM Feature #21550: Ractor.shareable_proc/shareable_lambda to make sharable Proc object
Eregon (Benoit Daloze) wrote in #note-6:
> I wonder if the ability to capture outer local variables for shareable procs is even needed at all.
> ...
I have two examples.
One is `define_method`.
```ruby
def define_foo suffix, ivar_name ...
ko1 (Koichi Sasada)
07:03 PM Revision 4652879f (git): ZJIT: Specialize some Sends (#14363)
* ZJIT: Profile and specialize Array#empty?
* ZJIT: Specialize BasicObject#==
* ZJIT: Specialize Hash#empty?
* ZJIT: Specialize BasicObject#!
Co-authored-by: Takashi Kokubun <takashikkbn@gmail.com>
tekknolagi (Maxwell Bernstein)
06:14 PM Revision 88626885 (git): Fix bad NameError raised using sendforward instruction through vcall
If you called a VCALL method and the method takes forwarding arguments
and then you forward those arguments along using the sendforward instruction,
the method_missing class was wrongly chosen as NameError instead of NoMethodError.
This ...
Luke Gruber
05:01 PM Revision 76810fc3 (git): ZJIT: Implement side exit stats (#14357)
Takashi Kokubun
04:07 PM Revision b97a159d (git): Bump PRISM version number to avoid collision with RubyGems version
alanwu (Alan Wu)
04:07 PM Revision 1f421d09 (git): When reading from stdin, put a wrapper around the IO object
The purpose of this commit is to fix Bug #21188. We need to detect when
stdin has run in to an EOF case. Unfortunately we can't _call_ the eof
function on IO because it will block.
Here is a short script to demonstrate the issue:
```...
tenderlovemaking (Aaron Patterson)
02:38 PM Bug #18878: parse.y: Foo::Bar {} is inconsistently rejected
Do we also support `Foo::Bar do end` (and `Foo::Bar do end + 1`)?
With `ruby 3.5.0dev (2025-08-27T03:02:56Z master 5ff7b2c582)` both parse.y and prism have same behavior for do block cases like below.
```ruby
bar do end # met...
yui-knk (Kaneko Yuichiro)
02:34 PM Revision 61d26c35 (git): Don't pin method hooks of bmethods
peterzhu2118 (Peter Zhu)
02:34 PM Revision 6c0315d9 (git): Rename rb_hook_list_mark_and_update to rb_hook_list_mark_and_move
peterzhu2118 (Peter Zhu)
01:48 PM Revision 47d4ccee (git): CI: Use `nproc` to count only on-line CPUs for GNUMAKEFLAGS
Use `nproc` rather than `nproc --all`. Because the number by the `nproc` is
different from the number by the `nproc --all` on GitHub Actions ppc64le/s390x.
This caused the `make` command runs much more jobs than the number of on-line
CPU...
Jun Aruga
01:26 PM Revision 8935cf98 (git): Fix malloc_gc_disabled in Ractor lock
We should disable GC for malloc for the current Ractor instead of the locked
Ractor because it's the current Ractor that could run code that mallocs.
peterzhu2118 (Peter Zhu)
01:25 PM Revision d2ef901f (git): [DOC] Tweaks for String#length
burdettelamar (Burdette Lamar)
01:14 PM Revision c3c74e0d (git): CI: Drop Ubuntu s390x temporarily.
We are seeing the not-starting s390x jobs.
Until the following issue is fixed, we drop the s390x case.
https://github.com/IBM/actionspz/issues/34
Jun Aruga
11:10 AM Revision f7be2816 (git): [DOC] Clarify the conversion by `File.path`
nobu (Nobuyoshi Nakada)
11:10 AM Revision 08af07b2 (git): Add more `File.path` tests
nobu (Nobuyoshi Nakada)
10:41 AM Revision 5257e129 (git): Replace ROBJECT_EMBED by ROBJECT_HEAP
The embed layout is way more common than the heap one,
especially since WVA.
I think it makes for more readable code to inverse the
flag.
byroot (Jean Boussier)
03:22 AM Feature #21553: Remove opt_aref_with and opt_aset_with instructions
> I didn't introduce these instructions
ref: [Bug #9382], commit:58f800a278b8b70463f4afdbb23a918d8ab441ff
k0kubun (Takashi Kokubun)
03:02 AM Revision 5ff7b2c5 (git): [DOC] Add Ractor to NEWS
jhawthorn (John Hawthorn)
01:01 AM Revision d9e9a667 (git): JSON.generate: warn or raise on duplicated key
Because both strings and symbols keys are serialized the same,
it always has been possible to generate documents with duplicated
keys:
```ruby
>> puts JSON.generate({ foo: 1, "foo" => 2 })
{"foo":1,"foo":2}
```
This is pretty much alwa...
byroot (Jean Boussier)
01:01 AM Revision 0e0f0dfd (git): Fix `JSON::Coder` to cast non-string keys.
byroot (Jean Boussier)
01:01 AM Revision c3a80ca5 (git): Fix `JSON.generate` `strict: true` mode to also restrict hash keys
byroot (Jean Boussier)
01:01 AM Revision d325e3ed (git): [ruby/json] Improve generation options documentation
https://github.com/ruby/json/commit/3187c88c06 byroot (Jean Boussier)
01:01 AM Revision a062b9a5 (git): [ruby/json] Remove reference to fast_generate
https://github.com/ruby/json/commit/19bcfdd8d8 byroot (Jean Boussier)
01:01 AM Revision 97b5df11 (git): [ruby/json] Optimize `fbuffer_append_str_repeat`
Helps with pretty printting performance:
```
== Encoding activitypub.json (52595 bytes)
ruby 3.4.2 (2025-02-15 revision https://github.com/ruby/json/commit/d2930f8e7a) +YJIT +PRISM [arm64-darwin24]
Warming up ---------------------------...
byroot (Jean Boussier)
01:01 AM Revision f6823936 (git): [ruby/json] parser.c: Remove useless dereference
https://github.com/ruby/json/commit/2d63648c0a byroot (Jean Boussier)
01:01 AM Revision 4d6b1241 (git): [ruby/json] Extract `fbuffer_append_str_repeat` function
https://github.com/ruby/json/commit/12656777dc byroot (Jean Boussier)
01:01 AM Revision 66815a4c (git): [ruby/json] Silence ractor experimental warnings
https://github.com/ruby/json/commit/e77f610b21 byroot (Jean Boussier)
01:01 AM Revision 92bd1d9b (git): [ruby/json] Remove too big Float from fixture to avoid warning
https://github.com/ruby/json/commit/e881e55e83 etienne (Étienne Barrié)
01:01 AM Revision 312235a4 (git): [ruby/json] Test behavior of parsing a too big Float
https://github.com/ruby/json/commit/8510ea5c1a etienne (Étienne Barrié)
 

Also available in: Atom