Actions
Misc #22107
openDevMeeting-2026-07-09
Misc #22107:
DevMeeting-2026-07-09
Status:
Open
Assignee:
-
Description
The next dev meeting¶
Date: 2026/07/09 13:00-17:00 (JST)
Log: TBD
- Dev meeting IS NOT a decision-making place. All decisions should be done at the bug tracker.
- Dev meeting is a place we can ask Matz, nobu, nurse and other developers directly.
- Matz is a very busy person. Take this opportunity to ask him. If you can not attend, other attendees can ask instead of you (if attendees can understand your issue).
- We will write a record of the discussion in the file or to each ticket in English.
- All activities are best-effort (keep in mind that most of us are volunteer developers).
- The date, time and place of the meeting are scheduled according to when/where we can reserve Matz's time.
- DO NOT discuss then on this ticket, please.
Call for agenda items¶
If you have a ticket that you want matz and committers to discuss, please post it into this ticket in the following format:
* [Ticket ref] Ticket title (your name)
* Comment (A summary of the ticket, why you put this ticket here, what point should be discussed, etc.)
Example:
* [Feature #14609] `Kernel#p` without args shows the receiver (ko1)
* I feel this feature is very useful and some people say :+1: so let discuss this feature.
- It is recommended to add a comment by 2026/07/06. We hold a preparatory meeting to create an agenda a few days before the dev-meeting.
- The format is strict. We'll use this script to automatically create an markdown-style agenda. We may ignore a comment that does not follow the format.
- Your comment is mandatory. We cannot read all discussion of the ticket in a limited time. We appreciate it if you could write a short summary and update from a previous discussion.
Updated by mame (Yusuke Endoh) about 1 month ago
- Related to Misc #14770: [META] DevelopersMeeting added
Updated by shugo (Shugo Maeda) about 1 month ago
· Edited
- [Feature #22097] Add Proc#with_refinements
- For maintainability, I've replaced the hand-written iseq deep-copy with an in-memory IBF dump+load round-trip
- Should it warn or raise when called with different modules for the same block?
- I prefer a performance warning (
Warning[:performance]) over an exception
- I prefer a performance warning (
- Should we prevent calls to the original
Proc?- In the intended use cases, only the refined
Procis called, but I would prefer not to enforce it.
- In the intended use cases, only the refined
- Should the memo lookup be lock-free?
- The current implementation uses
RB_VM_LOCKING()for both lookup and store, which adds ~15 ns overhead per call in multi-Ractor mode - See https://github.com/shugo/ruby/pull/112 for details and benchmarks
- It introduces
IMEMO_TYPE_EXT_BITto extendimemo_typebeyond 16 types.
This may also useful for [Bug #22019], where one proposed fix is to replace stack-allocated structs passed through ifunc with GC-managed imemo objects.
- The current implementation uses
- with_refinements applies refinements through
def/class/moduleinside the proc body, consistent with using. Is this OK?
Updated by hasumikin (hitoshi hasumi) about 1 month ago
- [Feature #22118] Introduce Basic Bit Operations into String (hasumikin)
- Are these methods suitable as the first subset?
- Is the
lsb_first:keyword acceptable?
Updated by koic (Koichi ITO) about 1 month ago
- [Feature #18915] New error class: NotImplementedYetError or scope change for NotImplementedError (koic)
- A new exception class
AbstractMethodErrorinheriting fromScriptErrorhas been designed. - Existing code may define an
AbstractMethodErrorinheriting from something other thanScriptError. In that case a superclass mismatch raises aTypeError. - Is Ruby 4.1 an acceptable timing to introduce
AbstractMethodErrordespite the incompatibility risk?
- A new exception class
Updated by Eregon (Benoit Daloze) about 1 month ago
- [Feature #21998] Add {Method,UnboundMethod,Proc}#source_range (eregon)
- Could matz reply there?
Updated by shugo (Shugo Maeda) 29 days ago
· Edited
- [Feature #22132] Scala-like for comprehensions
- Are
thenandwhenacceptable? (yieldandifare not usable due to grammar conflicts) - Should a comprehension scope loop variables, or leak them like
for ... do?- I think it should scope them. Leaking is harmful when comprehensions are recursive: the loop variables are shared across recursive calls, and an outer binding can be overwritten by an inner one before it is read.
For example, in a parser combinator where each rule is a memoized method,exprreferring to itself:Used recursively, the leakeddef additive = @additive ||= for x in multitive << term("+"), y in additive then x + y end | multitivexfrom the outeradditivecall is overwritten by the inneradditivecall beforex + yruns, so the result is wrong.
- I think it should scope them. Leaking is harmful when comprehensions are recursive: the loop variables are shared across recursive calls, and an outer binding can be overwritten by an inner one before it is read.
- Guards desugar to
filter, not a lazywithFilteras in Scala. So in the strict case, each guard builds one intermediate array; users who want fusion can add.lazy. Isfilteracceptable, or should we add awith_filter-like method? - Should multiple iterators also be supported in the
for ... doform?- https://github.com/shugo/ruby/pull/126
doform followsfor ... thensemantics: loop variables do not leak, andbreakis a syntax error.
- https://github.com/shugo/ruby/pull/126
- Are
Updated by byroot (Jean Boussier) 29 days ago
- [Feature #22085]
String#to_fandKernel#Floatshouldn't issue out of range warnings- Here is another example of the warning needing to be worked around: https://github.com/ruby/json/pull/1044
Updated by hsbt (Hiroshi SHIBATA) 27 days ago
- [Feature #21951] Lazy load error extension gems to speed up boot time
- I rewrite to make
autoloadwith C instead ofgem_prelude.rb.Process.warmupload error extensions eagerly now.
- How about this proposal?
- I rewrite to make
Updated by nobu (Nobuyoshi Nakada) 26 days ago
- [Feature #22135] Remove obsolete
ObjectSpace#_id2ref- It has been marked deprecated since 4.0, but discouraged for years.
- The tests are green including the bundled gems and benchmark tests.
Updated by byroot (Jean Boussier) 26 days ago
- [Feature #22136]
sprintfshouldn't raise ArgumentError when $DEBUG is set (byroot)- It's the only method I know of with such behavior.
- I think it's counter productive, if I run some code with
$DEBUG = trueI expect its behavior not to change (aside from priting debug information).
- [Feature #22137] Change
Symbol#to_sto return frozen strings (byroot)- It has been returning a "chilled string" for two versions now.
- Very large codebases have adopted
Symbol.alias_method(:to_s, :name)with nice allocation reduction and no compatibility issues. - I think we should return a frozen string in 4.1.
- If we're really worried, then at least emit a non-verbose warning.
Updated by ioquatix (Samuel Williams) 24 days ago
· Edited
- [Feature #22138] Add
RB_NOGVL_PENDING_INTERRUPT_FAILflag forrb_nogvl.- Additive change to protect against race condition. Is it acceptable?
- [Bug #22133] Ruby's default SIGINT handling ignores
Thread.handle_interruptmasking.- Can we fix it?
- [Feature #21704] Expose
rb_process_status_forto C extensions.- Is the new public function name acceptable to @akr (Akira Tanaka)?
- Can we merge it?
Updated by hsbt (Hiroshi SHIBATA) 21 days ago
· Edited
- [Misc #22180] Provide official Windows (mswin) binary packages and a version manager (hsbt)
- All three components (relocatable zip, build automation, and a PEP 773-style version manager) are implemented and working. I'd like to discuss the three decisions in the ticket:
- make these official artifacts hosted on ruby-lang.org
- sign them with a project identity like Ruby association
- host
rbmanagerrepo under the ruby organization
- All three components (relocatable zip, build automation, and a PEP 773-style version manager) are implemented and working. I'd like to discuss the three decisions in the ticket:
Updated by jhawthorn (John Hawthorn) 19 days ago
· Edited
- [Feature #20163] Introduce #bit_count method on Integer (jhawthorn)
- matz asked for real-world use cases. I have use case in https://bugs.ruby-lang.org/issues/20163#note-27 (a HAMT) and many uses from existing gems (IP addr CIDR notation, hamming distance, parity, more)
String#bit_count(#22082 / #22118) doesn't cover this case: the bitmap always fits in a fixnum, and String would require extra allocations per operation, and does not have an efficient operation for doing creating mask from(1 << x) - 1.Integer#bit_countfits well alongside Integer's existing bit methods:bit_length,Integer#[],#allbits?/#anybits?, and the bitwise operators.)- Implementation at https://github.com/ruby/ruby/pull/17696
- Can this be accepted?
Updated by rhenium (Kazuki Yamaguchi) 19 days ago
- [Feature #22102] C API to obtain a C string from a Ruby String (rhe)
- The existing
StringValueCStr()is sometimes awkward to use. It would be nice to provide a simpler alternative as part of the public C API. - Can we add one? Is the name
rb_str_cstr()acceptable?
- The existing
Updated by nobu (Nobuyoshi Nakada) 19 days ago
- [Feature #22185] Add alignment directives to
Array#packandString#unpackx!and@!for alignment.
Updated by himura467 (Akito Shitara) 18 days ago
- [Feature #22186] Increase the embeddable size limit for substrings created by
str_subseq()(himura467)str_subseq()embeds a sharable middle substring only when it fits in the smallest RString slot (about 23 bytes), even though VWA supports embedded strings up to 1024 bytes. Sizing the allocation to the actual substring length viaSTR_EMBEDDABLE_P()/str_alloc_embed()improves fluentd by roughly 12% on ruby-bench.- The fluentd improvement observed in #19315#note-52 seems to be attributable to this change (it was included in that branch), not to
SHARABLE_MIDDLE_SUBSTRINGitself. This fix is self-contained, does not touch theRSTRING_PTR()null-termination contract, and seems worth landing independently of #19315. - Is this approach acceptable? Draft PR: https://github.com/ruby/ruby/pull/17723
Actions