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)
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<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.