A maintenance release of the tidyCpp package arrived on CRAN this morning. The packages offers a clean C++ layer (as well as one small C++ helper class) on top of the C API for R which aims to make use of this robust (if awkward) C API a little easier and more consistent. See the vignette for motivating examples.
This release follows a number of other releases this week in
accomodating the recently added -Wformat -Wformat-security
from the development branch of R. It also includes a new example snippet
illustrating creation of a numeric matrix.
The NEWS entry follows.
Changes in tidyCpp version 0.0.7 (2023-11-30)
Add an example for a numeric matrix creator
Update the continuous integration setup
Accomodate print format warnings from r-devel
Thanks to my CRANberries, there is also a diffstat report for this release. For questions, suggestions, or issues please use the issue tracker at the GitHub repo.
If you like this or other open-source work I do, you can now sponsor me at GitHub.
This post by Dirk Eddelbuettel originated on his Thinking inside the box blog. Please report excessive re-aggregation in third-party for-profit settings.
Another small release of the tidyCpp package arrived on CRAN this morning. The packages offers a clean C++ layer (as well as one small C++ helper class) on top of the C API for R which aims to make use of this robust (if awkward) C API a little easier and more consistent. See the vignette for motivating examples.
This release makes a tiny code change, remove a YAML file for the disgraced former continuous integration service we shall not name (yet that we all used to use). And just like digest five days ago, drat four days ago, littler three days ago, RcppAPT two days ago, and RcppSpdlog yesterday, we converted the vignettes from using the minidown package to the (fairly new) simplermarkdown package which is so much more appropriate for our use of the minimal water.css style.
The NEWS entry follows.
Changes in tidyCpp version 0.0.6 (2021-12-06)
Assign nullptr in dtor for
Protect
classSwitch vignette engine to simplermarkdown
Thanks to my CRANberries, there is also a diffstat report for this release.
For questions, suggestions, or issues please use the issue tracker at the GitHub repo.
If you like this or other open-source work I do, you can now sponsor me at GitHub.
This post by Dirk Eddelbuettel originated on his Thinking inside the box blog. Please report excessive re-aggregation in third-party for-profit settings.
Another small release of the tidyCpp package arrived on CRAN overnight. The packages offers a clean C++ layer (as well as one small C++ helper class) on top of the C API for R which aims to make use of this robust (if awkward) C API a little easier and more consistent. See the vignette for motivating examples.
The Protect
class now uses the default methods for copy and move constructors and assignment allowing for wide use of the class. The small NumVec
class now uses it for its data member.
The NEWS entry (which I failed to update for the releases) follows.
Changes in tidyCpp version 0.0.5 (2021-09-16)
The
Protect
class uses default copy and move assignments and constructorsThe data object in
NumVec
is now aProtect
object
Thanks to my CRANberries, there is also a diffstat report for this release.
For questions, suggestions, or issues please use the issue tracker at the GitHub repo.
If you like this or other open-source work I do, you can now sponsor me at GitHub.
This post by Dirk Eddelbuettel originated on his Thinking inside the box blog. Please report excessive re-aggregation in third-party for-profit settings.
Another release of the tidyCpp package arrived on CRAN earlier today. The packages offers a clean C++ layer on top of the C API for R which aims to make its use a little easier and more consistent.
The vignette has been extended once more with a new example, and added a table of contents. The package now supports a (truly minimal) C++ class for a numeric vector which is the most likely use case.
The NEWS entry follows and includes the 0.0.3 release earlier in the year which did not get the usual attention of post-release blog post.
Changes in tidyCpp version 0.0.4 (2021-09-05)
Minor updates to DESCRIPTION
New snippet
rollminmaxExample
with simple vector useNew class
NumVec
motivated from rolling min/max exampleExpand the vignette with C++ example based on NumVec
Add a table of contents to the vignette
Changes in tidyCpp version 0.0.3 (2021-03-07)
Switch CI use to r-ci
Protect nil object definition
Thanks to my CRANberries, there is also a diffstat report for this release.
For questions, suggestions, or issues please use the issue tracker at the GitHub repo.
If you like this or other open-source work I do, you can now sponsor me at GitHub.
This post by Dirk Eddelbuettel originated on his Thinking inside the box blog. Please report excessive re-aggregation in third-party for-profit settings.
A first update of the still fairly new package tidyCpp is now on CRAN. The packages offers a C++ layer on top of the C API for R which aims to make its use a little easier and more consistent.
The vignette has been extended with a new examples, a new section and some general editing. A few new defines have been added mostly from the Rinternals.h header. We also replaced the Shield
class with a simpler yet updated version class Protect. The name better represent the core functionality of offering a simpler alternative to the PROTECT
and UNPROTECT
macro pairing. We also added a short discussion to the vignette of a gotcha one has to be mindful of, and that we fell for ourselves in version 0.0.1. We also added a typedef
so that code using Shield
can still be used.
The NEWS entry follows.
Changes in tidyCpp version 0.0.2 (2020-11-12)
Expanded definitions in
internals.h
to support new example.The vignette has been extended with an example based on package uchardet.
Class
Shield
has been replaced by an new classProtect
; a compatibilitytypdef
has been added.The examples and vignette have been clarified with respect to proper ownership of protected objects; a new vignette section was added.
Thanks to my CRANberries, there is also a diffstat report for this release.
For questions, suggestions, or issues please use the issue tracker at the GitHub repo.
If you like this or other open-source work I do, you can now sponsor me at GitHub. For the first year, GitHub will match your contributions.
This post by Dirk Eddelbuettel originated on his Thinking inside the box blog. Please report excessive re-aggregation in third-party for-profit settings.
A new package arrived on CRAN a few days ago. It offers a few headers files which wrap (parts) of the C API for R, but in a form that may be a little easier to use for C++ programmers. I have always liked how in Rcpp we offer good parts of the standalone R Math library in a namespace R::
. While working recently with a particular C routine (for checking non-ASCII characters that will be part of the next version of the dang package which collecting various goodies in one place), I realized there may be value in collecting a few more such wrappers. So I started a few simple ones starting from simple examples.
Currently we have five headers defines.h, globals.h, internals.h, math.h, and shield.h. The first four each correpond to an R header file of the same or similar name, and the last one brings a simple yet effective alternative to PROTECT
and UNPROTECT
from Rcpp (in a slightly simplified way). None of the headers are “complete”, for internals.h in particular a lot more could be added (as I noticed today when experimenting with another source file that may be converted). All of the headers can be accessed with a simple #include <tidyCpp>
(which, following another C++ convention, does not have a .h
or .hpp
suffix). And a the package ships these headers, packages desiring to use them only need LinkingTo: tidyCpp
.
As usage examples, we (right now) have four files in the snippets/
directory of the package. Two of these, convolveExample.cpp and dimnamesExample.cpp both illustrate how one could change example code from Writing R Extensions. Then there are also a very simple defineExample.cpp and a shieldExample.cpp illustrating how much easier Shield()
is compared to PROTECT
and UNPROTECT
.
Finally, there is a nice vignette discussing the package motivation with two detailed side-by-side ‘before’ and ‘after’ examples that are the aforementioned convolution and dimnames
examples.
Over time, I expect to add more definitions and wrappers. Feedback would be welcome—it seems to hit a nerve already as it currently has more stars than commits even though (prior to this post) I had yet to tweet or blog about it. Please post comments and suggestions at the GitHub repo.
If you like this or other open-source work I do, you can now sponsor me at GitHub. For the first year, GitHub will match your contributions.
This post by Dirk Eddelbuettel originated on his Thinking inside the box blog. Please report excessive re-aggregation in third-party for-profit settings.