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 2024/11/04. 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.
[Feature #20860] Merge Optional Experimental Feature MMTk into Ruby
We are proposing to merge MMTk into the ruby/mmtk repository, which will be mirrored into ruby/ruby.
This implementation uses the GC API (introduced in [Feature #20470]).
Supports the NoGC and mark-sweep algorithms.
We do not ever anticipate replacing Ruby's default GC with MMTk but instead offer it as an alternative implementation.
We have our roadmap proposed in the ticket, which includes supporting generations, improving parallelism, and support moving, faster algorithms such as Immix.
[Feature #20818] Allow passing a block to Hash#store to update current value (furunkel)
currently, to update a value in a hash we have to call #[] followed by #[]=
this calls #hash twice (on key), and requires two lookups; this also happens for shortcuts such as h[k] += c
the problem could be solved by introducing a block form for Hash#store (Hash#update is already taken)
the block is called with the current value or the default value if the key does not exist; return value = new value
inverse of Hash#fetch, which also can take block
h[k] = some_method(h[k]) could be written as h.store(k) { some_method(_1) }, more efficient and more elegant in some cases (e.g., if k is complex, no repetition)
exists in other languages: e.g., Map#computeIfAbsent|Present (Java) or and_modify (Rust)
Initially proposed as syntactic sugar for .then, and later refined after discussion to work as a statement separator (like ;) with a variable carrying the LHS expression result to the RHS in #note-34.
This approach aligns with how pipes work in other languages, adapted for Ruby.
Improves readability by transforming p(q(r)) into a more natural r |> q |> p, matching how we think.