Releases: microsoft/proxy
2.3.2
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
2.3.0
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_proxyhas been added to the library that accepts any allocator (you can now hookproxywith any of your memory pool seamlessly!). See #76 - Two new helper macros
PRO_DEF_MEMBER_DISPATCH_WITH_DEFAULTandPRO_DEF_FREE_DISPATCH_WITH_DEFAULTare added.proxycan 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-liketype 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
2.2.0
What's Changed
- Add support for
noexceptby @mingxwa in #62 (Thanks to @psiha's idea #61) - Add
noexceptfor 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
What's Changed
- Fix self-move-assignment for
proxyby @frederick-vs-ja in #59 - Reduce compile-time complexity of combined_dispatch_prototype::overload_types by @mingxwa in #60
New Contributors
- @frederick-vs-ja made their first contribution in #59
Full Changelog: 2.1.1...2.1.2
2.1.1
2.1.0
2.0.0
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:
- Class templates
pro::dispatchandpro::facadehave been removed. Please use the new macros (starting withPRO_) to define dispatches and facades. See README for more details. - One dispatch now supports multiple overloads. (#43, feature suggested by @suy)
- Pointer type requirements has been revised.
proxy::invoke()is nowconst-qualified. (#22, #24, feature suggested by @xiaosa-zhz and @misirlou-tg). proxy::operator()was added when there is only one dispatch defined in the facade.struct proxiable_ptr_constraintsis 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 offacadeare also updated. (feature suggested by @tian-lt)- Added concept
basic_facadeandfacade.
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_proxyby @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
- @coyorkdow made their first contribution in #40
Full Changelog: 1.0.0...2.0.0
Proxy 1.1.1 Release
@tian-lt Improved CMake toolchain configuration.