Tied to https://github.com/r-lib/cpp11/pull/331, where we switch from a global preserve list to 1 preserve list per compilation unit. release_all() was intended to support experts that wanted to manually release cpp11 protected objects on R < 3.5.0, but it no longer is applicable for a few reasons:
In the tidyverse we now require R >=3.6.0 in most places
Using 1 preserve list per compilation unit means it will now only release objects managed by that compilation unit's preserve list
We think the idea of potentially releasing objects you don't own can be dangerous (like if you accidentally release vroom ALTREP objects, which can persist past a .Call() boundary)
No one was using release_all() as far as we can tell.
I've also bumped the minimum R version to >=3.5.0, so we no longer need code that supports the "old times" before we had access to R_UnwindProtect(). To this end, I've removed CPP11_USE_PRESERVE_OBJECT as well.
I've kept some details in the internals vignette, because I think the discussion of the alternative approaches is still useful for historical context.
Tied to https://github.com/r-lib/cpp11/pull/331, where we switch from a global preserve list to 1 preserve list per compilation unit.
release_all()
was intended to support experts that wanted to manually release cpp11 protected objects on R < 3.5.0, but it no longer is applicable for a few reasons:.Call()
boundary)No one was using
release_all()
as far as we can tell.I've also bumped the minimum R version to >=3.5.0, so we no longer need code that supports the "old times" before we had access to
R_UnwindProtect()
. To this end, I've removedCPP11_USE_PRESERVE_OBJECT
as well.I've kept some details in the internals vignette, because I think the discussion of the alternative approaches is still useful for historical context.