Skip to content

Releases: microsoft/proxy

3.0.0

06 Sep 10:07
e76e4ac
Compare
Choose a tag to compare

Proxy 3.0.0 is Now Available!

Check out the new features in our announcement!

Please find more technical details with the following links:

New Contributors

Full Changelog: 2.0.0...3.0.0

3.0.0-rc1

18 Aug 08:04
c596eac
Compare
Choose a tag to compare
3.0.0-rc1 Pre-release
Pre-release

Proxy 3: Feature Complete

After evolving for around half a year, Proxy 3 is now feature complete, with the latest and greatest design for modern runtime polymorphism in C++. Full documentation will be available with the final release of version 3.0.0 soon. Please stay tuned.

What's Changed

New Contributors

Full Changelog: 2.4.0...3.0.0-rc1

2.4.0

09 May 12:10
51af4a8
Compare
Choose a tag to compare

People want proxy.Fun() syntax. Now done.

Full Changelog: 2.3.2...2.4.0

2.3.2

22 Apr 08:48
aa384eb
Compare
Choose a tag to compare

New API

template <class T, class F>  // freestanding
concept inplace_proxiable_target = proxiable<implementation-defined-pointer<T>, F>;

template <facade F, inplace_proxiable_target<F> T, class... Args>  // freestanding
proxy<F> make_proxy_inplace(Args&&... args)
    noexcept(std::is_nothrow_constructible_v<T, Args...>);

template <facade F, inplace_proxiable_target<F> T, class U, class... Args>  // freestanding
proxy<F> make_proxy_inplace(std::initializer_list<U> il, Args&&... args)
    noexcept(std::is_nothrow_constructible_v<T, std::initializer_list<U>&, Args...>);

template <facade F, class T>  // freestanding
proxy<F> make_proxy_inplace(T&& value)
    noexcept(std::is_nothrow_constructible_v<std::decay_t<T>, T>)
    requires(inplace_proxiable_target<std::decay_t<T>, F>);

The function template make_proxy_inplace overloads allow creation of proxy with no-allocation guarantee, and also support freestanding.

What's Changed

  • Fix regression in GCC 11 by @mingxwa in #90
  • Implement make_proxy_inplace and inplace_proxiable_target with freestanding by @mingxwa in #92

Full Changelog: 2.3.1...2.3.2

2.3.1

16 Apr 11:31
c8f0b6b
Compare
Choose a tag to compare

What's Changed

  • Fix UB of potentially wrong compile-time assumption of transparently replaceable by @mingxwa in #81
  • Improve code generation by @mingxwa in #83
  • Add support for accessing the underlying pointer type via a dispatch by @mingxwa in #85

Full Changelog: 2.3.0...2.3.1

2.3.0

02 Apr 05:40
4013b00
Compare
Choose a tag to compare

Moving towards standardization

We have reviewed the general design of the last version of proxy in the last ISO C++ committee meeting. The committee unanimously agreed that the problem addressed by proxy is significant and merits resolution. Based on the feedback, there is a strong possibility that proxy will advance to the next stage of review for the C++26 standardization. Please refer to the latest paper and presentation slides for more details.

In this update, we have resolved some technical comments from the committee and user feedback. Specifically,

  • A new API allocate_proxy has been added to the library that accepts any allocator (you can now hook proxy with any of your memory pool seamlessly!). See #76
  • Two new helper macros PRO_DEF_MEMBER_DISPATCH_WITH_DEFAULT and PRO_DEF_FREE_DISPATCH_WITH_DEFAULT are added. proxy can now be aware of the default implementation of a dispatch and optimize code generation. See #79
  • In the definition of a facade or dispatch, any tuple-like type is now allowed. Although it does not increase much usability, it will precisely match the wording in the paper's next revision. See #76

Full Changelog: 2.2.1...2.3.0

2.2.1

06 Mar 10:10
f3cfa4b
Compare
Choose a tag to compare

What's Changed

  • Remove constraints on class template proxy and optimize memory layout for small VTABLE by @mingxwa in #70
  • Improve compile-time constraints for constants by @mingxwa in #72

Full Changelog: 2.2.0...2.2.1

2.2.0

25 Feb 14:20
9fd9a58
Compare
Choose a tag to compare

What's Changed

  • Add support for noexcept by @mingxwa in #62 (Thanks to @psiha's idea #61)
  • Add noexcept for copyability, relocatability and destructibility metadata by @mingxwa in #63
  • Update README.md and replaced std::popcount() with std::has_single_bit() by @mingxwa in #64

Full Changelog: 2.1.2...2.2.0

2.1.2

19 Jan 01:32
baa0f87
Compare
Choose a tag to compare

What's Changed

  • Fix self-move-assignment for proxy by @frederick-vs-ja in #59
  • Reduce compile-time complexity of combined_dispatch_prototype::overload_types by @mingxwa in #60

New Contributors

Full Changelog: 2.1.1...2.1.2

2.1.1

16 Jan 14:36
531dfcc
Compare
Choose a tag to compare

What's Changed

  • Fix is_address_deducible for MSVC by @mingxwa in #57
  • Add support for combination of incomplete dispatch by @mingxwa in #58

Full Changelog: 2.1.0...2.1.1