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.
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.
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.
It introduces IMEMO_TYPE_EXT_BIT to extend imemo_type beyond 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.
with_refinements applies refinements through def/class/module inside the proc body, consistent with using. Is this OK?
[Feature #18915] New error class: NotImplementedYetError or scope change for NotImplementedError (koic)
A new exception class AbstractMethodError inheriting from ScriptError has been designed.
Existing code may define an AbstractMethodError inheriting from something other than ScriptError. In that case a superclass mismatch raises a TypeError.
Is Ruby 4.1 an acceptable timing to introduce AbstractMethodError despite the incompatibility risk?
Are then and when acceptable? (yield and if are 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, expr referring to itself:
Used recursively, the leaked x from the outer additive call is overwritten by the inner additive call before x + y runs, so the result is wrong.
Guards desugar to filter, not a lazy withFilter as in Scala. So in the strict case, each guard builds one intermediate array; users who want fusion can add .lazy. Is filter acceptable, or should we add a with_filter-like method?
Should multiple iterators also be supported in the for ... do form?
[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
[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_count fits well alongside Integer's existing bit methods: bit_length, Integer#[], #allbits?/#anybits?, and the bitwise operators.)
[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 via STR_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_SUBSTRING itself. This fix is self-contained, does not touch the RSTRING_PTR() null-termination contract, and seems worth landing independently of #19315.