The library_paths method was using readlines which could leave file descriptors open due to Ruby's garbage collection behavior. When processing many packages during 'brew upgrade' or 'brew linkage', this caused "Too many open files" errors on Linux systems. Changes: - Replace readlines with explicit file.open block to ensure proper closure - Add caching to avoid repeatedly reading /etc/ld.so.conf during a session - Cache included files as well to optimize recursive include processing Fixes: #19866, #20302, #19177, #20223 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
Library
This directory contains all the code run by the official brew command in Homebrew and all formulae (package descriptions) in taps (repositories containing formulae) in Taps subdirectories.