brew leaves was calling Dependency#to_installed_formula -> Formulary.resolve
for every runtime dependency of every installed formula. This triggered
filesystem I/O (reading tabs, resolving symlinks, loading formula files) for
each of those calls, accounting for ~45% of total wall time.
Instead, read dependency names directly from each formula's keg tab data
(Keg#runtime_dependencies returns [{full_name: ...}] hashes) and build a Set
of base names for O(1) membership tests. A fallback to the original
installed_runtime_formula_dependencies path is kept for pre-1.1.6
installations that have no runtime_dependencies in their tabs.
For cask dependencies, use CaskDependent#deps (string names only) instead of
CaskDependent#runtime_dependencies (which called to_installed_formula).
Transitive cask formula deps are already captured by the main tab-data loop.
Use Formula#possible_names ([name, *oldnames, *aliases]) for the membership
check so renamed formulae (stale tab records old name) are correctly excluded
from leaves. As a side-effect, this also eliminates the unintended
"Warning: Formula foo was renamed to bar." stderr output that the original
code emitted on every brew leaves run when stale tabs referenced old names.
Homebrew
Features, usage and installation instructions are summarised on the homepage. Terminology (e.g. the difference between a Cellar, Tap, Cask and so forth) is explained here.
What Packages Are Available?
- Type
brew formulaefor a list. - Or visit formulae.brew.sh to browse packages online.
More Documentation
brew help, man brew or check our documentation.
Troubleshooting
First, please run brew update and brew doctor.
Second, read the Troubleshooting Checklist.
If you don't read these it will take us far longer to help you with your problem.
Donations
Homebrew is a non-profit project run entirely by unpaid volunteers. We need your funds to pay for software, hardware and hosting around continuous integration and future improvements to the project. Every donation will be spent on making Homebrew better for our users.
Please consider a regular donation through GitHub Sponsors, Open Collective or Patreon. Homebrew is fiscally hosted by the Open Source Collective.
For questions about donations, including corporate giving, please email the Homebrew PLC at plc@brew.sh.
Community
- Homebrew/discussions (forum)
- @homebrew@fosstodon.org (Mastodon)
- @brew.sh (Bluesky)
- @MacHomebrew (𝕏 (formerly known as Twitter))
Contributing
We'd love you to contribute to Homebrew. First, please read our Contribution Guide and Code of Conduct.
We explicitly welcome contributions from people who have never contributed to open-source before: we were all beginners once! We can help build on a partially working pull request with the aim of getting it merged. We are also actively seeking to diversify our contributors and especially welcome contributions from women from all backgrounds and people of colour.
A good starting point for contributing is to first tap homebrew/core, then run brew audit --strict with some of the packages you use (e.g. brew audit --strict wget if you use wget) and read through the warnings. Try to fix them until brew audit --strict shows no results and submit a pull request. If no formulae you use have warnings you can run brew audit --strict without arguments to have it run on all packages and pick one.
Alternatively, for something more substantial, check out one of the issues labelled help wanted in Homebrew/brew or Homebrew/homebrew-core.
Good luck!
Security
Please report security issues by filling in the security advisory form.
Who We Are
Homebrew's Project Leader is Mike McQuaid.
Homebrew's Lead Maintainers are Bevan Kay, Bo Anderson, Branch Vincent, Carlo Cabrera, Dustin Rodrigues, FX Coudert, Issy Long, Justin Krehel, Michael Cho, Michka Popoff, Mike McQuaid, Nanda H Krishna, Patrick Linnane, Rui Chen, Ruoyu Zhong, Sam Ford, Sean Molenaar and Thierry Moisan.
Homebrew's other Maintainers are Anton Melnikov, Caleb Xu, Daeho Ro, Douglas Eichelberger, Eric Knibbe, Klaus Hipp, Markus Reiter, Rylan Polster, Štefan Baebler and William Woodruff.
Former Maintainers with significant contributions include Alexander Bayandin, Miccal Matthews, Misty De Méo, Shaun Jackman, Vítor Galvão, Claudia Pellegrino, Seeker, Jan Viljanen, JCount, commitay, Dominyk Tiller, Tim Smith, Baptiste Fontaine, Xu Cheng, Martin Afanasjew, Brett Koonce, Charlie Sharpsteen, Jack Nagel, Adam Vandenberg, Andrew Janke, Alex Dunn, neutric, Tomasz Pajor, Uladzislau Shablinski, Alyssa Ross, ilovezfs, Chongyu Zhu and Homebrew's creator: Max Howell.
License
Code is under the BSD 2-clause "Simplified" License. Documentation is under the Creative Commons Attribution license.
Sponsors
Our macOS continuous integration infrastructure is hosted by MacStadium's Orka.
Secure password storage and syncing is provided by 1Password for Teams.
https://brew.sh's DNS is resolving with DNSimple.
Homebrew is generously supported by GitHub, Joshua Baer, Custom Ink, Randy Reddig, Codecademy, SAP, b.well, Aagam Dalal, Workbrew and many other users and organisations via GitHub Sponsors.



