# cpp11 0.3.1
# cpp11 0.3.0
## New functions and features
* New `x.empty()` method to check if a vector is empty (@sbearrows, #182)
* New `x.named()` method to check if a vector is named (@sbearrows, #186)
* New `na()` free function to return the NA sentinels for R objects
(@sbearrows, #17 9)
## Major fixes
* Memory no longer inadvertently leaks when move constructing vectors
(#173)
## minor improvements and fixes
* Incorrectly formatted cpp11 decorators now output a more informative
error message (@sbearrows, #127)
* Generated registration code now uses C collation to avoid spurious
changes from `tools::package_native_routine_registration_skeleton()`
(@sbearrows, #171)
* Makevars files which include filenames now handle spaces in paths
properly (@klmr, #160)
# cpp11 0.2.7
* Fix a transient memory leak for functions that return values from
`cpp11::unwind_protect()` and `cpp11::safe` (#154)
# cpp11 0.2.6
* `cpp_register()` now uses symbols exclusively in the `.Call()`
interface. This allows it to be more robust in interactive use with
the pkgload package.
# cpp11 0.2.5
* `cpp_source()` gains a `cxx_std` argument to control which C++
standard is used. This allows you to use code from `C++14` and
later standards with cpp_source(). (#100)
* The cpp11 knitr engine now allows you to set the `cxx_std` chunk
option to control the C++ standard used.
* `cpp_source()` now has much more informative error messages when
compilation fails (#125, #139)
* `cpp_source()` now uses a unique name for the DLL, so works when run
multiple times on the same source file on Windows (#143)
* `writable::list_of<T>` now supports modification of vectors as
intended (#131).
* Errors when running
`tools::package_native_routine_registration_skeleton()` are no
longer swallowed (#134)
* `cpp_source()` can now accept a source file called `cpp11.cpp`
(#133)
* `named_arg` now explicitly protect their values, avoiding protection
issues when using large
inputs. [tidyverse/readr#1145](https://github.com/tidyverse/readr/issues/1145)
* `r_string(std::string)` now uses `Rf_mkCharLenCE()` instead of
`Rf_mkChar()`, which avoids the performance cost of checking the
string length.
* Writable vector classes now properly set their lengths as intended
when being copied to a read only class (#128).
Provides a header only, C++11 interface to R's C interface. Compared
to other approaches 'cpp11' strives to be safe against long jumps from
the C API as well as C++ exceptions, conform to normal R function
semantics and supports interaction with 'ALTREP' vectors.