Skip to content

Commit 101cd35

Browse files
authored
Merge pull request #1154 from Homebrew/4.5.0
Homebrew 4.5.0
2 parents 38530ef + 47ba83f commit 101cd35

File tree

5 files changed

+143
-1
lines changed

5 files changed

+143
-1
lines changed

.gitignore

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
.DS_Store
22
.bundle/
33
_site/
4-
bin/
54
vendor/
65
.jekyll-metadata
76
.sass-cache/

Brewfile

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
# frozen_string_literal: true
2+
3+
brew "ruby", version_file: ".ruby-version"
4+
brew "xz"

Gemfile

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@ ruby file: ".ruby-version"
44

55
gem "github-pages", group: :jekyll_plugins
66

7+
gem "faraday-retry"
8+
79
group :development do
810
gem "webrick"
911
end

_posts/2025-04-29-homebrew-4.5.0.md

Lines changed: 110 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,110 @@
1+
---
2+
title: 4.5.0
3+
author: MikeMcQuaid
4+
redirect_from: /blog/4.5.0/
5+
---
6+
7+
Today, I'd like to announce Homebrew 4.5.0.
8+
The most significant changes since 4.4.0 are major improvements to `brew bundle`/`services`, preliminary Linux support for casks, official Support Tiers, Tier 2 ARM64 Linux support, Ruby 3.4 and several deprecations.
9+
10+
Major changes and deprecations since 4.4.0:
11+
12+
#### `brew bundle` and `brew services`
13+
14+
- [The documentation for Homebrew Bundle, `brew bundle` and `Brewfile`](https://docs.brew.sh/Brew-Bundle-and-Brewfile)
15+
has been [hugely improved](https://github.com/Homebrew/brew/pull/19802).
16+
It also documents the many new `brew bundle` features and changes in this release.
17+
- [`brew bundle`](https://github.com/Homebrew/brew/pull/19487)
18+
and
19+
[`brew services`](https://github.com/Homebrew/brew/pull/19385)
20+
are built-in commands instead of being provided by an external tap.
21+
- [`brew bundle (exec|env|sh)` no longer filter the user's environment](https://github.com/Homebrew/brew/pull/19575) (like other `brew` commands do)
22+
- [`brew services` supports passing multiple formulae](https://github.com/Homebrew/brew/pull/19565)
23+
- [`Brewfile`s have a `version_file:` DSL that allows `brew bundle` to write to e.g. a `.ruby-version` file based on the installed version](https://github.com/Homebrew/brew/pull/19579)
24+
- `brew bundle` no longer includes `${HOMEBREW_PREFIX}/bin` in the `$PATH` by default.
25+
You can do this in your `Brewfile` with `ENV["PATH"] = "#{HOMEBREW_PREFIX}/bin:#{ENV["PATH"]}"`.
26+
27+
#### Linux casks
28+
29+
- Some Homebrew casks are supported on Linux.
30+
Right now these are mostly
31+
[fonts](https://github.com/Homebrew/brew/pull/18874)
32+
and those with
33+
[Linux binaries](https://github.com/Homebrew/brew/pull/19121).
34+
Some casks will never be available on Linux, such as those for macOS-specific software.
35+
[The Homebrew Linux fonts cask tap has been deprecated as a result](https://github.com/Homebrew/brew/pull/19834).
36+
- [`brew bump-cask-pr` allows bumping multi-platform casks on Linux](https://github.com/Homebrew/brew/pull/19510)
37+
38+
#### Support Tiers
39+
40+
- [Homebrew has three documented Support Tiers plus Unsupported](https://docs.brew.sh/Support-Tiers).
41+
Tier 1, previously called "supported", is where you'll get bottles/binary packages and we have CI coverage.
42+
- [`brew doctor` links to Support Tiers](https://github.com/Homebrew/brew/pull/19657)
43+
- [`brew doctor` checks for OpenCore Legacy Patcher](https://github.com/Homebrew/brew/pull/18762)
44+
- [Clarify that the OpenCore Legacy Patcher is Tier 2 or 3](https://github.com/Homebrew/brew/pull/19751)
45+
46+
#### ARM64 Linux
47+
48+
- [Homebrew provides a Portable Ruby for ARM64 Linux](https://github.com/Homebrew/brew/pull/19224).
49+
This is the first step towards hopefully being able to provide Tier 1 support for ARM64 Linux in the future.
50+
- [Homebrew refers to ARM64 Linux, not AArch64 Linux](https://github.com/Homebrew/brew/pull/19188) (for consistency with macOS)
51+
- [Homebrew publishes some ARM64 Docker images](https://github.com/Homebrew/brew/pull/19275)
52+
53+
#### Ruby
54+
55+
- [Homebrew provides Portable Ruby 3.4.3](https://github.com/Homebrew/brew/pull/19779).
56+
It also requires Ruby >=3.4 to run.
57+
- [Homebrew has enabled Bootsnap by default](https://github.com/Homebrew/brew/pull/19658). This should make repeated invocations of `brew` much faster.
58+
59+
#### Deprecations
60+
61+
- [Homebrew 4.5's various deprecations/disables/removals](https://github.com/Homebrew/brew/pull/19801)
62+
- [The Ubuntu 18 Docker image has been removed](https://github.com/Homebrew/brew/pull/19190)
63+
64+
Other changes since 4.4.0 I'd like to highlight are the following:
65+
66+
- [`brew install --ask` and `HOMEBREW_ASK` allow viewing the packages, dependencies and sizes in a prompt before installation](https://github.com/Homebrew/brew/pull/19254)
67+
- [`brew install --skip-link` allows installation without running `brew link`](https://github.com/Homebrew/brew/pull/19136)
68+
- [`brew update-if-needed` provides a much faster possible replacement for `brew update` that does nothing if no auto-update is required](https://github.com/Homebrew/brew/pull/19626)
69+
- [`brew install --as-dependency` allows installation of formulae as dependencies rather than "on request"](https://github.com/Homebrew/brew/pull/19570)
70+
- [`brew` allows being run by `root` in `podman` containers](https://github.com/Homebrew/brew/pull/18574)
71+
- [`HOMEBREW_TEMP` defaults to `/var/tmp` on Linux, assuming it exists, is readable and is writable](https://github.com/Homebrew/brew/pull/19824)
72+
- [`brew install --cask` produces fewer GitHub Actions warnings](https://github.com/Homebrew/brew/pull/19009)
73+
- [Homebrew supports GCC 15](https://github.com/Homebrew/brew/pull/19811)
74+
- [`brew pyenv-sync` creates major version symlinks to fix `pyenv` support](https://github.com/Homebrew/brew/pull/18978)
75+
- [The Homebrew macOS `.pkg` installer will upgrade existing installations](https://github.com/Homebrew/brew/pull/19406)
76+
- [`HOMEBREW_UPGRADE_GREEDY_CASKS` allows specifying a list of casks that should always be upgraded with `--greedy`](https://github.com/Homebrew/brew/pull/19375)
77+
- Formulae can include
78+
[PowerShell (`pwsh`)](https://github.com/Homebrew/brew/pull/19407)
79+
or
80+
[`clap`](https://github.com/Homebrew/brew/pull/18945)
81+
completions.
82+
- [`@@HOMEBREW_PREFIX@@` can be replaced with the value of `HOMEBREW_PREFIX` in external patches](https://github.com/Homebrew/brew/pull/18613)
83+
- [`brew alias` and `brew unalias` commands are part of Homebrew/brew rather than an external tap](https://github.com/Homebrew/brew/pull/19258)
84+
- [`brew edit` and `brew bundle edit` look for VSCode variants, e.g. Cursor](https://github.com/Homebrew/brew/pull/19545)
85+
- [`brew bump*` can bump synced formulae together](https://github.com/Homebrew/brew/pull/19798)
86+
- [`brew *env-sync` has a `HOMEBREW_ENV_SYNC_STRICT` mode for stricter version handling](https://github.com/Homebrew/brew/pull/19577)
87+
- In formulae and casks,
88+
[`deprecate!`/`disable!` support specifying replacement software](https://github.com/Homebrew/brew/pull/18733)
89+
and
90+
[can specify replacement type](https://github.com/Homebrew/brew/pull/19578)
91+
- [`brew bump-*` only warns, rather than errors, on duplicate PRs for non-official taps](https://github.com/Homebrew/brew/pull/19670)
92+
- [`brew verify` allows verifying package attributions](https://github.com/Homebrew/brew/pull/19217)
93+
- [`brew audit` flags `pkg-config` dependencies in core tap](https://github.com/Homebrew/brew/pull/18843).
94+
We have fully moved to using `pkgconf` in Homebrew/homebrew-core instead.
95+
- [Formulae allow using Sequoia's `jq` instead of Homebrew's](https://github.com/Homebrew/brew/pull/18826)
96+
- [`brew config` prints the current Homebrew/brew branch](https://github.com/Homebrew/brew/pull/18811)
97+
- [Homebrew's Tabs/`INSTALL_RECEIPT.json` include the `bottle_rebuild` in `runtime_dependencies`](https://github.com/Homebrew/brew/pull/19576)
98+
- [Homebrew will use macOS's new `lockf` where available](https://github.com/Homebrew/brew/pull/18516)
99+
- [Homebrew's CI is no longer running `brew tests` on macOS 13](https://github.com/Homebrew/brew/pull/19736).
100+
It was too slow and we're dropping macOS 13 support later this year.
101+
102+
Finally:
103+
104+
- [Homebrew has switched to SSH-based Git commit signing](https://brew.sh/2025/02/03/Homebrew-git-signing/)
105+
- [Homebrew has provided FAQs about their relationship with Workbrew](https://brew.sh/2024/11/19/homebrew-and-workbrew/)
106+
- [Homebrew accepts donations through GitHub Sponsors](https://github.com/sponsors/Homebrew) and [still accepts donations through Patreon](https://www.patreon.com/homebrew).
107+
If you can afford it, please consider donating.
108+
If you'd rather not use GitHub Sponsors or Patreon (our preferred donation methods), [check out the other ways to donate in our README](https://github.com/Homebrew/brew/#donations).
109+
110+
Thanks to all our hard-working maintainers, contributors, sponsors and supporters for getting us this far.

bin/jekyll

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
#!/usr/bin/env ruby
2+
# frozen_string_literal: true
3+
4+
#
5+
# This file was generated by Bundler.
6+
#
7+
# The application 'jekyll' is installed as part of a gem, and
8+
# this file is here to facilitate running it.
9+
#
10+
11+
ENV["BUNDLE_GEMFILE"] ||= File.expand_path("../Gemfile", __dir__)
12+
13+
bundle_binstub = File.expand_path("bundle", __dir__)
14+
15+
if File.file?(bundle_binstub)
16+
if File.read(bundle_binstub, 300).include?("This file was generated by Bundler")
17+
load(bundle_binstub)
18+
else
19+
abort("Your `bin/bundle` was not generated by Bundler, so this binstub cannot run.
20+
Replace `bin/bundle` by running `bundle binstubs bundler --force`, then run this command again.")
21+
end
22+
end
23+
24+
require "rubygems"
25+
require "bundler/setup"
26+
27+
load Gem.bin_path("jekyll", "jekyll")

0 commit comments

Comments
 (0)