Releases: cschreib/observable_unique_ptr
Releases · cschreib/observable_unique_ptr
v0.4.0
v0.3.0
Main changes:
observable_unique_ptrwill now optimize memory usage for empty (stateless) deleters for all versions of C++, not just C++20.observable_unique_ptrhas been split intoobservable_unique_ptrandobservable_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_ptrnot assignable fromobservable_unique_ptrwith a custom deleter, and not assignable from other observer pointer of same type. - Fixed
release()not flagging theobservable_unique_ptras expired for observers. - Fixed control block allocated and not freed when constructing
observable_unique_ptrwith 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_ptris renamed toobserver_ptrand no longer has alock()function; you can just de-reference it like a normal pointer, and will getnullptrif the object has been deleted.- The implementation no longer uses
std::shared_ptrunder 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_ptrnot constructible from derived type - added memory leak tests
- added missing comparison operators for
observer_ptr - added missing
operator bool()