As of today, Rcpp stands at 3001 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 took seven year years to clear 500 packages in late October 2015 after which usage of R and Rcpp accelerated: 1000 packages in April 2017, 1500 packages in November 2018, 2000 packages in July 2020, and 2500 package in February 2022. The chart extends to the very beginning via manually compiled data from CRANberries and checked with crandb. The core part of the data set is generated semi-automatically when updating a (manually curated) list of packages using Rcpp that is available too.
The Rcpp team aims to keep Rcpp as performant and reliable as it has been (and see e.g. here for more details). Last month’s 1.0.14 release post is a good example of the ongoing work. A really big shoutout and Thank You! to all users and contributors of Rcpp for help, suggestions, bug reports, documentation or, of course, code.
This post by Dirk Eddelbuettel originated on his Thinking inside the box blog. If you like this or other open-source work I do, you can sponsor me at GitHub.
A maintenance release of our RcppDE package arrived at CRAN. RcppDE is a “port” of DEoptim, a package for derivative-free optimisation using differential evolution, from plain C to C++. By using RcppArmadillo the code became 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 is mostly maintenance. In the repo, we switched to
turning C++11 as a compilation standard off fairly soon after the
previous release two and a half years ago. But as CRAN is now more insistent, it
drove this release (as it has a few reccent ones). We also made a small
internal change to allow compilation under ARMA_64BIT_WORD
for larger vectors (which we cannot easily default to as 32-bit integers
are engrained in R). Other than
that just the usual updates to badges and continuous integration.
Courtesy of my CRANberries, there is also a diffstat report. More detailed information is on the RcppDE page, or the repository.
This post by Dirk Eddelbuettel originated on his Thinking inside the box blog. If you like this or other open-source work I do, you can sponsor me at GitHub.
The RcppUUID package on CRAN has been providing UUIDs (based on the underlying Boost library) for several years. Written by Artem Klemsov and maintained in this gitlab repo, the package is a very nice example of clean and straightforward library binding. As it had dropped off CRAN over a relatively minor issue, I descided to adopted it with the previous 1.1.2 release made quite recently.
This release adds new high-resolution clock-based UUIDs accordingt to the v7 spec. Internally 100ns increments are represented. The resulting UUIDs are both unique and sortable. I added this recent example to the README.md which illustrated both the implicit ordering and uniqueness. The unit tests check this with a much larger N.
> RcppUUID::uuid_generate_time(5)
1] "0194d8fa-7add-735c-805b-6bbf22b78b9e" "0194d8fa-7add-735e-8012-3e0e53895b19"
[3] "0194d8fa-7add-735e-81af-bc67bb435ade" "0194d8fa-7add-735e-82b1-405bf57963ad"
[5] "0194d8fa-7add-735f-801e-efe57078b2e7"
[>
While one can revert from the UUID object to the clock
object, I am not aware of a text parser so there is currently no inverse
function (as ulid
offers) for the character
representation.
The NEWS entry for the two releases follows.
Changes in version 1.2.0 (2025-02-12)
- Time-based UUIDs, ie version 7, can now be generated (requiring Boost 1.86 or newer as in the current BH package)
Changes in version 1.1.2 (2025-01-31)
- New maintainer to resurrect package on CRAN
Courtesy of my CRANberries, there is also a diffstat report. More detailed information is on the RcppUUID page, or the github repo.
This post by Dirk Eddelbuettel originated on his Thinking inside the box blog. If you like this or other open-source work I do, you can sponsor me at GitHub.
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) 1215 other packages on CRAN, downloaded 38.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 612 times according to Google Scholar.
Conrad released a minor version 14.2.3 yesterday. As it has been two months since the last minor release, we prepared a new version for CRAN too which arrived there early this morning.
The changes since the last CRAN release are summarised below.
Changes in RcppArmadillo version 14.2.3-1 (2025-02-05)
Upgraded to Armadillo release 14.2.3 (Smooth Caffeine)
Minor fix for declaration of
xSYCON
andxHECON
functions in LAPACKFix for rare corner-case in
reshape()
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 Rcpp R-Forge page.
This post by Dirk Eddelbuettel originated on his Thinking inside the box blog. If you like this or other open-source work I do, you can sponsor me at GitHub.
The RcppUUID package on CRAN has been providing UUIDs (based on the underlying Boost library) for several years. Written by Artem Klemsov and maintained in this gitlab repo, the package is a very nice example of clean and straightforward library binding.
When we did our annual BH upgrade to 1.87.0 and check reverse dependencies, we noticed the RcppUUID needed a small and rather minor update which we showed as a short diff in an issue filed. Neither I nor CRAN heard from Artem, so the packaged ended up being archived last week. Which in turn lead me to make this minimal update to 1.1.2 to resurrect it, which CRAN processed more or less like a regular update given this explanation and so it arrived last Friday.
Courtesy of my CRANberries, there is also a a ‘new package’ note (no diffstat report yet). More detailed information is on the RcppUUID page, or the github repo.
This post by Dirk Eddelbuettel originated on his Thinking inside the box blog. If you like this or other open-source work I do, you can sponsor me at GitHub.
Version 0.0.20 of RcppSpdlog arrived on CRAN early this morning and has been uploaded to 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. You can learn more at the nice package documention site.
This release updates the code to the version 1.15.1 of spdlog which was released this morning as well. It also contains a contributed PR which illustrates logging in a multithreaded context.
The NEWS entry for this release follows.
Changes in RcppSpdlog version 0.0.20 (2025-02-01)
New multi-threaded logging example (Young Geun Kim and Dirk via #22)
Upgraded to upstream release spdlog 1.15.1
Courtesy of my CRANberries, there is also a diffstat report. More detailed information is on the RcppSpdlog page, or the package documention site.
This post by Dirk Eddelbuettel originated on his Thinking inside the box blog. If you like this or other open-source work I do, you can sponsor me at GitHub.
A new maintenance release of RcppStreams is now on CRAN marking the first release in almost six years. RcppStreams brings the excellent Streamulus C++ template library for event stream processing to R.
Streamulus, written by Irit Katriel, uses clever template meta-programming (via Boost Fusion) to implement an embedded domain-specific event language created specifically for event stream processing.
This release covers only package and CRAN-specific updates.
The NEWS file entries follows below:
Changes in version 0.1.4 (2024-01-29)
Package maintenance with updates to DESCRIPTION and README.md
Continunous integration has been update multiple times
No longer set a C++ compilation standard
Courtesy of my CRANberries, there is also a diffstat report for this release. More detailed information is on the RcppStreams page page and of course on the Streamulus page. For questions, suggestions, or issues please use the issue tracker at the GitHub repo.
This post by Dirk Eddelbuettel originated on his Thinking inside the box blog. If you like this or other open-source work I do, you can now sponsor me at GitHub.
Another 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 follows the recent updates of other package updating their C++ compilation standard along with other standard package updates. No feature or interface changes.
The NEWS entry follows:
Changes in version 0.2.7 (2025-01-25)
The package no longer sets a C++ compilation standard
Package infrastructure, documentation and continuous integration support have been updated
Several manual pages now have package anchors for the code link
A
demo/
file has been move toinst/examples/
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.
This post by Dirk Eddelbuettel originated on his Thinking inside the box blog. If you like this or other open-source work I do, you can now sponsor me at GitHub.
Another maintenance release of RcppMsgPack got onto CRAN today. MessagePack itself is an efficient binary serialization format. It lets you exchange data among multiple languages like JSON. But it is faster and smaller. Small integers are encoded into a single byte, and typical short strings require only one extra byte in addition to the strings themselves. RcppMsgPack brings both the C++ headers of MessagePack as well as clever code (in both R and C++) Travers wrote to access MsgPack-encoded objects directly from R.
This is the first release in over six years, and contains mostly maintenance. One somewhat embarassing aspect is that Travers and I forgot about a PR that had been ready all this since the last release, it has now been integrated. Details follow from the NEWS file.
Changes in version 0.2.4 (2025-01-19)
Use
Rcpp::RawVector
instead ofstd::vector<unsigned char>
saving extra copy (Travers in #16)Several updates to README.md with R Journal paper, add badges, add Authors@R, add CITATION file, add repo info to DESCRIPTION
Update continuous integration via r-ci
Update to no longer require compilation standard
Courtesy of my CRANberries, there is also a diffstat report for this release. For questions, suggestions, or issues please use the [issue tracker][issue tickets] at the GitHub repo.
This post by Dirk Eddelbuettel originated on his Thinking inside the box blog. If you like this or other open-source work I do, you can now sponsor me at GitHub.
A new minor release of RcppFastFloat just arrived on CRAN. The package wraps fast_float, another nice library by Daniel Lemire. For details, see the arXiv preprint or published 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 to the current version 7.0.0, and updates a few packaging
aspects.
Changes in version 0.0.5 (2025-01-15)
No longer set a compilation standard
Updates to continuous integration, badges, URLs, DESCRIPTION
Update to fast_float 7.0.0
Per CRAN Policy comment-out compiler 'diagnostic ignore' instances
Courtesy of my CRANberries, there is also a diffstat report for this release. For questions, suggestions, or issues please use the [issue tracker][issue tickets] at the GitHub repo.
This post by Dirk Eddelbuettel originated on his Thinking inside the box blog. If you like this or other open-source work I do, you can now sponsor me at GitHub.
The Rcpp Core Team is once again thrilled, pleased, and chuffed (am I
doing this right for LinkedIn?) to announce a new release (now at
1.0.14) of the Rcpp package. It
arrived on CRAN earlier today,
and has since been uploaded to Debian. Windows and macOS builds
should appear at CRAN in the next few days, as will builds in different
Linux distribution–and of course r2u should catch up
tomorrow too. The release was only uploaded yesterday, and as always get
flagged because of the grandfathered .Call(symbol)
as well
as for the url to the Rcpp book (which
has remained unchanged for years) ‘failing’. My email reply was promptly
dealt with under European morning hours and by the time I got up the
submission was in state ‘waiting’ over a single reverse-dependency
failure which … is also spurious, appears on some systems and not
others, and also not new. Imagine that: nearly 3000 reverse dependencies
and only one (spurious) change to worse. Solid testing seems to help. My
thanks as always to the CRAN
for responding promptly.
This release continues with the six-months January-July cycle started with release 1.0.5 in July 2020. This time we also need a one-off hotfix release 1.0.13-1: we had (accidentally) conditioned an upcoming R change on 4.5.0, but it already came with 4.4.2 so we needed to adjust our code. As a reminder, we do of course make interim snapshot ‘dev’ or ‘rc’ releases available via the Rcpp drat repo as well as the r-universe page and 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 long established itself as the most popular way of enhancing R with C or C++ code. Right now, 2977 packages on CRAN depend on Rcpp for making analytical code go faster and further. On CRAN, 13.6% of all packages depend (directly) on Rcpp, and 60.8% of all compiled packages do. From the cloud mirror of CRAN (which is but a subset of all CRAN downloads), Rcpp has been downloaded 93.7 million times. The two published papers (also included in the package as preprint vignettes) have, respectively, 1947 (JSS, 2011) and 354 (TAS, 2018) citations, while the the book (Springer useR!, 2013) has another 676.
This release is primarily incremental as usual, generally preserving
existing capabilities faithfully while smoothing our corners and / or
extending slightly, sometimes in response to changing and tightened
demands from CRAN or R standards. The move towards a
more standardized approach for the C API of R once again to a few
changes; Kevin did once again did most of these PRs. Other contributed
PRs include Gábor permitting builds on yet another BSD variant, Simon
Guest correcting sourceCpp()
to work on read-only files,
Marco Colombo correcting a (surprisingly large) number of vignette
typos, Iñaki rebuilding some documentation files that tickled (false)
alerts, and I took care of a number of other maintenance items along the
way.
The full list below details all changes, their respective PRs and, if applicable, issue tickets. Big thanks from all of us to all contributors!
Changes in Rcpp release version 1.0.14 (2025-01-11)
Changes in Rcpp API:
Support for user-defined databases has been removed (Kevin in #1314 fixing #1313)
The
SET_TYPEOF
function and macro is no longer used (Kevin in #1315 fixing #1312)An errorneous cast to
int
affecting large return object has been removed (Dirk in #1335 fixing #1334)Compilation on DragonFlyBSD is now supported (Gábor Csárdi in #1338)
Use read-only
VECTOR_PTR
andSTRING_PTR
only with with R 4.5.0 or later (Kevin in #1342 fixing #1341)Changes in Rcpp Attributes:
Changes in Rcpp Deployment:
One unit tests for arm64 macOS has been adjusted; a macOS continuous integration runner was added (Dirk in #1324)
Authors@R is now used in DESCRIPTION as mandated by CRAN, the
Rcpp.package.skeleton()
function also creates it (Dirk in #1325 and #1327)A single datetime format test has been adjusted to match a change in R-devel (Dirk in #1348 fixing #1347)
Changes in Rcpp Documentation:
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).
This post by Dirk Eddelbuettel originated on his Thinking inside the box blog. If you like this or other open-source work I do, you can sponsor me at GitHub.
A minor package update, the first in over six years, for the RcppGetconf
package for reading system configuration — not unlike
getconf
from the libc library — is now on CRAN
The changes are all minor package maintenance items of keeping URLs,
continuous integration, and best practices current. We had two helper
scripts use bash
in their shebangs, and we just got dinged
in one of them. Tedious as this can at times seem, it ensures CRAN packages do in fact compile
just about anywhere which is a Good Thing (TM) so we obliged and updated
the package with that change—and all the others that had accumulated
over six years. No interface or behaviour changes, “just maintenance” as
one does at times.
The short list of changes in this release follows:
Changes in inline version 0.0.4 (2025-01-07)
Dynamically linked compiled code is now registered in
NAMESPACE
The continuous integration setup was update several times
The
README
was updated with current badges and URLsThe
DESCRIPTION
file now usesAuthors@R
The
configure
andcleanup
scripts use/bin/sh
Courtesy of my CRANberries, there is also a diffstat report of changes relative to the previous release. More about the package is at the local RcppGetconf page and the GitHub repo.
This post by Dirk Eddelbuettel originated on his Thinking inside the box blog. If you like this or other open-source work I do, you can now sponsor me at GitHub.
A new release 0.2.13 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 include most routine package maintenance as well as one small contributed code improvement. The changes since the last CRAN release are summarised below.
Changes in version 0.2.13 (2024-12-11)
No longer set compilation standard as recent R version set a sufficiently high minimum
Qualify a call to
cctz::format
(Michael Quinn in #44)Routine updates to continuous integration and badges
Switch to Authors@R in DESCRIPTION
Courtesy of my CRANberries, there is a diffstat report relative to 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 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) 1197 other packages on CRAN, downloaded 37.5 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 605 times according to Google Scholar.
Conrad released a minor
version 14.2.2 yesterday. This followed a bit of recent work a few of us
did in the ensmallen
and mlpack repositories
following the [14.2.0 release]. Use of (member functions)
.min(index)
and .max(index)
was deprecated in
Armadillo in favor of
.index_mix()
and .index_max()
. By now ensmallen and mlpack have been
updated at CRAN. To add some
spice, CRAN emailed that the
(very much unreleased as of now, but coming likely next spring) gcc-15
was unhappy with RcppArmadillo
due to some Armadillo code.
This likely related to the listed gcc-15 C++
change about “Qualified name lookup failure into the current
instantiation”. Anyway, Conrad fixed it within days
and that change too is part of this new version (as is a small behaviour
normalization between the two indexing methods that matters in case of
ties, this was in 14.2.1).
The changes since the last CRAN release are summarised below.
Changes in RcppArmadillo version 14.2.2-1 (2024-12-05)
Upgraded to Armadillo release 14.2.2 (Smooth Caffeine)
Workarounds for regressions in pre-release versions of GCC 15
More selective detection of symmetric/hermitian matrices by various functions
Changes in RcppArmadillo version 14.2.1-1 (2024-11-24) (GitHub Only)
Upgraded to Armadillo release 14.2.1 (Smooth Caffeine)
- Fix for
index_min()
andindex_max()
to ensure that the first index of equal extremum values is found
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 Rcpp 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 arrived on CRAN earlier
today. RcppAPT
connects R to the C++ library behind the awesome apt
,
apt-get
, apt-cache
, … commands (and their
cache) which powering Debian, Ubuntu and other derivative
distributions.
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 moves the C++ compilation standard from C++11 to C++17. I had removed the setting for C++11 last year as compilation ‘by compiler default’ worked well enough. But the version at CRAN still carried, which started to lead to build failures on Debian unstable so it was time for an update. And rather than implicitly relying on C++17 as selected by the last two R releases, we made it explicit. Otherwise a few of the regular package and repository updates have been made, but no new code or features were added The NEWS entries follow.
Changes in version 0.0.10 (2024-11-29)
Package maintenance updating continuous integration script versions as well as coverage link from README, and switching to Authors@R
C++ compilation standards updated to C++17 to comply with libapt-pkg
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 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) 1191 other packages on CRAN, downloaded 37.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 603 times according to Google Scholar.
Conrad released a minor
version 14.2.0 a few days ago after we spent about two weeks with
several runs of reverse-dependency checks covering corner cases. After a
short delay at CRAN due to a
false positive on a test, a package failing tests we also failed under
the previous version, and some concern over new deprecation warnings
_whem using the headers directly as _e.g. mlpack R package
does we are now on CRAN. I
noticed a missing feature under large ‘64bit word’ (for large
floating-point matrices) and added an exporter for icube
going to double
to support the 64-bit integer range (as we
already did, of course, for vectors and matrices). Changes since the
last CRAN release are
summarised below.
Changes in RcppArmadillo version 14.2.0-1 (2024-11-16)
Upgraded to Armadillo release 14.2.0 (Smooth Caffeine)
Faster handling of symmetric matrices by
inv()
andrcond()
Faster handling of hermitian matrices by
inv()
,rcond()
,cond()
,pinv()
,rank()
Added
solve_opts::force_sym
option tosolve()
to force the use of the symmetric solverMore efficient handling of compound expressions by
solve()
Added exporter specialisation for
icube
for theARMA_64BIT_WORD
case
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 Rcpp 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.
Version 0.0.19 of RcppSpdlog arrived on CRAN early this morning and has been uploaded to 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. You can learn more at the nice package documention site.
This releases updates the code to the version 1.15.0 of spdlog which was released on
Saturday, and contains fmt
11.0.2. It also contains a contributed PR which allows use
std::format
under C++20, bypassing fmt
(with
some post-merge polish too), and another PR correcting a documentation
double-entry.
The NEWS entry for this release follows.
Changes in RcppSpdlog version 0.0.19 (2024-11-10)
Support use of
std::format
under C++20 via opt-in define instead offmt
(Xanthos Xanthopoulos in #19)An erroneous duplicate log=level documentation level was removed (Contantinos Giachalis in #20)
Upgraded to upstream release spdlog 1.15.0 (Dirk in #21)
Partially revert / simplify
src/formatter.cpp
accomodating both #19 and previous state (Dirk in #21)
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 hot-fix release 1.0.13-1, consisting of two small PRs relative to the last regular CRAN release 1.0.13, just arrived on CRAN. When we prepared 1.0.13, we included a change related to the ‘tightening’ of the C API of R itself. Sadly, we pinned an expected change to ‘comes with next (minor) release 4.4.2’ rather than now ‘next (normal aka major) release 4.5.0’. And now that R 4.4.2 is out (as of two days ago) we accidentally broke building against the header file with that check. Whoops. Bugs happen, and we are truly sorry—but this is now addressed in 1.0.13-1.
The normal (bi-annual) release cycle will resume with 1.0.14 slated for January. As you can see from the NEWS file of the development branch, we have a number of changes coming. You can safely access that release candidate version, either off the default branch at github or via r-universe artifacts.
The list below details all changes, as usual. The only other change concerns the now-mandatory use of Authors@R.
Changes in Rcpp release version 1.0.13-1 (2024-11-01)
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).
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.
RcppDate wraps the featureful date library written by Howard Hinnant for use with R. This header-only modern C++ library has been in pretty wide-spread use for a while now, and adds to C++11/C++14/C++17 what will be (with minor modifications) the ‘date’ library in C++20.
This release, the first in 3 1/2 years, syncs the code with the recent date 3.0.2 release from a few days ago. It also updates a few packaging details such as URLs, badges or continuous integration.
Changes in version 0.0.4 (2024-10-14)
Updated to upstream version 3.0.2 (and adjusting one pragma)
Several small updates to overall packaging and testing
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 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.0.4 of the RcppFastAD package by James Yang and myself is now on CRAN.
RcppFastAD wraps the FastAD header-only C++ library by James which provides a C++ implementation of both forward and reverse mode of automatic differentiation. It offers 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. This release updates the quick fix in release 0.0.3 from a good week ago. James took a good look and properly disambiguated the statement that lead clang to complain, so we are back to compiling as C++17 under all compilers which makes for a slightly wider reach.
The NEWS file for this release follows.
Changes in version 0.0.4 (2024-09-24)
- The package now properly addresses a clang warning on empty variadic macros arguments and is back to C++17 (James in #10)
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 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.0.3 of the RcppFastAD package by James Yang and myself is now on CRAN.
RcppFastAD
wraps the FastAD
header-only C++ library by James which provides a C++
implementation of both forward and reverse mode of automatic
differentiation. It offers 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. This release turns compilation to
the C++20 standard as newer clang++
versions complained
about a particular statement (it took to be C++20) when compiled under
C++17. So we obliged.
The NEWS file for these two initial releases follows.
Changes in version 0.0.3 (2024-09-15)
The package now compiles under the C++20 standard to avoid a warning under
clang++-18
(Dirk addressing #9)Minor updates to continuous integration and badges have been made as well
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 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) 1164 other packages on CRAN, downloaded 36.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 595 times according to Google Scholar.
Conrad released two
small incremental releases to version
14.0.0. We did not immediately bring these to CRAN as we have to be mindful of
the desired upload cadence of ‘once every one or two months’. But as
14.0.2 has been stable for a few weeks, we now decided to bring it to CRAN. Changes since the last CRAN release are summarised below,
and overall fairly minimal. On the package side, we reorder what
citation()
returns, and now follow CRAN requirements via
Authors@R.
Changes in RcppArmadillo version 14.0.2-1 (2024-09-11)
Upgraded to Armadillo release 14.0.2 (Stochastic Parrot)
Optionally use C++20 memory alignment
Minor corrections for several corner-cases
The order of items displayed by
citation()
is reversed (Conrad in #449)The DESCRIPTION file now uses an Authors@R field with ORCID IDs
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 Rcpp 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.
Version 0.0.18 of RcppSpdlog arrived on CRAN today and has been uploaded to 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. You can learn more at the nice package documention site.
This releases updates the code to the version 1.14.1 of spdlog which was released as
an incremental fix to 1.14.0, and adds the ability to set log levels via
the environment variable SPDLOG_LEVEL
.
The NEWS entry for this release follows.
Changes in RcppSpdlog version 0.0.18 (2024-09-10)
Upgraded to upstream release spdlog 1.14.1
Minor packaging upgrades
Allow logging levels to be set via environment variable
SPDLOG_LEVEL
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.
Another (again somewhat minor) maintenance release of the RcppCNPy package arrived on CRAN earlier today.
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.
A change in the most recent Rcpp
appears to cause void
functions wrapper via Rcpp Modules to
return NULL
, as opposed to being silent. That tickles
discrepancy between the current output and the saved (reference) output
of one test file, leading CRAN to display a NOTE which we were asked to
take care of. Done here in this release—and now that we know we will
also look into restoring the prior Rcpp behaviour. Other small changes
involved standard maintenance for continuous integration and updates to
files README.md and DESCRIPTION. More details are below.
Changes in version 0.2.13 (2024-09-03)
A test script was updated to account for the fact that it now returns a few instances of NULL under current Rcpp.
Small package maintenance updates have been made to the README and DESCRIPTION files as well as to the continuous integration setup.
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.
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 maintenance release of RcppEigen is now on CRAN, and will go to Debian shortly as usual. Eigen is a C++ template library for linear algebra: matrices, vectors, numerical solvers, and related algorithms. RcppEigen is used by 460 other CRAN packages, and has been downloaded 31.9 million times just off the mirrors of CRAN keeping logs for counting.
The recent change switing to Authors@R (now that CRAN mandates it) contained in dual typo in ORCID tags, this releases fixes it.
The complete NEWS
file entry follows.
Changes in RcppEigen version 0.3.4.0.2 (2024-08-23)
- Correct two typos in the ORCID tag
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.
Happy to announce a new package: RcppMagicEnum. It arrived on CRAN yesterday following the resumption of normal service following the CRAN summer break. RcppMagicEnum brings the magicenum library by Daniil Goncharov to R.
Modern C++ is powerful, but still lacks reflection. This may change
with C++26 but until then this library can help. A simple example, also
shown on the README is as follows (and can be called from R via
Rcpp::sourceCpp()
if the RcppMagicEnum
package is installed):
// [[Rcpp::depends(RcppMagicEnum)]]
#include <RcppMagicEnum>
// define a simple enum class, it uses optional typing as well as optional assigned values
enum class Color : int { RED = -10, BLUE = 0, GREEN = 10 };
// [[Rcpp::export]]
void example() {
// instantiate an enum value in variable 'val'
auto val = Color::RED;
// show the current value on stdout
::Rcout << "Name of enum: " << magic_enum::enum_name(val) << std::endl;
Rcpp::Rcout << "Integer value of enum: " << magic_enum::enum_integer(val) << std::endl;
Rcpp}
/*** R
example()
*/
It produces the following output (where the ‘meta-comment’ at the end
ensure the included and created-by-sourcing function
example()
is also called):
> Rcpp::sourceCpp("miniex.cpp")
> example()
: RED
Name of enum: -10
Integer value of enum>
The plan to experiment some more with this and then see if we could possible make factor variables map to such enums and vice versa. Help and discussion input is always welcome, and could be submitted either on the rcpp-devel list or as an issue at the repo.
The short NEWS entry follows.
Changes in version 0.0.1 (2024-07-31)
- Initial version and CRAN upload
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 of RcppEigen is now on CRAN, and will go to Debian shortly as usual. Eigen is a C++ template library for linear algebra: matrices, vectors, numerical solvers, and related algorithms.
A very recent change in the development version of R (aka “r-devel”)
expanded the set of declared BLAS and LAPACK functions (and I tooted
approvingly about it as well). It turns out that the
xerbla()
declaration there (which, as usual for R and as
discussed in Writing R Extensions, defines the new optional
character length entry for a char vector) conflicts with one in the
blas.h
header in Eigen upsetting the compilation
of just one reverse-dependency. So CRAN, as they so often (and
quietly) do in these cases, gave us a friendly and concise heads-up and
asked for a change so we complied, did the usual reverse-dependency
check of the other 400+ packages using RcppEigen and
produced the new release which was injected into the repository during
the current summer break.
The complete NEWS
file entry follows.
Changes in RcppEigen version 0.3.4.0.1 (2024-08-14)
Conditionally comment-out
xerbla
inblas.h
as it is now providedd by R-devel albeit withFC_LEN_T
(per a CRAN request)Minor package updates (continuous integration, badges)
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.
The Rcpp Core Team is once again pleased to announce a new release
(now at 1.0.13) of the Rcpp package.
It arrived on CRAN earlier
today, and has since been uploaded to Debian. Windows and macOS builds
should appear at CRAN in the next few days, as will builds in different
Linux distribution–and of course r2u should catch up
tomorrow too. The release was uploaded last week, but not only does Rcpp always gets flagged because of the
grandfathered .Call(symbol)
but CRAN also found two packages
‘regressing’ which then required them to take five days to get back to
us. One issue was known; another
did not reproduce under our tests against over 2800 reverse dependencies
leading to the eventual release today. Yay. Checks are good and
appreciated, and it does take time by humans to review them.
This release continues with the six-months January-July 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 as well as the r-universe page and 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 long established itself as the most popular way of enhancing R with C or C++ code. Right now, 2867 packages on CRAN depend on Rcpp for making analytical code go faster and further, along with 256 in BioConductor. On CRAN, 13.6% of all packages depend (directly) on Rcpp, and 59.9% of all compiled packages do. From the cloud mirror of CRAN (which is but a subset of all CRAN downloads), Rcpp has been downloaded 86.3 million times. The two published papers (also included in the package as preprint vignettes) have, respectively, 1848 (JSS, 2011) and 324 (TAS, 2018) citations, while the the book (Springer useR!, 2013) has another 641.
This release is incremental as usual, generally preserving existing capabilities faithfully while smoothing our corners and / or extending slightly, sometimes in response to changing and tightened demands from CRAN or R standards. The move towards a more standardized approach for the C API of R leads to a few changes; Kevin did most of the PRs for this. Andrew Johnsom also provided a very nice PR to update internals taking advantage of variadic templates.
The full list below details all changes, their respective PRs and, if applicable, issue tickets. Big thanks from all of us to all contributors!
Changes in Rcpp release version 1.0.13 (2024-07-11)
Changes in Rcpp API:
Set R_NO_REMAP if not already defined (Dirk in #1296)
Add variadic templates to be used instead of generated code (Andrew Johnson in #1303)
Count variables were switches to
size_t
to avoid warnings about conversion-narrowing (Dirk in #1307)Rcpp now avoids the usage of the (non-API) DATAPTR function when accessing the contents of Rcpp Vector objects where possible. (Kevin in #1310)
Rcpp now emits an R warning on out-of-bounds Vector accesses. This may become an error in a future Rcpp release. (Kevin in #1310)
Switch
VECTOR_PTR
andSTRING_PTR
to new API-compliantRO
variants (Kevin in #1317 fixing #1316)Changes in Rcpp Deployment:
- Small updates to the CI test containers have been made (#1304)
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).
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) 1158 other packages on CRAN, downloaded 35.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 587 times according to Google Scholar.
Conrad released a new major upstream version 14.0.0 a couple of days ago. We had been testing this new version extensively over several rounds of reverse-dependency checks across all 1100+ packages. This revealed nine packages requiring truly minor adjustments—which eight maintainers made in a matter of days; all this was coordinated in issue #443. Following the upload, CRAN noticed one more issue (see issue #446) but this turned out to be local to the package. There are also renewed deprecation warnings with some Armadillo changes which we will need to address one-by-one. Last but not least with this release we also changed the package versioning scheme to follow upstream Armadillo more closely.
The set of changes since the last CRAN release follows.
Changes in RcppArmadillo version 14.0.0-1 (2024-07-05)
Upgraded to Armadillo release 14.0.0 (Stochastic Parrot)
C++14 is now the minimum recommended C++ standard
Faster handling of compound expressions by
as_scalar()
,accu()
,dot()
Faster interactions between sparse and dense matrices
Expanded
stddev()
to handle sparse matricesExpanded relational operators to handle expressions between sparse matrices and scalars
Added
.as_dense()
to obtain dense vector/matrix representation of any sparse matrix expressionUpdated physical constants to NIST 2022 CODATA values
New package version numbering scheme following upstream versions
Re-enabling
ARMA_IGNORE_DEPRECATED_MARKE
for silent CRAN builds
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 Rcpp 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 maintenance release 0.1.12 of the RcppSimdJson package is now on CRAN.
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 responds to another CRAN request, this time to
accomodate compilation under C++20 with g++-14
. As this was
alreadt addressed upstream in simdjson it was simply a
matter of upgrading to the current upstream which Daniel did in a PR.
The (once again very short) NEWS entry for this release follows.
Changes in version 0.1.12 (2024-07-05)
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) 1151 other packages on CRAN, downloaded 34.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 584 times according to Google Scholar.
Conrad released a new
upstream bugfix yesterday (to improve views of sparse matrices). We
uploaded it yesterday too but it once agfain took a day for the
hard-working CRAN maintainers
to concur that the two NOTEs from reverse-dependency checking over 1100
packages were in a fact false positves. And so it appeared on CRAN earlier today. We also
increased the versioned dependency on Rcpp to match the use of optional
entry-point headers Rcpp/Light
, Rcpp/Lighter
and Rcpp/Lightest
. No other changes were made.
The set of changes since the last CRAN release follows.
Changes in RcppArmadillo version 0.12.8.4.0 (2024-05-30)
Upgraded to Armadillo release 12.8.4 (Cortisol Injector)
- Faster handling of sparse submatrix views
Update versioned Depends on Rcpp to 1.0.8 or later to match use of Light/Lighter/Lightest headers.
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 Rcpp 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) 1144 other packages on CRAN, downloaded 34.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 583 times according to Google Scholar.
Conrad released a new
upstream bugfix yesterday (for a corner case with fftw3
).
We uploaded it yesterday too but it took a day for the hard-working CRAN maintainers to concur that
the one (!) NOTE from reverse-dependency checking over 1100 packages was
in a fact a false positve. And so it appeared on CRAN (very) early this morning. We
also made a change removing a long-redundant setter for C++11 mode via
the plugin. No other changes were made.
The set of changes since the last CRAN release follows.
Changes in RcppArmadillo version 0.12.8.3.0 (2024-05-07)
Upgraded to Armadillo release 12.8.3 (Cortisol Injector)
- Fix issue in
fft()
andfft2()
in multi-threaded contexts with FFTW3 enabledNo longer set C++11 for the Rcpp plugin as this standard has been the default by R for very long time now.
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 Rcpp 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 new-ish package RcppInt64
(announced last fall in this
post, with three small updates following) arrived on CRAN yesterday as relase 0.0.5. RcppInt64
collects some of the previous conversions between 64-bit integer values
in R and C++, and regroups them in a single package. It offers two
interfaces: both a more standard as<>()
converter
from R values along with its companions wrap()
to return to
R, as well as more dedicated functions ‘from’ and ‘to’.
This release addresses an new nag from CRAN who no longer want us to use
the ‘non-API’ header function SET_S4_OBJECT
so a small
change was made.
The brief NEWS entry follows:
Changes in version 0.0.5 (2024-04-30)
- Minor refactoring of internal code to not rely on
SET_S4_OBJECT
.
Courtesy of my CRANberries, there is a diffstat report relative to the previous 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.
Version 0.0.17 of RcppSpdlog arrived on CRAN overnight following and has been uploaded to 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. You can learn more at the nice package documention site.
This releases updates the code to the version 1.14 of spdlog which was release yesterday.
The NEWS entry for this release follows.
Changes in RcppSpdlog version 0.0.17 (2024-04-25)
Minor continuous integration update
Upgraded to upstream release spdlog 1.14.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 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) 1135 other packages on CRAN, downloaded 33.7 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 579 times according to Google Scholar.
Yesterday’s release accommodates reticulate by suspending a single test that now ‘croaks’ creating a reverse-dependency issue for that package. No other changes were made.
The set of changes since the last CRAN release follows.
Changes in RcppArmadillo version 0.12.8.2.1 (2024-04-15)
- One-char bug fix release commenting out one test that upsets reticulate when accessing a scipy sparse 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 Rcpp 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) 1136 other packages on CRAN, downloaded 33.5 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 578 times according to Google Scholar.
This release brings a new upstream bugfix release Armadillo 12.8.2 prepared by Conrad two days ago. It took the usual day to noodle over 1100+ reverse dependencies and ensure two failures were independent of the upgrade (i.e., “no change to worse” in CRAN parlance). It took CRAN another because we hit a random network outage for (spurious) NOTE on a remote URL, and were then caught in the shrapnel from another large package ecosystem update spuriously pointing some build failures that were due to a missing rebuild to us. All good, as human intervention comes to the rescue.
The set of changes since the last CRAN release follows.
Changes in RcppArmadillo version 0.12.8.2.0 (2024-04-02)
Upgraded to Armadillo release 12.8.2 (Cortisol Injector)
Workaround for FFTW3 header clash
Workaround in testing framework for issue under macOS
Minor cleanups to reduce code bloat
Improved documentation
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 Rcpp 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) 1130 other packages on CRAN, downloaded 32.8 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 578 times according to Google Scholar.
This release brings a new upstream bugfix release Armadillo 12.8.1 prepared by Conrad yesterday. It was delayed for a few hours as CRAN noticed an error in one package which we all concluded was spurious as it could be reproduced outside of the one run there. Following from the previous release, we also use the slighty faster ‘Lighter’ header in the examples. And once it got to CRAN I also updated the Debian package.
The set of changes since the last CRAN release follows.
Changes in RcppArmadillo version 0.12.8.1.0 (2024-03-02)
Upgraded to Armadillo release 12.8.1 (Cortisol Injector)
- Workaround in
norm()
for yet another bug in macOS accelerate frameworkUpdate README for RcppArmadillo usage counts
Update examples to use '#include <RcppArmadillo/Lighter>' for faster compilation excluding unused Rcpp features
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 Rcpp 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.
We are thrilled to share that RcppEigen has now upgraded to Eigen release 3.4.0! The new release 0.3.4.0.0 arrived on CRAN earlier today, and has been shipped to Debian as well. Eigen is a C++ template library for linear algebra: matrices, vectors, numerical solvers, and related algorithms.
This update has been in the works for a full two and a half years! It all started with a PR #102 by Yixuan bringing the package-local changes for R integration forward to usptream release 3.4.0. We opened issue #103 to steer possible changes from reverse-dependency checking through. Lo and behold, this just … stalled because a few substantial changes were needed and not coming. But after a long wait, and like a bolt out of a perfectly blue sky, Andrew revived it in January with a reverse depends run of his own along with a set of PRs. That was the push that was needed, and I steered it along with a number of reverse dependency checks, and occassional emails to maintainers. We managed to bring it down to only three packages having a hickup, and all three had received PRs thanks to Andrew – and even merged them. So the plan became to release today following a final fourteen day window. And CRAN was convinced by our arguments that we followed due process. So there it is! Big big thanks to all who helped it along, especially Yixuan and Andrew but also Mikael who updated another patch set he had prepared for the previous release series.
The complete NEWS
file entry follows.
Changes in RcppEigen version 0.3.4.0.0 (2024-02-28)
The Eigen version has been upgrade to release 3.4.0 (Yixuan)
Extensive reverse-dependency checks ensure only three out of over 400 packages at CRAN are affected; PRs and patches helped other packages
The long-running branch also contains substantial contributions from Mikael Jagan (for the lme4 interface) and Andrew Johnson (revdep PRs)
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.
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) 1119 other packages on CRAN, downloaded 32.5 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 575 times according to Google Scholar.
This release brings a new (stable) upstream (minor) release Armadillo 12.8.0 prepared by Conrad two days ago. We, as usual, prepared a release candidate which we tested against the over 1100 CRAN packages using RcppArmadillo. This found no issues, which was confirmed by CRAN once we uploaded and so it arrived as a new release today in a fully automated fashion.
We also made a small change that had been prepared by GitHub issue #400: a few internal header files that were cluttering the top-level of the include directory have been moved to internal directories. The standard header is of course unaffected, and the set of ‘full / light / lighter / lightest’ headers (matching we did a while back in Rcpp) also continue to work as one expects. This change was also tested in a full reverse-dependency check in January but had not been released to CRAN yet.
The set of changes since the last CRAN release follows.
Changes in RcppArmadillo version 0.12.8.0.0 (2024-02-06)
Upgraded to Armadillo release 12.8.0 (Cortisol Injector)
Faster detection of symmetric expressions by
pinv()
andrank()
Expanded
shift()
to handle sparse matricesExpanded
conv_to
for more flexible conversions between sparse and dense matricesAdded
cbrt()
More compact representation of integers when saving matrices in CSV format
Five non-user facing top-level include files have been removed (#432 closing #400 and building on #395 and #396)
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 Rcpp 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 very minor maintenance release, now at version 0.0.22, 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. It had all the buzzwords already a decade ago: it is one of the algorithms behind (drum roll …) vector search as it finds approximate matches very quickly and also allows to persist the data.
This release responds to a CRAN request to clean up empty macros and sections in Rd files.
Details of the release follow based on the NEWS file.
Changes in version 0.0.22 (2024-01-23)
- Replace empty examples macro to satisfy CRAN request.
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.
Version 0.0.16 of RcppSpdlog is now on CRAN and will be uploaded to 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. You can learn more at the nice package documention site.
This releases updates the code to the version 1.13 of spdlog which was release this morning.
The NEWS entry for this release follows.
Changes in RcppSpdlog version 0.0.16 (2024-01-12)
- Upgraded to upstream releases spdlog 1.13.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.
The Rcpp Core Team is once again thrilled to announce a new release
1.0.12 of the Rcpp package. It
arrived on CRAN early today,
and has since 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 should catch up
tomorrow. The release was uploaded yesterday, and run its reverse
dependencies overnight. Rcpp always
gets flagged nomatter what because the grandfathered
.Call(symbol)
but … we had not single ‘change to worse’
among over 2700 reverse dependencies!
This release continues with the six-months January-July 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 long established itself as the most popular way of enhancing R with C or C++ code. Right now, 2791 packages on CRAN depend on Rcpp for making analytical code go faster and further, along with 254 in BioConductor. On CRAN, 13.8% of all packages depend (directly) on Rcpp, and 59.9% of all compiled packages do. From the cloud mirror of CRAN (which is but a subset of all CRAN downloads), Rcpp has been downloaded 78.1 million times. The two published papers (also included in the package as preprint vignettes) have, respectively, 1766 (JSS, 2011) and 292 (TAS, 2018) citations, while the the book (Springer useR!, 2013) has another 617.
This release is incremental as usual, generally preserving existing capabilities faithfully while smoothing our corners and / or extending slightly, sometimes in response to changing and tightened demands from CRAN or R standards.
The full list below details all changes, their respective PRs and, if applicable, issue tickets. Big thanks from all of us to all contributors!
Changes in Rcpp release version 1.0.12 (2024-01-08)
Changes in Rcpp API:
Missing header includes as spotted by some recent tools were added in two places (Michael Chirico in #1272 closing #1271).
Casts to avoid integer overflow in matrix row/col selections have neem added (Aaron Lun #1281).
Three print format correction uncovered by R-devel were applied with thanks to Tomas Kalibera (Dirk in #1285).
Correct a print format correction in the RcppExports glue code (Dirk in #1288 fixing #1287).
The upcoming
OBJSXP
addition to R 4.4.0 is supported in thetype2name
mapper (Dirk and Iñaki in #1293).Changes in Rcpp Attributes:
- Generated interface code from base R that fails under LTO is now corrected (Iñaki in #1274 fixing a StackOverflow issue).
Changes in Rcpp Documentation:
The caption for third figure in the introductory vignette has been corrected (Dirk in #1277 fixing #1276).
A small formatting issue was correct in an Rd file as noticed by R-devel (Dirk in #1282).
The Rcpp FAQ vignette has been updated (Dirk in #1284).
The
Rcpp.bib
file has been refreshed to current package versions.Changes in Rcpp Deployment:
- The RcppExports file for an included test package has been updated (Dirk in #1289).
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).
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 new-ish package RcppInt64
(announced earlier this fall in this
post, with two small updates following) arrived on CRAN minutes ago as relase 0.0.4.
RcppInt64
collects some of the previous conversions between 64-bit integer values
in R and C++, and regroups them in a single package. It offers two
interfaces: both a more standard as<>()
converter
from R values along with its companions wrap()
to return to
R, as well as more dedicated functions ‘from’ and ‘to’.
This release addresses an issues Sebastian
reported a few hours and which is reported by newer, pickier compilers:
We need to include <cstdint>
so that
int64_t
is declared. CRAN was at its usual best
processing this efficiently including tests of the by now two reverse
dependencies. Twenty two minutes total, all automated:
The brief NEWS entry follows:
Changes in version 0.0.4 (2023-12-09)
- The
cstdint
header is now included (closes #1).
Courtesy of my CRANberries, there is a diffstat report relative to previous 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.
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) 1126 other packages on CRAN, downloaded 31.7 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 569 times according to Google Scholar.
This release ends the practice on asking Armadillo to suppress deprecation warnings. RcppArmadillo, as noted, has a large user base. Sometimes Conrad sometimes made changes without too much of a heads-up so at times it was opportune to not bring those warnings to dozens (or maybe hundreds) of packages at CRAN. Yet we need to balance this with the demonstrable need to call out older deprecated code use. So sixteen months ago, with GitHub issue #391, we started to alert author of 30+ affected packages and supplied either pull requests or emailed patches to all. Eleven months ago GitHub issues #402 was added for a second deprecation.
And the time of making the switch has come. Release 0.12.6.6.1 no
longer defines ARMA_IGNORE_DEPRECATED_MARKER
. So among the
over 1100 packages using RcppArmadillo
at CRAN, around a good dozen or
so were flagged in the upload – but CRAN concurred and let the package
migrate to CRAN.
If you maintain an affected package, consider applying the patch or
pull request now. A simple stop-gap measure also exists by adding
-DARMA_IGNORE_DEPRECATED_MARKER
to
src/Makevars
as either PKG_CPPFLAGS
or
PKG_CXXFLAGS
to reactivate it. But a proper code update,
which is generally simple, may be better. If you are unsure, do not
hesitate to get in touch.
The set of changes since the last CRAN release follows.
Changes in RcppArmadillo version 0.12.6.6.1 (2023-12-03)
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 Rcpp 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.
Another upgrade triggered solely by changing CRAN standards (see previous
one from five years ago). This time it concerns warnings under
r-devel with -Wformat -Wformat-security
so we injected a
number of "%s"
into Rf_error()
calls.
No new code or features. Full details below. And as a reminder, don’t use the old RcppClassic – use Rcpp instead.
Changes in version 0.1.3 (2023-11-30)
Update
Rf_error()
call to not tickle-Wformat
Minor other packaging and continuous integration tweaks
Thanks to CRANberries, you can also look at a diff to the previous 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.
Version 0.0.15 of RcppSpdlog is now on CRAN and will be uploaded to 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. You can learn more at the nice package documention site.
This releases updates the code to address warning now shown under
R-devel when -Wformat -Wformat-security
are enabled. This
amounted to re-generating RcppExports.cpp
under an updated
[Rcpp][rcpp] version. It also updates the package default help page by
removing some stubs that were not filled in.
The NEWS entry for this release follows.
Changes in RcppSpdlog version 0.0.15 (2023-11-29)
Correct default package help page slighly
RcppExports.cpp
has been regenerated under an updated Rcpp to address a format string warning under R-devel
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 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 releases updates the code to address warning now shown under
R-devel when -Wformat -Wformat-security
are enabled. This
amounted to re-generating RcppExports.cpp
under an updated
Rcpp version. We also no longer set
C++14 explicitly as a compilation standard.
The complete list changes for this release follows.
Changes in version 0.1.2 (2023-11-29)
RcppExports.cpp
has been regenerated under an updated Rcpp to address a format string warning under R-develThe compilation standard is no longer set to C++14
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.
A new maintenance release 0.1.11 of the RcppSimdJson package is now on CRAN.
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 responds to a CRAN request to address issues now
identified by -Wformat -Wformat-security
. These are
frequently pretty simple changes as it was here: all it took was an call
to compileAttributes()
from an updated Rcpp version which now injects
"%s"
as a format string when calling
Rf_error()
.
The (very short) NEWS entry for this release follows.
Changes in version 0.1.11 (2023-11-28)
RcppExports.cpp
has been regenerated under an update Rcpp to address a
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 (and again somewhat minor) maintenance release of the RcppCNPy package arrived on CRAN earlier today.
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.
Recent changes in r-devel hone in on issues concerning
printf
format string inaccuracies the compiler can detect
via the -Wformat -Wformat-security
flags. Two fairly
simplye ones were present here and have been addressed. In the time
since the last release about twenty months ago two or three other minor
packaging and setup details have also been taken care of, details are
below.
Changes in version 0.2.12 (2022-11-27)
The continuous integration workflow received a trivial update, twice.
The C++ compilation standard is now implicit per CRAN and R preference.
The CITATION file format has been updated for the current usage.
Two print format string issues reported by current R-devel have been addressed.
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.
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.4 of RcppEigen arrived on CRAN yesterday, and went to Debian today. Eigen is a C++ template library for linear algebra: matrices, vectors, numerical solvers, and related algorithms.
This update contains a small amount of the usual maintenance (see below), along with a very nice pull request by Mikael Jagan which simplifies to interface with the Matrix package and inparticular the CHOLMOD library that is part of SuiteSparse. This release is coordinated with lme4 and OpenMx which are also being updated.
The complete NEWS
file entry follows.
Changes in RcppEigen version 0.3.3.9.4 (2023-11-01)
The CITATION file has been updated for the new
bibentry
style.The package skeleton generator has been updated and no longer sets an Imports:.
Some README.md URLs and badged have been updated.
The use of
-fopenmp
has been documented inMakevars
, and a simple thread-count reporting function has been added.The old manual
src/init.c
has been replaced by an autogenerated version, theRcppExports
file have regeneratedThe interface to package Matrix has been updated and simplified thanks to an excllent patch by Mikael Jagan.
The new upload is coordinated with packages lme4 and OpenMx.
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.
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) 1110 other packages on CRAN, downloaded 31.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 563 times according to Google Scholar.
This release brings upstream bugfix releases 12.6.5 (sparse matrix corner case) and 12.6.6 with an ARPACK correction. Conrad released it this this morning, I had been running reverse dependency checks anyway and knew we were in good shape so for once I did not await a full run against the now over 1100 (!!) packages using RcppArmadillo.
This release also contains a change I prepared on Sunday and which helps with much-criticized (and rightly I may add) insistence by CRAN concerning ‘throttling’. The motivation is understandable: CRAN tests many packages at once on beefy servers and can ill afford tests going off and requesting numerous cores. But rather than providing a global setting at their end, CRAN insists that each package (!!) deals with this. The recent traffic on the helpful-as-ever r-pkg-devel mailing clearly shows that this confuses quite a few package developers. Some have admitted to simply turning examples and tests off: a net loss for all of us. Now, Armadillo defaults to using up to eight cores (which is enough to upset CRAN) when running with OpenMP (which is generally only on Linux for “reasons” I rather not get into…). With this release I expose a helper functions (from OpenMP) to limit this. I also set up an example package and repo RcppArmadilloOpenMPEx detailing this, and added a demonstration of how to use the new throttlers to the fastLm example. I hope this proves useful to users of the package.
The set of changes since the last CRAN release follows.
Changes in RcppArmadillo version 0.12.6.6.0 (2023-10-31)
Upgraded to Armadillo release 12.6.6 (Cortisol Retox)
- Fix
eigs_sym()
,eigs_gen()
andsvds()
to generate deterministic results in ARPACK modeAdd helper functions to set and get the number of OpenMP threads
Store initial thread count at package load and use in thread-throttling helper (and resetter) suitable for CRAN constraints
Changes in RcppArmadillo version 0.12.6.5.0 (2023-10-14)
Upgraded to Armadillo release 12.6.5 (Cortisol Retox)
- Fix for corner-case bug in handling sparse matrices with no non-zero elements
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 Rcpp 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.
nanotime
SupportThe still new package RcppInt64
(announced two weeks ago in this
post, with this
followup last week) arrived on CRAN earlier today in its second
update and relase 0.0.3. RcppInt64
collects some of the previous conversions between 64-bit integer values
in R and C++, and regroups them in a single package by providing a
single header. It offers two interfaces: both a more standard
as<>()
converter from R values along with its
companions wrap()
to return to R, as well as more dedicated
functions ‘from’ and ‘to’.
This release adds support for the corresponding nanotime conversion between R and C++. nanotime is leveraging the same bit64-based reprensentation of 64-bit integers for nanosecond resolution timestamps. A thorough S4 wrapping the offers R based access for convenient and powerful operations at nanosecond resolution. And as tweeted (here and here), tooted (here and here), and skeeted (here and here) in a quick preview last Sunday, it makes for easy and expressive code.
The brief NEWS entry follows:
Changes in version 0.0.3 (2023-09-19)
The
as<>()
andwrap()
converters are now declaredinline
.Conversion to and from nanotime has been added.
Courtesy of my CRANberries, there is a diffstat report relative to previous 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.
The still very new package RcppInt64
(announced a week ago in
this post) arrived on CRAN
earlier today in its first update, now at 0.0.2. RcppInt64
collects some of the previous conversions between 64-bit integer values
in R and C++, and regroups them in a single package by providing a
single header. It offers two interfaces: both a more standard
as<>()
converter from R values along with its
companions wrap()
to return to R, as well as more dedicated
functions ‘from’ and ‘to’.
The package by now has its first user as we rearranged
RcppFarmHash to use it. The change today makes bit64 a
weak rather than strong dependency as we use it only
for tests and illustrations. We also added two missing fields to
DESCRIPTION
and added badges to README.md
.
The brief NEWS entry follows:
Changes in version 0.0.2 (2023-09-12)
DESCRIPTION has been extended, badges have been added to README.md
Package bit64 is now a Suggests:
Courtesy of my CRANberries, there is a [diffstat report relative to previous release][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.
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) 1096 other packages on CRAN, downloaded 30.5 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 552 times according to Google Scholar.
This release brings bugfix upstream release 12.6.4. Conrad prepared this a few days ago; it takes me the usual day or so to run reverse-dependency check against the by-now almost 1100 CRAN packages using RcppArmadillo. And this time, CRAN thought it had found two issues when I submitted and it took two more days til we were all clear about those two being false positives (as can, and does, happen). So today it reached CRAN.
The set of changes follows.
Changes in RcppArmadillo version 0.12.6.4.0 (2023-09-06)
Upgraded to Armadillo release 12.6.4 (Cortisol Retox)
Workarounds for bugs in Apple accelerate framework
Fix incorrect calculation of rcond for band matrices in
solve()
Remove expensive and seldom used optimisations, 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 Rcpp 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 of the RcppFarmHash package is now on CRAN as version 0.0.3.
RcppFarmHash
wraps the Google FarmHash family of hash
functions (written by Geoff Pike and contributors) that are used for
example by Google BigQuery for the FARM_FINGERPRINT
digest.
This releases farms out the conversion to the integer64
add-on type in R to the new
package RcppInt64
released a few days ago and adds some minor maintenance on continuous
integration and alike.
The brief NEWS entry follows:
Changes in version 0.0.3 (2023-09-09)
Rely on new RcppInt64 package and its header for conversion
Minor updates to continuous integration and README.md
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.
Happy to share that a new package RcppInt64 arrived on CRAN earlier today after a brief one-day inspection round. RcppInt64 collects some of the previous conversions between 64-bit integer values in R and C++, and regroups them in a single package.
A single header is provided. It actually offers two interfaces: both
a more standard as<>()
converter from R values along
with its companions wrap()
to return to R, as well as more
dedicated functions ‘from’ and ‘to’. A key difficulty faced when
supporting 64 bit integer payloads is that R has no proper type
for it so the standard template-based approaches use by Rcpp do not
apply. To ‘carry’ 64 bit integers, the clever approach by Jens
Oehlschlägel and his bit64 package is
used. However, its use of a double
to transport the
int64
payload means we must take care to not uninentionally
interpret the double
variables as, well,
double
. So we use an simple S3 class in R, and check for
it. With some care (as provided by these helper functions) this works
well.
The RcppInt64 packages contains both an example function, as well as an entire example package to demonstrate how to use these facilities in your package. We hope others will find this useful.
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) 1092 other packages on CRAN, downloaded 30.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 549 times according to Google Scholar.
This release brings bugfix upstream release 12.6.3. We skipped 12.6.2
at CRAN (as discussed in the previous
release notes) as it only affected Armadillo-internal random-number
generation (RNG). As we default to supplying the RNGs from R, this did
not affect RcppArmadillo.
The bug fixes in 12.6.3 are for csv reading which too will most likely
be done by R tools for R users, but given two minor bugfix releases an
update was in order. I ran the full reverse-depenency check against the
now more than 1000 packages overnight: no issues.
CRAN processed the package fully automatically as it has no issues, and
nothing popped up in reverse-dependency checking.
The set of changes for the last two RcppArmadillo releases follows.
Changes in RcppArmadillo version 0.12.6.3.0 (2023-08-28)
Upgraded to Armadillo release 12.6.3 (Cortisol Retox)
Fix for corner-case in loading CSV files with headers
For consistent file handling, all
.load()
functions now open text files in binary modeChanges in RcppArmadillo version 0.12.6.2.0 (2023-08-08)
Upgraded to Armadillo release 12.6.2 (Cortisol Retox)
use thread-safe Mersenne Twister as the default RNG on all platforms
use unique RNG seed for each thread within multi-threaded execution (such as OpenMP)
explicitly document
arma_rng::set_seed()
andarma_rng::set_seed_random()
None of the changes above affect R use as RcppArmadillo connects the RNGs used by R to Armadillo
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 Rcpp 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.
Another minor release, now at 0.2.4, of our RcppRedis package 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 on a trading floor for several years. It also supports pub/sub dissemination of streaming market data as per this earlier example.
This update is (just like the previous one) fairly mechanical. CRAN noticed a shortcoming of the default per-package help page in a number of packages, in our case it was matter of adding one line for a missing alias to the Rd file. We also demoted the mention of the suggested (but retired) rredis package to a mere mention in the DESCRIPTION file as a formal Suggests: entry, even with an added Additional_repositories, create a NOTE. Life is simpler without those,
The detailed changes list follows.
Changes in version 0.2.4 (2023-08-19)
Add missing alias for ‘RcppRedis-package’ to
rhiredis.Rd
.Remove Suggests: rredis which triggers a NOTE nag as it is only on an ‘Additional_repositories’.
Courtesy of my CRANberries, there is also a diffstat report for this this release. More information is on the RcppRedis 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) 1092 other packages on CRAN, downloaded 30.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 545 times according to Google Scholar.
This release brings bugfix upstream release 12.6.1. Conrad release 12.6.0 when CRAN went on summer break. I rolled it up ran the full reverse-depenency check against the now more than 1000 packages. And usage from one those revealed a corner-case bug (of not always ‘flattening’ memory for sparse matrices to zero values) so 12.6.1 followed. This is what was uploaded today. And as I prepared it earlier in the week as CRAN reopened, Conrad released a new 12.6.2. However, its changes are only concerned with settings for Armadillo-internal use of its random number generators (RNGs). And as RcppArmadillo connects Armadillo to the RNGs provided by R, the upgrade does not affect R users at all. However it is available in the github repo, in the Rcpp drap repo and at r-universe.
The set of changes for this RcppArmadillo release follows.
Changes in RcppArmadillo version 0.12.6.1.0 (2023-07-26)
Upgraded to Armadillo release 12.6.1 (Cortisol Retox)
faster multiplication of dense vectors by sparse matrices (and vice versa)
faster
eigs_sym()
andeigs_gen()
faster
conv()
andconv2()
when using OpenMPadded
diags()
andspdiags()
for generating band matrices from set of vectors
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 Rcpp 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.
Version 0.0.14 of RcppSpdlog is now on CRAN and has just been uploaded to 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. You can learn more at the nice package documention site.
This release simply brings an update to the just release spdlog 1.12.0 from a few days ago.
The NEWS entry for this release follows.
Changes in RcppSpdlog version 0.0.14 (2023-07-09)
Added new badge to README.md
Upgraded to upstream releases spdlog 1.12.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.