Issue #21839 has been updated by byroot (Jean Boussier). * [Feature #21800] New API to efficiently scan directories efficiently (byroot) * It's common for development tools to need to recursively scan the file system, but it's slower than it should be in Ruby because the API impose N+1 `stat` syscalls. * This would benefit many popular gems such as Zeitwerk, rubocop, etc. * Previous discussion had concern about changing the behavior of `Dir.each_child` and other existing methods. * I propose: *`Dir.scan(path) { |entry_name, entry_type| }` *`Dir.scan(path) # => [[entry_name, entry_type], ...]` * The type is just a symbol, similar to `File::Stat#ftype` * In case of `DT_UNKNOWN`, Ruby issue a `lstat` to obtain the real type (important for portability). * [Feature #21788] Promote Thread::Monitor to a core class (byroot) * Previous discussion ended on the discussion of whether a recursive Mutex would be enough * Yes it would, but that's what Monitor is used for in a ton of code, I don't think it's worth causing churn here. * Monitor is about as useful as Mutex and yet one is a core class and the other is a "stdlib" extension. * Bringing it into core allow to make is about as fast as mutex, while it is currently ~20% slower. * I don't personally think `MonitorMixin` should be made core though. It can remain in `monitor.rb`. ---------------------------------------- Misc #21839: DevMeeting-2026-02-12 https://bugs.ruby-lang.org/issues/21839#change-116274 * Author: mame (Yusuke Endoh) * Status: Open ---------------------------------------- # The next dev meeting **Date: 2026/02/12 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/02/09. 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](https://gist.github.com/mame/b0390509ce1491b43610b9ebb665eb86). 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. -- https://bugs.ruby-lang.org/