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 2023/01/16. 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 #19245] Array#pack should have a strict mode (byroot)
Currently it silently modulo the arguments if they are too big for the type.
This can can lead to silent data loss.
I believe pack need a "strict mode" that would instead raise an error, e.g. [4096].pack("C", strict: true) # => 4096 out of char range (RangeError) (like Integer.chr)
It may make sense to gradually make the strict mode the default in future versions.
[Feature #19236] Allow to create hashes with a specific capacity from Ruby (byroot)
This is significantly more efficient when you need to create large hashes of known size.
rb_hash_new_capa(long) was added as a C-API in 3.2
[Feature #19179] Support parsing SCM_CRED(ENTIALS) messages from ancillary messages
Various UNIX-y OS's support getting the (e)uid, (e)gid, and pid from unix sockets - some with a socket option, some with an ancillary message
Ruby's socket module already has code to parse these, but it's only used for Socket::Options#inspect and Socket::AncillaryData#inspect
I propose enhancing Socket::Options and Socket::AncillaryData to conveniently support this functionality where it's available
[Feature #19144] Ruby should set AI_V4MAPPED | AI_ADDRCONFIG getaddrinfo flags by default
Many older and widely-deployed glibc versions have a bug which can cause a 5-second delay in DNS resolutions when IPv4/IPv6 are both enabled
When IPv6 is not in use, the AI_ADDRINFO flag to getaddrinfo works around this bug by not making AAAA requests if the host does not have a useable IPv6 address.
This bug often shows up in Ruby programs in particular, because Ruby accidentally overwrites one of the overlapping levels of glibc defaults, and causes AI_ADDRCONFIG to be unset where it would normally be set by default.
[Bug #18518] NoMemoryError + [FATAL] failed to allocate memory for twice 1 << large (eregon)
I would like a decision on this ticket
I propose to raise RangeError (shift width too big) if shift width is >= 2**31 (32-bit signed integer) for all platforms, like it already behaves on 32-bit platforms.
Current behavior is useless on 64-bit platforms, it's slow and then eventually NoMemoryError.
This will restore consistency for this between Ruby, JRuby and TruffleRuby.
[Bug #19289] RbConfig::CONFIG["STRIP"] should keep rb_abi_version and rb_abi_version should always be part of Ruby
In dev meeting #18557 it was decided that we would keep rb_abi_version on both development and release (so there would be no difference in behavior between development and release).
In commit cd1a0b3 it was changed so that rb_abi_version would not be defined in release.
This has caused issues in gems such as gRPC and rb-sys (which compiles Rust based gems) because they expect rb_abi_version to be present.
This will continue to cause problems in the future due to this difference in behavior.