Skip to content

Releases: ngcpp/proxy

Proxy 4.0.2 Release

13 Mar 15:35
bcbe0c7

Choose a tag to compare

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-config metadata when available.
    • Existing CMake flows continue to work, so current integrations do not need to change.
  • Correctness and semantics

    • facade constraints are tighter and clearer. ProBasicFacade and the related builder APIs now validate size, alignment, and constraint_level settings 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_traits detection is now stricter, avoiding false positives for arbitrary template instantiations and improving proxiable behavior in edge cases such as embedding proxy in wrapper types like std::variant.
    • PRO_DEF_FREE_AS_MEM_DISPATCH overload resolution was fixed after a regression, and coverage was expanded across member, free, and free-as-member dispatch patterns.
    • weak_dispatch and explicit_conversion_dispatch now correctly handle reference-returning overloads, fixing an important correctness issue for conversion-heavy facades.
    • strong_compact_ptr was 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 slim for fairer comparisons, and six relocation metrics were added.
    • Documentation wording around proxy indirection 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, fmt 12.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.h integration was adjusted to stay compatible with fmt 12.x.

Upgrading

Most users can update to 4.0.2 and rebuild.

  • Repository and docs URLs

    • Update repository links from github.com/microsoft/proxy to github.com/ngcpp/proxy.
    • Update documentation links from microsoft.github.io/proxy to ngcpp.github.io/proxy.
  • 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'), with pkg-config metadata 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_dispatch and explicit_conversion_dispatch.
    • If you hit odd participation in proxy constructors or assignments with custom pointer-like wrappers, the tightened ptr_traits and facade constraints in 4.0.2 are designed to make those cases more predictable.

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 facade by @mingxwa in microsoft/proxy#359 - tightened ProBasicFacade and 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_traits by @mingxwa in microsoft/proxy#367 - made pointer-trait detection stricter and improved proxiable edge cases.
  • Fix overload resolution in PRO_DEF_FREE_AS_MEM_DISPATCH by @mingxwa in microsoft/proxy#372 - fixed a regression and added broader dispatch coverage.
  • Simplify the implementation of strong_compact_ptr by @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 fmt 12.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_dispatch and explicit_conversion_dispatch in 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