Armadillo is a powerful and expressive C++ template library for linear algebra and scientific computing. It aims towards a good balance between speed and ease of use, has a syntax deliberately close to Matlab, and is useful for algorithm development directly in C++, or quick conversion of research code into production environments. RcppArmadillo integrates this library with the R environment and language–and is widely used by (currently) 1074 other packages on CRAN, downloaded 29.3 million times (per the partial logs from the cloud mirrors of CRAN), and the CSDA paper (preprint / vignette) by Conrad and myself has been cited 535 times according to Google Scholar.
This release brings a new upstream release 12.4.0 made by Conrad a day or so ago. I prepared the usual release candidate, tested on the over 1000 reverse depends (which sadly takes almost a day on old hardware), found no issues and sent it to CRAN. Where it got tested again and was once again auto-processed smoothly by CRAN within a few hours on a Friday night which is just marvelous. So this time I tweeted about it too.
The releases actually has a relatively small set of changes as a second follow-up release in the 12.* series.
Changes in RcppArmadillo version 0.12.4.0.0 (2023-05-26)
Upgraded to Armadillo release 12.4.0 (Cortisol Profusion Redux)
Added
norm2est()
for finding fast estimates of matrix 2-norm (spectral norm)Added
vecnorm()
for obtaining the vector norm of each row or column of a matrix
Courtesy of my CRANberries, there is a diffstat report relative to previous release. More detailed information is on the RcppArmadillo page. Questions, comments etc should go to the rcpp-devel mailing list off the R-Forge page.
If you like my open-source work, you may consider sponsoring 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.
We are happy to share that the RcppSimdJson package has been updated to release 0.1.10.
RcppSimdJson wraps the fantastic and genuinely impressive simdjson library by Daniel Lemire and collaborators. Via very clever algorithmic engineering to obtain largely branch-free code, coupled with modern C++ and newer compiler instructions, it results in parsing gigabytes of JSON parsed per second which is quite mindboggling. The best-case performance is ‘faster than CPU speed’ as use of parallel SIMD instructions and careful branch avoidance can lead to less than one cpu cycle per byte parsed; see the video of the talk by Daniel Lemire at QCon.
This release updates the underlying simdjson library to version 3.1.8 (also made today). Otherwise we only made a minor edit to the README and adjusted one tweek for code coverage.
The (very short) NEWS entry for this release follows.
Changes in version 0.1.10 (2023-05-14)
- simdjson was upgraded to version 3.1.8 (Dirk in #85).
Courtesy of 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.
Armadillo is a powerful and expressive C++ template library for linear algebra and scientific computing. It aims towards a good balance between speed and ease of use, has a syntax deliberately close to Matlab, and is useful for algorithm development directly in C++, or quick conversion of research code into production environments. RcppArmadillo integrates this library with the R environment and language–and is widely used by (currently) 1052 other packages on CRAN, downloaded 28.6 million times (per the partial logs from the cloud mirrors of CRAN), and the CSDA paper (preprint / vignette) by Conrad and myself has been cited 522 times according to Google Scholar.
This release brings a new upstream release 12.2.0 made by Conrad a day or so ago. We prepared the usual release candidate, tested on the over 1000 reverse depends, found no issues and sent it to CRAN. Where it got tested again and was auto-processed smoothly by CRAN.
The releases actually has a relatively small set of changes as a first follow-up release in the 12.2.* series.
Changes in RcppArmadillo version 0.12.2.0.0 (2023-04-04)
Upgraded to Armadillo release 12.2.0 (Cortisol Profusion Deluxe)
more efficient use of FFTW3 by
fft()
andifft()
faster in-place element-wise multiplication of sparse matrices by dense matrices
added spsolve_factoriser class to allow reuse of sparse matrix factorisation for solving systems of linear equations
Courtesy of my CRANberries, there is a diffstat report relative to previous release. More detailed information is on the RcppArmadillo page. Questions, comments etc should go to the rcpp-devel mailing list off the R-Forge page.
If you like this or other open-source work I do, you can 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 new release 0.2.7 of our RcppSMC package arrived at
CRAN earlier today. It contains
several extensions added by team member (and former GSoC student) Ilya Zarubin since the last
release. We were a little slow to release those—but “one of those CRAN
emails” forced our hand for a release now. The updated ‘uninitialized
variable’ messages in clang++-16
have found a fan in Brian
Ripley, and so he sent us a note. And as the issue was trivially
reproducible with clang++-15
here too I had it fixed in no
time. And both changes taken together form the incremental 0.2.7
release.
RcppSMC provides Rcpp-based bindings to R for the Sequential Monte Carlo Template Classes (SMCTC) by Adam Johansen described in his JSS article. Sequential Monte Carlo is also referred to as Particle Filter in some contexts. The package now also features the Google Summer of Code work by Leah South in 2017, and by Ilya Zarubin in 2021.
The release is summarized below.
Changes in RcppSMC version 0.2.7 (2023-03-22)
Courtesy of my CRANberries, there is a diffstat report for this release.
More information is on the RcppSMC page. Issues and bugreports should go to the GitHub issue tracker.
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 new minor release 0.2.3 of our RcppRedis package arrived on CRAN today. RcppRedis is one of several packages connecting R to the fabulous Redis in-memory datastructure store (and much more). RcppRedis does not pretend to be feature complete, but it may do some things faster than the other interfaces, and also offers an optional coupling with MessagePack binary (de)serialization via RcppMsgPack. The package has carried production loads on a trading floor for several years.
This update is fairly mechanical. CRAN wants everybody off the C++11 train which is fair game given that it 2023 and most sane and lucky people are facing sane and modern compilers so this makes sense. (And I raise a toast to all those poor souls facing RHEL 7 / CentOS 7 with a compiler from many moons ago: I hear it is a vibrant job market out there so maybe time to make a switch…). As with a few of my other packages, this release simply does away with the imposition of C++11 as the package will compile just fine under C++14 or C++17 (as governed by your version of R).
The detailed changes list follows.
Changes in version 0.2.3 (2023-03-08)
No longer set a C++ compilation standard as the default choices by R are sufficient for the package
Switch include to Rcpp/Rcpp which signals use of all Rcpp features including Modules
Courtesy of my CRANberries, there is also a diffstat report for this release. More information is on the RcppRedis page.
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.
James Yang and I are thrilled to announce the new CRAN package RcppFastAD which arrived at CRAN last Monday as version 0.0.1, and is as of today at version 0.0.2 with a first set of small updates.
It is based on the FastAD header-only C++
library by James which provides a C++ implementation of both forward and
reverse mode of automatic differentiation in an easy-to-use header
library (which we wrapped here) that is both lightweight and performant.
With a little of bit of Rcpp glue, it
is also easy to use from R in simple C++ applications. Included in the
package are three example: a simple quadratic expression evaluating
x' S x
for given x and S return the expression value with a
gradient, a linear regression example generalising this and using the
gradient to derive to arrive at the least-squares minimizing solution,
as well as the well-known Black-Scholes options pricer and its important
partial derivatives delta, rho, theta and vega derived via automatic
differentiation.
The NEWS file for these two initial releases follows.
Changes in version 0.0.2 (2023-03-05)
One C++ operation is protected from operating on a
nullptr
Additional tests have been added, tests now cover all three demo / example functions
Return values and code for the examples
linear_regression
andquadratic_expression
have been adjustedChanges in version 0.0.1 (2023-02-24)
- Initial release version and CRAN upload
Courtesy of my CRANberries, there is also a diffstat report for the most recent release. More information is available at the repository or the package page.
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.
Armadillo is a powerful and expressive C++ template library for linear algebra and scientific computing. It aims towards a good balance between speed and ease of use, has a syntax deliberately close to Matlab, and is useful for algorithm development directly in C++, or quick conversion of research code into production environments. RcppArmadillo integrates this library with the R environment and language–and is widely used by (currently) 1042 other packages on CRAN, downloaded 28.1 million times (per the partial logs from the cloud mirrors of CRAN), and the CSDA paper (preprint / vignette) by Conrad and myself has been cited 513 times according to Google Scholar.
This release brings a new upstream release 12.0.1. We found a small regression with the 12.0.0 release when we tested prior to a CRAN upload. Conrad very promptly fixed this with a literal one liner and made it 12.0.1 which we wrapped up as 0.12.0.1.0. Subsequent testing revealed no issues for us, and CRAN autoprocessed it as I tweeted earlier. This is actually quite impressive given the over 1000 CRAN packages using it all of which got tested again by CRAN. All this is testament to the rigour, as well as the well-oiled process at the repository. Our thanks go to the tireless maintainers!
The releases actually has a rather nice set of changes (detailed below) to which we added one robustification thanks to Kevin.
The full set of changes follows. We include the previous changeset as we may have skipped the usual blog post here.
Changes in RcppArmadillo version 0.12.0.1.0 (2023-02-20)
Upgraded to Armadillo release 12.0.1 (Cortisol Profusion)
faster
fft()
andifft()
via optional use of FFTW3faster
min()
andmax()
faster
index_min()
andindex_max()
added
.col_as_mat()
and.row_as_mat()
which return matrix representation of cube column and cube rowadded
csv_opts::strict
option to loading CSV files to interpret missing values as NaNadded
check_for_zeros
option to form 4 of sparse matrix batch constructors
inv()
andinv_sympd()
with optionsinv_opts::no_ugly
orinv_opts::allow_approx
now use a scaled threshold similar topinv()
set_cout_stream()
andset_cerr_stream()
are now no-ops; instead use the optionsARMA_WARN_LEVEL
, orARMA_COUT_STREAM
, orARMA_CERR_STREAM
fix regression (mis-compilation) in
shift()
function (reported by us in #409)The include directory order is now more robust (Kevin Ushey in #407 addressing #406)
Changes in RcppArmadillo version 0.11.4.4.0 (2023-02-09)
Upgraded to Armadillo release 11.4.4 (Ship of Theseus)
extended
pow()
with various forms of element-wise power operationsadded
find_nan()
to find indices of NaN elementsfaster handling of compound expressions by
sum()
The package no longer sets a compilation standard, or progagates on in the generated packages as R ensures C++11 on all non-ancient versions
The CITATION file was updated to the current format
Courtesy of my CRANberries, there is a diffstat report relative to previous release. More detailed information is on the RcppArmadillo page. Questions, comments etc should go to the rcpp-devel mailing list off the R-Forge page.
If you like this or other open-source work I do, you can 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.
Just days after a build-fix release (for aarch64) and still only a few weeks after the 0.2.0 release of RcppTOML and its switch to toml++, we have another bugfix release 0.2.2 on CRAN also bringing release 3.3.0 of toml++ (even if we had large chunks of 3.3.0 already incorporated).
TOML is a file format that is most suitable for configurations, as it is meant to be edited by humans but read by computers. It emphasizes strong readability for humans while at the same time supporting strong typing as well as immediate and clear error reports. On small typos you get parse errors, rather than silently corrupted garbage. Much preferable to any and all of XML, JSON or YAML – though sadly these may be too ubiquitous now. TOML is frequently being used with the projects such as the Hugo static blog compiler, or the Cargo system of Crates (aka “packages”) for the Rust language.
The package was building fine on Intel-based macOS provided the versions were recent enough. CRAN, however, aims for the broadest possibly reach of binaries and builds on a fairly ancient macOS 10.13 with clang version 10. This confused toml++ into (wrongly) concluding it could not build when it in fact can. After a hint from Simon that Apple in their infinite wisdom redefines clang version ids, this has been reflected in version 3.3.0 of toml++ by Mark so we should now build everywhere. Big thanks to everybody for the help.
The short summary of changes follows.
Changes in version 0.2.2 (2023-01-29)
- New toml++ version 3.3.0 with fix to permit compilation on ancient macOS systems as used by CRAN for the Intel-based builds.
Courtesy of my CRANberries, there is a diffstat report for this release. More information is on the RcppTOML page page. Please use the GitHub issue tracker for issues and bugreports.
If you like this or other open-source work I do, you can 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.
Two weeks after the release of RcppTOML 0.2.0 and the switch to toml++, we have a quick bugfix release 0.2.1.
TOML is a file format that is most suitable for configurations, as it is meant to be edited by humans but read by computers. It emphasizes strong readability for humans while at the same time supporting strong typing as well as immediate and clear error reports. On small typos you get parse errors, rather than silently corrupted garbage. Much preferable to any and all of XML, JSON or YAML – though sadly these may be too ubiquitous now. TOML is frequently being used with the projects such as the Hugo static blog compiler, or the Cargo system of Crates (aka “packages”) for the Rust language.
Some architectures, aarch64 included, got confused over ‘float16’ which is of course a tiny two-byte type nobody should need. After consulting with Mark we concluded to (at least for now) simply override this excluding the use of ‘float16’.
The short summary of changes follows.
Changes in version 0.2.1 (2023-01-25)
- Explicitly set
-DTOML_ENABLE_FLOAT16=0
to permit compilation on some architectures stumbling of the type.
Courtesy of my CRANberries, there is a diffstat report for this release. More information is on the RcppTOML page page. Please use the GitHub issue tracker for issues and bugreports.
If you like this or other open-source work I do, you can 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.
The Rcpp team is thrilled to announce the newest release 1.0.10 of the Rcpp package which is hitting CRAN now and will go to Debian shortly. Windows and macOS builds should appear at CRAN in the next few days, as will builds in different Linux distribution and of course at r2u. The release was prepared a few days ago, but given the widespread use at CRAN it took a few days to be processed. As always, our sincere thanks to the CRAN maintainers Uwe Ligges and Kurt Hornik. This release continues with the six-months cycle started with release 1.0.5 in July 2020. As a reminder, we do of course make interim snapshot ‘dev’ or ‘rc’ releases available via the Rcpp drat repo and strongly encourage their use and testing—I run my systems with these versions which tend to work just as well, and are also fully tested against all reverse-dependencies.
Rcpp has become the most popular way of enhancing R with C or C++ code. Right now, around 2623 packages on CRAN depend on Rcpp for making analytical code go faster and further, along with 252 in BioConductor. On CRAN, 13.7% of all packages depend (directly) on CRAN, and 58.7% of all compiled packages do. From the cloud mirror of CRAN (which is but a subset of all CRAN downloads), Rcpp has been downloaded 67.1 million times.
This release is incremental as usual, preserving existing capabilities faithfully while smoothing our corners and / or extending slightly. Of particular note is the now fully-enabled use of the ‘unwind’ protection making some operations a little faster by default; special thanks to Iñaki for spearheading this. Kevin and I also polished a few other bugs off as detailed below.
The full list of details follows.
Changes in Rcpp release version 1.0.10 (2023-01-12)
Changes in Rcpp API:
Unwind protection is enabled by default (Iñaki in #1225). It can be disabled by defining
RCPP_NO_UNWIND_PROTECT
before includingRcpp.h
.RCPP_USE_UNWIND_PROTECT
is not checked anymore and has no effect. The associated pluginunwindProtect
is therefore deprecated and will be removed in a future release.The 'finalize' method for Rcpp Modules is now eagerly materialized, fixing an issue where errors can occur when Module finalizers are run (Kevin in #1231 closing #1230).
Zero-row
data.frame
objects can receivepush_back
orpush_front
(Dirk in #1233 fixing #1232).One remaining
sprintf
has been replaced bysnprintf
(Dirk and Kevin in #1236 and #1237).Several conversion warnings found by
clang++
have been addressed (Dirk in #1240 and #1241).Changes in Rcpp Attributes:
Changes in Rcpp Deployment:
- Several GitHub Actions have been updated.
Thanks to my CRANberries, you
can also look at a diff
to the previous release. Questions, comments etc should go to the rcpp-devel
mailing list off the R-Forge page.
Bugs reports are welcome at the GitHub issue tracker as
well (where one can also search among open or closed issues);
questions are also welcome under rcpp
tag at StackOverflow which also allows searching among the
(currently) 2932 previous questions.
If you like this or other open-source work I do, you can 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.
The RcppSimdJson package was just updated to release 0.1.9.
RcppSimdJson wraps the fantastic and genuinely impressive simdjson library by Daniel Lemire and collaborators. Via very clever algorithmic engineering to obtain largely branch-free code, coupled with modern C++ and newer compiler instructions, it results in parsing gigabytes of JSON parsed per second which is quite mindboggling. The best-case performance is ‘faster than CPU speed’ as use of parallel SIMD instructions and careful branch avoidance can lead to less than one cpu cycle per byte parsed; see the video of the talk by Daniel Lemire at QCon.
This release updates the underlying simdjson library to version 3.0.1, settles on C++17 as the language standard, exports a worker function for direct C(++) access, and polishes a few small things around the package and tests.
The NEWS entry for this release follows.
Changes in version 0.1.9 (2023-01-21)
The internal function deseralize_json is now exported at the C++ level as well as in R (Dirk in #81 closing #80).
simdjson was upgraded to version 3.0.1 (Dirk in #83).
The package now defaults to C++17 compilation;
configure
has been retired (Dirk closing #82).The three main R access functions now use a more compact argument check via
stopifnot
(Dirk).
Courtesy of 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 new release of RcppFastFloat arrived on CRAN yesterday. The package wraps fast_float, another nice library by Daniel Lemire. For details, see the arXiv paper showing that one can convert character representations of ‘numbers’ into floating point at rates at or exceeding one gigabyte per second.
This release updates the underlying fast_float
library
version. Special thanks to Daniel
Lemire for quickly accomodating a parsing use case we had encode as
a test, namely with various whitespace codes. The default in
fast_float
, as in C++17, is to be more narrow but we enable
the wider use case via two #define
statements.
Changes in version 0.0.4 (2023-01-20)
Update to fast_float 3.9.0
Set two
#define
re-establish prior behaviour with respect to whitespace removal prior to parsing foras.double2()
Small update to continuous integration actions
Courtesy of my CRANberries, there is also a diffstat report for this release.
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.
Armadillo is a powerful and expressive C++ template library for linear algebra and scientific computing. It aims towards a good balance between speed and ease of use, has a syntax deliberately close to Matlab, and is useful for algorithm development directly in C++, or quick conversion of research code into production environments. RcppArmadillo integrates this library with the R environment and language–and is widely used by (currently) 1034 packages other packages on CRAN, downloaded 27.6 million times (per the partial logs from the cloud mirrors of CRAN), and the CSDA paper (preprint / vignette) by Conrad and myself has been cited 509 times according to Google Scholar.
This release brings another upstream bugfix interation 11.4.3, released in accordance with the aimed-for monthly release cadence. We had hoped to move away from suppressing deprecation warnings in this release, and had prepared over two dozen patch sets all well as pull requests as documented in issue #391. However, it turns out that we both missed with one or two needed set of changes as well as two other sets of changes triggering deprecation warnings. So we expanded issue #391, and added issue #402 – and prepared another eleven pull requests and patches today. With that we can hopefully remove the suppression of these warnings by an expected late of late April.
The full set of changes (since the last CRAN release 0.11.4.2.1) follows.
Changes in RcppArmadillo version 0.11.4.3.1 (2023-01-14)
- The
#define ARMA_IGNORE_DEPRECATED_MARKER
remains active to suppress the (upstream) deprecation warnings, see #391 and #402 for details.Changes in RcppArmadillo version 0.11.4.3.0 (2022-12-28) (GitHub Only)
Upgraded to Armadillo release 11.4.3 (Ship of Theseus)
- fix corner case in
pinv()
when processing symmetric matricesProtect the undefine of
NDEBUG
behind additional opt-in define
Courtesy of my CRANberries, there is a diffstat report relative to previous release. More detailed information is on the RcppArmadillo page. Questions, comments etc should go to the rcpp-devel mailing list off the R-Forge page.
If you like this or other open-source work I do, you can 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 new release 0.3.13 of RcppGSL is now on CRAN. The RcppGSL package provides an interface from R to the GNU GSL by relying on the Rcpp package.
This release contains one change (made at the request of a CRAN email
in light of possible future changes for C standard C17 and then C23) and
removes a compiler-check from configure.ac
. It is both a
fair point as our src/Makevars
does not actually set a
compiler yet also a little … marginal?
The NEWS entry follows:
Changes in version 0.3.13 (2023-01-12)
- Remove 'AC_PROG_CC' from 'configure.ac' per CRAN wish
Courtesy of CRANberries, a summary of changes in the most recent release is also available.
More information is on the RcppGSL page. Questions, comments etc should go to the issue tickets 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 few years since the last release in late 2020, the RcppTOML package is now back with a new and shiny CRAN release 0.2.0. It is now based on the wonderful toml++ C++17 library by Mark Gillard and gets us (at long last!) full TOML v1.0.0 compliance for use with R.
TOML is a file format that is most suitable for configurations, as it is meant to be edited by humans but read by computers. It emphasizes strong readability for humans while at the same time supporting strong typing as well as immediate and clear error reports. On small typos you get parse errors, rather than silently corrupted garbage. Much preferable to any and all of XML, JSON or YAML – though sadly these may be too ubiquitous now. TOML is frequently being used with the projects such as the Hugo static blog compiler, or the Cargo system of Crates (aka “packages”) for the Rust language.
This package is a rewrite of the internals interfacing the library, and updates the package to using toml++ and C++17. The R interface is unchanged, and a full run of reverse dependencies passed. This involved finding one sole test failure which turned to have been driven by a non-conforming TOML input file which Jianfeng Li kindly fixed at the source making his (extensive) set of tests in package configr pass too. The actual rewrite was mostly done in a one-off repo RcppTomlPlusPlus which can now be considered frozen.
The short summary of changes follows.
Changes in version 0.2.0 (2023-01-10)
Rewritten in C++17 using toml++ for TOML v1.0.0 compliance
Unchanged interface from R, unchanged (and expanded tests)
Several small continuous integration upgrades since last release
Courtesy of my CRANberries, there is a diffstat report for this release. More information is on the RcppTOML page page. Please use the GitHub issue tracker for issues and bugreports.
If you like this or other open-source work I do, you can 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.
Version 0.0.12 of RcppSpdlog is now on CRAN and in Debian. RcppSpdlog bundles spdlog, a wonderful header-only C++ logging library with all the bells and whistles you would want that was written by Gabi Melman, and also includes fmt by Victor Zverovich.
This release adds support for the stopwatch
object, a
simple container around a std::chrono
object. It makes
(simple) time measurements of routines and code segments trivially easy.
Instantiate a stopwatch
object, and ‘formatting’ it in a
logging string displays elapsed time. And given that the whole mojo of
RcppSpdlog (and
its sibbling package spdl) is to make use
easy in both R and C++ we can do this nicely and consistently
in both languages. The vignette has an added section with a concrete
example.
The NEWS entry for this release follows.
Changes in RcppSpdlog version 0.0.12 (2023-01-07)
Addeed support for 'stopwatch' object allowing for simple timing (from both C++ and R) via the logging framework.
The ‘spdlog’ logging pattern is documented via a reference.
Courtesy of my CRANberries, there is also a diffstat report. More detailed information is on the RcppSpdlog page, or the package documention site.
If you like this or other open-source work I do, you can 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.
The first fresh release of our RcppDE package in over four years (!!) is now on CRAN.
RcppDE is a “port” of DEoptim, a popular package for derivative-free optimisation using differential evolution optimization, from plain C to C++. By using RcppArmadillo the code becomes a lot shorter and more legible. Our other main contribution is to leverage some of the excellence we get for free from using Rcpp, in particular the ability to optimise user-supplied compiled objective functions which can make things a lot faster than repeatedly evaluating interpreted objective functions as DEoptim does (and which, in fairness, most other optimisers do too). The gains can be quite substantial.
This release brings two helpful patches from Max Coulter who spotted two distinct areas for improvement, based on how DEoptim how changed in recent years. I updated a number of aspects of continuous integration since the last release, and also streamlined and simplified the C++ interface (and in doing so also squashed a bug or two).
Courtesy of my CRANberries, there is also a diffstat report. More detailed information is on the RcppDE page, or the repository.
If you like this or other open-source work I do, you can 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.
Version 0.0.11 of RcppSpdlog is now on CRAN and in Debian. RcppSpdlog bundles spdlog, a wonderful header-only C++ logging library with all the bells and whistles you would want that was written by Gabi Melman, and also includes fmt by Victor Zverovich.
This release adds support for a basic file logger as a alternative to the console logger. This can be helpful with code which suppresses or hides console output – as for example unit test code does. We also expose the formatting helper function for direct use at the C level from other packages, and mention the handy wrapper spdl in the README.
The NEWS entry for this release follows.
Changes in RcppSpdlog version 0.0.11 (2022-12-13)
Export the formatter at C level
Mention package spdl in README.md
Support simple file-based logger
Courtesy of my CRANberries, there is also a diffstat report. More detailed information is on the RcppSpdlog page, or the package documention site.
If you like this or other open-source work I do, you can 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 maintenance release 0.9.14 of the RcppClassic package arrived earlier today on CRAN. This package provides a maintained version of the otherwise deprecated initial Rcpp API which no new projects should use as the normal Rcpp API is so much better.
The changes is. CRAN was reporting (for all four macOS builds, and only there) that an absolute path was embedded, so we updated the (old …) call to install_name_tool
use on that (and only that) OS. No other changes were made.
CRANberries also reports the changes relative to the previous release from nearly three years ago.
Questions, comments etc should go to the rcpp-devel mailing list off the R-Forge page.
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 version 0.0.10 of RcppSpdlog is now on CRAN and in Debian. RcppSpdlog bundles spdlog, a wonderful header-only C++ logging library with all the bells and whistles you would want that was written by Gabi Melman, and also includes fmt by Victor Zverovich.
This release continues on the path started less than two weeks ago with the RcppSpdlog 0.0.9 release. We continue to support both R and C++ access by adding a (simple) variadic template formatter exposing fmt::format()
(by focusing on just string arguments). This can be accessed from R via the exact same formatting strings that fmt uses, and which we have come to like for its simplicity. Of course if one prefers a different string interpolation method, or plain sprintf()
, or even paste
: they all work as all that matters is that a character variable gets passed on. We also added a little bit of new documentation in the vignette.
The NEWS entry for this release follows.
Changes in RcppSpdlog version 0.0.10 (2022-11-17)
Support variadic templates with fmt::format
Add R formatting helper which converts arguments to character taking advantage of variadic template logger: fmt logging from R
Expand vignette
Courtesy of my CRANberries, there is also a diffstat report. More detailed information is on the RcppSpdlog page, or the package documention site.
If you like this or other open-source work I do, you can 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.
Armadillo is a powerful and expressive C++ template library for linear algebra and scientific computing. It aims towards a good balance between speed and ease of use, has a syntax deliberately close to Matlab, and is useful for algorithm development directly in C++, or quick conversion of research code into production environments. RcppArmadillo integrates this library with the R environment and language–and is widely used by (currently) 1027 packages other packages on CRAN, downloaded 26.9 million times (per the partial logs from the cloud mirrors of CRAN), and the CSDA paper (preprint / vignette) by Conrad and myself has been cited 503 times according to Google Scholar.
This release reflect as new upstream bugfix release 11.4.2 made recently by Conrad. To accomodate CRAN and their preference for at most a release per month, we held it back since the 11.4.0 release early October. As we usually do, we generally update once upstream Armadillo releases are made. When we do not immediately release to CRAN (in order to lower the release cadence), we make those “interim” releases available via GitHub source and the Rcpp drat repo.
This release also brings a rearranged, and as we think, simplified layout of the header files. All existing locations are still supported but we will be starting a (very patient and slow) transition at some point.
The full set of changes (since the last CRAN release 0.11.4.0.1) follows.
Changes in RcppArmadillo version 0.11.4.2.1 (2022-11-08)
Upgraded to Armadillo release 11.4.2 (Ship of Theseus)
- more robust handling of corner cases in multi-threaded contexts
Internal header organisation with new sub-directories while providing full compatibility via existing paths (#395 #396)
Changes in RcppArmadillo version 0.11.4.1.0 (2022-10-10) (GitHub Only)
Upgraded to Armadillo release 11.4.1 (Ship of Theseus)
fix data race in
Cube::slice()
workarounds for false warnings emitted by GCC 12 when compiling with
FORTIFY_SOURCE
enabled (already in RcppArmadillo 0.11.4.0.1 too)
Courtesy of my CRANberries, there is a diffstat report relative to previous release. More detailed information is on the RcppArmadillo page. Questions, comments etc should go to the rcpp-devel mailing list off the R-Forge page.
If you like this or other open-source work I do, you can 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 new release 0.2.12 of RcppCCTZ is now on CRAN.
RcppCCTZ uses Rcpp to bring CCTZ to R. CCTZ is a C++ library for translating between absolute and civil times using the rules of a time zone. In fact, it is two libraries. One for dealing with civil time: human-readable dates and times, and one for converting between between absolute and civil times via time zones. And while CCTZ is made by Google(rs), it is not an official Google product. The RcppCCTZ page has a few usage examples and details. This package was the first CRAN package to use CCTZ; by now several others packages (four the last time we counted) include its sources too. Not ideal, but beyond our control.
This version adds support for NA
values when parsing, and updates GitHub Action.
Changes in version 0.2.12 (2022-11-06)
Support NA values in numerical or character input
GitHub Actions were updated to checkout version 3.
Courtesy of my CRANberries, there is also a diffstat to the previous version. More details are at the RcppCCTZ page; code, issue tickets etc at the GitHub repository.
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 new release 0.3.3.9.3 of RcppEigen arrived on CRAN moments ago (and just went to Debian). Eigen is a C++ template library for linear algebra: matrices, vectors, numerical solvers, and related algorithms.
This update is again mostly maintenance. To accomodate one small aspect of the Fortran interface, we now require R 3.6.0 or later. Jonah Gabry spotted a really old typo and fixed it. The fastLm
support code now uses the unabbreviated df.residual
. We accomodated clang-15
in one signature as is common with many recent uploads, and also updated one aspect of GitHub Actions.
And once again as we said for the last four releases:
One additional and recent change was the accomodation of a recent CRAN Policy change to not allow
gcc
orclang
to mess with diagnostic messages. A word of caution: this may make your compilation of packages using RcppEigen very noisy so consider adding-Wno-ignored-attributes
to the compiler flags added in your~/.R/Makevars
.
We still find this requirement rather annoying. Eigen is only usable if you set, say,
-Wno-deprecated-declarations -Wno-parentheses -Wno-ignored-attributes -Wno-unused-function
asoptions in
~/.R/Makevars`. But CRAN makes the rules. Maybe if a few of us gently and politely nudge them they may relent one day. One can only hope.
The complete NEWS
file entry follows.
Changes in RcppEigen version 0.3.3.9.3 (2022-11-04)
The dependency on R is now versioned to 3.6.0 or later for support for
USE_FC_LEN_T
from Fortran.An old example typo was corrected (Jonah Gabry in #114).
The
fastLm
methods now referencedf.residual
by its full name (Closes #115).A function prototype was updated for
clang-15
.GitHub Actions were updated to checkout version 3.
Courtesy of CRANberries, there is also a diffstat report for the most recent release.
If you like this or other open-source work I do, you can 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 brand-new version 0.0.9 of RcppSpdlog got onto CRAN overnight. RcppSpdlog bundles spdlog, a wonderful header-only C++ logging library with all the bells and whistles you would want that was written by Gabi Melman, and also includes fmt by Victor Zverovich.
This release contains two changes. First, we extend usability by offering both a set of simple R functions for logging from R, and a matching set of functions at the C++ level that are directly callable (and exported) from this package (so that client packages do not need to compile). Both these changes are described (as sections seven and eight) in the vignette. Second, while we were working on this Gabi released version 1.11.0 upstream so we included this as well.
The NEWS entry for this release follows.
Changes in RcppSpdlog version 0.0.9 (2022-11-04)
Add both an R and an C++ interface to
spdlog
Update GitHub Actions to checkout@v3
Add a shorter aliased namespace for C++
Upgraded to upstream releases spdlog 1.11.0
Courtesy of my CRANberries, there is also a diffstat report. More detailed information is on the RcppSpdlog page, or the package documention site.
If you like this or other open-source work I do, you can 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 new maintenance release 0.0.6 of RcppXts is now on CRAN. The RcppXts package demonstrates how to access the export C API of xts which we contributed a looong time ago.
This release, like so many these days, was triggered by clang-15
wanting to see a void
in an otherwise argument-less signature. We also updated a GitHub Action to avoid another nag from there.
The NEWS entries follow.
Changes in version 0.0.6 (2022-08-05)
One function prototype was updated for
clang-15
.GitHub Actions were updated to checkout version 3.
Courtesy of my CRANberries, there is also a diffstat report for this release. A bit more information about the package is available here as well as 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 new minor release 0.2.2 of our RcppRedis package arrived on CRAN this evening. RcppRedis is one of several packages connecting R to the fabulous Redis in-memory datastructure store (and much more). RcppRedis does not pretend to be feature complete, but it may do some things faster than the other interfaces, and also offers an optional coupling with MessagePack binary (de)serialization via RcppMsgPack. The package has carried production loads for several years now.
This packages now brings a neat enhancement to the real-time data plotter code (and example) I have been using with for a while now. Paul Murrell kindly suggested dev.hold()
and dev.flush()
when I inquired how to minimize ‘flicker’ from frequent updated. And this is perfect. I can now keep several data displays ‘on’ during market hours without being distracted by ‘flicker’. It just updates, smooth as silk. Also included in the release are the usual two updates so en vogue these days: a (sole) sprinkling of void
to appease clang-15
, and an update the GitHub Action for checkout. Both silence some nags we would rather not see.
The detailed changes list follows.
Changes in version 0.2.2 (2022-10-31)
Thanks to a suggestion by Paul Murrell, the real-time chart demo now uses dev.hold() and.flush() for flicker-free updates.
One function prototype was updated for
clang-15
.GitHub Actions were updated to checkout version 3.
Courtesy of CRANberries, there is also a diffstat report for this release. More information is on the RcppRedis page.
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 new release 0.3.12 of RcppGSL is now on CRAN. The RcppGSL package provides an interface from R to the GNU GSL by relying on the Rcpp package.
This release accomodates, just like so many other releases this week, the more stringent views of clang-15
about what a correct function prototype is. While we were at it, an updatet to GitHub Actions was made as well.
The NEWS entry follows:
Changes in version 0.3.12 (2022-10-30)
Two function prototypes were updated for
clang-15
.GitHub Actions were updated to checkout version 3.
Courtesy of CRANberries, a summary of changes in the most recent release is also available.
More information is on the RcppGSL page. Questions, comments etc should go to the issue tickets 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 minor maintenance release for the RcppBDT package is now on CRAN.
The RcppBDT package is an early adopter of Rcpp and was one of the first packages utilizing Boost and its Date_Time library. The now more widely-used package anytime is a direct descentant of RcppBDT.
This release accomodates, just like so many other releases this week, the more stringent views of clang-15
about what a correct function prototype is. While we were at it, an updatet to GitHub Actions was made as well.
The NEWS entry follows:
Changes in version 0.2.6 (2022-10-30)
A function prototype was updated for
clang-15
.GitHub Actions were updated to checkout version 3.
Courtesy of my CRANberries, there is also a diffstat report for this release.
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 minor maintenance release, now at version 0.0.20, of RcppAnnoy has arrived on CRAN. RcppAnnoy is the Rcpp-based R integration of the nifty Annoy library by Erik Bernhardsson. Annoy is a small and lightweight C++ template header library for very fast approximate nearest neighbours—originally developed to drive the Spotify music discovery algorithm.
This release only contains internal changes to please, respectively clang-15
and (macOS) Xcode 14
(one of which PRed upstream too). No changes in package functionality. Detailed changes follow.
Changes in version 0.0.20 (2022-10-27)
- Minor tweaks to appease
clang-15
andXcode 14
Courtesy of my CRANberries, there is also a diffstat report for this release.
If you like this or other open-source work I do, you can 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 minor release of RcppQuantuccia arrived on CRAN today. RcppQuantuccia started from the Quantuccia header-only subset / variant of QuantLib which it brings it to R. This project validated the idea of making the calendaring functionality of QuantLib available in a more compact and standalone project – which we now do with qlcal which can be seen as a successor to this.
This release merely updates a source file to proper encoding as clang++-15
would otherwise warn.
The complete list changes for this release follows.
Changes in version 0.1.1 (2022-10-19)
Minor code reorganization splitting off
calendars.cpp
Convert the Argentinian calendar sources files as utf-8 to appease
clang++-15
Advertise the qlcal package as an alternative
Courtesy of CRANberries, there is also a diffstat report relative to the previous release. More information is on the RcppQuantuccia page. Issues and bugreports should go to the GitHub issue tracker.
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.
The RcppSimdJson package was just updated to release 0.1.8 today.
RcppSimdJson wraps the fantastic and genuinely impressive simdjson library by Daniel Lemire and collaborators. Via very clever algorithmic engineering to obtain largely branch-free code, coupled with modern C++ and newer compiler instructions, it results in parsing gigabytes of JSON parsed per second which is quite mindboggling. The best-case performance is ‘faster than CPU speed’ as use of parallel SIMD instructions and careful branch avoidance can lead to less than one cpu cycle per byte parsed; see the video of the talk by Daniel Lemire at QCon.
This release simply changes one statement to not trigger a warning under clang++-14
.
The very short NEWS entry for this release follows.
Changes in version 0.1.8 (2022-10-18)
- Use the '||' operator instead of '|' on a set of booleans to appease 'clang-14'.
Courtesy of 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.
Armadillo is a powerful and expressive C++ template library for linear algebra and scientific computing. It aims towards a good balance between speed and ease of use, has a syntax deliberately close to Matlab, and is useful for algorithm development directly in C++, or quick conversion of research code into production environments. RcppArmadillo integrates this library with the R environment and language–and is widely used by (currently) 1023 packages other packages on CRAN, downloaded 26.4 million times (per the partial logs from the cloud mirrors of CRAN), and the CSDA paper (preprint / vignette) by Conrad and myself has been cited 497 times according to Google Scholar.
This release reflect as new upstream release 11.4.0 Conrad made recently. It turns out that it triggered warnings under g++-12
for about five packages in the fortify mode default for Debian builds. Conrad then kindly addressed this with a few fixes.
The full set of changes (since the last CRAN release 0.11.2.4.0) follows.
Changes in RcppArmadillo version 0.11.4.0.1 (2022-10-01
Upgraded to Armadillo release 11.4.0 (Ship of Theseus)
faster handling of compound expressions by
sum()
extended
pow()
with various forms of element-wise power operationsadded
find_nan()
to find indices of NaN elementsAlso applied fixes to avoid g++-12 warnings affecting just a handful of CRAN packages.
Courtesy of my CRANberries, there is a diffstat report relative to previous release. More detailed information is on the RcppArmadillo page. Questions, comments etc should go to the rcpp-devel mailing list off the R-Forge page.
If you like this or other open-source work I do, you can 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.
Armadillo is a powerful and expressive C++ template library for linear algebra and scientific computing. It aims towards a good balance between speed and ease of use, has a syntax deliberately close to Matlab, and is useful for algorithm development directly in C++, or quick conversion of research code into production environments. RcppArmadillo integrates this library with the R environment and language–and is widely used by (currently) 1016 packages other packages on CRAN, downloaded 26.2 million times (per the partial logs from the cloud mirrors of CRAN), and the CSDA paper (preprint / vignette) by Conrad and myself has been cited 493 times according to Google Scholar.
This new release (made yesterday) brings three changes. First, it updates the release to the upstream 11.2.4 bugfix release made days ago by Conrad. Second, it contains support for the deprecation transition we are managing in issue #391. In short, the (convenient but non-standard) initialization via use of <<
has been deprecated upstream. Until all packages are updated, we override this in the RcppArmadillo but aim to become ‘compliant’. Out of the over 1000 packages, a mere 25 need small adjustments. I reached out email and PRs, and the response has been great. Eight packages are already updated on CRAN, and several others have already in integrated or merged the change. Lastly, Conrad pointed out that the fastLm()
example and application can be written more concisely by using arma::dot()
.
The full set of changes (since the last CRAN release 0.11.2.3.1) follows.
Changes in RcppArmadillo version 0.11.2.4.0 (2022-09-09)
Upgraded to Armadillo release 11.2.4 (Classic Roast)
- fix handling of
std::move()
involving matrices constructed with auxiliary memoryIn the
fastLm()
examples, usearma::dot()
to compute to the inner product (as proposed by Conrad), plus small editsSupport optional
#define
namedRCPPARMADILLO_FORCE_DEPRECATE
to suppress use ofARMA_IGNORE_DEPRECATED_MARKER
permitting use and development under deprecation
Courtesy of my CRANberries, there is a diffstat report relative to previous release. More detailed information is on the RcppArmadillo page. Questions, comments etc should go to the rcpp-devel mailing list off the R-Forge page.
If you like this or other open-source work I do, you can 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.
Armadillo is a powerful and expressive C++ template library for linear algebra and scientific computing. It aims towards a good balance between speed and ease of use, has a syntax deliberately close to Matlab, and is useful for algorithm development directly in C++, or quick conversion of research code into production environments. RcppArmadillo integrates this library with the R environment and language–and is widely used by (currently) 1005 packages other packages on CRAN (as celebrated in this blog post on passing 1000 packages from just four days ago), downloaded nearly 26 million times (per the partial logs from the cloud mirrors of CRAN), and the CSDA paper (preprint / vignette) by Conrad and myself has been cited 488 times according to Google Scholar.
This release brings together two distinct changes. First, it updates the relese from upstream 11.2.0 (and CRAN 0.11.2.0.0 released a few weeks ago) to the now current 11.2.3 release by Conrard (given that more than four weeks have passed so that we do not surpass CRAN’s desired cadence of ‘releases no more than once a month’). The changeset includes a few small refinements (see below), it also includedes a deprecation for initialization for which I will need to reach out to a few packages for whom this triggers a deprecation warning. And speaking of deprecation, the other reason for this release is the desire by the Matrix
package to phase out a few older conversions (or casts
in C/C++ lingo) which we accomodated.
The full set of changes (since the last CRAN release 0.11.2.0.0) follows.
Changes in RcppArmadillo version 0.11.2.3.1 (2022-08-16)
Accomodate upcoming Matrix 1.4-2 deprecation for conversion (Dirk in #387)
CRAN release with small upstream changes in Armadillo 11.2.1,2,3 made since the last CRAN release 0.11.2.0.0 (Dirk in #383, #384 and #386)
Undefine
arma_deprecated
warning as it affects a number of CRAN packages which will likely need a small transitionChanges in RcppArmadillo version 0.11.2.3.0 (2022-07-12) (GitHub Only)
Upgraded to Armadillo release 11.2.3 (Classic Roast)
- fix
Cube::insert_slices()
to acceptCube::slice()
as inputChanges in RcppArmadillo version 0.11.2.2.0 (2022-07-04) (GitHub Only)
Upgraded to Armadillo release 11.2.2 (Classic Roast)
- fix incorrect and/or slow convergence in single-threaded versions of
kmeans()
,gmm_diag::learn()
,gmm_full::learn()
Changes in RcppArmadillo version 0.11.2.1.0 (2022-06-28) (GitHub Only)
Upgraded to Armadillo release 11.2.1 (Classic Roast)
old style matrix initialisation via the
<<
operator will now emit a compile-time deprecation warninguse of the old and inactive
ARMA_DONT_PRINT_ERRORS
option will now emit a compile-time deprecation warningthe option
ARMA_WARN_LEVEL
can be used instead
Courtesy of my CRANberries, there is a diffstat report relative to previous release. More detailed information is on the RcppArmadillo page. Questions, comments etc should go to the rcpp-devel mailing list off the R-Forge page.
If you like this or other open-source work I do, you can 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.
It is with a mix of pride and joy, but also some genuine astonishment and amazement, that we can share that the counter of reverse dependencies at CRAN for our RcppArmadillo package for R just crossed 1000 packages [1]:
Conrad actually posted this a few weeks ago, by my count we were then still a few packages shy. In any event, having crossed this marker this summer, either then or now, and after more than a dozen years of working on the package is a really nice moment. Google Scholar counts nearly 500 citations for our CSDA paper (also this vignette), and that ratio of nearly a citation for every two packages used is certainly impressive. We have had the pleasure of working with so many other researchers and scientists using RcppArmadillo. Its combination of performance (C++, after all, and heavily tuned) and ease-of-use (inspired by ‘another popular flavour for matrix computing’ that is however mostly interpreted) makes for a powerful package, and we are delighted to see it used so widely.
Working on this with Conrad has been excellent. The (upstream) package (now at this GitLab repo) has received numerous releases at a rate that is in fact so high that we now ‘slow it down’ to not exceed a monthly cadence of uploads to CRAN. But the package should always be in release condition at its GitHub repo, and is frequently also installable in ‘rc’ versions via the Rcpp drat repo.
So with that, a big Thank You! to Conrad, to Romain for all the early work laying the package foundations, and to all the users of (Rcpp)Armadillo for helping us along with testing, suggestions, extensions, and bug reports. Keep’em coming!
If you like this or other open-source work I do, you can now sponsor me at GitHub.
[1] The code snippet shows that we remove some possible duplicates in the count (mostly for the total of packages). This is a correction we use across packages for consistency. It does not have an effect for RcppArmadillo.
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 release 0.2.11 of RcppCCTZ is now on CRAN.
RcppCCTZ uses Rcpp to bring CCTZ to R. CCTZ is a C++ library for translating between absolute and civil times using the rules of a time zone. In fact, it is two libraries. One for dealing with civil time: human-readable dates and times, and one for converting between between absolute and civil times via time zones. And while CCTZ is made by Google(rs), it is not an official Google product. The RcppCCTZ page has a few usage examples and details. This package was the first CRAN package to use CCTZ; by now four others packages include its sources too. Not ideal, but beyond our control.
This version updates the include headers used in the interface API header thanks to a PR by Jing Lu, updates to upstream changes, and switched r-ci CI to r2u.
Changes in version 0.2.11 (2022-08-06)
Courtesy of my CRANberries, there is also a diffstat to the previous version. More details are at the RcppCCTZ page; code, issue tickets etc at the GitHub repository.
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 full eight and half years (!!) since its 0.0.4 release, version 0.0.5 of RcppXts is now on CRAN. The RcppXts package demonstrates how to access the export C API of xts which we contributed a looong time ago.
This release contains an accumulated small set of updates made as the CRAN Policies evolved. We now register and use the shared library routines (updates in both src/init.c
and NAMESPACE
), turned on continuous integration, switched it from the now disgraces service to another, adopted our portable r-ci along with r2, added badges to the README.md, updated to https URLs, and made sure the methods
package (from base R) was actually imported (something Rcpp has a need for at startup). That latter part now triggered a recent email from the CRAN maintainers which prompted this release.
The NEWS entries follow.
Changes in version 0.0.5 (2022-08-05)
Courtesy of my CRANberries, there is also a diffstat report for this release. A bit more information about the package is available here as well as 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.
The Rcpp team is please to announce the newest release 1.0.9 of Rcpp which hit CRAN late yesterday, and has been uploaded to Debian as well. Windows and macOS builds should appear at CRAN in the next few days, as will builds in different Linux distribution and of course at r2u. The release was prepared om July 2, but it took a few days to clear a handful of spurious errors as false positives with CRAN — this can when the set of reverse dependencies is so large, and the CRAN team remains busy. This release continues with the six-months cycle started with release 1.0.5 in July 2020. (This time, CRAN had asked for an interim release to silence a C++ warning; we then needed a quick follow-up to tweak tests.) As a reminder, interim ‘dev’ or ‘rc’ releases should generally be available in the Rcpp drat repo. These rolling release tend to work just as well, and are also fully tested against all reverse-dependencies.
Rcpp has become the most popular way of enhancing R with C or C++ code. Right now, around 2559 packages on CRAN depend on Rcpp for making analytical code go faster and further, along with 252 in BioConductor. On CRAN, 13.9% of all packages depend (directly) on CRAN, and 58.5% of all compiled packages do. From the cloud mirror of CRAN (which is but a subset of all CRAN downloads), Rcpp has been downloaded 61.5 million times.
This release is incremental and extends Rcpp with a number of small improvements all detailed in the NEWS file as well as below. We want to highlight the external contributions: a precious list tag is cleared on removal, and a move constructor and assignment for strings has been added (thanks to Dean Scarff), and (thanks to Bill Denney and Marco Colombo) two minor errors are corrected in the vignette documentation. A big Thank You! to everybody who contributed pull request, opened or answered issues, or questions at StackOverflow or on the mailing list.
The full list of details follows.
Changes in Rcpp hotfix release version 1.0.9 (2022-07-02)
Changes in Rcpp API:
Accomodate C++98 compilation by adjusting attributes.cpp (Dirk in #1193 fixing #1192)
Accomodate newest compilers replacing deprecated
std::unary_function
andstd::binary_function
withstd::function
(Dirk in #1202 fixing #1201 and CRAN request)Upon removal from precious list, the tag is set to null (Iñaki in #1205 fixing #1203)
Move constructor and assignment for strings have been added (Dean Scarff in #1219).
Changes in Rcpp Documentation:
Changes in Rcpp Deployment:
Accomodate four digit version numbers in unit test (Dirk)
Do not run complete test suite to limit test time to CRAN preference (Dirk in #1206)
Small updates to the CI test containers have been made
Some of changes also applied to an interim release 1.0.8.3 made for CRAN on 2022-03-14.
Thanks to my CRANberries, you can also look at a diff to the previous release. Questions, comments etc should go to the rcpp-devel mailing list off the R-Forge page. Bugs reports are welcome at the GitHub issue tracker as well (where one can also search among open or closed issues); questions are also welcome under rcpp
tag at StackOverflow which also allows searching among the (currently) 2886 previous questions.
If you like this or other open-source work I do, you can 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.
Armadillo is a powerful and expressive C++ template library for linear algebra and scientific computing. It aims towards a good balance between speed and ease of use, has a syntax deliberately close to Matlab, and is useful for algorithm development directly in C++, or quick conversion of research code into production environments. RcppArmadillo integrates this library with the R environment and language–and is widely used by (currently) 991 other packages on CRAN, downloaded over 25 million times (per the partial logs from the cloud mirrors of CRAN), and the CSDA paper (preprint / vignette) by Conrad and myself has been cited 476 times according to Google Scholar.
This release brings a second upstream fix by Conrad in the release series 11.*. We once again tested this very rigorously via a complete reverse-depedency check (for which results are always logged here). It so happens that CRAN then had a spurious error when re-checking on upload, and it took a fews days to square this as everybody remains busy – but the release prepared on June 10 is now on CRAN.
The full set of changes (since the last CRAN release 0.11.1.1.0) follows.
Changes in RcppArmadillo version 0.11.2.0.0 (2022-06-10)
Upgraded to Armadillo release 11.2 (Classic Roast)
faster handling of sparse submatrix column views by
norm()
,accu()
,nonzeros()
extended
randu()
andrandn()
to allow specification of distribution parametersinternal refactoring, leading to faster compilation times
Courtesy of my CRANberries, there is a diffstat report relative to previous release. More detailed information is on the RcppArmadillo page. Questions, comments etc should go to the rcpp-devel mailing list off the R-Forge page.
If you like this or other open-source work I do, you can 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 new version of the RcppAPT package with the R interface to the C++ library behind the awesome apt
, apt-get
, apt-cache
, … commands and their cache powering Debian, Ubuntu and the like arrived on CRAN earlier today.
RcppAPT allows you to query the (Debian or Ubuntu) package dependency graph at will, with build-dependencies (if you have deb-src
entries), reverse dependencies, and all other goodies. See the vignette and examples for illustrations.
This release updates the code to the Apt 2.5.0 release this makes. It makes a cleaner distinction between public and private components of the API. We adjusted one access point to a pattern we already used, and while at it, simplified some of the transition from the pre-Apt 2.0.0 interface. No new features. The NEWS entries follow.
Changes in version 0.0.9 (2022-05-25)
Simplified and standardized to only use public API
No longer tests and accomodates pre-Apt 2.0 API
Courtesy of my CRANberries, there is also a diffstat report for this release. A bit more information about the package is available here as well as 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.
Armadillo is a powerful and expressive C++ template library for linear algebra and scientific computing. It aims towards a good balance between speed and ease of use, has syntax deliberately close to Matlab and is useful for algorithm development directly in C++, or quick conversion of research code into production environments. RcppArmadillo integrates this library with the R environment and language–and is widely used by (currently) 978 other packages on CRAN, downloaded over 24 million times (per the partial logs from the cloud mirrors of CRAN), and the CSDA paper (preprint / vignette) by Conrad and myself has been cited 469 times according to Google Scholar.
This release brings a first new upstream fix in the new release series 11.*. In particular, treatment of ill-conditioned matrices is further strengthened. We once again tested this very rigorously via three different RC releases each of which got a full reverse-dependencies run (for which results are always logged here). A minor issue with old g++
compilers was found once 11.1.0 was tagged to this upstream release is now 11.1.1. Also fixed is an OpenMP setup issue where Justin Silverman noticed that we did not propagate the -fopenmp
setting correctly.
The full set of changes (since the last CRAN release 0.11.0.0.0) follows.
Changes in RcppArmadillo version 0.11.1.1.0 (2022-05-15)
Upgraded to Armadillo release 11.1.1 (Angry Kitchen Appliance)
added
inv_opts::no_ugly
option toinv()
andinv_sympd()
to disallow inverses of poorly conditioned matricesmore efficient handling of rank-deficient matrices via
inv_opts::allow_approx
option ininv()
andinv_sympd()
better detection of rank deficient matrices by
solve()
faster handling of symmetric and diagonal matrices by
cond()
The
configure
script again propagates the'found' case again, thanks to Justin Silverman for the heads-up and suggested fix (Dirk and Justin in #376 and #377 fixing #375).Changes in RcppArmadillo version 0.11.0.1.0 (2022-04-14)
Upgraded to Armadillo release 11.0.1 (Creme Brulee)
- fix miscompilation of
inv()
andinv_sympd()
functions when usinginv_opts::allow_approx
andinv_opts::tiny
options
Courtesy of my CRANberries, there is a diffstat report relative to previous release. More detailed information is on the RcppArmadillo page. Questions, comments etc should go to the rcpp-devel mailing list off the R-Forge page.
If you like this or other open-source work I do, you can 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 month after the major release 0.2.0 bringing pub/sub and other goodies to our RcppRedis package, a new version 0.2.1 arrived on CRAN yesterday. RcppRedis is one of several packages connecting R to the fabulous Redis in-memory datastructure store (and much more). RcppRedis does not pretend to be feature complete, but it may do some things faster than the other interfaces, and also offers an optional coupling with MessagePack binary (de)serialization via RcppMsgPack. The package has carried production loads for several years now.
This release updated the rredis
suggestion by adding an Additional_repositories
entry as Bryan decided to retire the rredis
package. You can still install it via install.packages("rredis")
by setting the addtional repo, for example repos=c("https://ghrr.github.io/drat", getOption("repos"))
as documented in package and at our ghrr drat repo.
The detailed changes list follows.
Changes in version 0.2.1 (2022-04-09)
The
rredis
package can be installed via the repo listed inAdditional_repositories
; thepubsub.R
test file makesrredis
optional and conditional; all demos now note that the optionalrredis
package is installable via thedrat
listed inAdditional_repositories
.The fallback-compilation of
hiredis
has been forced to override compilation flags because CRAN knows better than upstream.The GLOBEX pub/sub example has small updates.
Courtesy of CRANberries, there is also a diffstat report for this release. More information is on the RcppRedis page.
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 new release 0.3.3.9.2 of RcppEigen arrived on CRAN today (and already went to Debian). Eigen is a C++ template library for linear algebra: matrices, vectors, numerical solvers, and related algorithms.
This update was (as it happens) requested by CRAN as R aims to bring the Fortran / C interface to best practices. We call dgesdd
twice in one example and use a character argument, and the-powers-that-be now prefer better control over that character argument. So we did. Another change, kindly contributed by Mikael Jagan, switches row and column indices for R_xlen_t
allowing for greater range. Plus some more small tweaks mostly to CI, see the NEWS entry below for full details.
And again as we said for the previous three releases:
One additional and recent change was the accomodation of a recent CRAN Policy change to not allow
gcc
orclang
to mess with diagnostic messages. A word of caution: this may make your compilation of packages using RcppEigen very noisy so consider adding-Wno-ignored-attributes
to the compiler flags added in your~/.R/Makevars
.
We still find this requirement rather annoying. Eigen is only usable if you set, say,
-Wno-deprecated-declarations -Wno-parentheses -Wno-ignored-attributes -Wno-unused-function
asoptions in
~/.R/Makevars`. But CRAN makes the rules. Maybe if a few of us gently and politely nudge them they may relent one day. One can only hope.
The complete NEWS
file entry follows.
Changes in RcppEigen version 0.3.3.9.2 (2022-04-05)
Added test coverage in continuous integration
Added new tests to increase test coverage
Small improvement to the
RcppEigen.package.skeleton()
codeSmall updates and edits to
README.md
andinst/CITATION
Use
R_xlen_t
for vector rows and columns (by Mikael Jagan)Support
USE_FC_LEN_T
by addingFCONE
to two dgesdd calls
Courtesy of CRANberries, there is also a diffstat report for the most recent release.
If you like this or other open-source work I do, you can 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 new version 0.0.8 of RcppSpdlog is now on CRAN. RcppSpdlog bundles spdlog, a wonderful header-only C++ logging library with all the bells and whistles you would want that was written by Gabi Melman, and also includes fmt by Victor Zverovich.
This release brings a new upstream release 1.10.0 of spdlog. The (minimal) NEWS entry for this release follows.
Changes in RcppSpdlog version 0.0.8 (2022-04-04)
- Upgraded to upstream releases spdlog 1.10.0
Courtesy of my CRANberries, there is also a diffstat report. More detailed information is on the RcppSpdlog page, or the package documention site.
If you like this or other open-source work I do, you can 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.
Armadillo is a powerful and expressive C++ template library for linear algebra aiming towards a good balance between speed and ease of use with a syntax deliberately close to a Matlab. RcppArmadillo integrates this library with the R environment and language–and is widely used by (currently) 972 other packages on CRAN, downloaded over 24 million times (per the partial logs from the cloud mirrors of CRAN), and the CSDA paper (preprint / vignette) by Conrad and myself has been cited 465 times according to Google Scholar.
This release brings a new upstream release 11.0.0. We tested this very rigorously via three different RC release each of which got a full reverse-dependencies run (for which results are always logged here).
The full set of changes (since the last CRAN release 0.10.8.1.0) follows.
Changes in RcppArmadillo version 0.11.0.0 (2022-04-04)
Upgraded to Armadillo release 11.0.0 (Creme Brulee)
added variants of
inv()
andinv_sympd()
that provide rcond (reciprocal condition number)expanded
inv()
andinv_sympd()
with optionsinv_opts::tiny
andinv_opts::allow_approx
stricter handling of singular matrices by
inv()
andinv_sympd()
stricter handling of non-sympd matrices by
inv()
andinv_sympd()
stricter handling of non-finitie matrices by
pinv()
more robust handling of rank deficient matrices by
solve()
faster handling of diagonal matrices by
rcond()
changed
eigs_sym()
andeigs_gen()
to use higher quality RNG
quantile()
andmedian()
will now throw an exception if given matrices/vectors have NaN elementsworkaround for yet another bug in Intel MKL
Until May 2022, protect correction to Field behavior via define of
RCPP_ARMADILLO_FIX_Field
If a LAPACK installation with missing complex routines is found (as e.g. Ubuntu using 3.9.0) then the LAPACK unit test is skipped.
Changes in RcppArmadillo version 0.10.8.2.0 (2022-02-01)
Upgraded to Armadillo release 10.8.2 (Realm Raider)
- fix potential speed regression in
pinv()
andrank()
Courtesy of my CRANberries, there is a diffstat report relative to previous release. More detailed information is on the RcppArmadillo page. Questions, comments etc should go to the rcpp-devel mailing list off the R-Forge page.
If you like this or other open-source work I do, you can 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 minor maintenance release for the RcppBDT package is now on CRAN.
The RcppBDT package is an early adopter of Rcpp and was one of the first packages utilizing Boost and its Date_Time library. The now more widely-used package anytime is a direct descentant of RcppBDT. Thanks again for the heads-up!
This release mostly deals with a one-definition rule violation detected by link-time optimisation (which can be enable when configuring R itself at build time with --enable-lto
). I confused myself into thinking Rcpp Modules may be at fault, but Iñaki was a little more awake than myself and noticed that I only needed to carry the (common) header RcppBDT.h
to the file toPOSIXct.cpp
added last summer.
The NEWS entry follows:
Changes in version 0.2.5 (2022-03-29)
Ensure consistent compilation by ensuring
RcppBDT.h
is included in all files, this addresses an LTO/ODR issueCorrect one declaration in
init.c
Minor additional cleanups
Courtesy of my CRANberries, there is also a diffstat report for this release.
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 minor maintenance release of the RcppCNPy package arrived on CRAN three days ago, but we skipped announcing it right then.
RcppCNPy provides R with read and write access to NumPy files thanks to the cnpy library by Carl Rogers along with Rcpp for the glue to R.
One of the vignettes created an issue at CRAN with one of the Python modules used, so we simply switched to pre-made vignettes just as we do for a few other packages. Other small changes that had accumulated since the previous release were a new section in the reticulate vignette as well as some more documentation on types as well as some updates to continuous integration and bdages.
Changes in version 0.2.11 (2022-03-24)
The reticulate vignette has new section on 3d-arrays.
Added clarification to the manual page that the default types are 32-bit integer and 64-bit double (as we are working with R here).
Several updates have been made to the CI system; it now runs r-ci.
The README.md was updated with some new badges.
The vignettes are now pre-made to avoid any external dependencies.
CRANberries also provides a diffstat report for the latest release. As always, feedback is welcome and the best place to start a discussion may be the GitHub issue tickets page.
This post by Dirk Eddelbuettel originated on his Thinking inside the box blog. Please report excessive re-aggregation in third-party for-profit settings.
An even newer hot-fix release 1.0.8.3 of Rcpp follows the 1.0.8.2 release of a few days ago and got to CRAN this morning. A Debian upload will follow shortly, and Windows and macOS binaries will appear at CRAN in the next few days. This release again breaks with the six-months cycle started with release 1.0.5 in July 2020. When we addressed the CRAN request in 1.0.8.2 we forgot to dial testing down to their desired level (as ‘three-part’ release numbers do automagically for us, whereas ‘four-part’ do not). This is now taken care of, along with the hot-fix that was in 1.0.8.2 already.
Rcpp has become the most popular way of enhancing R with C or C++ code. Right now, around 2522 packages on CRAN depend on Rcpp for making analytical code go faster and further, along with 239 in BioConductor.
The full list of details for these two interim releases (and hence all changes accumulated since the last regular release, 1.0.8 in January) follows.
Changes in Rcpp hotfix release version 1.0.8.3 (2022-03-14)
Changes in Rcpp API:
Changes in Rcpp Documentation:
Changes in Rcpp Deployment:
Accomodate four digit version numbers in unit test (Dirk)
Do not run complete test suite to limit test time to CRAN preference (Dirk)
Thanks to my CRANberries, you can also look at a diff to the previous release. Questions, comments etc should go to the rcpp-devel mailing list off the R-Forge page. Bugs reports are welcome at the GitHub issue tracker as well (where one can also search among open or closed issues); questions are also welcome under rcpp
tag at StackOverflow which also allows searching among the (currently) 2843 previous questions.
If you like this or other open-source work I do, you can 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 new release 0.3.11 of RcppGSL is now on CRAN. The RcppGSL package provides an interface from R to the GNU GSL by relying on the Rcpp package.
This release updates src/Makefile.ucrt
to use the RTools42 libraries. Details follow from the NEWS file.
Changes in version 0.3.11 (2022-03-12)
The UCRT Makefile was updated
Minor edits to README.md were made
Courtesy of CRANberries, a summary of changes in the most recent release is also available.
More information is on the RcppGSL page. Questions, comments etc should go to the issue tickets 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 new hot-fix release 1.0.8.2 of Rcpp just got to CRAN. It will also be uploaded to Debian shortly, and Windows and macOS binaries will appear at CRAN in the next few days. This release breaks with the six-months cycle started with release 1.0.5 in July 2020 as CRAN desired an update to silence nags from the newest clang
version which turned a little loud over a feature deprecated in C++11 (namely std::unary_function()
and std::binary_function()
). This was easy to replace with std::function()
which we did. The release also contains a minor bugfix relative to 1.0.8 and C++98 builds, and minor correction to one pdf vignette. The release was fully tested by us and CRAN as usual against all reverse dependencies.
Rcpp has become the most popular way of enhancing R with C or C++ code. Right now, around 2519 packages on CRAN depend on Rcpp for making analytical code go faster and further, along with 239 in BioConductor.
The full list of details for this interim release follows.
Changes in Rcpp hotfix release version 1.0.8.2 (2022-03-10)
Changes in Rcpp API:
Changes in Rcpp Documentation:
Changes in Rcpp Deployment:
- Accomodate four digit version numbers in unit test (Dirk)
Thanks to my CRANberries, you can also look at a diff to the previous release. Questions, comments etc should go to the rcpp-devel mailing list off the R-Forge page. Bugs reports are welcome at the GitHub issue tracker as well (where one can also search among open or closed issues); questions are also welcome under rcpp
tag at StackOverflow which also allows searching among the (currently) 2843 previous questions.
If you like this or other open-source work I do, you can 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 new major release of RcppRedis arrived on CRAN today. RcppRedis is one of several packages connecting R to the fabulous Redis in-memory datastructure store (and much more). RcppRedis does not pretend to be feature complete, but it may do some things faster than the other interfaces, and also offers an optional coupling with MessagePack binary (de)serialization via RcppMsgPack. The package has carried production loads for several years now.
This release integrates support for pub/sub, a popular messaging pattern in which one or more clients can subscribe to one or more ‘channels’. Whenever a client instances publishes, the Redis server immediately updates all clients listening on the given channel. This pattern is fairly common to transmit data to listeners. A there is a bit more to explain about this, I also added a brand-new vignette describing pub/sub with RcppRedis, along with another introductory vignette about Redis itself. We blogged about this exciting new feature and its particular use for market monitoring in R4 #36 recently too.
The pub/sub feature was available in package rredis by Bryan Lewis and has now been ported over by Bryan in a truly elegant yet compact implementation. We placed the code for the pub/sub examples, both for a single symbol (SP 500) as well as for a set of (futures) symbols, into a new examples/ subdirectory.
Other changes in this release are the removal of the build-dependency on Boost (or, rather, my BH package), an update to the included hiredis library (used if no system-wide version is found), and an updated to the UCRT build for R. That last one is a bit of a sore spot and nobody at CRAN deemed it necessary to tell me they were waiting for me to make this change; communication with the CRAN team can still be “challenging” (and I am being generous here). Anyway, the package is now on CRAN so all is well now, at long last.
The detailed changes list follows.
Changes in version 0.2.0 (2022-03-08)
Two simple C++11 features remove needs for BH and
lexical_cast()
(Dirk in #45 addressing #44).Bryan Lewis is now a coauthor.
Added pub/sub examples for single and multiple Globex symbols.
The included hiredis sources have been updated to release 1.0.2.
Two vignettes have been added to introduce Redis and to described a live market-monitoring application included in directory
pubsub/
.The UCRT build was updated per a suggestion by Tomas.
Courtesy of CRANberries, there is also a diffstat report for this release. More information is on the RcppRedis page.
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.
As of this morning, Rcpp stands at 2501 reverse-dependencies on CRAN. The graph on the left depicts the growth of Rcpp usage (as measured by Depends, Imports and LinkingTo, but excluding Suggests) over time.
Rcpp was first released in November 2008. It probably cleared 50 packages around three years later in December 2011, 100 packages in January 2013, 200 packages in April 2014, and 300 packages in November 2014. It passed 400 packages in June 2015 (when I tweeted about it), 500 packages in late October 2015, 600 packages in March 2016, 700 packages in July 2016, 800 packages in October 2016, 900 packages early January 2017, 1000 packages in April 2017, 1250 packages in November 2017, 1500 packages in November 2018, 1750 packages in August 2019, 2000 packages in July 2020, and 2250 package in March of last year. The chart extends to the very beginning via manually compiled data from CRANberries and checked with crandb. The next part uses manually saved entries. The core (and by far largest) part of the data set was generated semi-automatically via a short script appending updates to a small file-based backend. A (manually curated) list of packages using Rcpp is available too.
Also displayed in the graph is the relative proportion of CRAN packages using Rcpp. The four per-cent hurdle was cleared just before useR! 2014 where I showed a similar graph (as two distinct graphs) in my invited talk. We passed five percent in December of 2014, six percent July of 2015, seven percent just before Christmas 2015, eight percent in the summer of 2016, nine percent mid-December 2016, cracked ten percent in the summer of 2017, eleven percent in 2018—and passed 12.5 percent or one in every eight CRAN packages dependens on Rcpp along with the 2000 packages mark. Truly stunning. As before, there is more detail in the chart: how CRAN seems to be pushing back more and removing more aggressively (which my CRANberries tracks but not in as much detail as it could), how the growth of Rcpp seems to be slowing somewhat outright and even more so as a proportion of CRAN – as one would expect a growth curve to.
The Rcpp team continues to aim for keeping Rcpp as performant and reliable as it has been (and see e.g. here for some more details). A really big shoutout and Thank You! to all users and contributors of Rcpp for help, suggestions, bug reports, documentation or, of course, code.
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.
The RcppSimdJson package was updated to release 0.1.7 today. CRAN had sent a note overnight that it triggered ‘LENGTH_1’ error (where boolean comparisons happen with longer vectors). That may be debatable in the two cases flagged if one looks at the commit but life being too short to debate this so we just fixed it. The email came in at 04:50h-ish when I was sound asleep, but four hours later the fixed version was on CRAN thanks to the automated processing:
RcppSimdJson wraps the fantastic and genuinely impressive simdjson library by Daniel Lemire and collaborators. Via very clever algorithmic engineering to obtain largely branch-free code, coupled with modern C++ and newer compiler instructions, it results in parsing gigabytes of JSON parsed per second which is quite mindboggling. The best-case performance is ‘faster than CPU speed’ as use of parallel SIMD instructions and careful branch avoidance can lead to less than one cpu cycle per byte parsed; see the video of the talk by Daniel Lemire at QCon (also voted best talk).
The very short NEWS entry for this release follows.
Changes in version 0.1.7 (2022-02-18)
Two URLs were updated in 'README.md', and Travis artifacts and badges have been removed (Dirk).
One unit test file was updated to not trigger a 'LENGTH_1' warning (Dirk closing #76).
Courtesy of 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.
Armadillo is a powerful and expressive C++ template library for linear algebra aiming towards a good balance between speed and ease of use with a syntax deliberately close to a Matlab. RcppArmadillo integrates this library with the R environment and language–and is widely used by (currently) 950 other packages on CRAN, downloaded over 22.9 million times (per the partial logs from the cloud mirrors of CRAN), and the CSDA paper (preprint/vignette) by Conrad and myself has been cited 451 times according to Google Scholar.
This release brings another upstream update 10.8.0, and first bug fix release 10.8.1. As updates by Conrad can come a little quicker than the desired monthly cadence CRAN aims for, we skipped the 10.8.0 release for CRAN only but of course generally provide them via the Rcpp drat repo as well as via general updates to the repo, and full reverse dependency testing (for which results are always logged here).
The full set of changes (since the last CRAN release 0.10.7.5.0) follows.
Changes in RcppArmadillo version 0.10.8.1.0 (2022-01-23)
Upgraded to Armadillo release 10.8.1 (Realm Raider)
fix interaction between OpenBLAS and LAPACK
emit warning if
find()
is incorrectly used to locate NaN elementsChanges in RcppArmadillo version 0.10.8.0.0 (2022-01-02)
Upgraded to Armadillo release 10.8 (Realm Raider)
faster handling of symmetric matrices by
pinv()
andrank()
faster handling of diagonal matrices by
inv_sympd()
,pinv()
,rank()
expanded
norm()
to handle integer vectors and matricesadded
datum::tau
to replace2π
Courtesy of my CRANberries, there is a diffstat report relative to previous release. More detailed information is on the RcppArmadillo page. Questions, comments etc should go to the rcpp-devel mailing list off the R-Forge page.
If you like this or other open-source work I do, you can 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.
The Rcpp team is thrilled to share the news of the newest release 1.0.8 of Rcpp which hit CRAN today, and has already been uploaded to Debian as well. Windows and macOS builds should appear at CRAN in the next few days. This release continues with the six-months cycle started with release 1.0.5 in July 2020. As a reminder, interim ‘dev’ or ‘rc’ releases will alwasys be available in the Rcpp drat repo; this cycle there were once again seven (!!) – times two as we also tested the modified header (more below). These rolling release tend to work just as well, and are also fully tested against all reverse-dependencies.
Rcpp has become the most popular way of enhancing R with C or C++ code. Right now, around 2478 packages on CRAN depend on Rcpp for making analytical code go faster and further, along with 242 in BioConductor.
This release finally brings a change we have worked on quite a bit over the last few months. The idea of enforcing the setting of STRICT_R_HEADERS
was prososed years ago in 2016 and again in 2018. But making such a chance against a widely-deployed code base has repurcussions, and we were not ready then. Last April, this was revisited in issue #1158. Over the course of numerous lengthy runs of tests of a changed Rcpp package against (essentially) all reverse-dependencies (i.e. packages which use Rcpp) we identified ninetyfour packages in total which needed a change. We provided either a patch we emailed, or a GitHub pull request, to all ninetyfour. And we are happy to say that eighty cases were resolved via a new CRAN upload, with a seven more having merged the pull request but not yet uploaded.
Hence, we could make the case to CRAN (who were always CC’ed on the monthly ‘nag’ emails we sent to maintainers of packages needing a change) that an upload was warranted. And after a brief period for their checks and inspection, our January 11 release of Rcpp 1.0.8 arrived on CRAN on January 13.
So with that, a big and heartfelt Thank You! to all eighty maintainers for updating their packages to permit this change at the Rcpp end, to CRAN for the extra checking, and to everybody else who I bugged with the numerous emails and updated to the seemingly never-ending issue #1158. We all got this done, and that is a Good Thing (TM).
Other than the aforementioned change which will not automatically set STRICT_R_HEADERS
(unless opted out which one can), a number of nice pull request by a number of contributors are included in this release:
The full list of details follows.
Changes in Rcpp release version 1.0.8 (2022-01-11)
Changes in Rcpp API:
STRICT_R_HEADERS
is now enabled by default, see extensive discussion in #1158 closing #898.A new
#define
allows default setting of finalizer calls for external pointers (Iñaki in #1180 closing #1108).
Rcpp:::CxxFlags()
now quotes the include path generated, (Kevin in #1189 closing #1188).New header files
Rcpp/Light
,Rcpp/Lighter
,Rcpp/Lightest
and defaultRcpp/Rcpp
for fine-grained access to features (and compilation time) (Dirk #1191 addressing #1168).Changes in Rcpp Attributes:
Changes in Rcpp Documentation:
Changes in Rcpp Deployment:
Thanks to my CRANberries, you can also look at a diff to the previous release. Questions, comments etc should go to the rcpp-devel mailing list off the R-Forge page. Bugs reports are welcome at the GitHub issue tracker as well (where one can also search among open or closed issues); questions are also welcome under rcpp
tag at StackOverflow which also allows searching among the (currently) 2822 previous questions.
If you like this or other open-source work I do, you can 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 new maintenance RcppSMC release 0.2.6 arrived at CRAN yesterday. It chiefly updates the code to comply with g++-11
which default to C++17 – which brings us std::data()
. And if one is not careful, as we weren’t in three files, this can clash with other uses of data
as I tweeted a good week ago. Otherwise some JSS URLs now sport the preferred shorter doi form.
RcppSMC provides Rcpp-based bindings to R for the Sequential Monte Carlo Template Classes (SMCTC) by Adam Johansen described in his JSS article. Sequential Monte Carlo is also referred to as Particle Filter in some contexts. The package features the Google Summer of Code work by Leah South in 2017, and by Ilya Zarubin in 2021.
This release is summarized below.
Changes in RcppSMC version 0.2.6 (2021-12-17)
Updated URLs to JSS for the new DOI scheme upon their request
Adjusted three source files for C++17 compilation under g++-11
Courtesy of my CRANberries, there is a diffstat report for this release.
More information is on the RcppSMC page. Issues and bugreports should go to the GitHub issue tracker.
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.
Armadillo is a powerful and expressive C++ template library for linear algebra aiming towards a good balance between speed and ease of use with a syntax deliberately close to a Matlab. RcppArmadillo integrates this library with the R environment and language–and is widely used by (currently) 937 other packages on CRAN, and downloaded over 22 million times (per the partial logs from the cloud mirrors of CRAN).
This release brings another bug fix release 10.7.5 by Conrad in the ‘long-term support’ 10.7.* series we started with 0.10.7.0 on September 30. As the bug fixes can come a little quicker than the desired monthly cadence CRAN aims for, we skipped a few of those release for CRAN only but of course still provide them via the Rcpp drat repo.
The full set of changes (since the last CRAN release 0.10.7.3.0) follows. It includes the nice fixes to the fields
type mentioned right after the last release.
Changes in RcppArmadillo version 0.10.7.5.0 (2021-12-16)
Upgraded to Armadillo release 10.7.5
fix aliasing bug in
diagmat()
fix detection of 2x2 triangular matrices
Changes in RcppArmadillo version 0.10.7.4.0 (2021-11-23)
Upgraded to Armadillo release 10.7.4
faster handling of diagonal matrices by
inv_sympd()
,pinv()
,rank()
more robust detection of incorrect data format by
.load()
Correct dimensions setting in import/export of
arma::field
types, protected by#define
(Jonathan Berrisch in #352 fixing #351)Add unit tests for
fields
both with and without new#define
(Dirk)
Courtesy of my CRANberries, there is a diffstat report relative to previous release. More detailed information is on the RcppArmadillo page. Questions, comments etc should go to the rcpp-devel mailing list off the R-Forge page.
If you like this or other open-source work I do, you can 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 new release 0.2.10 of RcppCCTZ is now on CRAN.
RcppCCTZ uses Rcpp to bring CCTZ to R. CCTZ is a C++ library for translating between absolute and civil times using the rules of a time zone. In fact, it is two libraries. One for dealing with civil time: human-readable dates and times, and one for converting between between absolute and civil times via time zones. And while CCTZ is made by Google(rs), it is not an official Google product. The RcppCCTZ page has a few usage examples and details. This package was the first CRAN package to use CCTZ; by now four others packages include its sources too. Not ideal, but beyond our control.
This version switches to r-ci, and just like RDieHarder includes a patch kindly prepared by Tomas Kalibera for the upcoming (and very useful) ‘UCRT’ changes for Windows involving small build changes for the updated Windows toolchain.
Changes in version 0.2.10 (2021-12-14)
Switch CI use to r-ci
Applied patch by Tomas Kalibera for Windows UCRT under the upcoming R 4.2.0 expected for April.
We also have a diff to the previous version thanks to my CRANberries. More details are at the RcppCCTZ page; code, issue tickets etc at the GitHub repository.
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 new version 0.0.7 of RcppSpdlog is now on CRAN. RcppSpdlog bundles spdlog, a wonderful header-only C++ logging library with all the bells and whistles you would want that was written by Gabi Melman, and also includes fmt by Victor Zverovich.
This release brings upstream bugfix releases 1.9.1 and 1.9.2 of spdlog. We also removed the YAML file (and badge) for the disgraced former continuous integration service we shall not name (yet that we all used to use). And just like digest four days ago, drat three days ago, littler two days ago, and RcppAPT 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 (minimal) NEWS entry for this release follows.
Changes in RcppSpdlog version 0.0.7 (2021-12-05)
Upgraded to upstream bug fix releases spdlog 1.9.1 and 1.9.2
Travis artifacts and badges have been pruned
Vignette now uses simplermarkdown
Courtesy of my CRANberries, there is also a diffstat report. More detailed information is on the RcppSpdlog page, or the package documention site.
If you like this or other open-source work I do, you can 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 new version of the RcppAPT package interfacing from R to the C++ library behind the awesome apt
, apt-get
, apt-cache
, … commands and their cache powering Debian, Ubuntu and the like arrived on CRAN earlier today.
RcppAPT allows you to query the (Debian or Ubuntu) package dependency graph at will, with build-dependencies (if you have deb-src
entries), reverse dependencies, and all other goodies. See the vignette and examples for illustrations.
This release updates some package metadata, adds a new package testing helper, and, just like digest three days ago, drat two days ago, and littler 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.
Changes in version 0.0.8 (2021-12-04)
New test file
version.R
ensures NEWS file documents current package versionTravis artifacts and badges have been pruned
Vignettes now use simplermarkdown
Courtesy of my CRANberries, there is also a diffstat report for this release. A bit more information about the package is available here as well as as 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.