Homebrew: 7.0.0
Homebrew
7.0.0 13 September 2026 MikeMcQuaid
Today, I’m proud to announce Homebrew 7.0.0. The most significant changes since 6.0.0 are faster installations and upgrades, stronger sandboxing, a native macOS app, built-in vulnerability checks and an advisory database, the end of macOS 10.15 support and Intel Macs moving to Tier 3. Contents
⬆️ Upgrading 🍺 All Homebrew users 🏎️ Performance 🔒 Security Security advisories Installation and tap protection
🔎 Commands and configuration 🗃️ Casks
🍎 macOS users 🖥️ Homebrew app
🐧 Linux users 🍾 Non-default prefix users 🔍 Security teams and auditors 🐳 Homebrew users in CI 🛠️ Tap maintainers 🪜 Install steps
🙏 Finally
⬆️ Upgrading An auto-update or manual brew update (if you have $HOMEBREW_NO_AUTO_UPDATE set) will upgrade Homebrew for you. Now means 7.0.0. Deprecated interfaces warn until disablement; disabled interfaces reject use and removed interfaces are unavailable.
Environment 7.0.0 behaviour and action Timing PR links
macOS 10.15 or earlier Upgrade to macOS 11 or later Now Minimum version
macOS Sonoma 14 Tier 3; upgrade to Sequoia 15+ for bottles and .pkg installations Now Support window
macOS Golden Gate 27 on Apple Silicon Fully supported (Tier 1), with prebuilt bottles Now Full support
ghcr.io/homebrew/ubuntu22.04 Image removed; migrate to ghcr.io/homebrew/brew Now Notice, removal
Homebrew/actions/*@master or @main master removed; pin a CalVer release or full SHA Now Branch migration, releases
Setuid wrappers with different real and effective UIDs Rejected; run as the installation’s owner without a wrapper Now Execution model
Third-party brew wrappers Tier 3; internal commands bypass wrappers; seek support from the wrapper project Now Wrapper changes
Homebrew/brew master Frozen bootstrap; switch to main before removal 2027-03-01 Bootstrap
Intel macOS 11 or later Tier 3; no new bottles; migrate to MacPorts before Homebrew stops running 2027-09-01 Support, bottles
Apple Silicon macOS 11 Upgrade to macOS 12 or later before support ends 2027-09-01 Support schedule
Third-party formula post_install and cask flight blocks Deprecated; migrate to *_steps; brew style --fix converts common hooks 2027-12-11 Deprecation, migration
🍺 All Homebrew users The following improvements apply across platforms unless stated otherwise. 🏎️ Performance Greater concurrency across downloads, preparation and installation maximises performance while coordinating failures and summaries.
brew install, brew reinstall and brew upgrade overlap package preparation and downloads, including brew bundle batches, reducing waits between packages and allowing a Brewfile to benefit from the same shared installation work as a command naming several packages. brew config gathers independent system details concurrently, so compiler, operating-system and repository checks overlap instead of making diagnostic reports wait for every subprocess in turn. brew tap-info --installed --json=v1 collects tap metadata concurrently, shortening inventory requests when several repositories need Git or network checks while preserving the output order expected by scripts. brew cleanup avoids repeated cache scans, speeding up cleanup for installations with many packages. brew fetch reads download information directly from API metadata for bottles and casks, starting downloads without loading complete package definitions merely to discover URLs and checksums. brew update prepares Ruby caches so subsequent commands start faster. Homebrew reuses parsed API data on warm runs while verifying signatures on every load, reducing preparation time for repeated package commands without dropping authenticity checks. Homebrew launches fewer subprocesses during startup, reducing command overhead, and reads terminal dimensions directly, avoiding hangs with uutils stty.
🔒 Security Homebrew 7.0.0 includes various security fixes and new installation protections. Security advisories The first fixed releases are listed below.
GHSA-rg9r-ppxp-87hm, High, fixed in 6.0.12: unsigned cask-removal metadata could execute commands with sudo; all vulnerable recovery code and API accessors have been deleted. GHSA-5263-whxq-77hp, Moderate, fixed in 7.0.0: a malicious cask could execute code outside the macOS install sandbox through LaunchServices; Homebrew restricts application launching, Mach services and Unix socket connections. GHSA-hqpg-hjr9-c7j8, Moderate, fixed in 6.0.12: the macOS installer ignores prefix-owned Git configuration that could execute programs as root. GHSA-x82f-cj53-gqfr, Low, fixed in 6.0.7: brew livecheck restricts redirects to prevent server-side request forgery. GHSA-3m5g-jfx7-3p65, Low, fixed in 6.0.7: download redirects cannot forward secret headers to other hosts. GHSA-r9gp-p4vv-f93x, Low, fixed in 6.0.6: Git redirects cannot bypass tap restrictions. GHSA-9g4r-vmj2-j2gj, Low, fixed in 6.0.7: Subversion external URLs cannot become command options. GHSA-r7qx-325v-4ccx, Low, fixed in 6.0.6: patch targets cannot escape the staged source tree.
Installation and tap protection Tap trust remains the primary protection against malicious third-party casks; sandboxing mainly limits accidental damage and adds installation safeguards. It cannot make untrusted software safe to run: applications execute with the user’s privileges, and vendor .pkg installers run outside the sandbox and may require sudo. We balance tighter restrictions with keeping existing software working.
Homebrew delivers structured setup as signed data and sandboxes formula and cask operations, reducing arbitrary Ruby execution and repeated package loading. Homebrew begins migrating dependency downloads into a fetch phase: migrated formulae download with network access and writable caches, then install disables networking and makes those caches read-only; migration remains ongoing. Homebrew blocks sandboxed reads of the home directory by default, keeping unrelated personal files outside package builds while allowing required Homebrew paths; private temporary directories let build tools communicate locally without enabling network access. Homebrew rejects mismatched real and effective user IDs before reading configuration, removing untested privilege-switching code for unsupported shared installations.
Trust and environment migrations and replacements. 🔎 Commands and configuration Commands provide clearer previews, package information and service configuration.
brew install --dry-run previews formulae and casks together. brew list --no-installed-on-request identifies formulae installed as dependencies. brew info distinguishes uninstallable packages with ⊘ from uninstalled packages with ✘ and marks unmet operating-system and architecture requirements, making it easier to understand whether a package can run on the current machine before starting an installation. brew services reads persistent overrides from $HOMEBREW_USER_CONFIG_HOME/services/<formula>.env, allowing local service settings to survive package upgrades and take effect on restart without editing generated service files. New and restarted services use sh.brew.<formula> on macOS and Linux, recognising legacy registrations until restart. brew bundle restores language tools from declared sources: Cargo Git repositories or paths and source: for remote uv tools. brew doctor --json provides structured diagnostics for automation; brew doctor also warns when another brew shadows the current installation in PATH, helping diagnose wrapper and installation conflicts. brew deps --brewfile inspects a Brewfile’s dependencies, making it easier to review the packages a development environment will bring in before installing that environment. brew untap offers to uninstall a tap’s packages first, allowing an unwanted package source and its installed software to be removed together. HOMEBREW_AUTO_UPDATE_QUIET suppresses automatic-update package details, keeping routine command output focused while still allowing Homebrew to update in the background of normal use. Homebrew stops exporting its own BUNDLER_VERSION to child processes, allowing formula builds to use their required Bundler version.
Brewfiles record language-tool sources alongside other packages, reducing separate installation instructions when reproducing an environment on another machine. Command and configuration migrations and replacements. 🗃️ Casks Formula links take precedence when formulae and casks provide the same commands, with warnings explaining how to restore the cask links.
brew upgrade skips incompatible casks while upgrading compatible applications; both it and brew outdated honour HOMEBREW_NO_UPGRADE_AUTO_UPDATES_CASKS, preserving self-updating applications’ opt-out. brew uninstall removes records for casks missing from the API, warning about possible leftovers, and avoids needless password prompts when files are already owned by the current user. brew link and brew unlink accept --cask/--casks and --formula/--formulae, allowing cask binaries, manpages and completions to be disabled or restored without reinstalling; --dry-run previews changes, while brew link --overwrite replaces conflicts and --force replaces only symlinks from the same cask. Homebrew’s API includes cask language variants, allowing installation to select the appropriate URL, checksum and artifacts from package data without evaluating the cask’s Ruby definition for each language choice.
Cask configuration migrations and replacements. 🍎 macOS users Homebrew moves macOS Intel x86_64 to Tier 3 in September 2026, announced in August 2025 and repeated in the 5.0.0 release notes on 12 November 2025; 7.0.0 also drops macOS 10.15. Homebrew still runs on Intel until September 2027, without project support or routine bottle builds. Apple and GitHub’s retreat from Intel support exceeds what Homebrew’s volunteers can replace.
brew services run applies per-service environment overrides without registering a login service, making temporary runs use the same configuration as a permanently registered service. brew shellenv sets PATH directly, avoiding macOS path_helper subprocesses and configuration-file writes. Homebrew moves Intel to Tier 3: existing bottles remain, but updated formulae may require source builds after unreliable infrastructure ended routine Intel bottle updates. Homebrew’s .pkg installer is Apple Silicon only and requires macOS Sequoia 15 or later; MacPorts may offer Intel users better binary package coverage. Homebrew installs prebuilt casks without Xcode Command Line Tools, removing a compiler dependency from application setup. Homebrew fully supports macOS Golden Gate 27, following its bottle rollout; Sequoia 15, Tahoe 26 and Golden Gate 27 are Tier 1 on Apple Silicon. Homebrew permits Metal shader compilation inside the macOS sandbox, allowing ggml and whisper.cpp tests to use GPU acceleration without network access.
macOS support migrations
Interface or platform Status in 7.0.0 Timing Replacement
macOS Catalina 10.15 and earlier Removed Now Upgrade to macOS Big Sur 11 or later.
Intel macOS Tier 3; no new bottles Now Apple Silicon or MacPorts.
macOS Sonoma 14 Tier 3; no new bottles Now macOS Sequoia 15 or later.
macOS Golden Gate 27 on Apple Silicon Supported; Tier 1 Now No migration required; prebuilt bottles available.
Running Homebrew on Intel Macs Upcoming removal 2027-09-01 Apple Silicon or another package manager.
macOS Big Sur 11 on Apple Silicon Upcoming removal 2027-09-01 macOS Monterey 12 or later.
🖥️ Homebrew app BrewUI is Homebrew’s fully released official graphical interface for macOS, making package management more approachable through a native application.
brew install homebrew-app installs BrewUI on macOS Tahoe 26 or later. BrewUI brings package browsing, search and installed-version details into one window, making it easier to explore available software and review an existing installation. BrewUI shows the underlying brew commands for package operations, keeping the work visible and helping connect graphical actions with familiar terminal commands.
🐧 Linux users Homebrew 6.0.0 introduced Bubblewrap sandboxing. Homebrew 7.0.0 replaces it with Landlock, requiring no dependencies or escalated Docker permissions, which caused setup problems with Bubblewrap. Status in 7.0.0: kernels without Landlock continue working without Linux sandboxing in the less secure pre-6.0.0 configuration; brew doctor reports missing protection as an advisory.
brew config reports the Landlock ABI for troubleshooting. Homebrew supports Landlock ABI 2 on Linux 6.1, warning when the kernel cannot enforce network restrictions. Homebrew moves AppImages to their application destination, matching macOS .app installations instead of versioned symlinks, so self-updates preserve launchers.
Linux configuration
Interface or platform Status in 7.0.0 Timing Replacement
HOMEBREW_SANDBOX_LINUX Disabled Now Remove it; Landlock is used automatically where available.
HOMEBREW_NO_SANDBOX_LINUX Deprecated 2027-12-11 No replacement opt-out; unavailable Landlock remains advisory.
HOMEBREW_ARCH Deprecated 2027-12-11 Default native CPU optimisation.
🍾 Non-default prefix users Homebrew relocates compatible bottles to shorter prefixes, avoiding source builds outside the default installation location. Status in 7.0.0: limits are 13 bytes on Apple Silicon macOS, 26 on Linux and 10 for existing Intel macOS bottles. These count the full path, including slashes; the Cellar must also fit its build-time length. Bottles marked :any or :any_skip_relocation are relocatable to any prefix.
Homebrew relocates prefix symlinks so they remain usable elsewhere. Homebrew records relocation metadata at build time, reducing repeated installation scans and allowing installation to apply the recorded changes instead of rediscovering every embedded path on each machine.
Upcoming rollout: padded builds aim to make every bottle and dependency relocatable to prefixes up to 64 bytes on Apple Silicon macOS and both Linux architectures. This may eventually allow full support within those limits; non-default prefixes remain unsupported for now, with no rollout date. 🔍 Security teams and auditors Homebrew’s new advisory database records vulnerabilities against the formula versions and revisions Homebrew ships, including backported security fixes. brew vulns is built in, checking known vulnerabilities using OSV.dev without another tap or gem.
brew vulns scans installed formulae and reports untrusted-tap skips, with --severity=high, --deps and --brewfile for focused checks. It prioritises remediation using --fix-available and --no-fix-available, --fix-type for released versus patched fixes and --list-skipped for coverage gaps. Homebrew publishes advisory findings in the formula API and a downloadable advisory index, helping other tools distinguish outstanding vulnerabilities from fixes already shipped. The database’s OSV-format records are freely reusable under CC0, giving security teams a shared source of Homebrew-specific vulnerability data. Homebrew recognises security patches annotated with resolves, avoiding vulnerability reports for fixes already included in a package. Homebrew adds upstream package identifiers to software bills of materials, allowing external tools to connect source archives with registries such as PyPI, npm and Cargo rather than relying only on Homebrew formula names. Homebrew verifies attestations for supported third-party tap bottles, extending build-provenance checks beyond homebrew/core when a tap publishes the required attestations.
🐳 Homebrew users in CI Homebrew images and GitHub Actions provide maintained migration targets.
brew test-bot --build-dependents-from-source limits source builds to ten dependants per formula per shard, prioritising popular packages, enabling broader Linux source-build coverage while keeping CI runtime manageable. Homebrew runs routine Golden Gate dependant tests on GitHub’s xcode-27 runners, reducing reliance on self-hosted infrastructure. Homebrew retires the Ubuntu 22.04 image; use the maintained general-purpose image below. Homebrew’s versioned actions pin internal dependencies, making workflow upgrades reviewable; migrate @main and removed @master references to releases or full SHAs. Homebrew uses Homebrew/actions/setup-ruby with portable-ruby: true in its Ruby workflow, allowing CI jobs to select the same interpreter as Homebrew without depending on internal Ruby entry points.
CI migrations
Interface or platform Status in 7.0.0 Timing Replacement
ghcr.io/homebrew/ubuntu22.04 Removed Now ghcr.io/homebrew/brew.
Homebrew/actions/*@master Removed Now CalVer release or full SHA; no redirect.
Homebrew/actions/*@main Migration recommended Now CalVer release or full SHA.
🛠️ Tap maintainers Authoring tools reduce manual setup and encourage safer package definitions.
brew audit --cask --online --fix corrects macOS requirements and application-name case; brew audit --strict detects downloaded prebuilt npm executables in installed homebrew/core formulae, helping maintainers enforce source-build requirements. brew style --fix consolidates platform-specific cask checksums and sorts dependencies, simplifying cross-platform definitions; brew style also rejects broad com.install4j.* uninstall and zap patterns that could affect unrelated applications. brew tap-new generates automatic update workflows for new taps, checking upstream versions on a schedule and opening pull requests so maintainers can review updates without manually checking each formula. It also generates attesting bottle-publishing workflows by default, with --no-attestations as an opt-out, helping new taps publish the provenance that Homebrew can verify when their users install bottles. brew bump-cask-pr can generate separate Intel and Apple Silicon version stanzas from architecture-specific update results, allowing maintainers to follow upstream applications that release different versions for each architecture without manually rewriting supported root-level definitions. brew bump-formula-pr updates Git resources whose version is a commit hash, keeping both the version and pinned revision in sync for projects without release tags. brew create generates syntactically valid formula templates, with separate fetch and offline-build phases for Go and Rust to prevent downloads during compilation. brew update-python-resources --ignore-main-package-cooldown bypasses only the main package’s cooldown in third-party formulae. brew benchmark measures cold and warm install/fetch workloads separately, with --runs= controlling repetitions and --exec supporting custom Hyperfine commands, so contributors can identify whether a change improves fresh downloads, cached installations or command overhead rather than relying on one combined timing. brew bump-compatibility-version records changes requiring dependant rebuilds. brew formula-python-resources --all/--tap= inventories Python resources, while brew bump-python-resources-pr --packages= opens security updates, with -n/--dry-run, --install-dependencies, --no-fork, --branch=, --message= and --output= supporting automation. Homebrew formulae use python3 to select their direct Python dependency without hardcoded interpreter paths. Homebrew formulae can declare stop_timeout for services, giving databases and other stateful applications longer to shut down gracefully before the service manager terminates them; stop_timeout 60 sets a one-minute allowance on both macOS and Linux. Homebrew’s python_major_minor_version helper supplies the selected Python version, avoiding repeated version-detection code in formula definitions that need versioned paths or arguments. Homebrew’s std_go_args(ldflags: :goreleaser) supplies common GoReleaser build metadata, including version, commit and build date, helping upstream applications report useful version information from Homebrew builds without each formula recreating those linker arguments. Homebrew formulae and casks can record a human homepage check with homepage ..., browsed: "YYYY-MM-DD", pausing automated availability checks for one year when a site works in browsers but blocks automated requests, while ensuring the manual check has an expiry. Homebrew services can use shared package path helpers, allowing service definitions to refer to package locations consistently without duplicating path construction between their commands and environment settings.
🪜 Install steps Formula post_install and cask *flight Ruby blocks are deprecated in favour of declared *_steps. Explicit operations and paths allow validation, sandboxing and signed API delivery, making setup safer and avoiding repeated package evaluation. Status in 7.0.0: official taps reject legacy hooks; third-party taps receive warnings until 11 December 2027.
brew style --fix converts common hooks; manual migrations require rewriting the block’s contents as declared steps, following the Formula Cookbook or Cask Cookbook. Homebrew provides structured file operations and configuration writes, preserving common setup without arbitrary Ruby; formula authors describe the intended operation and target, while Homebrew handles validation and execution consistently. Homebrew validates serialised steps before execution, giving package authors a defined set of supported operations and allowing API-delivered setup to follow the same rules as locally loaded definitions.
Install hook migrations
Interface or platform Status in 7.0.0 Timing Replacement
Formula post_install Deprecated 2027-12-11 post_install_steps
Cask preflight Deprecated 2027-12-11 preflight_steps
Cask postflight Deprecated 2027-12-11 postflight_steps
Cask uninstall_preflight Deprecated 2027-12-11 uninstall_preflight_steps
Cask uninstall_postflight Deprecated 2027-12-11 uninstall_postflight_steps
The migration guide lists install-step names, DSLs and public API replacements. Maintenance command removals and replacements are also documented. 🙏 Finally
The Intel support decision reflects the limits of a volunteer-run project: Apple have dropped Intel x86_64 support from macOS 27 Golden Gate and GitHub Actions will retire Intel macOS runners in autumn 2027. If Apple and Microsoft’s GitHub, two of the world’s largest technology companies, cannot continue supporting macOS Intel x86_64, sadly neither can Homebrew. MacPorts still supports macOS Intel x86_64 and is likely to provide better results on this platform. Homebrew is a non-profit project run entirely by volunteers, not employees. 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, OpenCollective and Patreon. Homebrew/brew (still) has no open issues at the time of writing, as has been the case for most of the period since Homebrew 6.0.0 🎉.
Thanks to all our hard-working volunteer maintainers, contributors, sponsors and supporters for getting us this far.
Latest Posts
6.0.0 11 Jun 2026 Today, I’m proud to announce Homebrew 6.0.0. The most significant changes since 5.1.0 are a new tap trust security mechanism, the new faster, smaller, default internal...
5.1.0 10 Mar 2026 Homebrew 5.1.0 has been released. Homebrew’s most significant changes since 5.0.0 are expanded brew bundle support, brew version-install, new -full formula handling an...
5.0.0 12 Nov 2025 Today, I’d like to announce Homebrew 5.0.0. The most significant changes since 4.6.0 are download concurrency by default, official support for Linux ARM64/AArch64, tim...
4.6.0 05 Aug 2025 Today, I’d like to announce Homebrew 4.6.0. The most significant changes since 4.5.0 are opt-in concurrent downloads with HOMEBREW_DOWNLOAD_CONCURRENCY, preliminary ma...
Subscribe to be notified about new posts Email |
Homebrew 7.0.0 introduces significant advancements focusing on performance, enhanced security through sandboxing, and comprehensive platform migration strategies. Performance improvements are achieved through greater concurrency across downloads, preparation, and installation, allowing operations to overlap, which minimizes waiting times. This includes concurrent package preparation, overlapping downloads, and concurrent gathering of system details such as compiler, operating system, and repository checks. Furthermore, Homebrew optimizes cache management through automated cleanup and smarter fetching, where downloads begin by reading API metadata to discover URLs and checksums before loading complete package definitions. The system reuses parsed API data on warm runs, while maintaining signature verification to ensure authenticity. Startup overhead is reduced by launching fewer subprocesses and directly reading terminal dimensions, which mitigates potential hangs.
Security in version 7.0.0 is significantly strengthened with new installation protections and an expanded security advisory database. The system restricts the ability of a malicious cask to execute code outside the macOS install sandbox by restricting application launching, Mach services, and Unix socket connections. Tap trust remains a primary defense against malicious third-party casks, supplemented by sandboxing designed to limit accidental damage rather than grant broad permissions. Installation protection further restricts arbitrary Ruby execution and repeated package loading by structuring setup as signed data and sandboxes formula and cask operations. The system also avoids reading the home directory when sandboxed, keeping unrelated personal files segregated from package builds, and it rejects mismatched real and effective user IDs to eliminate untested privilege-switching code. New security advisories are recorded against formula versions, including backported fixes, and Homebrew verifies attestations for third-party tap bottles, extending provenance checks.
The update includes extensive migration paths for various operating systems and environments. For macOS users, the system reflects Apple's direction by moving Intel x86_64 support to Tier 3, meaning no new bottle builds are provided, encouraging migration to Apple Silicon or MacPorts. Support for macOS 10.15 and earlier is removed, requiring users to upgrade to macOS Big Sur 11 or later. Conversely, support for macOS Golden Gate 27 on Apple Silicon is fully supported as Tier 1, and the system permits Metal shader compilation within the sandbox. The migration schedule indicates that Intel support will be fully removed by September 2027, marking the end of routine Intel bottle updates.
On the Linux side, Homebrew has transitioned its sandboxing mechanism from Bubblewrap to Landlock, which requires no additional dependencies or escalated Docker permissions, necessitating updates to configuration reporting. Furthermore, AppImages are now moved to their application destination, mirroring macOS application installations, which aids in self-updates. Configuration settings related to sandboxing are being phased out, with HOMEBREW_SANDBOX_LINUX being disabled, and deprecated options like HOMEBREW_NO_SANDBOX_LINUX and HOMEBREW_ARCH being slated for removal by December 2027.
Command and configuration interfaces have been refined to offer clearer results. Commands like brew install now include a dry-run option to preview formulae and casks together, and brew info distinguishes between uninstallable and uninstalled packages, clearly indicating unmet operating-system or architecture requirements. The system manages local service overrides via configuration files, allowing settings to persist across package upgrades. Formula authors can declare specific operations through *_steps instead of legacy post_install hooks, enabling safer, validated setups by requiring authors to define their intended operations and targets.
For users managing casks, links take precedence over formulae commands, and the upgrade process selectively skips incompatible casks while honoring self-updating applications' opt-out settings. Tools are provided to manage cask links, allowing linking and unlinking with specific options, and the API now accommodates cask language variants, allowing selections of package data based on language without exhaustive Ruby definition evaluation.
For security teams, Homebrew provides deeper visibility through `brew vulns`, which scans installed formulae for known vulnerabilities and reports on untrusted tap skips, prioritizing remediation options. This system also incorporates upstream package identifiers into software bills of materials to facilitate external connections to registries like PyPI and npm, and verifies attestations for third-party bottles, extending build provenance checks.
In the context of Continuous Integration, Homebrew images are being retired, with the Ubuntu 22.04 image removed in favor of the maintained general-purpose image. Workflow actions are migrating to pin internal dependencies using CalVer releases or full SHA identifiers to ensure maintainable upgrades, and the use of portable-ruby in workflows allows consistency across interpreters.
Tap maintainers are provided with advanced tooling to streamline package definitions and updates. Tools like brew style and tap-new facilitate safer package definitions by consolidating platform-specific checksums and automating update workflows by checking upstream versions and opening pull requests. Maintainers can also use specialized commands to manage architecture-specific updates for casks and formulae, ensuring that upstream application versioning is respected across different platforms. |