Activity
From 12/02/2025 to 12/08/2025
Today
-
03:11 AM Ruby Revision a82aa08f (git): Make `ruby_reset_leap_second_info` internal
- It is exported only for the extension library to test, but the method
is no longer used since 29e31e72fb5a14194a78ec974c4ba56c33ad8d45. -
03:11 AM Ruby Revision 6a1f5b68 (git): Make `ruby_reset_timezone` internal
- It is used only in hash.c, when `ENV['TZ']` is set.
- 03:07 AM Ruby Revision fbc5bb91 (git): Update default gems list at 4655b174d5fa71b69781c56701be63 [ci skip]
-
03:06 AM Ruby Revision 4655b174 (git): [ruby/timeout] v0.5.0
- https://github.com/ruby/timeout/commit/837d5aac73
-
03:04 AM Ruby Feature #21767 (Open): Consider procs which `self` is Ractor-shareable as Ractor shareable
- I would like to allow procs which `self` is Ractor-shareable to be automatically eligible as shareable, without an explicit `Ractor.make_shareable` call.
```ruby
class C
PROC = proc { p ARRAY }.freeze
end
Ractor.new { C::PROC.... -
02:47 AM Ruby Revision be882278 (git): Move RBIMPL_ATTR_DEPRECATED_* macros to the appropriate header file
- Move these macros from include/ruby/backward.h to
include/ruby/internal/attr/deprecated.h, alongside the other similar
macros.
include/ruby/internal/intern/vm.h cannot currently use them because
include/ruby/backward.h is included too l... -
02:47 AM Ruby Revision f2eece71 (git): Remove the internal-only attribute from ruby_reset_timezone()
- The #ifdef is currently not taken because include/ruby/backward.h is
not included at this point. The attribute is unnecessary in an internal
header, so remove it. -
01:20 AM Ruby Feature #21766: Pathname + FileUtils making sweet music together
- I'm open to any and all implementation suggestions, happy to do whatever is required. I just want the feature!
12/07/2025
-
11:07 PM Ruby Misc #21154: Document or change Module#autoload?
- BTW, I do not know if you know it, but while I started working on Zeitwerk to fix autoloading in Rails, I changed my mind in the mid of it and decided to do something more generic that supports multiple autoloaders in the same process ma...
-
10:29 AM Ruby Misc #21154: Document or change Module#autoload?
- Thanks for the example @mame.
In my view, this is more a problem of circularity than a problem of autoload vs require. When you are loading a file, a require is executed and loads a file that needs a constant that was still not defined.... -
09:57 PM Ruby Feature #21766: Pathname + FileUtils making sweet music together
- Remember that `FileUtils` is loaded dynamically, so it would be something like
```ruby
class Pathname
def mkdir_p(...) = _fileutils(:mkdir_p, ...)
def ln(...) = _fileutils(:ln, ...)
def ln_s(...) = _fileutils(:ln_s, ...)
... -
08:31 PM Ruby Feature #21766 (Open): Pathname + FileUtils making sweet music together
- I love Pathname. I love FileUtils. Let's bring these two classes EVEN CLOSER TOGETHER by adding some tragically missing helpers. Something like this, perhaps?
``` ruby
class Pathname
def mkdir_p(...) = FileUtils.mkdir_p(@path, ...... -
04:51 PM Ruby Revision 4f900c35 (git): Output ivar length for T_OBJECT in obj_info
- 04:35 PM Ruby Revision a4d14213 (git): [DOC] Update bundled gems list at 379d22ce8418448ade3d410e5c76dd
-
04:35 PM Ruby Revision 379d22ce (git): Bump RDoc version to 6.17.0 (#15439)
-
03:22 PM Ruby Misc #21689: DevMeeting-2025-12-11
- * [Feature #8948] Frozen regex (eregon)
* This is to make all Regexps frozen and not just literals.
* I made a PR, it passes CI: https://github.com/ruby/ruby/pull/14547
* Is it OK to merge it for Ruby 4.0? -
03:20 PM Ruby Feature #8948: Frozen regex
- PR to make all Regexps frozen and not just literals: https://github.com/ruby/ruby/pull/14547
Is it OK to merge it for Ruby 4.0? -
02:20 PM Ruby Revision db6071b5 (git): [ruby/pathname] Raise the previous message
- Fix ruby/pathname#75.
https://github.com/ruby/pathname/commit/5ba967b274 -
02:20 PM Ruby Revision a8a188e1 (git): [ruby/pathname] Add more tests for `Pathname#initialize`
- https://github.com/ruby/pathname/commit/a2edd25bc1
-
01:51 PM Ruby Revision 806f2d35 (git): [ruby/pathname] [DOC] Pathname#freeze
- https://github.com/ruby/pathname/commit/4580540a2b
-
01:51 PM Ruby Revision f2b250c1 (git): [ruby/pathname] Define private method `same_paths?` for Ractor-safety
- https://github.com/ruby/pathname/commit/d33d18e5e2
-
12:18 PM Ruby Revision 4080abec (git): Ignore distclean failures
- Just clean the directory if it exists and is empty.
- 11:55 AM Ruby Revision eafaff94 (git): Re-introduce support for `io_close` hook. (#15434)
-
08:34 AM Ruby Revision 941e70ab (git): Sync doc/stringio in sync_default_gems.rb
-
04:44 AM Ruby Revision 68eab91b (git): Allow to sync pathname manually
- Still development of the gem continues, sync as possible manually.
-
01:59 AM Ruby Revision fb80f84f (git): [DOC] Fix formatting in docs for String#[]=
12/06/2025
-
11:22 PM Ruby Revision 33837abb (git): [ruby/stringio] [DOC] Tweaks for StringIO#pos=
- (https://github.com/ruby/stringio/pull/194)
https://github.com/ruby/stringio/commit/3cef1e0e5f -
11:22 PM Ruby Revision 82577ac0 (git): [ruby/stringio] [DOC] Tweaks for StringIO#pos
- (https://github.com/ruby/stringio/pull/193)
https://github.com/ruby/stringio/commit/90728bbbca -
11:21 PM Ruby Revision c9fe3cba (git): [ruby/stringio] [DOC] Tweaks for StringIO#lineno=
- (https://github.com/ruby/stringio/pull/192)
https://github.com/ruby/stringio/commit/8b1ee03cbe -
11:21 PM Ruby Revision f298beb2 (git): [ruby/stringio] [DOC] Tweaks for StringIO#lineno
- (https://github.com/ruby/stringio/pull/191)
https://github.com/ruby/stringio/commit/f2a2a5a99e -
10:51 PM Ruby Misc #21689: DevMeeting-2025-12-11
- * [Feature #19979] Reconsider adding `&nil` to method declarations, to signal it won't accept a block
* Adding this feature should be possible now that the syntax moratorium is over -
06:08 PM Ruby Revision 588347a0 (git): Fix id2ref for multi-Ractor
- The id2ref table needs to be under a VM lock to ensure there are no race
conditions. The following script crashes:
o = Object.new
ObjectSpace._id2ref(o.object_id)
10.times.map do
Ractor.new do
10_000.times do... -
05:49 PM Ruby Revision 87bc106b (git): [ruby/stringio] [DOC] Change link to on-page
- https://github.com/ruby/stringio/commit/a7c118d786
- 05:26 PM Ruby Revision 47c0dae1 (git): [ruby/openssl] asn1integer_to_num: don't cast away const
- ASN1_ENUMERATED_to_BN() has been const-correct for a long time in all
supported libcrytos, so we can remove this workaround.
https://github.com/ruby/openssl/commit/d0f36a7c65 -
05:13 PM Ruby Revision 1f0d41aa (git): [ruby/date] Call rb_gc_register_mark_object after object allocation
- It's possible that both half_days_in_day and day_in_nanoseconds are Ruby
objects, which means that creating day_in_nanoseconds may trigger GC.
Since half_days_in_day is not registered as a mark object until after
day_in_nanoseconds is al... - 04:50 PM Ruby Revision 8d3da814 (git): [ruby/openssl] Convert ossl_x509ext.c to opaque ASN1_STRING
- https://github.com/ruby/openssl/commit/a41cf28bab
- 04:50 PM Ruby Revision 38ad0806 (git): [ruby/openssl] Convert ossl_ts.c to opaque ASN1_STRING
- https://github.com/ruby/openssl/commit/8945f379b3
- 04:50 PM Ruby Revision a07997bf (git): [ruby/openssl] Convert ossl_ns_spki.c to opaque ASN1_STRING
- https://github.com/ruby/openssl/commit/0941ebbda5
- 04:50 PM Ruby Revision 98c151b0 (git): [ruby/openssl] Convert some of ossl_asn1.c to opaque ASN1_STRING
- This uses the normal accessors but leaves out BIT STRINGS, which will
need compat implementations for ASN1_BIT_STRING_get_length() and
ASN1_BIT_STRING_set1() for older libcryptos.
https://github.com/openssl/openssl/issues/29184
https://... - 04:50 PM Ruby Revision d3aa7b88 (git): [ruby/openssl] Convert ossl_ocsp.c to opaque ASN1_STRING
- OpenSSL plans to make asn1_string_st opaque, the struct underlying most
ASN.1 types such as ASN1_*STRING, ASN1_ENUMERATED, ASN1_INTEGER, etc.
Most of ruby/openssl's C code can be straigtforwardly converted to use
accessors available sinc... - 04:50 PM Ruby Revision 9dfb7bd7 (git): [ruby/openssl] const correct ossl_bin2hex()
- This helper only reads from its in parameter. Making that const
avoids a couple of casts in an upcoming change.
https://github.com/ruby/openssl/commit/970d5764e3 -
04:49 PM Ruby Feature #21084: Declare objects have weak references
- Hmm, yes. I'll work on rebasing the PR.
-
08:12 AM Ruby Feature #21084: Declare objects have weak references
- @peterzhu2118 regardless of whether it should be public or not, given the performance benefits, should we merge your PR?
-
04:31 PM Ruby Revision 2e828dd9 (git): Fix strict aliasing warning in ruby_swap128_int
- The following warnings are emitted. We can use type punning to prevent
strict aliasing violations.
io_buffer.c:1935:23: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
1935 | r... -
03:44 PM Ruby Revision da3b7d5e (git): [ruby/pathname] Freeze and hide internal constants
- https://github.com/ruby/pathname/commit/60f5d58d73
-
03:44 PM Ruby Revision b675deee (git): [ruby/pathname] Use `File.path` for conversion to path name
- This method has been defined since 1.9, as the standard conversion
procedure.
https://github.com/ruby/pathname/commit/8f582dc65d -
03:44 PM Ruby Revision 7319db44 (git): [ruby/pathname] Define `to_path` alias directly
- The constant `TO_PATH` was defined for 1.9 compatibility but the code
for it was dropped 10 years ago.
https://github.com/ruby/pathname/commit/95ad4ceb19 -
03:38 PM Ruby Revision 240afe50 (git): Suppress noisy outputs
- Fix up ruby/ruby#14700.
-
03:15 PM Ruby Revision e7f9abdc (git): Sync doc/stringio in sync_default_gems.rb
- 11:11 AM Ruby Revision 0346206d (git): [ruby/prism] Avoid out-of-bounds reads
- Fixes https://github.com/ruby/prism/pull/3790.
https://github.com/ruby/prism/commit/173ccb84ad -
10:32 AM Ruby Revision f4f5f0a0 (git): Add error case tests for `File.path`
- - for non-String argument
- for NUL-contained argument
- for ASCII-incompatible argument -
10:11 AM Ruby Revision aae85926 (git): [ruby/timeout] Test that Timeout does not expose extra constants
- https://github.com/ruby/timeout/commit/4de4b4759c
- 08:44 AM Ruby Revision 42f5654b (git): Yield to scheduler if interrupts are pending. (#14700)
- 07:35 AM Ruby Revision 180020e1 (git): Fix `io_pwrite` fiber scheduler hook. (#15428)
- Fix io_pwrite fiber scheduler hook.
-
07:00 AM Ruby Revision 7259c18c (git): [DOC] Update NEWS about ZJIT (#15426)
-
05:39 AM Ruby Revision d490247d (git): [DOC] Link global variables to command line options
-
03:08 AM Ruby Revision 21f9a647 (git): [ruby/stringio] [DOC] Class doc for StringIO
- (https://github.com/ruby/stringio/pull/178)
https://github.com/ruby/stringio/commit/6449251678 -
03:05 AM Ruby Revision bd64cf00 (git): [DOC] Tweaks for String#capitalize
-
03:05 AM Ruby Revision 2491a504 (git): [DOC] Tweaks for String#downcase
-
03:04 AM Ruby Revision e5e4175d (git): [DOC] Tweaks for String#upcase
-
03:04 AM Ruby Revision da2c6738 (git): [DOC] Tweaks for String#swapcase
-
03:03 AM Ruby Revision bbef73b2 (git): [DOC] Better multibyte-character data
-
03:02 AM Ruby Revision 734dab5e (git): [ruby/stringio] [DOC] Link to on-page section, not class File doc
- https://github.com/ruby/stringio/commit/dc93aa51d2
- 02:55 AM Ruby Revision a7dc53b9 (git): Add support for `u128`, `U128`, `s128` and `S128` integers to `IO::Buffer`. (#15399)
12/05/2025
-
11:40 PM Ruby Revision 8f983847 (git): Fix fields object in embedded struct
- We don't set RSTRUCT_GEN_FIELDS when RCLASS_MAX_IV_COUNT(klass) != 0, so
we need to set RSTRUCT_SET_FIELDS_OBJ to 0 otherwise it may have an
invalid value and crash. -
11:40 PM Ruby Revision 791acc56 (git): Revert "gc.c: Pass shape_id to `newobj_init`"
- This reverts commit 228d13f6ed914d1e7f6bd2416e3f5be8283be865.
This commit makes default.c and mmtk.c depend on shape.h, which prevents
them from building independently. -
10:09 PM Ruby Revision 65995c22 (git): [ruby/timeout] Exclude constantly-failing test on x86_64-darwin
- * https://github.com/ruby/ruby-dev-builder/actions/runs/19973218359/job/57293388626
https://github.com/ruby/timeout/commit/45816b1b26 -
10:00 PM Ruby Revision c4c909b5 (git): ZJIT: Include local variable names in `Get|SetLocal` insn's print value (#15423)
- ZJIT: Print local variable names GetLocal and SetLocal instructions
-
08:49 PM Ruby Revision d396a66a (git): ZJIT: Build by default when build environment allows
- "Default" means when `--enable-zjit` is absent from `./configure`
arguments. -
08:49 PM Ruby Revision f559a910 (git): ZJIT: configure.ac: Look for GNU make when detecting build environment
- Building ZJIT requires GNU make at the moment.
To get access to `$gnumake`, lift the `make` flavour detection up to the
environment section, before the JIT section runs. -
08:49 PM Ruby Revision ffe99a56 (git): ZJIT: configure.ac logic to detect suitable build environment
- This runs the detection, but does nothing with the result.
* Fixed version requirement in messages -- ZJIT requires >= 1.85 unlike
YJIT.
* New: Detect when rust 1.85 is available, and neither --enable-yjit nor
--enable-zjit is pas... -
08:49 PM Ruby Revision 9a271001 (git): YJIT: Fix unused_unsafe warning in `StatsAlloc`
-
08:49 PM Ruby Revision dce716e2 (git): ZJIT: Update `depend` for zjit.o
-
08:49 PM Ruby Revision addeafdd (git): YJIT: Fix duplicate make rule warning in combo build
-
08:49 PM Ruby Revision 8296524f (git): ZJIT: Fix duplicate make rule warning in combo build
- ~/zjit/zjit.mk:30: warning: overriding commands for target `~/build-default/'
~/yjit/yjit.mk:26: warning: ignoring old commands for target `~/build-default/'
~/zjit/zjit.mk:30: warning: overriding commands for target `~/build-def... -
08:49 PM Ruby Revision 2bc9b5a8 (git): tool/update-deps: Skip ZJIT and YJIT+ZJIT build objects
-
08:49 PM Ruby Revision fb72ff7b (git): CI: Avoid building ZJIT when LLVM is too old
-
08:49 PM Ruby Revision 109ddd29 (git): ZJIT: Avoid binding to `rb_iseq_constant_body`
- Its definition changes depending on e.g. whether there is YJIT in the
build. -
08:49 PM Ruby Revision 8132b3d1 (git): YJIT: Fix including stats for ZJIT instructions when ZJIT not in build
-
08:49 PM Ruby Revision f01fd2bd (git): JITs: Update bindings to include interpreter zjit_ opcodes
- Mostly YJIT. ZJIT already has the right bindings and this just tweaks
the CI configuration. -
08:49 PM Ruby Revision 02ca507a (git): JITs: rb_iseq_opcode_at_pc(): Accommodate switch-case interpreter
-
08:49 PM Ruby Revision 7ecd369a (git): ZJIT: Account for when YJIT is on by default in test_zjit_enable
-
08:49 PM Ruby Revision 3269ae1b (git): ZJIT: Fix -Wpedantic warning in C99 mode when built with YJIT
- > insns.def:857:5: error: assigning to 'rb_zjit_func_t' (aka 'unsigned
> ...
> [-Werror,-Wpedantic] -
08:49 PM Ruby Revision ee792328 (git): ZJIT: Skip GC.auto_compact test when unsupported
-
08:35 PM Ruby Revision 786f6739 (git): [ruby/prism] Correct constant pool bucket type logic
- When replacing an owned constant by a different type (constant or
shared) replace with the correct type instead of defaulting to
shared.
https://github.com/ruby/prism/commit/fbe9b131a1 - 08:21 PM Ruby Revision be12e198 (git): [ruby/prism] Avoid undefined int overflow behaviour
- Fixes https://github.com/ruby/prism/pull/3786.
https://github.com/ruby/prism/commit/b72b664675 - 08:20 PM Ruby Revision 834adc35 (git): [ruby/prism] Avoid out-of-bounds reads
- Fixes https://github.com/ruby/prism/pull/3784.
https://github.com/ruby/prism/commit/3fe862534b -
07:50 PM Ruby Feature #20750 (Closed): Allow rb_thread_call_with_gvl to work when thread already has GVL
- Applied in changeset commit:git|2b057859414d1ccfa4d88a898d27defc8c74dc1c.
----------
Allow rb_thread_call_with_gvl() to work when thread already has GVL
[Feature #20750]
Co-authored-by: Benoit Daloze <[email protected]> -
07:50 PM Ruby Revision 2b057859 (git): Allow rb_thread_call_with_gvl() to work when thread already has GVL
- [Feature #20750]
Co-authored-by: Benoit Daloze <[email protected]> -
06:40 PM Ruby Revision 8c4f79d5 (git): [ruby/openssl] x509cert: handle invalid validity periods in Certificate#inspect
- In a newly allocated OpenSSL X509 object, the notBefore and notAfter
fields contain an ASN1_STRING object with type V_ASN1_UNDEF rather than
an ASN1_TIME.
Commit https://github.com/ruby/openssl/commit/73484f67949a made asn1time_to_time(... -
06:32 PM Ruby Revision 00b91c72 (git): [ruby/timeout] Simplify logic to make GET_TIME shareable
- https://github.com/ruby/timeout/commit/281b2507e7
-
06:32 PM Ruby Revision 3e189ddb (git): [ruby/timeout] Fix logic for Ractor support
- * Fix indentation to stay a multiple of 2 spaces.
https://github.com/ruby/timeout/commit/a1d784cb66 -
06:32 PM Ruby Revision dc406af9 (git): [ruby/timeout] Fix condition and fix test to catch that broken condition
- https://github.com/ruby/timeout/commit/82fb6f6925
-
06:32 PM Ruby Revision a523e9d8 (git): [ruby/timeout] Minor tweaks
- https://github.com/ruby/timeout/commit/daab9a2193
-
06:32 PM Ruby Revision ec28bd75 (git): [ruby/timeout] support Ractor
- 1. Introduce State to store all status.
2. Store State instance to the Ractor local storage if possible
3. Make `GET_TIME` (Method object) shareable if possible
3 is supporeted Ruby 4.0 and later, so the Rator support is works
only on R... -
05:14 PM Ruby Revision 65dbd571 (git): [ruby/psych] Use Node#to_ruby parse_symbols option
- https://github.com/ruby/psych/commit/907fd4fa97
-
02:21 PM Ruby Revision 930afa1c (git): Never shrink bignum on realloc
- As far as I can tell, this only ever shrinks by one, and it's really not
worth the expensive realloc for that. -
02:21 PM Ruby Revision b0c9286d (git): Use VWA for bignum
- Previously we only allocated bignums from the 40 byte sizepool, and
embedded bignum used a fixed size. -
01:59 PM Ruby Feature #12928: Use socket conect_timeout in net stdlib for open_timeout
- For the record: net/http now uses `TCPSocket.open(open_timeout:)` in place of `Timeout.timeout`.
https://github.com/ruby/net-http/pull/224 -
01:48 PM Ruby Feature #21552: allow String.strip and similar to take a parameter similar to String.delete
- Thank you, shugo.
"someone" he says is me. My use case is here.
I want to extract chunks from a file and pass them to a neural network model to detect the file type. The model requires two chunks: the `lstrip`ped beggining portion and ... -
08:36 AM Ruby Feature #21552: allow String.strip and similar to take a parameter similar to String.delete
- I'm not strongly opposed, but this kind of API that use a string to represent a collection of characters feel outdated. It is sometimes convenient, though.
-
02:26 AM Ruby Feature #21552: allow String.strip and similar to take a parameter similar to String.delete
- shugo (Shugo Maeda) wrote in #note-4:
> Unlike String#delete, the current implementation doesn't take multiple arguments.
> ...
I've noticed that String#count also take multiple selectors, so I've applied the same changes to String#str... -
01:46 PM Ruby Bug #21669: Thoroughly implement void value expression check
- Earlopain (Earlopain _) wrote in #note-6:
> I have an implementation in https://github.com/ruby/prism/pull/3728 (maybe needs more tests)
It doesn't reject the following cases.
```ruby
x = begin
return
"NG"
end
# Expected:... -
01:13 PM Ruby Bug #21669: Thoroughly implement void value expression check
- Earlopain (Earlopain _) wrote in #note-6:
> I have an implementation in [https://github.com/ruby/prism/pull/3728](https://github.com/ruby/prism/pull/3728) (maybe needs more tests)
Great, thanks!
> ...
Agreed. I think the evaluatio... -
11:08 AM Ruby Bug #21669: Thoroughly implement void value expression check
- Sorry, I've missed this issue.
It is done to fix parse.y for 1 and 2.
I think 1 is OK, and probably no problem in practice.
But 2 is intentionally passed, IIRC, and bootraptest has such code.
```ruby
#1526 test_syntax.rb:572:
... - 12:34 PM Ruby Revision ea415e96 (git): [ruby/net-http] open: Never call Timeout.timeout in rescue clause
- The try-open_timeout-then-fallback-to-timeout introduced in
https://github.com/ruby/net-http/commit/1903cedd8cd0 works well, but when it errors
due to any reason in Rubies which do not support `open_timeout`, it
spits the rescued Argumen... -
12:24 PM Ruby Revision f179885d (git): [ruby/openssl] asn1: use ASN1_TIME_to_tm() to decode UTCTime and GeneralizedTime
- The current logic relies on sscanf() and error checks are almost
entirely missing. It also assumes that ASN1_STRING contents are NUL
terminated, which is undocumented and not guaranteed for all valid
ASN1_TIME objects.
Switch to using A... -
12:24 PM Ruby Revision bf2b9c09 (git): [ruby/openssl] asn1: reorder declarations
- Move variable declarations for OpenSSL::ASN1 classes to the top of the
file. asn1time_to_time() will need eASN1Error in the next patch.
https://github.com/ruby/openssl/commit/6c0ef87897 -
11:35 AM Ruby Revision 95ea3bd5 (git): [ruby/timeout] Only the timeout method should be public on the Timeout module
- https://github.com/ruby/timeout/commit/cd51eac3ca
-
08:01 AM Ruby Misc #21689: DevMeeting-2025-12-11
- * [Bug #21049] Reconsider handling of the numbered parameters and "it" parameter in `Binding#local_variables` (mame)
* An API like `Binding#numbered_parameter_get` was actually requested. I'd like to discuss how to proceed. -
07:57 AM Ruby Bug #21298 (Closed): `ObjectSpace.allocation_class_path` returns inconsistent results depending on `TracePoint` state
- https://github.com/ruby/ruby/pull/13232 had been already merged. Thanks!
-
07:47 AM Ruby Revision 1cad20e2 (git): [DOC] Describe `$F`
- This variation is used when `-a` option is given.
-
07:31 AM Ruby Revision 1e7373ef (git): [DOC] Describe the global variables set by command line options
- These variables are set by command line options, but it is deprecated
to assign them any value other than nil in ruby code. -
07:17 AM Ruby Feature #19430 (Rejected): Contribution wanted: DNS lookup by c-ares library
- Since c-ares has a compatibility issue on macOS, a full migration to it seems difficult. And DNS lookup is now interruptible by explicitly using pthread. Therefore, this is closed as not planned.
-
07:14 AM Ruby Revision b35aff58 (git): [DOC] Centerize Variable, English, and Constant columns
-
06:31 AM Ruby Revision 479185da (git): Add Set C API to news
- Also, don't use backticks around Set in the top level of the
Core classes updates section, as other classes/modules do not use
that format. -
05:20 AM Ruby Revision 5f6b31c2 (git): Correctly handle `Process.fork` with an active `Fiber.scheduler`. (#15385)
- In the child process, nullify the current fiber scheduler and set the current fiber to blocking.
-
05:16 AM Ruby Revision e822209d (git): Update NEWS.md for Ruby 4.0.0 (#15369)
- I extracted the relevant descriptions from the draft NEWS.md that
hsbt-san had Gemini generate by analyzing `git log`.
Co-authored-by: Hiroshi SHIBATA <[email protected]>
Co-authored-by: Alan Wu <[email protected]>
Co-autho... -
02:00 AM Ruby Revision d3a9a17b (git): Skip Windows runner group warning under ruby/ruby repo
-
01:45 AM Ruby Revision 02cddcc2 (git): Ractor.shareable_proc(&pr) should copy pr
- `pr` should not change on this method.
12/04/2025
-
11:01 PM Ruby Revision d105709f (git): [ruby/rubygems] Add before(:context) hook to warn when spec files are not assigned to any Windows runner group
- https://github.com/ruby/rubygems/commit/3ddb740969
-
11:01 PM Ruby Revision 412895ae (git): [ruby/rubygems] Try to split and run three runners for Windows
- I organized all examples the followings:
```
Total test time: 2468.41 seconds
Total files: 168
Group A: 42 files, 617.08 seconds
Group B: 42 files, 617.05 seconds
Group C: 42 files, 617.14 seconds
Group D: 42 files, 617.14 seconds
```
... -
09:58 PM Ruby Revision 6d0c9598 (git): [DOC] Cross-link between README pages
- 09:51 PM Ruby Revision 8d8159e7 (git): Fix thread scheduler issue with thread_sched_wait_events (#15392)
- Fix race between timer thread dequeuing waiting thread and thread
skipping sleeping due to being dequeued. We now use `th->event_serial` which
is protected by `thread_sched_lock`. When a thread is put on timer thread's waiting
list, the ... -
09:25 PM Ruby Revision 7d9558f9 (git): Adjust test to avoid bug
-
09:25 PM Ruby Revision 1d3fe2c3 (git): Change bmethod defined_ractor to use id instead
- When defining a bmethod, we recorded the current Ractor's object in the
method. However that was never marked and so could be GC'd and reused by
a future Ractor. Instead we can use the Ractor's id, which we expect to
be unique forever.
... - 09:10 PM Ruby Revision de2c2bd6 (git): Take VM lock in `class_switch_superclass` (#15356)
- Safe multi-ractor subclass list mutation
We need to lock around mutation and accesses of a class's subclasses
list. Unfortunately we also need to do this when creating singleton
classes, as the singleton class does need to go into `supe... -
06:15 PM Ruby Revision d9aced86 (git): Add openssl reformatting to .git-blame-ignore-revs [ci skip]
-
06:10 PM Ruby Revision 2aaea665 (git): fix typo s/sharable/shareable/
-
05:46 PM Ruby Revision 5062c0c6 (git): [ruby/openssl] Expand tabs in C source files
- Since around 2018, we have been using spaces for indentation for newly
added code[1]. The mixed use of tabs and spaces has repeatedly confused
new contributors who configured their editors to use a different tab
size than 8. Since git bl... -
05:32 PM Ruby Revision 6fe1c159 (git): [ruby/openssl] Revert "rewriting most of the asn1 init code in ruby"
- This reverts commit https://github.com/ruby/openssl/commit/830505172882.
The commit is part of the bigger effort to rewrite OpenSSL::ASN1 in
Ruby. OpenSSL::ASN1 is relatively isolated from the rest of ruby/openssl
and is not tightly bou... -
05:28 PM Ruby Revision 4c893e2f (git): Method and UnboundMethod can be sharable
- with `RUBY_TYPED_FROZEN_SHAREABLE_NO_REC`,
if the receiver object is shareable on Method objects. -
05:28 PM Ruby Revision f2cd7723 (git): (experimental) RUBY_TYPED_FROZEN_SHAREABLE_NO_REC
- `T_DATA` has a flag `RUBY_TYPED_FROZEN_SHAREABLE` which means
if the `T_DATA` object is frozen, it can be sharable.
On the `Ractor.make_sharable(obj)`, rechable objects from the
`T_DATA` object will be apply `Ractor.make_shareable` recur... -
04:56 PM Ruby Revision e4abacc5 (git): Ractor.store_if_absent should not warn
- ```ruby
$VERBOSE = true
Ractor.store_if_absent :key do
end #=> warning: the block passed to 'Ractor.store_if_absent' defined at <internal:ractor>:474 may be ignored
``` -
04:25 PM Ruby Revision 37300227 (git): Remove mismatched indentations warning (#15410)
-
04:04 PM Ruby Revision 29a12297 (git): Refine non-nil warnings for the deprecated variables
-
04:01 PM Ruby Bug #21764 (Closed): encoding of warning for depreciated global variables is not set
- Applied in changeset commit:git|cf12aff0593a0aa70d957b96f03df8288c025938.
----------
[Bug #21764] Propagate the encoding of ID to warning -
03:22 PM Ruby Bug #21764 (Closed): encoding of warning for depreciated global variables is not set
- The aliased name should be encoded properly.
```console
$ ruby -v -e 'def Warning.warn(s) = p(s, s.encoding); alias $分行 $/; $分行 = "\n"'
ruby 4.0.0dev (2025-11-27T12:05:45Z master 68a7edaa81) +PRISM [arm64-darwin25]
"-e:1: warning: ... -
03:32 PM Ruby Bug #21765: stop using the C runtime _read() on Windows
- I created [PR#15408](https://github.com/ruby/ruby/pull/15408)
For comparison, there is a patch [WIP] that utilizes encoding conversion.
https://github.com/YO4/ruby/commits/avoid-windows-crt-read/ -
03:29 PM Ruby Bug #21765 (Open): stop using the C runtime _read() on Windows
- When creating an IO instance in Windows, the default data mode is text mode.
In reality, the IO encoding conversion mechanism is not used when encoding conversion is not performed. Instead, the CRLF conversion provided by the C runtime'... -
03:27 PM Ruby Revision cf12aff0 (git): [Bug #21764] Propagate the encoding of ID to warning
-
02:51 PM Ruby Bug #21758 (Closed): Prism fails to parse heredoc within %Q literal split by another heredoc
- Applied in changeset commit:git|465a86c3417d2936c311d9571aa9b6494a83eed8.
----------
[ruby/prism] Fix `%Q` with newline delimiter and heredoc interpolation
The lexer did not jump to the `heredoc_end`, causing the heredoc end delimiter
... -
11:45 AM Ruby Bug #21758: Prism fails to parse heredoc within %Q literal split by another heredoc
- https://github.com/ruby/prism/pull/3780
-
02:50 PM Ruby Revision 465a86c3 (git): [ruby/prism] Fix `%Q` with newline delimiter and heredoc interpolation
- The lexer did not jump to the `heredoc_end`, causing the heredoc end delimiter
to be parsed twice.
Normally the heredocs get flushed when a newline is encountered. But because
the newline is part of the string delimiter, that codepath i... -
11:38 AM Ruby Bug #21763: Windows: output IO pipe ignores crlf newline conversion specified by set_encoding
- I made PR [#15405](https://github.com/ruby/ruby/pull/15405)
-
11:09 AM Ruby Bug #21763 (Open): Windows: output IO pipe ignores crlf newline conversion specified by set_encoding
- On Windows, output pipes have no crlf conversion applied by default except for stdout/stderr, also it ignore set_encoding(crlf_newline: true).
```
> ruby -e "IO.pipe { |r,w| w.set_encoding('ascii-8bit', crlf_newline: true); w.puts ?a; ... -
10:27 AM Ruby Feature #21722: Expose rb_gc_mark_weak API for use in extensions
- > @ivoanjo (Ivo Anjo) I don't know if this would work, but what about using rb_postponed_job_trigger to delay adding the object into a WeakMap? (there would also probably need to be a temporary buffer used to mark the object until it is ...
-
10:09 AM Ruby Bug #21710: Segfault when reading object_id after it is set inside RUBY_INTERNAL_EVENT_NEWOBJ
- > I'm fine with adding MOVEOBJ, it makes sense, but I don't think it's currently necessary. ObjectSpace.trace_object_allocations handles this by subscribing both to NEWOBJ and FREEOBJ and tracking the objects in its own hash table (subsc...
-
09:08 AM Ruby Revision 8099e9d2 (git): [DOC] Fix a macro name
-
09:07 AM Ruby Revision b872fbe3 (git): Deprecate `rb_eval_cmd_kw`
-
09:07 AM Ruby Revision 7f41c3e7 (git): Add `rb_eval_cmd_call_kw` to shortcut
-
08:15 AM Ruby Revision f8231dac (git): Ractor.store_if_absent should not warn
- ```ruby
$VERBOSE = true
Ractor.store_if_absent :key do
end #=> warning: the block passed to 'Ractor.store_if_absent' defined at <internal:ractor>:474 may be ignored
``` - 08:14 AM Ruby Revision 69173216 (git): Update default gems list at d343968ec3a899a29ff4e330dc914d [ci skip]
-
08:13 AM Ruby Revision d343968e (git): [ruby/json] Release 2.17.1
- https://github.com/ruby/json/commit/e5e4fd558e
-
08:10 AM Ruby Revision d58a45d3 (git): [ruby/json] Fix a regression in parsing of unicode surogate pairs
- Fix: https://github.com/ruby/json/issues/912
In the case of surogate pairs we consume two backslashes, so
`json_next_backslash` need to ensure it's not sending us back in the
stream.
https://github.com/ruby/json/commit/0fce370c41 -
06:54 AM Ruby Misc #21154: Document or change Module#autoload?
- I'd like to share a simplified example that demonstrates the autoload/require issue.
```ruby
# my_gem.rb
module MyGem
autoload :M, "my_gem/m" # (2)
end
# my_gem/m.rb
module MyGem
module M
autoload :X, "my_gem/m/x" # ... - 06:47 AM Ruby Revision 932762f2 (git): [ruby/rubygems] Increase connection pool to allow for up to 70% speed increase:
- - ### TL;DR
Bundler is heavily limited by the connection pool which manages a
single connection. By increasing the number of connection, we can
drastiscally speed up the installation process when many gems need
to be downloaded ... -
06:30 AM Ruby Feature #21552: allow String.strip and similar to take a parameter similar to String.delete
- Suggested by nobu, I've added documentation and tests for character selectors: https://github.com/ruby/ruby/pull/15400/commits/a9ad44007dbb0ea543ce1eb8748edd4213083c5f
Exmaples:
```
"012abc345".strip("0-9") # "abc"
"012abc345".st... -
03:05 AM Ruby Feature #21552: allow String.strip and similar to take a parameter similar to String.delete
- I just heard someone ask for a strip function that doesn't remove NUL characters.
Since Python's `str.strip` takes an optional argument, it might be a good idea to introduce a similar feature.
I've created a pull request at <https://... -
06:24 AM Ruby Misc #21689: DevMeeting-2025-12-11
- - [Feature #21552] allow String.strip and similar to take a parameter similar to String.delete
- pull request: https://github.com/ruby/ruby/pull/15400
- Is it acceptable to take character selectors like String#delete?
- [Python's... -
02:27 AM Ruby Revision 0af85a1f (git): ZJIT: Optimize setivar with shape transition (#15375)
- Since we do a decent job of pre-sizing objects, don't handle the case where we would need to re-size an object. Also don't handle too-complex shapes.
lobsters stats before:
```
Top-20 calls to C functions from JIT code (79.4% of total ... -
01:25 AM Ruby Revision 3efd8c67 (git): ZJIT: Inline Kernel#class (#15397)
- We generally know the receiver's class from profile info. I see 600k of these when running lobsters.
- 01:13 AM Ruby Revision 19f0df04 (git): ZJIT: Fix definite assignment to work with multiple entry blocks
- 01:13 AM Ruby Revision c764269f (git): ZJIT: Only use make_equal_to for instructions with output
- It's used as an alternative to find-and-replace, so we should have
nothing to replace. - 12:42 AM Ruby Revision 0e7e6858 (git): [ruby/psych] Add option to disable symbol parsing
- https://github.com/ruby/psych/commit/4e9d08c285
- 12:40 AM Ruby Revision 8f7d821d (git): [ruby/psych] Remove y Object extension in IRB
- Fixes: ruby#685
This feature can easily break how you use other gems like factory_bot or prawn.
https://github.com/ruby/psych/pull/747#issuecomment-3413139525
> But I kind of think we should leave `psych/y` around. If people really wan... -
12:39 AM Ruby Revision e96bbd71 (git): Remove needless parse.y `new_nil` macro
- In the past parse.y and ripper had different `new_nil` definition
so that `new_nil` returns `nil` for ripper.
```c
// parse.y
#define new_nil(loc) NEW_NIL(loc)
// ripper
#define new_nil(loc) Qnil
```
However Rearchitect Ripper (89cfc1... -
12:39 AM Ruby Revision b79ef73a (git): Remove needless parse.y `value_expr` macro
- In the past parse.y and ripper had different `value_expr` definition
so that `value_expr` does nothing for ripper.
```c
// parse.y
#define value_expr(node) value_expr_gen(p, (node))
// ripper
#define value_expr(node) ((void)(node))
```...
12/03/2025
- 09:59 PM Ruby Revision b43e66d3 (git): YJIT: Pass class and shape ID directly instead of object
- 09:59 PM Ruby Revision f1670733 (git): Move imemo fields check out of shape_get_next
- Not every caller (for example, YJIT) actually needs to pass the object.
YJIT (and, in the future, ZJIT) only need to pass the class. - 09:59 PM Ruby Revision 612a6680 (git): Remove spurious obj != klass check in shape_get_next
- This should never be true. I added an `rb_bug` in case it was and it
wasn't true in any of btest or test-all.
Co-authored-by: Aaron Patterson <[email protected]> -
09:42 PM Ruby Feature #21722: Expose rb_gc_mark_weak API for use in extensions
- The reason I know of that it's unsafe to allocate (newobj or xmalloc) inside of the NEWOBJ hook is that a lot of code expects there to be a grace period between newobj and the next allocation where it can fill in the object without issui...
-
03:10 PM Ruby Feature #21722: Expose rb_gc_mark_weak API for use in extensions
- Continuing from https://bugs.ruby-lang.org/issues/21710#note-17
ivoanjo (Ivo Anjo) wrote:
> Weakmap APIs are Ruby-level and can't be used from the NEWOBJ tracepoint.
Because that would recursively invoke the NEWOBJ tracepoint?
I though... -
09:37 PM Ruby Revision d7e55f84 (git): ZJIT: Use the custom iterator
- This commit uses the custom instruction iterator in arm64 / x86_64
instruction splitting. Once we introduce basic blocks to LIR, the
custom iterator will ensure that instructions are added to the correct
place. -
09:37 PM Ruby Revision 2b23b05b (git): ZJIT: Add a specialized instruction iterator to the assembler
- This commit adds a specialized instruction iterator to the assembler
with a custom "peek" method. The reason is that we want to add basic
blocks to LIR. When we split instructions, we need to add any new
instructions to the correct bas... -
09:16 PM Ruby Bug #21710: Segfault when reading object_id after it is set inside RUBY_INTERNAL_EVENT_NEWOBJ
- I'm fine with adding `MOVEOBJ`, it makes sense, but I don't think it's currently necessary. `ObjectSpace.trace_object_allocations` handles this by subscribing both to `NEWOBJ` and `FREEOBJ` and tracking the objects in its own hash table ...
-
04:57 PM Ruby Bug #21710: Segfault when reading object_id after it is set inside RUBY_INTERNAL_EVENT_NEWOBJ
- +1 for `MOVEDOBJ` (or `MOVEOBJ` like `NEWOBJ/FREEOBJ`. It should be called just before/after moving) for object profiling purpose.
I'm not sure how to "simulate weak references"... -
11:06 AM Ruby Bug #21710: Segfault when reading object_id after it is set inside RUBY_INTERNAL_EVENT_NEWOBJ
- > That sounds like a use case for WeakRef or ObjectSpace::WeakMap.
> ...
In retrospect I was a bit confusing there -- The key missing bit is having something that's safe to use from `NEWOBJ` tracepoint, which is what `WeakRef` and `Weak... -
09:45 AM Ruby Bug #21710: Segfault when reading object_id after it is set inside RUBY_INTERNAL_EVENT_NEWOBJ
- ivoanjo (Ivo Anjo) wrote in #note-14:
> Maybe, yeah! Effectively the two requirements I believe are:
> ...
That sounds like a use case for `WeakRef` or `ObjectSpace::WeakMap`.
In #21722 you mention that would need the GVL, but don't you... -
09:17 AM Ruby Bug #21710: Segfault when reading object_id after it is set inside RUBY_INTERNAL_EVENT_NEWOBJ
- Having `MOVEDOBJ` would be very useful for being able to use the address as identity + I think it may come in handy for caches -- I think it would solve the "a) Be able to identify or reference object without preventing its GC, even if t...
-
08:45 AM Ruby Bug #21710: Segfault when reading object_id after it is set inside RUBY_INTERNAL_EVENT_NEWOBJ
- That makes me wonder if a `MOVEDOBJ` tracepoint would be a good solution. At least for now you can assume compaction almost never happens, and even when it happens, not so many objects would be moved.
So you'd get the benefit of using... -
08:37 AM Ruby Bug #21710: Segfault when reading object_id after it is set inside RUBY_INTERNAL_EVENT_NEWOBJ
- > rb_gc_mark_weak can be an option, another may be to have a mechanism to prevent compaction, so you can simply rely on addresses.
Maybe, yeah! Effectively the two requirements I believe are:
a) Be able to identify or reference obj... -
07:21 AM Ruby Bug #21710: Segfault when reading object_id after it is set inside RUBY_INTERNAL_EVENT_NEWOBJ
- Alright, I merged the fix, but as @jhawthorn mentioned, we should really figure out a way so you don't have to do this, because all we could think of when looking at the code was: "How has this ever worked?".
`rb_gc_mark_weak` can be ... -
07:15 AM Ruby Bug #21710 (Closed): Segfault when reading object_id after it is set inside RUBY_INTERNAL_EVENT_NEWOBJ
- Applied in changeset commit:git|8c3909935e2ba9f79bf3492772c77c305a0d370b.
----------
Handle NEWOBJ tracepoints settings fields
[Bug #21710]
- struct.c: `struct_alloc`
It is possible for a `NEWOBJ` tracepoint call back to write fields... -
09:05 PM Ruby Feature #21701: Enumerator.produce accepts an optional `size` keyword argument
- Ah, I missed that `Enumerator.produce(...).size` returns `Infinity`.
I think that's the problem, it should return `nil` because it doesn't know if infinite or not, as you say in many cases it is not infinite.
If that's done, I think ... -
08:59 PM Ruby Feature #21701: Enumerator.produce accepts an optional `size` keyword argument
- I think having to provide a size for those cases to not raise is too inconvenient.
I agree with what has been said in #21654: we should not check raise for infinite loops, unless we are absolutely certain they are infinite.
A `size` of `... -
09:02 PM Ruby Bug #21654: Set#new calls extra methods compared to previous versions
- I think what most people would agree here on is:
* If we know for sure a method will loop forever, then it seems helpful to raise.
* If we don't know for sure or have any doubt (e.g. with an Enumerator with `size`=`nil` which means u... -
08:37 PM Ruby Revision a773bbf0 (git): Track small malloc/free changes in thread local
-
08:37 PM Ruby Revision 9913d8da (git): Group malloc counters together
-
08:15 PM Ruby Revision 8d1a6bc4 (git): gc.c: check if the struct has fields before marking the fields_obj
- If GC trigger in the middle of `struct_alloc`, and the struct has more
than 3 elements, then `fields_obj` reference is garbage.
We must first check the shape to know if it was actually initialized. -
07:53 PM Ruby Misc #21762 (Open): Box: Inspect improvements
- 1\. Currently, `Ruby::Box` provides an `#inspect` method, and its output is reasonably short yet mysterious:
```ruby
Ruby::Box.new
#=> #<Namespace:3,user,optional>
```
First, it uses old `Namespace` name instead of `Ruby::Box`. Next... -
06:51 PM Ruby Revision 228d13f6 (git): gc.c: Pass shape_id to `newobj_init`
- Attempt to fix the following SEGV:
```
ruby(gc_mark) ../src/gc/default/default.c:4429
ruby(gc_mark_children+0x45) [0x560b380bf8b5] ../src/gc/default/default.c:4625
ruby(gc_mark_stacked_objects) ../src/gc/default/default.c:4647
ruby(gc_m... - 06:37 PM Ruby Revision fd02356e (git): ZJIT: Optimize NewArray to use rb_ec_ary_new_from_values (#15391)
-
06:24 PM Ruby Revision d5c7cf0a (git): [ruby/prism] Fix wrong error message for lower percent i arrays
- Not so sure how to trigger it but this is definitly more correct.
https://github.com/ruby/prism/commit/1bc8ec5e5d -
06:24 PM Ruby Revision ed31a0ca (git): [ruby/prism] Correctly handle line continuations in %w/i% interrupted by heredocs
- See https://bugs.ruby-lang.org/issues/21756. Ripper fails to parse this,
but prism actually also doesn't handle it correctly.
When heredocs are used, even in lowercase percent arays there can be
multiple `STRING_CONTENT` tokens. We need... -
06:13 PM Ruby Revision f9cd94f1 (git): wb-protect autoload_const
-
05:24 PM Ruby Misc #21689: DevMeeting-2025-12-11
- - [Feature #21701] Enumerator.produce accepts an optional `size` keyword argument
- Enumerator#to_set now rejects infinite sequences, and the current situation of Enumerator::Producer that its size is fixed to infinity creates an incon... -
04:54 PM Ruby Revision fcf39397 (git): Speedup TypedData_Get_Struct
- While profiling `Monitor#synchronize` and `Mutex#synchronize`
I noticed a fairly significant amount of time spent in
`rb_check_typeddata`.
By implementing a fast path that assumes the object is valid
and that can be inlined, it does mak... -
04:52 PM Ruby Revision dd0dfecc (git): Next Ruby version is 4.0, not 3.5
-
04:34 PM Ruby Revision d7dffcdb (git): [ruby/prism] Follow repo move from oracle/truffleruby to truffleruby/truffleruby
- https://github.com/ruby/prism/commit/c8e1b11120
-
04:22 PM Ruby Feature #21720: Add a native Binary Heap / Priority Queue to Ruby's Standard Library (heapify, heappush, heappop)
- ```ruby
Heap.heapify(array)
Heap.heappush(array, value)
Heap.heappop(array)
```
This looks like a very fragile API to me:
```ruby
Heap.heapify(array)
array << 'something random' # The heap is not encapsulated, so we can perform a... - 03:27 PM Ruby Revision 20fc8aff (git): Update default gems list at 94581b1ffde5e2afeba4631152955c [ci skip]
-
03:27 PM Ruby Feature #21005: Update the source location method to include line start/stop and column start/stop details
- bkuhlmann (Brooke Kuhlmann) wrote in #note-18:
> Any chance this could be fixed and included in time for the Ruby 4.0.0 release?
This is already implemented in Ruby 4.0.0-preview2 for Proc, Method, and UnboundMethod, but not Binding. -
03:25 PM Ruby Revision 94581b1f (git): [ruby/json] Release 2.17.0
- https://github.com/ruby/json/commit/4bdb2d14fe
-
03:21 PM Ruby Revision 208271e3 (git): [ruby/json] Fix handling of depth
- https://github.com/ruby/json/commit/ccca602274
-
02:57 PM Ruby Revision b78db63b (git): fstring_concurrent_set_create: only assert the string has no ivars
- The NEWOBJ tracepoint can generate an object_id, that's alright,
what we don't want is actual instance variables. -
02:57 PM Ruby Revision 5770c186 (git): Rename `rb_obj_exivar_p` -> `rb_obj_gen_fields_p`
- The "EXIVAR" terminology has been replaced by "gen fields"
AKA "generic fields".
Exivar implies variable, but generic fields include more than
just variables, e.g. `object_id`. -
02:55 PM Ruby Feature #21721: Allow `Queue` and `SizedQueue` to be used as LIFO queues
- > ConditionVariable and Mutex are too slow on CRuby.
So I looked at `Mutex` and `Monitor` for now.
I found an easy win for all `TypedData` which helps a bit: https://github.com/ruby/ruby/pull/15387
Before:
```
Mutex 13... -
09:28 AM Ruby Feature #21721: Allow `Queue` and `SizedQueue` to be used as LIFO queues
- I ran the benchmark on TruffleRuby to get an idea how much of that slowdown is due to a slow ConditionVariable & other things, the results are interesting:
CRuby:
```
ruby 3.4.7 (2025-10-08 revision 7a5688e2a2) +YJIT +PRISM [x86_64-... -
07:18 AM Ruby Feature #21721: Allow `Queue` and `SizedQueue` to be used as LIFO queues
- > To get an idea of the gain, how about benchmarking with a Thread::Queue for the AR::ConnectionPool?
Here's a benchmark of `Thread::Queue` vs Active Record's stack, vs the `TimedStack` in the popular `connection_pool` gem https://gis... -
02:13 PM Ruby Revision 05383a1d (git): [ruby/json] Fix duplicated test_unsafe_load_with_options test case
- https://github.com/ruby/json/commit/7b62fac525
-
01:49 PM Ruby Revision 32c7c3c1 (git): [ruby/json] Reproduce C ext behavior of ignoring mutated depth in arrays
- https://github.com/ruby/json/commit/e0257b9f82
-
01:49 PM Ruby Revision 54a73a57 (git): [ruby/json] Test and restore behavior around to_json changing depth
- When serializing an Array, and one of the elements of the Array requires
calling `to_json`, if the depth is changed, it will be used for the next
entries, which wasn't the case before
https://github.com/ruby/json/commit/5abd43490714, and... -
01:48 PM Ruby Revision 4d377c8c (git): [ruby/json] Improve `JSON.load` and `JSON.unsafe_load` to allow passing options as second argument
- Otherwise it's very error prone.
https://github.com/ruby/json/commit/c54de70f90 -
12:48 PM Ruby Bug #21758: Prism fails to parse heredoc within %Q literal split by another heredoc
- It can be even simpler:
```rb
%Q
#{<<B}
B
```
Lex output similarly contains B twice. -
09:46 AM Ruby Revision 706d8083 (git): [ruby/rubygems] Silence Bundler UI in plugin installer specs
- https://github.com/ruby/rubygems/commit/90a0af8204
-
09:38 AM Ruby Bug #21761: NameError: uninitialized constant only when RUBY_BOX=1
- It does not reproduce without Rake.
```ruby
$ RUBY_BOX=1 ruby test_box.rb
ruby: warning: Ruby::Box is experimental, and the behavior may change in the future!
See doc/language/box.md for known issues, etc.
Constants defined:
R... -
09:37 AM Ruby Bug #21761: NameError: uninitialized constant only when RUBY_BOX=1
- Here are original issue found.
# Steps to reproduce
```
git clone https://github.com/rails/rails
cd rails/activerecord
rm ../Gemfile.lock
bundle install
RUBY_BOX=1 bundle exec rake test
```
# Actual behavior
```
$ RUBY_BOX... -
09:36 AM Ruby Bug #21761 (Open): NameError: uninitialized constant only when RUBY_BOX=1
- This issue is originally found when I tested Ruby::Box against Rails main branch, I think I have created a repro.
### Steps to reproduce
1. Install Ruby master branch
2. Follow these steps below.
```
git clone https://github.c... -
08:31 AM Ruby Bug #21756: Ripper fails to parse pathological heredoc
- For the prism part of the issue https://github.com/ruby/prism/pull/3778
-
07:14 AM Ruby Revision 8c390993 (git): Handle NEWOBJ tracepoints settings fields
- [Bug #21710]
- struct.c: `struct_alloc`
It is possible for a `NEWOBJ` tracepoint call back to write fields
into a newly allocated object before `struct_alloc` had the time
to set the `RSTRUCT_GEN_FIELDS` flags and such.
Hence we can't... -
07:13 AM Ruby Bug #21760 (Open): Ruby::Box: a couple of require-related problems
- I am not sure whether all the problems have the same nature, but putting them together for now.
**1. Enabling box breaks `gem`+`require`**
Minimal reproducible example:
`test.rb`:
```ruby
gem 'faraday', '= 2.14.0'
require '... -
05:36 AM Ruby Bug #21757: Splatted args array is mutated when passing unexpected kwargs
- I submitted a pull request to fix this: https://github.com/ruby/ruby/pull/15383
- 05:16 AM Ruby Revision 4762f429 (git): [DOC] typo fix in ruby/file.c
-
04:45 AM Ruby Bug #21759 (Open): `test_fork.rb:78` is failing with `RUBY_MN_THREADS=1`
- The following failure of `make btest` is happend with `RUBY_MN_THREADS=1`.
```
#289 test_fork.rb:78:
def now = Process.clock_gettime(Process::CLOCK_MONOTONIC)
Thread.new do
loop { sleep 0.0001 }
end
... -
02:53 AM Ruby Revision b8a79884 (git): Avoid leaking fd in uminus_no_embed test
- 02:43 AM Ruby Revision 65cfd5e1 (git): Update default gems list at 1af7550114a0401229eda42de24a82 [ci skip]
-
02:42 AM Ruby Revision 1af75501 (git): [ruby/rubygems] Bump Rubygems version to 4.0.0
- https://github.com/ruby/rubygems/commit/9d744beb56
-
02:42 AM Ruby Revision d6107f4a (git): [ruby/rubygems] Bump Bundler version to 4.0.0
- https://github.com/ruby/rubygems/commit/a55c485226
-
02:41 AM Ruby Revision 6e723bee (git): [DOC] About Float Imprecision (#15293)
-
02:39 AM Ruby Revision b2f11065 (git): [DOC] Harmonize #+ methods
- 02:35 AM Ruby Revision f4466ec8 (git): Bump actions/checkout in /.github/actions/setup/directories
- Bumps [actions/checkout](https://github.com/actions/checkout) from 6.0.0 to 6.0.1.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](http... - 02:31 AM Ruby Revision bf144d8c (git): Bump actions/checkout from 6.0.0 to 6.0.1
- Bumps [actions/checkout](https://github.com/actions/checkout) from 6.0.0 to 6.0.1.
- [Release notes](https://github.com/actions/checkout/releases)
- [Commits](https://github.com/actions/checkout/compare/v6...v6.0.1)
---
updated-dependen... -
02:19 AM Ruby Revision 28d9493b (git): [ruby/json] Fix macro arguments
- `ALWAYS_INLINE()` and `NOINLINE()` are defined with one argument.
https://github.com/ruby/json/commit/8fb727901e -
01:18 AM Ruby Revision dfdc5d40 (git): Check and raise semantics errors on nested variables captures in patterns
- This commit makes these codes to be invalid.
```ruby
case 0
in [a] | 1
end
case 0
in { a: b } | 1
end
case 0
in [{ a: [{ b: [{ c: }] }] }] | 1
end
```
12/02/2025
- 10:35 PM Ruby Revision a211abbc (git): Cache array length in `rb_ary_join` (#15362)
- When all elements are strings, we never have to recalculate the length
of the array because there are no conversion methods that are called, so
the length will never change. This speeds up the fast path by ~10%.
```ruby
a = ["1"*10, "2"... -
10:24 PM Ruby Revision a63147ee (git): [ruby/strscan] [DOC] Avoid being interpreted as a link
- (https://github.com/ruby/strscan/pull/180)
Since `[](n)` is being interpreted as a Markdown link, it cannot be
displayed as a method call.
I have corrected this by escaping the brackets so that they are
interpreted as strings rather tha... -
10:14 PM Ruby Revision e0746cc4 (git): [ruby/prism] Consolidate macro definitions
- https://github.com/ruby/prism/commit/cc0ca08757
-
10:14 PM Ruby Revision a1ea824b (git): [ruby/prism] Remove PM_OPTIONAL_LOCATION_NOT_PROVIDED_VALUE macro
- https://github.com/ruby/prism/commit/1988615ce1
-
10:14 PM Ruby Revision a55040ca (git): [ruby/prism] Further specialize PM_NODE_INIT
- https://github.com/ruby/prism/commit/7ab6d9df47
-
10:14 PM Ruby Revision 56ee55b1 (git): [ruby/prism] Introduce PM_NODE_FLAGS macro
- https://github.com/ruby/prism/commit/a20afe1674
-
10:14 PM Ruby Revision 68617fb6 (git): [ruby/prism] Specialize PM_NODE_INIT to reduce calls to location
- https://github.com/ruby/prism/commit/3e0b5c9eb7
-
10:14 PM Ruby Revision 8d2f73d7 (git): [ruby/prism] Introduce PM_NODE_UPCAST macro for readability
- https://github.com/ruby/prism/commit/7eb169513a
-
10:03 PM Ruby Feature #21721: Allow `Queue` and `SizedQueue` to be used as LIFO queues
- Eregon (Benoit Daloze) wrote in #note-10:
> FWIW it sounds quite bad contention-wise to use a global queue/stack (EDIT: and a stack is worse than a queue re contention) for connections, at least for the case `#connections >= #threads`.
... -
09:25 PM Ruby Feature #21721: Allow `Queue` and `SizedQueue` to be used as LIFO queues
- To get an idea of the gain, how about benchmarking with a Thread::Queue for the AR::ConnectionPool?
For the micro benchmark it probably doesn't matter much semantically if LIFO or FIFO I guess since only 1 thread, but that way we can hav... -
04:49 PM Ruby Feature #21721: Allow `Queue` and `SizedQueue` to be used as LIFO queues
- I'm in favor of a LIFO-alternative to `Thread::Queue` and `Thread::SizedQueue` in core. However, it should not have queue in the name, as queue implies FIFO behavior. It should have stack in the name, as stack implies LIFO behavior. `Thr...
-
04:43 PM Ruby Feature #21721: Allow `Queue` and `SizedQueue` to be used as LIFO queues
- > I'm not sure how big of a bottleneck this is though, can you share the profile?
If you wish to investigate yourself:
- https://github.com/rails/rails/issues/55728
- https://github.com/rails/rails/pull/55736 -
04:18 PM Ruby Feature #21721: Allow `Queue` and `SizedQueue` to be used as LIFO queues
- byroot (Jean Boussier) wrote:
> Define different classes for LIFO queues
> ...
Queue is actually defined under `Thread` so that's not that big of a concern.
If we add this I'd want a separate class for sure to not make many compromise... -
03:57 PM Ruby Feature #21721: Allow `Queue` and `SizedQueue` to be used as LIFO queues
- > isn't that complicated
It isn't trivial either, but more importantly, it's not very performant. It used not to be important because checkout and checkin would only happen once per request. But async users demanded that we'd go throu... -
03:47 PM Ruby Feature #21721: Allow `Queue` and `SizedQueue` to be used as LIFO queues
- Also I think one can't even do `BiasableQueue` (at least not that way) if that LIFO Queue was in core.
-
03:45 PM Ruby Feature #21721: Allow `Queue` and `SizedQueue` to be used as LIFO queues
- Thanks for the link, that's helpful to discuss this.
> So I'd be happy to get rid of all that code.
https://github.com/rails/rails/blob/f5b981e6390a2574e63cf0889c421cdd4e446df0/activerecord/lib/active_record/connection_adapters/abs... -
03:32 PM Ruby Feature #21721: Allow `Queue` and `SizedQueue` to be used as LIFO queues
- > How about making your own then with Array + Mutex + ConditionVariable?
As explained, that's what I currently have: https://github.com/rails/rails/blob/f5b981e6390a2574e63cf0889c421cdd4e446df0/activerecord/lib/active_record/connect... -
03:22 PM Ruby Feature #21721: Allow `Queue` and `SizedQueue` to be used as LIFO queues
- byroot (Jean Boussier) wrote:
> I tried to use `git blame` to see if there was a justification for this
I think it's because many people AFAIK call FIFO a "Queue" and LIFO a "Stack".
From the description I get you're not simply using A... -
07:11 PM Ruby Bug #21756: Ripper fails to parse pathological heredoc
- Ah, yeah. It's not expecting disjointed strings in arrays where interpolation is not allowed. That doesn't hold with line continuations and heredocs. I'm working on a fix, should not be so difficult.
Edit: Sorry, I totally missed the di... -
05:15 PM Ruby Bug #21756: Ripper fails to parse pathological heredoc
- Looks like there is one more separate issue here. Prism and parse.y execution result differs.
~~~ruby
p <<-A, %w[a\
A
b c]
# Prism: ["a\n", "b", "c"]
# parse.y: ["a\nb", "c"]
~~~
Changing `%w` to `%W`, Prism and parse.y are the... -
11:11 AM Ruby Bug #21756 (Open): Ripper fails to parse pathological heredoc
- ```rb
# test.rb
pp <<-A, %w[j\
i
A
j]
```
```sh
$ RBENV_VERSION=ruby-dev ruby -rripper -ve "Ripper.lex(File.read('test.rb'), raise_errors: true)"
ruby 4.0.0dev (2025-11-28T10:49:46Z master dcb9e17f46) +PRISM [x86_64-linux]
/h... -
06:36 PM Ruby Bug #21723: `binding.irb` raises a LoadError under `bundle exec`
- Here is a patch: https://github.com/ruby/ruby/pull/15373
-
05:27 PM Ruby Revision 3aa674ad (git): [ruby/psych] Properly set the message of Exceptions on TruffleRuby
- * From https://github.com/truffleruby/truffleruby/commit/1f81db82d2969ff7c5de0dacdecb38252664f42c
https://github.com/ruby/psych/commit/dbabe7aac6 -
05:27 PM Ruby Revision d3907245 (git): [ruby/psych] Fix usage of rb_struct_initialize() to pass an Array of members values and not a Hash
- * rb_struct_initialize() does not accept a Hash, and it's very brittle
to pass `[{...}]` and to rely on that C function using rb_keyword_given_p().
It basically worked accidentally, by having **members in the caller of the caller.
... -
05:11 PM Ruby Bug #21757: Splatted args array is mutated when passing unexpected kwargs
- Thank you for the report. This is a bug in the allocationless anonymous splat optimization in Ruby 3.4, still present in the master branch. I'll work on a fix.
-
04:26 PM Ruby Bug #21757 (Open): Splatted args array is mutated when passing unexpected kwargs
- The bug is very simple to provoke.
``` ruby
proc = ->(*) { } # we do NOT expect any keyword arguments.
args = [1, 2]
proc.(*args, bug: true)
pp args #=> [1, 2, {bug: true}]
```
The `args` array now has a third element ... -
05:08 PM Ruby Bug #21758 (Closed): Prism fails to parse heredoc within %Q literal split by another heredoc
- Prism fails to parse this code
~~~ruby
<<A; %Q
A
#{<<B}
B
~~~
Parse error:
~~~
a.rb:4: syntax error found (SyntaxError)
2 | A
3 | #{<<B}
> 4 | B
| ^ unexpected constant, expecting end-of-input
~~~
`B` at line 4... -
04:20 PM Ruby Revision 17bcd71e (git): [ruby/prism] Clean up test excludes
- Mostly not having to list version-specific excludes when testing against ripper/parse.y
Also don't test new syntax additions against the parser gems. The version support
for them may (or may not) be expanded but we shouldn't bother whil... -
04:20 PM Ruby Revision c06c2203 (git): [ruby/prism] Fix the ripper translator to parse as the current ruby
- Otherwise, it uses the latest prism version
https://github.com/ruby/prism/commit/86406f63aa -
03:59 PM Ruby Revision cc929bff (git): [ruby/json] Don't call to_json on the return value of as_json for Float::NAN
- https://github.com/ruby/json/commit/28c57df8f7
- 02:49 PM Ruby Revision 9eafeaed (git): Box: Free rb_classext_t struct for a box when the box is GCed
- 02:49 PM Ruby Revision 84bc1f03 (git): Box: Mark boxes when a class/module is originally defined in it.
- When a class/module defined by extension libraries in a box, checking
types of instances of the class needs to access its data type (rb_data_type_t).
So if a class still exists (not GCed), the box must exist too (to be marked). - 02:49 PM Ruby Revision 75f8a116 (git): Box: Fix data type name
- 02:49 PM Ruby Revision 03ed220c (git): Box: load_wrapping is not needed now
- Top level constants are defined on the Object class's constant table,
and those constants can be referred as box::CONST_NAME from outside box.
So load_wrapping() is not needed now. -
01:39 PM Ruby Feature #21005: Update the source location method to include line start/stop and column start/stop details
- Any chance this could be fixed and included in time for the Ruby 4.0.0 release?
-
12:06 PM Ruby Bug #21645: Can't `require "resolve"` on Windows under Bundler without warnings
- I think this is fixed with https://github.com/ruby/resolv/pull/110
-
09:35 AM Ruby Revision e515fa7a (git): ZJIT: Improve documentation and make it easy to generate the types graph
-
08:25 AM Ruby Revision 456ba321 (git): [ruby/rubygems] Make BUNDLE_LOCKFILE environment variable have precedence over lockfile method in Gemfile
- It would be simpler to do `options[:lockfile] ||= ENV["BUNDLE_LOCKFILE"]`,
but that doesn't work as `options` is frozen.
Fixes https://github.com/ruby/rubygems/pull/9117
https://github.com/ruby/rubygems/commit/6e3603a0e9 -
07:00 AM Ruby Revision 0e22108d (git): [ruby/optparse] Remove `const_set` and instead use explicit assignments
- https://github.com/ruby/optparse/commit/6e2709a5fd
-
03:39 AM Ruby Revision 7df97983 (git): [ruby/rubygems] Improve banner message for the default command.
- Co-authored-by: Benoit Daloze <[email protected]>
https://github.com/ruby/rubygems/commit/463488b439
Co-authored-by: Patrik Ragnarsson <[email protected]> -
02:49 AM Ruby Bug #21640: Core Pathname is missing 3 methods / is partially-defined
- Is there a way to resolve this? I just want to make Pathname (and Ruby) better :)
-
12:55 AM Ruby Revision e2d17655 (git): CI: Distclean mswin
- Use the given `make-command` instead of the hard-coded `make` command.
TODO: Use it for `make up` as well, in the future. -
12:55 AM Ruby Revision b563be30 (git): Win32: Clean empty directories
-
12:55 AM Ruby Revision 0be626e7 (git): Win32: Clean timestamp directory for platform
-
12:55 AM Ruby Revision a9961701 (git): Win32: Remove bundled gems directories
-
12:55 AM Ruby Revision b17f6a2a (git): Win32: Clean miniprelude
-
12:55 AM Ruby Revision 0e222991 (git): Win32: Remove DLL files linked by `prepare-vcpkg`
-
12:55 AM Ruby Revision b2b67456 (git): Win32: Support removing wildcards in middle of path
-
12:55 AM Ruby Revision c4fb79ca (git): Win32: Clean generated sources
-
12:55 AM Ruby Revision ec80e92a (git): Win32: Refine outputs
- - Suppress logos from sub makes.
- Set the prompt for `for` command when `echo` is on. -
12:55 AM Ruby Revision fa513886 (git): Win32: Append `-p` option to `RMDIRS`
- `rmdirs.bat` may require this option explicitly to remove parent
directories, in the future. -
12:55 AM Ruby Revision a6c5d290 (git): Win32: Clean prism
- - intermediate source files
- timestamp files
- build directories -
12:55 AM Ruby Revision 00d05dfc (git): Win32: Remove extra suffix for sub-make
-
12:55 AM Ruby Revision b0b8eb6a (git): Win32: Fix removing symlink
- Try `rd` first for symlink to a directory; `del` attemps to remove all
files under the target directory, instead of the symlink itself. -
12:55 AM Ruby Revision bb76e65f (git): Win32: Add `DLEXT` for clean-spec
-
12:55 AM Ruby Revision 9cdee9db (git): Win32: Fix rm.bat removing non existent file
-
12:55 AM Ruby Revision 01fd3488 (git): Win32: Fix @ in middle of commands
- `@` is not a command, and cannot be placed after `||`.
-
12:42 AM Ruby Revision 07ea9a38 (git): ZJIT: Optimize GetIvar for non-T_OBJECT
- * All Invariant::SingleRactorMode PatchPoint are replaced by
assume_single_ractor_mode() to fix https://github.com/Shopify/ruby/issues/875
for SingleRactorMode patchpoints.