Skip to content

Releases: microsoft/proxy

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

2.1.0

15 Jan 12:21
4d22d2a
Compare
Choose a tag to compare

What's Changed

  • Add macro PRO_DEF_COMBINED_DISPATCH by @mingxwa in #54
  • Simplify the semantics of facade per spec by @mingxwa in #55

Full Changelog: 2.0.0...2.1.0

2.0.0

26 Dec 14:02
555a349
Compare
Choose a tag to compare

Proxy 2.0.0 is Now Available!

After a whole year of evolution, proxy has finally pumping its version to 2.0.0. This is a major update to the proxy library. Thanks to all the valuable feedback from you! A new ISO C++ proposal will soon become available with detailed technical specifications.

Here is a list of major changes comparing to 1.0.0:

  1. Class templates pro::dispatch and pro::facade have been removed. Please use the new macros (starting with PRO_) to define dispatches and facades. See README for more details.
  2. One dispatch now supports multiple overloads. (#43, feature suggested by @suy)
  3. Pointer type requirements has been revised. proxy::invoke() is now const-qualified. (#22, #24, feature suggested by @xiaosa-zhz and @misirlou-tg).
  4. proxy::operator() was added when there is only one dispatch defined in the facade.
  5. struct proxiable_ptr_constraints is added as an abstraction of constraints to pointers, making it easier to learn and use. 3 prototypes are provided, while only 1 was provided in 1.0.0 due to syntax limitation. The requirements of facade are also updated. (feature suggested by @tian-lt)
  6. Added concept basic_facade and facade.

Minor changes including build system improvements are listed below.

Change Details

  • build tests when they are needed. by @tian-lt in #15
  • Add constexpr to pro::dispatch::operator() per spec by @mingxwa in #16
  • Fix requires and noexcept clause for make_proxy by @mingxwa in #17
  • CMake support: Install and export by @tian-lt in #18
  • CI pipeline listens to release branches by @tian-lt in #19
  • Update README wording by @mingxwa in #20
  • Update readme and add demo for cmake & vcpkg by @tian-lt in #21
  • Clang14 by @tian-lt in #31
  • Add const qualifier to proxy::invoke() by @mingxwa in #28
  • add ARCH_INDEPENDENT by @tian-lt in #32
  • Update clang from 14 to 15 by @mingxwa in #38
  • fix unittest in gcc13 by @coyorkdow in #40
  • Feature: Support overloads in dispatch definition by @mingxwa in #45
  • Add macros to simplify syntax of creating dispatches and facades by @mingxwa in #46
  • Revise pointer requirements by @mingxwa in #47
  • Revise the semantics of facade by @mingxwa in #48
  • Bug fix: Function pointer can't be used to create a proxy by @mingxwa in #50
  • Improve naming of proxy_pointer_constraints by @mingxwa in #52

New Contributors

Full Changelog: 1.0.0...2.0.0