Skip to content

fix: update foxy for Boost 1.90 compatibility and unpin macOS Boost#506

Open
kinyoklion wants to merge 8 commits intomainfrom
devin/1773089579-update-foxy-boost-compat
Open

fix: update foxy for Boost 1.90 compatibility and unpin macOS Boost#506
kinyoklion wants to merge 8 commits intomainfrom
devin/1773089579-update-foxy-boost-compat

Conversation

@kinyoklion
Copy link
Member

@kinyoklion kinyoklion commented Mar 9, 2026

Summary

Updates the vendored foxy library to compile against Boost 1.90 (which removed three boost::beast::http::field enum values) while retaining backward compatibility with Boost 1.8x. Unpins macOS Homebrew Boost from the deprecated boost@1.85 so it installs the latest version.

Foxy change: Adds a #if BOOST_VERSION >= 109000 guard in export_connect_fields.hpp around the hop_by_hops array. Boost 1.90 removed proxy_authentication_info, proxy_features, and proxy_instruction from boost::beast::http::field, so the Boost 1.90+ path uses an 8-element array without those fields. The pre-1.90 path is unchanged (11 elements).

Boost unpin: Reverts brew install boost@1.85brew install boost in install-boost/action.yml, so macOS CI builds against the latest Homebrew Boost (currently 1.90). This removes the boost@1.85 pin introduced in PR #505, which had a Homebrew deprecation deadline of 2026-04-05.

Both #if branches are validated by CI: macOS builds use Boost 1.90 (#if path), Linux uses 1.81 and Windows uses 1.87 (#else path). All 36 CI checks pass.

Review & Testing Checklist for Human

  • Unpinning strategy: Unpinning means macOS CI will track Homebrew's latest Boost. Future Boost updates could introduce new breakages in vendored foxy. Confirm this is acceptable vs. pinning to boost@1.90.

Test plan: CI validates both preprocessor branches across all three platforms. The macOS jobs passing confirm Boost 1.90 compatibility (including that proxy_connection was not removed alongside the other three fields). Linux and Windows jobs confirm the #else path still compiles correctly with older Boost versions.

Notes


Note

Medium Risk
CI will now track Homebrew’s latest Boost on macOS, which can introduce future build breakages. The code change is a small compile-time guard but affects HTTP header filtering behavior across Boost versions.

Overview
macOS CI now installs Homebrew’s default boost package instead of the pinned boost@1.85, so builds track the latest Boost release.

The vendored foxy header export_connect_fields.hpp is updated for Boost 1.90+ by conditionally excluding the removed boost::beast::http::field enum values (proxy_authentication_info, proxy_features, proxy_instruction) via a BOOST_VERSION >= 109000 guard, preserving the previous hop-by-hop header list for older Boost versions.

Written by Cursor Bugbot for commit 5442186. This will update automatically on new commits. Configure here.

devin-ai-integration bot and others added 5 commits March 9, 2026 18:20
macos-13 has been deprecated and removed from GitHub Actions.
Update all workflow files to use macos-15.

Co-Authored-By: rlamb@launchdarkly.com <kingdewman@gmail.com>
…s CI

The previous version's download URL was removed from slproweb.com,
causing all Windows CI jobs to fail with 404 errors.

Co-Authored-By: rlamb@launchdarkly.com <kingdewman@gmail.com>
The vendored foxy library is incompatible with Boost 1.90 (installed
by default on macos-15 via Homebrew). Pin to boost@1.85 until foxy
is updated to work with the newer Boost version.

Co-Authored-By: rlamb@launchdarkly.com <kingdewman@gmail.com>
- sdk-release action: added mac_artifact_arch input (default x64) to
  parameterize macOS artifact filenames (mac-clang-{arch}-*.zip)
- release-please.yml: use macos-15-large (x64) for existing matrix,
  added separate arm64 jobs + provenance for client, server, server-redis
- manual-sdk-release-artifacts.yml: same pattern for manual releases
- Future releases will include both x64 and arm64 macOS artifacts

Co-Authored-By: rlamb@launchdarkly.com <kingdewman@gmail.com>
- Add BOOST_VERSION preprocessor guards in export_connect_fields.hpp
  to conditionally exclude proxy_authentication_info, proxy_features,
  and proxy_instruction fields removed in Boost 1.90
- Retains full support for Boost 1.8x
- Remove boost@1.85 pin on macOS, reverting to latest Homebrew boost

Co-Authored-By: rlamb@launchdarkly.com <kingdewman@gmail.com>
@kinyoklion kinyoklion requested a review from a team as a code owner March 9, 2026 20:54
@devin-ai-integration
Copy link
Contributor

🤖 Devin AI Engineer

I'll be helping with this pull request! Here's what you should know:

✅ I will automatically:

  • Address comments on this PR. Add '(aside)' to your comment to have me ignore it.
  • Look at CI failures and help fix them

Note: I can only respond to comments from users who have write access to this repository.

⚙️ Control Options:

  • Disable automatic comment and CI monitoring

@kinyoklion kinyoklion marked this pull request as draft March 9, 2026 20:55
Base automatically changed from devin/1773080391-fix-ci-runners to main March 10, 2026 16:52
@kinyoklion
Copy link
Member Author

Devin, update with the latest changes from main.

@devin-ai-integration
Copy link
Contributor

Done — merged latest main (which includes the merged PR #505) into this branch. Waiting for CI now.

@devin-ai-integration devin-ai-integration bot changed the title chore: update foxy for Boost 1.90 compatibility and unpin macOS Boost chore: update foxy for Boost 1.90 compatibility Mar 10, 2026
The boost@1.85 pin was re-introduced when merging main (which
contains PR #505's pinned version). This commit re-applies the
unpin so macOS CI builds against the latest Homebrew Boost (1.90),
exercising the new BOOST_VERSION >= 109000 code path in foxy.

Co-Authored-By: rlamb@launchdarkly.com <kingdewman@gmail.com>
@devin-ai-integration devin-ai-integration bot changed the title chore: update foxy for Boost 1.90 compatibility chore: update foxy for Boost 1.90 compatibility and unpin macOS Boost Mar 10, 2026
@kinyoklion kinyoklion changed the title chore: update foxy for Boost 1.90 compatibility and unpin macOS Boost fix: update foxy for Boost 1.90 compatibility and unpin macOS Boost Mar 10, 2026
@kinyoklion kinyoklion marked this pull request as ready for review March 10, 2026 17:41
@kinyoklion
Copy link
Member Author

Devin check your Review & Testing Checklist for Human against CI and remove items covered by CI.

@devin-ai-integration
Copy link
Contributor

Done — reviewed all checklist items against CI and removed the ones that are covered:

  • proxy_connection validity — removed. macOS CI builds with Boost 1.90 and the 8-element array compiles successfully; if proxy_connection were removed, the build would fail.
  • Behavioral differences — removed. Contract tests pass on all platforms, covering HTTP header handling behavior.
  • No other foxy files reference removed fields — removed. macOS builds with Boost 1.90 would fail to compile if any other file referenced the removed fields; all pass.

Only remaining item is the unpinning strategy question (whether to track latest Boost vs. pin to 1.90), which is a policy decision CI can't validate.

@kinyoklion
Copy link
Member Author

aside: The brew installs of boost from homebrew are rapidly deprecated. So when we pin we have to constantly update them, and we also don't get a preview of what will soon be breaking issues.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant