Releases: microsoft/proxy
3.0.0
Proxy 3.0.0 is Now Available!
Check out the new features in our announcement!
Please find more technical details with the following links:
- API Reference: https://microsoft.github.io/proxy/docs/specifications.html
- Frequently Asked Questions: https://microsoft.github.io/proxy/docs/faq.html
New Contributors
- @frederick-vs-ja made their first contribution in #59
- @alvarogalloc made their first contribution in #133
Full Changelog: 2.0.0...3.0.0
3.0.0-rc1
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
- Fix helper macros for multiple signatures by @mingxwa in #96
- Fix UB in in-place construction by @mingxwa in #99
- Fix GCC pipeline by @mingxwa in #101
- Improve facade infrastructure by @mingxwa in #102
- Improve invocation APIs and facilities to define an operator dispatch by @mingxwa in #106
- Simulate overload resolution in macros by @mingxwa in #110
- Implement pointer-to-member support by @mingxwa in #111
- Refactoring: Improve code clarity by @mingxwa in #112
- Fix typo by @mingxwa in #114
- Implement indirection syntax by @mingxwa in #121
- Improve accessibility by @mingxwa in #124
- Move direction semantics from dispatches to conventions by @mingxwa in #125
- Revise semantics of
proxiable_ptr_constraints
by @mingxwa in #127 - Improve API design by @mingxwa in #128
- Make
facade_builder
a class type, rather than a type alias by @mingxwa in #129 - Improve code quality by @mingxwa in #130
- fix referencing non-existent vcpkg website by @alvarogalloc in #133
- Revise
pro::facade_builder::restrict_layout
by @mingxwa in #132 - Refactor implementation of
meta_ptr
by @mingxwa in #139 - Remove some macros by @mingxwa in #136
- Remove redundant macro
___PRO_DEF_BRACKETS_OP_ACCESSOR
by @mingxwa in #144 - Remove redundant semicolon by @mingxwa in #145
- Add feature test macro by @mingxwa in #146
- Add more samples by @mingxwa in #148
- Remove vcpkg.json in samples by @mingxwa in #149
- Run BVT with AppleClang by @mingxwa in #150
- Update Google test version by @mingxwa in #151
- Fix build error by @mingxwa in #153
- Add .gitattributes by @mingxwa in #155
New Contributors
- @alvarogalloc made their first contribution in #133
Full Changelog: 2.4.0...3.0.0-rc1
2.4.0
People want proxy.Fun()
syntax. Now done.
Full Changelog: 2.3.2...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