Releases: ngcpp/proxy
Releases · ngcpp/proxy
Proxy 4.0.2 Release
Proxy 4.0.2 brings Proxy to its new home at ngcpp/proxy, adds first-class Meson build support, and delivers a focused set of correctness, tooling, and specification improvements.
What's inside
-
A new home for Proxy
- Proxy has moved from microsoft/proxy to ngcpp/proxy, with a new documentation home at ngcpp.github.io/proxy.
- Governance and support documents were updated for ngcpp stewardship.
- Copyright notices now preserve Microsoft's original ownership for 2022-2026 and add ngcpp for ongoing development starting in 2026.
-
Meson joins CMake
- Proxy now ships Meson build files alongside CMake, making it much easier to consume the library in Meson-based projects.
- The Meson integration covers header installation, tests, benchmarks, and extracting examples from the docs, with optional
pkg-configmetadata when available. - Existing CMake flows continue to work, so current integrations do not need to change.
-
Correctness and semantics
facadeconstraints are tighter and clearer.ProBasicFacadeand the related builder APIs now validate size, alignment, andconstraint_levelsettings more rigorously.- Incomplete support for the standard trivial relocation model was removed. Proxy continues to focus on the supported bitwise trivially relocatable direction introduced in 4.0.0.
ptr_traitsdetection is now stricter, avoiding false positives for arbitrary template instantiations and improvingproxiablebehavior in edge cases such as embeddingproxyin wrapper types likestd::variant.PRO_DEF_FREE_AS_MEM_DISPATCHoverload resolution was fixed after a regression, and coverage was expanded across member, free, and free-as-member dispatch patterns.weak_dispatchandexplicit_conversion_dispatchnow correctly handle reference-returning overloads, fixing an important correctness issue for conversion-heavy facades.strong_compact_ptrwas simplified internally with no intended user-visible behavior change.
-
Benchmarks, docs, and toolchains
- Benchmarks were reorganized to better reflect real usage: management benchmarks were renamed to creation benchmarks, metrics were grouped into core, comparative, and observational buckets, all facades were switched to
slimfor fairer comparisons, and six relocation metrics were added. - Documentation wording around
proxyindirection was updated to match current semantics - indirection is no longer optional. - CI and dependency coverage moved forward again: Clang 21, GCC 15, NVHPC 25.11,
fmt12.1.0, Google Benchmark 1.9.4, GoogleTest 1.17.0, and nlohmann-json 3.12.0 are now part of the refreshed toolchain story. - The
proxy_fmt.hintegration was adjusted to stay compatible withfmt12.x.
- Benchmarks were reorganized to better reflect real usage: management benchmarks were renamed to creation benchmarks, metrics were grouped into core, comparative, and observational buckets, all facades were switched to
Upgrading
Most users can update to 4.0.2 and rebuild.
-
Repository and docs URLs
- Update repository links from
github.com/microsoft/proxytogithub.com/ngcpp/proxy. - Update documentation links from
microsoft.github.io/proxytongcpp.github.io/proxy.
- Update repository links from
-
Build systems
- Public namespaces and current CMake target names remain unchanged in 4.0.2.
- Existing CMake integrations continue to work as before.
- Meson is now supported for header installation, tests, benchmarks, and docs examples. Meson consumers can integrate Proxy through
dependency('msft_proxy4'), withpkg-configmetadata generated when that tooling is available.
-
Behavioral notes
- If your facades or conversions rely on reference-returning overloads, rebuild and rerun tests to pick up the fixes in
weak_dispatchandexplicit_conversion_dispatch. - If you hit odd participation in
proxyconstructors or assignments with custom pointer-like wrappers, the tightenedptr_traitsand facade constraints in 4.0.2 are designed to make those cases more predictable.
- If your facades or conversions rely on reference-returning overloads, rebuild and rerun tests to pick up the fixes in
Acknowledgments
Thank you to everyone who helped move Proxy into its next chapter. A special thanks to @mochaaP for landing Meson support and expanding the project's build-system reach.
What's Changed
- Improve constraints for
facadeby @mingxwa in microsoft/proxy#359 - tightenedProBasicFacadeand builder validation for layout and constraint settings. - Remove support for standard trivial relocation by @mingxwa in microsoft/proxy#365 - removed an incomplete, untested relocation path.
- Avoid false positive for
ptr_traitsby @mingxwa in microsoft/proxy#367 - made pointer-trait detection stricter and improvedproxiableedge cases. - Fix overload resolution in
PRO_DEF_FREE_AS_MEM_DISPATCHby @mingxwa in microsoft/proxy#372 - fixed a regression and added broader dispatch coverage. - Simplify the implementation of
strong_compact_ptrby @mingxwa in microsoft/proxy#368 - reduced internal complexity without changing intended behavior. - Fix wording for proxy indirection by @mingxwa in microsoft/proxy#369 - aligned the docs with the current mandatory indirection model.
- Revise benchmarks by @mingxwa in microsoft/proxy#373 - regrouped metrics, switched facades to
slim, and added relocation measurements. - Update toolchain by @mingxwa in microsoft/proxy#378 - refreshed compiler coverage and dependency versions, including
fmt12.x compatibility work. - build: support meson build system by @mochaaP in microsoft/proxy#375 - added Meson support for building, testing, benchmarking, and docs example extraction.
- Update branding for migration by @mingxwa in ngcpp/proxy#1 - moved repository branding, links, and governance docs to ngcpp.
- Update email address for Code of Conduct by @mingxwa in ngcpp/proxy#2 - consolidated contact details around the current support address.
- Update copyright by @mingxwa in ngcpp/proxy#12 - preserved Microsoft's historical ownership and added ngcpp for ongoing development.
- Fix
weak_dispatchandexplicit_conversion_dispatchin reference-returning overloads by @mingxwa in ngcpp/proxy#13 - corrected reference conversion handling and added targeted tests. - Update version to 4.0.2 by @mingxwa in ngcpp/proxy#14.
Full changelog: ngcpp/proxy 4.0.1...4.0.2