cpp11 0.4.6
-
R >=3.5.0 is now required to use cpp11. This is in line with (and even goes
beyond) the tidyverse standard of supporting the previous 5 minor releases of
R. It also ensures thatR_UnwindProtect()
is available to avoid C++ memory
leaks (#332). -
cpp11::preserved.release_all()
has been removed. This was intended to
support expert developers on R <3.5.0 when cpp11 used a global protection
list. Since cpp11 no longer uses a global protection list and requires R=3.5.0, it is no longer needed. As far as we can tell, no package was
actively using this (#332). -
cpp11 now creates one protection list per compilation unit, rather than one
global protection list shared across compilation units and across packages.
This greatly reduces the complexity of managing the protection list state and
should make it easier to make changes to the protection list structure in the
future without breaking packages compiled with older versions of cpp11 (#330). -
Nested calls to
cpp11::unwind_protect()
are no longer supported or
encouraged. Previously, this was something that could be done for performance
improvements, but ultimately this feature has proven to cause more problems
than it is worth and is very hard to use safely. For more information, see the
newvignette("FAQ")
section titled "Should I callcpp11::unwind_protect()
manually?" (#327). -
The features and bug fixes from cpp11 0.4.4 have been added back in.