Releases: microsoft/proxy
2.4.0
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_proxy
has been added to the library that accepts any allocator (you can now hookproxy
with any of your memory pool seamlessly!). See #76 - Two new helper macros
PRO_DEF_MEMBER_DISPATCH_WITH_DEFAULT
andPRO_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
2.2.0
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
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
- @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::dispatch
andpro::facade
have 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_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 offacade
are also updated. (feature suggested by @tian-lt)- Added concept
basic_facade
andfacade
.
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
- @coyorkdow made their first contribution in #40
Full Changelog: 1.0.0...2.0.0