Releases: cschreib/observable_unique_ptr
Releases · cschreib/observable_unique_ptr
v0.3.0
Main changes:
observable_unique_ptr
will now optimize memory usage for empty (stateless) deleters for all versions of C++, not just C++20.observable_unique_ptr
has been split intoobservable_unique_ptr
andobservable_sealed_ptr
. The former preserves the original API, except that allocation optimisation inmake_observable_unique()
has been disabled (it prevents writing a saferelease()
function). The latter has the same API except it is missingvoid reset(T*)
andT* release()
; once a raw pointer is acquired, it is "sealed" inside the smart pointer. This enables the allocation optimisation inmake_observable_sealed()
. You can choose between the two pointers depending on your needs:- need to be able to
release()
? useobservable_unique_ptr
. - do not need to be able to
release()
? useobservable_sealed_ptr
(reset(T*)
can be replaced by assignment).
- need to be able to
- Added tests and official support for WebAssembly / Emscripten.
Small changes and bug fixes:
- Fixed
observer_ptr
not assignable fromobservable_unique_ptr
with a custom deleter, and not assignable from other observer pointer of same type. - Fixed
release()
not flagging theobservable_unique_ptr
as expired for observers. - Fixed control block allocated and not freed when constructing
observable_unique_ptr
with aT*
equal tonullptr
(but not directlynullptr
). - Fixed
release()
from amake_observable_unique()
pointer leaving observer pointer with a dangling control block when the user deletes the released pointer. - Added speed benchmarks.
v0.2.0
Main changes / breaking changes:
weak_ptr
is renamed toobserver_ptr
and no longer has alock()
function; you can just de-reference it like a normal pointer, and will getnullptr
if the object has been deleted.- The implementation no longer uses
std::shared_ptr
under the hood, so most of the limitations (e.g., type-erased deleter, norelease()
) have been lifted.
Small changes and bug fixes:
- fixed operator== not compiling for
observable_unique_ptr
- fixed
observer_ptr
not constructible from derived type - added memory leak tests
- added missing comparison operators for
observer_ptr
- added missing
operator bool()