Modernized the GitHub Actions workflows and updated some internal tests to better align with changes in those workflows and the latest version of R (#279).
cpp_source() errors on non-existent file
(#261).
cpp_register() is quiet by default when R is non
interactive (#289).
updated test to adapt to changes in R 4.2.1 (#290).
cpp11::messages() cpp11::stop() and
cpp11::warning(). Set the CPP11_USE_FMT macro
to use this feature in your package. (@sbearrows, #169, #208)as_double() and as_integer() methods
to coerce integers to doubles and doubles to integers to doubles (@sbearrows, #46)cpp11::matrix iterators can now be used either row-wise
or column-wise (the default) depending on the user’s choice (@alyst, #229)writable::r_vector default constructors now return a 0
length vector when converted to SEXP (#166)r_vector constructors now disallow implicit
construction with named arguments (#237)r_vector.attr() methods now return const
objects, so it is a compile time error to try to assign to them
(#237)+ and += operators of
r_vector::[const_]iterator to conform the
iterators concept: += updates the iterator, and
+ returns the updated copy, while keeping the original
unchanged (@alyst,
#231)cpp11::sexps (#224).Call calls in cpp11.cpp file (@sbearrows, #170)cpp_register() now includes
attribute_visible in the init function, so packages
compiled with C_VISIBILITY will find the init
function.cpp_source() on the same file
more than once (@sbearrows, #202)cpp11::linking_to
(@sbearrows,
#193)cpp11::stop() and
replaced with C++ exceptions (@sbearrows, #203)x.empty() method to check if a vector is empty
(@sbearrows,
#182)x.named() method to check if a vector is named
(@sbearrows,
#186)na() free function to return the NA sentinels for R
objects (@sbearrows, #179)tools::package_native_routine_registration_skeleton()
(@sbearrows,
#171)cpp11::unwind_protect() and cpp11::safe
(#154)cpp_source() now gets an argument dir to
allow customized temporary directory to store generated source files. It
makes it easier to debug C++ source files in non-package project via
source mapping. (@renkun-ken, #156)cpp_register() now uses symbols exclusively in the
.Call() interface. This allows it to be more robust in
interactive use with the pkgload package.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)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).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#1145r_string(std::string) now uses
Rf_mkCharLenCE() instead of Rf_mkChar(), which
avoids the performance cost of checking the string length.r_vector::const_iterator::operator* is now a const
method (#113, @bkietz,
@xhochy)r_bool added as an adapter between bool
and Rboolean values (#57, @bkietz)
data_frame() objects now have the number of rows
correctly set as real length, not the reserved length (#91)
Fixed potential memory leak in cpp11::writable classes.
Ensures backwards compatibility with code generation from cpp11 0.1.0 (#88)
push_back() now works more consistently with named
arguments (#86)
cpp11 is now able to compile on gcc 4.8.5 (#69, @bkietz)
cpp_source(), cpp_function() and
cpp_eval() now support [[cpp11::linking_to()]]
syntax to link to third party packages with C++ headers. (#48)
as_cpp<E>() now works with enumeration types
(#52, @bkietz)
as_cpp<int>() and
as_cpp<double>() now implicitly coerce between all 3
types of single NA values (#53).
list::const_iterator::operator*() added so iterators
could be used on list objects (#60, @romainfrancois)
safe[] can now work with functions that return any
type (#70, @bkietz)
The END_CPP macro now includes a
catch(...) block to catch all C++ exceptions that do not
inherit from std::exception (#47).
Improve consistency of inserting NA values in r_string objects (#45)
Added a NEWS.md file to track changes to the
package.