Today I’d like to announce Homebrew 1.5.0. The most significant changes since 1.4.0 are deprecations of formula APIs and some Homebrew organisation formula taps.

Future dates for your calendar:

  • On 1st March 2018 the python formula will be upgraded to Python 3.x and a python@2 formula will be added for installing Python 2.7 (although this will be keg-only so neither python nor python2 will be added to the PATH by default without a manual brew link --force). We will maintain python2, python3 and python@3 aliases. Any formulae that use depends_on "python" outside Homebrew/core will need to be updated at this point if they wish to keep using Python 2. Note: macOS has provided Python 2.7 since OS X Lion (10.7) so you can update formulae that need Python 2 today by removing depends_on "python" so they use the system python instead.
  • By 31st March 2018 we will deprecate and archive the Homebrew/php tap. Unfortunately we have been unable to maintain an acceptable, consistent user or contributor experience and CI workload through non-core formula taps in the Homebrew organisation so we are continuing to migrate widely used formulae into Homebrew/core and encourage more niche formulae and options to be supported outside the Homebrew organisation.

Major changes and deprecations since 1.4.0:

  • The Homebrew/science tap has been archived (for the reasons explained above) as noted previously. This does not represent an adversarial relationship between Homebrew and the science community (as we have imported the widely used formulae from this tap) but an inability to maintain an acceptable level of quality in this tap and differences of opinion on contributor experience (this tap aimed to work on Homebrew and Linuxbrew which made contribution difficult).
  • brew postgresql-upgrade-database is a new command to simplify upgrading PostgreSQL databases between major versions.
  • default_formula are no longer supported for Requirements. This was originally added to ease our bottle/binary package building when Homebrew was primarily a build-from-source package manager. Now that Homebrew is primarily a binary package manager, default_formula was no longer useful and was the source of many complex dependency resolution bugs.
  • Requirements that allowed you to use depends_on for software outside of Homebrew that was also provided by Homebrew have been deprecated. Instead formulae that wish to support e.g. a non-Homebrew Python should use env :std and use the first instance of the software in the PATH (found with which)
  • Various, old deprecated APIs have been disabled (https://github.com/Homebrew/brew/pull/3694) and more deprecations added.
  • brew reinstall and brew upgrade no longer keep manually brew unlinked kegs as unlinked on reinstall or upgrade. Without this change there was no way of differentiating manually unlinked and failed-to-link kegs so a single keg link failure would stop any future version trying to link (leading to the software unexpectedly being missing from the user’s PATH).

Other changes since 1.4.0 I’d like to highlight are the following:

  • brew audit allows the use of env :std in non-Homebrew organisation taps
  • HOMEBREW_DEVELOPERs are encouraged to submit pull requests for deprecations
  • Attempting to brew install a formula that doesn’t exist will only check if the formula was deleted in the last month (rather than ever) to improve performance. (https://github.com/Homebrew/brew/pull/3614)
  • brew info now shows --devel and --HEAD options for optionless formulae
  • Homebrew’s portable ruby has a GitHub mirror for users that cannot access Bintray (https://github.com/Homebrew/brew/pull/3683)
  • brew upgrade skips the formula rather than exiting if an upgrade fails due to an unsatisfied Requirement
  • The no_proxy variable is passed through to the Homebrew fetch/install process (e.g. for curl)(https://github.com/Homebrew/brew/pull/3584)

Finally:

Thanks to all our hard-working maintainers, contributors, sponsors and supporters for getting us this far. Enjoy using Homebrew!