A new version 0.1.5 of the tint package
arrived at CRAN today.
tint
provides a style ‘not unlike Tufte’ for use in html
and pdf documents created from markdown. The github repo shows
several examples in its README, more as usual in the package
documentation.
This is the first release in one and a half years and contains only
routine maintenance. As CRAN
now bags about missing anchors in the common \code{\link{}}
use, I added these today. Otherwise the usual mix of updates to
continuous integration, to badges and URLs and other small packaging
details—but nothing user-facing.
Changes in tint version 0.1.5 (2025-03-27)
Standard package maintenance for continuous integration, URL updates, and packaging conventions
Correct two minor nags in the Rd file
Courtesy of my CRANberries, there is a diffstat report relative to previous release. More information is on the tint page. For questions or comments use the issue tracker off 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.
A new minor release 0.2.5 of our RcppRedis package arrived on CRAN today. RcppRedis is one of several packages connecting R to the fabulous Redis in-memory datastructure store (and much more). RcppRedis does not pretend to be feature complete, but it may do some things faster than the other interfaces, and also offers an optional coupling with MessagePack binary (de)serialization via RcppMsgPack. The package has been “deployed in production” as a risk / monitoring tool on a trading floor for several years. It also supports pub/sub dissemination of streaming market data as per this earlier example.
Given the changes around Redis, it is worth stressing that the package works just as well with valkey – and uses only hiredis which remains proper open source.
This update is again somewhat mechanical as a few maintenance things
bubbled up in since the last release in the summer of 2023. As with
other packages, continuous integration was updated a few times as were
URLs and badges, and we update the use of our RApiSerialize.
And, just as we did today and yesterday with littler,
RQuantLib
and RDieHarder,
this addresses a nag from CRAN
about implicit bash
dependency in configure.ac
(which we fixed in January as for the other packages but are under
deadline now). Last but not least the newly-added extension of
‘forbidden’ symbols in static libraries revealed that yes indeed I had
forgotten to set -DNDEBUG
when building the embedded hiredis in fallback mode—and
I now also converted its four uses of sprintf
to
snprintf
so we are clean there too.
The detailed changes list follows.
Changes in version 0.2.5 (2025-03-26)
The continuous integration setup was updated several times
Badges and URLs in README.md have been updated
An updated interface from RApiSerialize is now used, and a versioned dependency on version 0.1.4 or later has been added
The DESCRIPTION file now uses Authors@R
Two possible bashisms have been converted in
configure.ac
The (fallback if needed) build of
libhiredis.a
now sets-DNDEBUG
, four uses ofsprintf
converted tosnprintf
Courtesy of my CRANberries, there is also a diffstat report for this this release. More information is on the RcppRedis page and at the repository and its issue tracker.
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.
An new version 0.2.7 of the random-number generator tester RDieHarder (based on the DieHarder suite developed / maintained by Robert Brown with contributions by David Bauer and myself along with other contributors) is now on CRAN.
This release contains only internal maintenance changes: continuous
integration was updated as was a badge URL, and a ‘bashism’ issue in
configure.ac
was addressed (months ago) but as CRAN now sends NOTEs it triggered
this update (just like littler
and RQuantLib
yesterday).
Thanks to CRANberries, you can also look at the most recent diff to the previous release.
If you like this or other open-source work I do, you can now sponsor me at GitHub.
This post by Dirk Eddelbuettel originated on his Thinking inside the box blog. Please report excessive re-aggregation in third-party for-profit settings.
A third release of the crc32c package is now on CRAN. The package bring the Google library crc32c to R and offers cyclical checksums with parity in hardware-accelerated form on (recent enough) intel cpus as well as on arm64.
This release is one hundred percent maintenance. Brian Ripley reached
out as he already tests the (still very much unreleased)
cmake
4.0.0 release, currently at rc5. And that version is
now picky about minimum cmake
version statements
in CMakeLists.txt. As we copied the upstream one here, with its setting
of the jurassic 3.1 version, our build conked out. A simple switch to
3.5..4.0
, declaring a ‘from .. to’ scheme with a minimally
supported version (here 3.5, released in 2016) up to a tested version
works. No other changes, really, besides an earlier helping hand from Jeroen concerning cross-compilation
support he needed or encountered (and that happened right after the
0.0.2 release).
The NEWS entry for this (as well the initial release) follows.
Changes in version 0.0.3 (2025-03-25)
Support cross-compilation by setting CC and CXX in Makevars.in (Jeroen Ooms in #1)
Support pre-release 4.0.0 of
cmake
by moving the minimum stated version from 3.1 to 3.5 per CRAN request, also sent PR upstream
My CRANberries
service provides a comparison to the
previous release. The code is available via the GitHub repo, and of
course also from its
CRAN page and via install.packages("crc32c")
. Comments
and suggestions are welcome 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 sponsor me at GitHub.
The twentysecond release of littler as a CRAN package landed on CRAN just now, following in the now nineteen year history (!!) as a (initially non-CRAN) package started by Jeff in 2006, and joined by me a few weeks later.
littler
is the first command-line interface for R as it predates
Rscript
. It allows for piping as well for shebang
scripting via #!
, uses command-line arguments more
consistently and still starts
faster. It also always loaded the methods
package which
Rscript
only began to do in recent years.
littler
lives on Linux and Unix, has its difficulties on macOS due to
some-braindeadedness there (who ever thought case-insensitive
filesystems as a default were a good idea?) and simply does not exist on
Windows (yet – the build system could be extended – see RInside for
an existence proof, and volunteers are welcome!). See the FAQ
vignette on how to add it to your PATH
. A few examples
are highlighted at the Github repo:, as well
as in the examples
vignette.
This release, the first is almost exactly one year, brings
enhancements to six scripts as well as three new ones. The new ones
crup.r
offers ‘CRan UPloads’ from the command-line,
deadliners.r
lists CRAN package by CRAN deadline, and
wb.r
uploads to win-builder (replacing an older shell
script of mine). Among the updated ones, kitten.r
now
creates more complete DESCRIPTION files in the packages it makes, and
several scripts support additional options. A number of changes were
made to packaging as well, some of which were contributed by Jon and Michael which is of course
always greatly appreciated. The trigger for the release was, just like
for RQuantLib
earlier today, a CRAN nag
on ‘bashisms’ half of which actually false here it was in a comment
only. Oh well.
The full change description follows.
Changes in littler version 0.3.21 (2025-03-24)
Changes in examples scripts
Usage text for
ciw.r
is improved, new options were added (Dirk)The ‘noble’ release is supported by
r2u.r
(Dirk)The
installRub.r
script has additional options (Dirk)The
ttlt.r
script has a newload_package
argument (Dirk)A new script
deadliners.r
showing CRAN packages 'under deadline' has been added, and then refined (Dirk)The
kitten.r
script can now use whoami and argumentgithubuser
on the different*kitten
helpers it calls (Dirk)A new script
wb.r
can upload to win-builder (Dirk)A new script
crup.r
can upload a CRAN submission (Dirk)In
rcc.r
, the return from rcmdcheck is now explicitly printed (Dirk)In
r2u.r
thedry-run
option is passed to the build command (Dirk)Changes in package
Regular updates to badges, continuous integration, DESCRIPTION and
configure.ac
(Dirk)Errant
osVersion
return value are handled more robustly (Michael Chirico in #121)The current run-time path is available via variable
LITTLER_SCRIPT_PATH
(Jon Clayden in #122)The cleanup script remove macOS debug symbols (Jon Clayden in #123)
My CRANberries
service provides a comparison to the
previous release. Full details for the littler
release are provided as usual at the ChangeLog
page, and also on the package docs website.
The code is available via the GitHub repo, from
tarballs and now of course also from its CRAN page and
via install.packages("littler")
. Binary packages are
available directly in Debian as
well as (in a day or two) Ubuntu binaries at
CRAN thanks to the tireless Michael Rutter. Comments and suggestions
are welcome 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 sponsor me at GitHub.
A new minor release 0.4.25 of RQuantLib arrived on CRAN this morning, and has just now been uploaded to Debian too.
QuantLib is a rather comprehensice free/open-source library for quantitative finance. RQuantLib connects (some parts of) it to the R environment and language, and has been part of CRAN for nearly twenty-two years (!!) as it was one of the first packages I uploaded to CRAN.
This release of RQuantLib
is tickled by a request to remove ‘bashisms’ in shell scripts, or, as in
my case here, configure.ac
where I used the non-portable
form of string comparison. That has of course been there for umpteen
years and not bitten anyone as the default shell for most is in fact
bash
but the change has the right idea. And is of course
now mandatory affecting quite a few packages is I
tooted yesterday. It also contains an improvement to the macOS 14
build kindly contributed by Jeroen.
Changes in RQuantLib version 0.4.25 (2025-03-24)
Support macOS 14 with a new compiler flag (Jeroen in #190)
Correct two bashisms in
configure.ac
One more note, though: This may however be the last release I make
with Windows support. CRAN now
also checks for ‘forbidden’ symbols (such as assert
or
(s)printf
or …) in static libraries, and this release
tickled one such warning from the Windows side (which only uses static
libraries). I have no desire to get involved in also maintaing QuantLib
(no R here) for Windows and may simply turn the package back to
OS_type: unix
to avoid the hassle. To avoid that, it would
be fabulous if someone relying on RQuantLib on Windows could step up and
lend a hand looking after that library build.
Courtesy of my CRANberries, there is also a diffstat report for the this release. As always, more detailed information is on the RQuantLib page. Questions, comments etc should go to the rquantlib-devel mailing list. Issue tickets can be filed at the GitHub repo.
If you like this or other open-source work I do, you can now sponsor me at GitHub.
This post by Dirk Eddelbuettel originated on his Thinking inside the box blog. Please report excessive re-aggregation in third-party for-profit settings.
A new release 0.1.7 of RcppZiggurat is now on the CRAN network for R. This marks the first release in four and a half years.
The RcppZiggurat package updates the code for the Ziggurat generator by Marsaglia and others which provides very fast draws from a Normal distribution. The package provides a simple C++ wrapper class for the generator improving on the very basic macros, and permits comparison among several existing Ziggurat implementations. This can be seen in the figure where Ziggurat from this package dominates accessing the implementations from the GSL, QuantLib and Gretl—all of which are still way faster than the default Normal generator in R (which is of course of higher code complexity).
This release brings a number of changes. Notably, based on the work we did with the new package zigg (more on that in a second), we now also expose the Exponential generator, and the underlying Uniform generator. Otherwise many aspects of the package have been refreshed: updated builds, updated links, updated CI processes, more use of DOIs and more. The other big news is zigg which should now be the preference for deployment of Ziggurat due to its much lighter-weight and zero-dependency setup.
The NEWS
file entry below lists all changes.
Changes in version 0.1.7 (2025-03-22)
The CI setup was updated to use
run.sh
from r-ci (Dirk).The windows build was updated to GSL 2.7, and UCRT support was added (Jeroen in #16).
Manual pages now use JSS DOIs for references per CRAN request
README.md links and badges have been updated
Continuous integration actions have been updated several times
The DESCRIPTION file now uses Authors@R as mandated
Use of multiple cores is eased via a new helper function reflecting option
mc.core
or architecture defaults, used in testsAn inline function has been added to avoid a compiler nag
Support for exponential RNG draws
zrexp
has been added, the internal uniform generator is now also exposed viazruni
The vignette bibliography has been updated, and switched to DOIs
New package zigg is now mentioned in DESCRIPTION and vignette
Courtesy of my CRANberries, there is a diffstat report relative to previous release. More detailed information is on the Rcppziggurat page or the GitHub 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.
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) 1234 other packages on CRAN, downloaded 38.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 617 times according to Google Scholar.
Conrad released a new minor version 14.4.0 last month. That was preceding by several extensive rounds of reverse-dependency checks covering the 1200+ packages at CRAN. We eventually narrowed the impact down to just eight packages, and I opened issue #462 to manage the transition along with ‘GitHub-only’ release 14.4.0-0 of RcppArmadillo. Several maintainers responded very promptly and updated within days – this is truly appreciated. Yesterday the last package updated at CRAN coinciding nicely with our planned / intended upload to CRAN one month after the release. So this new release, at version -1, is now on CRAN. It brings the usual number of small improvements to Armadillo itself as well as updates to packaging.
The changes since the last CRAN release are summarised below.
Changes in RcppArmadillo version 14.4.0-1 (2025-03-17)
CRAN release having given a few packages time to catch-up to small upstream change as discussed and managed in #462
Updated bibliography, and small edits to sparse matrix vignette
Switched continuous integration action to r-ci with implicit bootstrap
Changes in RcppArmadillo version 14.4.0-0 (2025-02-17) (GitHub Only)
Upgraded to Armadillo release 14.4.0 (Filtered Espresso)
Faster handling of
pow()
andsquare()
withinaccu()
andsum()
expressionsFaster
sort()
andsort_index()
for complex matricesExpanded the field class with
.reshape()
and.resize()
member functionsMore efficient handling of compound expressions by
sum()
,reshape()
,trans()
Better detection of vector expressions by
pow()
,imag()
,conj()
The package generator helper function now supports additional DESCRIPTIONs
This release revealed a need for very minor changes for a handful reverse-dependency packages which will be organized via GitHub issue tracking
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.
A new version 0.1.10 of the RcppExamples package is now on CRAN, and marks the first release in five and half years.
RcppExamples provides a handful of short examples detailing by concrete working examples how to set up basic R data structures in C++. It also provides a simple example for packaging with Rcpp. The package provides (generally fairly) simple examples, more (and generally longer) examples are at the Rcpp Gallery.
This releases brings a bi-directorial example of factor
conversion, updates the Date
example, removes the
explicitly stated C++ compilation standard (which CRAN now nags about) and brings a
number of small fixes and maintenance that accrued since the last
release. The NEWS extract follows:
Changes in RcppExamples version 0.1.10 (2025-03-17)
Simplified
DateExample
by removing unused API codeAdded a new
FactorExample
with conversion to and from character vectorsUpdated and modernised continuous integrations multiple times
Updated a few documentation links
Updated build configuration
Updated README.md badges and URLs
No longer need to set a C++ 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 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.
An update to our package RcppNLoptExample arrived on CRAN earlier today marking the first update since the intial release more than four year ago. The nloptr package, created by Jelmer Ypma, has long been providing an excellent R interface to NLopt, a very comprehensive library for nonlinear optimization. In particular, Jelmer carefully exposed the API entry points such that other R packages can rely on NLopt without having to explicitly link to it (as one can rely on R providing sufficient function calling and registration to make this possible by referring back to nloptr which naturally has the linking information and resolution). This package demonstrates this in a simple-to-use Rcpp example package that can serve as a stanza.
More recent NLopt versions appear to have changed behaviour a little so that an example we relied upon in simple unit test now converges to a marginally different numerical value, so we adjusted a convergence treshold. Other than that we did a number of the usual small updates to package metadata, to the README.md file, and to continuous integration.
The (very short) NEWS entry follows:
Changes in version 0.0.2 (2025-03-09)
Updated tolerance in simple test as newer upstream nlopt change behaviour ever so slightly leading to an other spurious failure
Numerous small and standard updates to DESCRIPTION, README.md, badges, and continuous integration setup
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.
A new (mostly maintenance) release 0.2.3 of RcppTOML is now on CRAN.
TOMLis a file format that is most suitable for configurations, as it is meant to be edited by humans but read by computers. It emphasizes strong readability for humans while at the same time supporting strong typing as well as immediate and clear error reports. On small typos you get parse errors, rather than silently corrupted garbage. Much preferable to any and all of XML, JSON or YAML – though sadly these may be too ubiquitous now. TOML is frequently being used with the projects such as the Hugo static blog compiler, or the Cargo system of Crates (aka “packages”) for the Rust language.
This release was tickled by another CRAN request: just like yesterday’s and the RcppDate release two days ago, it responds to the esoteric ‘whitespace in literal operator’ depreceation warning. We alerted upstream too.
The short summary of changes follows.
Changes in version 0.2.3 (2025-03-08)
Correct the minimum version of Rcpp to 1.0.8 (Walter Somerville)
The package now uses Authors@R as mandated by CRAN
Updated 'whitespace in literal' issue upsetting clang++-20
Continuous integration updates including simpler r-ci setup
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.
A new release 0.1.13 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 was tickled by another CRAN request: just like
yesterday’s RcppDate
release, it responds to the esoteric ‘whitespace in literal
operator’ depreceation warning. Turns out that upstream simdjson had this fixed
a few months ago as the node bindings package ran into it. Other changes
include a bit of earlier polish by Daniel, another CRAN mandated update,
CI improvements, and a move of two demos to examples/
to
avoid having to add half a dozen packages to Suggests: for no real usage
gain in the package.
The short NEWS entry for this release follows.
Changes in version 0.1.13 (2025-03-07)
A call to
std::string::erase
is now guarded (Daniel)The package now uses Authors@R as mandated by CRAN (Dirk)
simdjson was upgraded to version 3.12.2 (Dirk)
Continuous integration updated to more compilers and simpler setup
Two demos are now in
inst/examples
to not inflate Suggests
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.
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 is (with minor modifications) the ‘date’ library in C++20. The RcppDate adds no extra R or C++ code and can therefore be a zero-cost dependency for any other project; yet a number of other projects decided to re-vendor it resulting in less-efficient duplication. Oh well. C’est la via.
This release sync wuth the (already mostly included) upstream release
3.0.3, and also addresses a new fresh (and mildly esoteric) nag from
clang++-20
. One upstream PR
already addressed this in the files tickled by some CRAN packages, I followed this up
with another
upstream PR addressing this in a few more occurrences.
Changes in version 0.0.5 (2025-03-06)
Updated to upstream version 3.0.3
Updated 'whitespace in literal' issue upsetting clang++-20; this is also fixed upstream via two PRs
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.
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.
Welcome to post 46 in the $R^4 series!
r2u, introduced less than three years ago in post #37, has become a runaway success. When I last tabulated downloads in early January, we were already at 33 million downloads of binary CRAN packages across the three Ubuntu LTS releases we support. These were exclusively for the ‘amd64’ platform of standard (Intel or AMD made) x64_64 cpus. Now we are happy to announce that arm64 support has been added and is available!
The arm64 platform is already popular on (cloud) servers and is being pushed quite actively by the cloud vendors. AWS calls their cpu ‘graviton’, GCS calls it ‘axion’. General servers call the cpu ‘ampere’; on laptop / desktops it is branded ‘snapdragon’ or ‘cortex’ or something else. Apple calls their variant M1, M2, … up to M4 by now (and Linux support exists for the brave, it is less straightforward). What these have in common is a generally more favourable ‘power consumed to ops provided’ ratio. That makes these cheaper to run or rent on cloud providers. And in laptops they tend to last longer on a single charge too.
Distributions such as Debian, Ubuntu, Fedora had arm64 for many years. In fact, the CRAN binaries of R, being made as builds at launchpad.net long provided arm64 in Michael’s repo, we now also mirror these to CRAN. Similarly, Docker has long supported containers. And last but not least two issue tickets (#40, #55) had asked a while back.
Good question. I still do not own any hardware with it, and I have not (yet?) bothered with the qemu-based emulation layer. The real difference maker was the recent availability of GitHub Actions instances of ‘ubuntu-24.04-arm’ (and now apparently also for 22.04).
So I started some simple experiments … which made it clear this was viable.
Great question. As is commonly known, of the (currently) 22.1k CRAN packages, a little under 5k are ‘compiled’. Why does this matter? Because the Linux distributions know what they are doing. The 17k (give or take) packages that do not contain compiled code can be used as is (!!) on another platform. Debian and Ubuntu call these builds ‘binary: all’ as they work all platforms ‘as is’. The others go by ‘binary: any’ and will work on ‘any’ platform for which they have been built. So we are looking at roughly 5k new binaries.
As I write this in early March, roughly 4.5k of the 5k. Plus the 17.1k ‘binary: all’ and we are looking at near complete coverage!
Pretty complete. Compare to the amd64 side of things, we do not (yet
?) have BioConductor support; this may be added. A handful of packages
do not compile because their builds seem to assume ‘Linux so must be
amd64’ and fail over cpu instructions. Similarly, a few packages want to
download binary build blobs (my own Rblpapi
among them) but
none exist for arm64. Such is life. We will try to fix builds as time
permits and report build issues to the respective upstream repos. Help
in that endeavour would be most welcome.
But all the big and slow compiles one may care about (hello
duckdb
, hello arrow
, …) are there. Which is
pretty exciting!
In GitHub Actions, just pick ubuntu-24.04-arm
as the
platform, and use the r-ci
or r2u-setup
actiions. A first test yaml exists
worked (though this last version had the arm64 runner commented out
again). (And no, arm64 was not faster than amd64. More tests
needed.)
For simple tests, Docker. The rocker/r-ubuntu:24.04
container exists for arm64 (see here), and one
can add r2u support as is done in
this Dockerfile which is used by the builds and available as
eddelbuettel/r2u_build:noble
. I will add the standard
rocker/r2u:24.04
container (or equally
rocker/r2u:noble
) in a day or two, I had not realised I
wasn’t making them for arm64.
One a real machine such as a cloud instance or a proper instance,
just use the standard r2u script for noble
aka 24.04
available here.
The key lines are the two lines
echo "deb [arch=amd64,arm64] https://r2u.stat.illinois.edu/ubuntu noble main" \
> /etc/apt/sources.list.d/cranapt.list
# ...
echo "deb [arch=amd64,arm64] https://cloud.r-project.org/bin/linux/ubuntu noble-cran40/" \
> /etc/apt/sources.list.d/cran_r.list
creating the apt
entry and which are now arm64-aware.
After that, apt
works as usual, and of course r2u works as
usual thanks also to bspm
so you can just do, say
install.packages(c("tidyverse", "brms", "rstan", "sf", "terra"))
and enjoy the binaries rolling in. So give it a whirl if you have access to such hardware. We look forward to feedback, suggestes, feature requests or bug reports. Let us know how it goes!
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.
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.
The still very new package zigg which arrived on CRAN a week ago just received a micro-update at CRAN. zigg provides the Ziggurat pseudo-random number generator (PRNG) for Normal, Exponential and Uniform draws proposed by Marsaglia and Tsang (JSS, 2000), and extended by Leong et al. (JSS, 2005). This PRNG is lightweight and very fast: on my machine speedups for the Normal, Exponential, and Uniform are on the order of 7.4, 5.2 and 4.7 times faster than the default generators in R as illustrated in the benchmark chart borrowed from the git repo.
As wrote last week in the initial announcement, I had picked up their work in package RcppZiggurat and updated its code for the 64-buit world we now live in. That package alredy provided the Normal generator along with several competing implementations which it compared rigorously and timed them. As one of the generators was based on the GNU GSL via the implementation of Voss, we always ended up with a run-time dependency on the GSL too. No more: this new package is zero-depedency, zero-suggsts and hence very easy to deploy. Moreover, we also include a demonstration of four distinct ways of accessing the compiled code from another R package: pure and straight-up C, similarly pure C++, inclusion of the header in C++ as well as via Rcpp. The other advance is the resurrection of the second generator for the Exponential distribution. And following Burkardt we expose the Uniform too. The main upside of these generators is their excellent speed as can be seen in the comparison the default R generators generated by the example script timings.R:
Needless to say, speed is not everything. This PRNG comes the time of 32-bit computing so the generator period is likely to be shorter than that of newer high-quality generators. If in doubt, forgo speed and stick with the high-quality default generators.
This release essentially just completes the DESCRIPTION file and README.md now that this is a CRAN package. The short NEWS entry follows.
Changes in version 0.0.2 (2025-02-07)
- Complete DESCRIPTION and README.md following initial CRAN upload
Courtesy of my CRANberries, there is a diffstat report relative to previous release. For more information, see the package page or the git 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.
Thrilled to announce a new package: zigg. It arrived on CRAN today after a few days of review in the ‘newbies’ queue. zigg provides the Ziggurat pseudo-random number generator for Normal, Exponential and Uniform draws proposed by Marsaglia and Tsang (JSS, 2000), and extended by Leong et al. (JSS, 2005).
I had picked up their work in package RcppZiggurat and updated its code for the 64-buit world we now live in. That package alredy provided the Normal generator along with several competing implementations which it compared rigorously and timed them. As one of the generators was based on the GNU GSL via the implementation of Voss, we always ended up with a run-time dependency on the GSL too. No more: this new package is zero-depedency, zero-suggsts and hence very easy to deploy. Moreover, we also include a demonstration of four distinct ways of accessing the compiled code from another R package: pure and straight-up C, similarly pure C++, inclusion of the header in C++ as well as via Rcpp.
The other advance is the resurrection of the second generator for the Exponential distribution. And following Burkardt we expose the Uniform too. The main upside of these generators is their excellent speed as can be seen in the comparison the default R generators generated by the example script timings.R:
Needless to say, speed is not everything. This PRNG comes the time of 32-bit computing so the generator period is likely to be shorter than that of newer high-quality generators. If in doubt, forgo speed and stick with the high-quality default generators.
The short NEWS entry follows.
Changes in version 0.0.1 (2021-01-30)
- Initial version and CRAN upload
For more, see the package page or the git 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.
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.
The fourteenth release of the qlcal package arrivied at CRAN today, following the QuantLib 1.37 release two days ago.
qlcal delivers the calendaring parts of QuantLib. It is provided (for the R package) as a set of included files, so the package is self-contained and does not depend on an external QuantLib library (which can be demanding to build). qlcal covers over sixty country / market calendars and can compute holiday lists, its complement (i.e. business day lists) and much more. Examples are in the README at the repository, the package page, and course at the CRAN package page.
This releases synchronizes qlcal with
the QuantLib release 1.37 (made
this week), and moves a demo/
file to
examples/
.
Changes in version 0.0.14 (2025-01-23)
Synchronized with QuantLib 1.37 released two days ago
Calendar updates for United States and New Zealand
The
demo/
file is now ininst/examples/
This update includes the inclusion of the January 9, 2025, holiday
for the memorial of President Carter that was observed at the NYSE and
shown by the allUScalendars.R
example:
edd@rob:~/git/qlcal-r/inst/examples(master)$ Rscript allUScalendars.R
LiborImpact NYSE GovernmentBond NERC FederalReserve SOFR
2025-01-01 TRUE TRUE TRUE TRUE TRUE TRUE
2025-01-09 NA TRUE NA NA NA NA
2025-01-20 TRUE TRUE TRUE NA TRUE TRUE
2025-02-17 TRUE TRUE TRUE NA TRUE TRUE
2025-04-18 NA TRUE TRUE NA NA TRUE
2025-05-26 TRUE TRUE TRUE TRUE TRUE TRUE
2025-06-19 TRUE TRUE TRUE NA TRUE TRUE
2025-07-04 TRUE TRUE TRUE TRUE TRUE TRUE
2025-09-01 TRUE TRUE TRUE TRUE TRUE TRUE
2025-10-13 TRUE NA TRUE NA TRUE TRUE
2025-11-11 TRUE NA TRUE NA TRUE TRUE
2025-11-27 TRUE TRUE TRUE TRUE TRUE TRUE
2025-12-25 TRUE TRUE TRUE TRUE TRUE TRUE
edd@rob:~/git/qlcal-r/inst/examples(master)$
Courtesy of my CRANberries, there is a diffstat report for this release. See the project page and package documentation for more details, and more examples. 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 minor release of our ttdo package arrived on CRAN a few days ago. The ttdo package extends the excellent (and very minimal / zero depends) unit testing package tinytest by Mark van der Loo with the very clever and well-done diffobj package by Brodie Gaslam to give us test results with visual diffs (as shown in the screenshot below) which seemingly is so compelling an idea that it eventually got copied by another package which shall remain unnamed… And as of this release, we also support visual diffs as provided by tinysnapshot by Vincent Arel-Bundock.
This release chiefly adds support for visual diff plots. As we extend tinytest for use in the R autograder we maintain and deploy within the lovely PrairieLearn framework, we need to encode the diffplot that has been produced by the autograder (commonly in a separate Docker process) to communicate it back to the controlling (Docker also) instance of PrairieLearn. We also did the usual bits of package maintenance keeping badges, URLs, continuous integration and minor R coding standards current.
As usual, the NEWS entry follows.
Changes in ttdo version 0.0.10 (2025-01-21)
Regular packaging updates to badges and continuous integration setup
Add support for a 'visual difference' taking advantage of a tinysnapshot feature returning a
ttvd
-typed resultAdded (versioned) dependency on tinysnapshot (to also get the plot 'style' enhancement in the most recent version) and base64enc
Return
ttdo
-typed result if diffobj-printed result is returnedEnsure all package-documentation links in manual page have anchors to the package
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.
A new maintenance release 0.4.23 of RProtoBuf arrived on CRAN earlier today, about one year after the previous update. RProtoBuf provides R with bindings for the Google Protocol Buffers (“ProtoBuf”) data encoding and serialization library used and released by Google, and deployed very widely in numerous projects as a language and operating-system agnostic protocol.
This release brings a number of contributed PRs which are truly
appreciate. As the package dates back fifteen+ years, some code corners
can be crufty which was addressed in several PRs, as were two updates
for ongoing changes / new releases of ProtoBuf itself. I also
made the usual changes one does to continuous integrations, README
badges and URL as well as correcting one issue the
checkbashism
script complained about.
The following section from the NEWS.Rd file has full details.
Changes in RProtoBuf version 0.4.23 (2022-12-13)
More robust tests using
toTextFormat()
(Xufei Tan in #99 addressing #98)Various standard packaging updates to CI and badges (Dirk)
Improvements to string construction in error messages (Michael Chirico in #102 and #103)
Accommodate ProtoBuf 26.x and later (Matteo Gianella in #104)
Accommodate ProtoBuf 6.30.9 and later (Lev Kandel in #106)
Correct
bashism
issues inconfigure.ac
(Dirk)
Thanks to my CRANberries, there is a diff to the previous release. The RProtoBuf page has copies of the (older) package vignette, the ‘quick’ overview vignette, and the pre-print of our JSS paper. Questions, comments etc should go to the GitHub issue tracker off 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.
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.
Another minor update 0.3.11 for our nanotime
package is now on CRAN. nanotime
relies on the RcppCCTZ
package (as well as the RcppDate
package for additional C++ operations) and offers efficient high(er)
resolution time parsing and formatting up to nanosecond resolution,
using the bit64
package for the actual integer64
arithmetic. Initially
implemented using the S3 system, it has benefitted greatly from a
rigorous refactoring by Leonardo who not only rejigged
nanotime
internals in S4 but also added new S4 types for
periods, intervals and durations.
This release covers two corner case. Michael sent in a PR
avoiding a clang
warning on complex types. We fixed an
issue that surfaced in a downstream package under sanitizier checks: R
extends coverage of NA to types such as integer or character which need
special treatment in non-R library code as ‘they do not know’. We
flagged (character) formatted values after we had called the
corresponding CCTZ function but that leaves potentiall ‘undefined’
values (from R’s NA values for int
, say, cast to
double
) so now we flag them, set a transient safe value for
the call and inject the (character) representation "NA"
after the call in those spots. End result is the same, but without a
possibly slap on the wrist from sanitizer checks.
The NEWS snippet below has the full details.
Changes in version 0.3.11 (2025-01-10)
Thanks to my CRANberries, there is a diffstat report for this release. More details and examples are at the nanotime page; code, issue tickets etc at the GitHub repository – and all documentation is provided at the nanotime documentation 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 now sponsor me at GitHub.
A fresh minor release of the inline package got to CRAN today, following on the November release which had marked the first release in three and half years. inline facilitates writing code in-line in simple string expressions or short files. The package was used quite extensively by Rcpp in the very early days before Rcpp Attributes arrived on the scene providing an even better alternative for its use cases. inline is still used by rstan and a number of other packages.
In the November
release we accommodated upcoming R-devel changes on setting
R_NO_REMAP
by conditioning on the release version. It turns
that this does not get when the #define
independently so
this needed a small refinement which this version brings. No other
changes were made.
The NEWS
extract follows and details the changes some
more.
Changes in inline version 0.3.21 (2025-01-08)
- Refine use of
Rf_warning
incfunction
setting-DR_NO_REMAP
ourselves to get R version independent state
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 now 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 follow-up release 0.3.11 to the recent 0.3.10 release release of the anytime package arrived on CRAN two days ago. The package is fairly feature-complete, and code and functionality remain mature and stable, of course.
anytime
is a very focused package aiming to do just one thing really
well: to convert anything in integer, numeric, character,
factor, ordered, … input format to either POSIXct (when called as
anytime
) or Date objects (when called as
anydate
) – and to do so without requiring a format
string as well as accomodating different formats in one input
vector. See the anytime page,
or the GitHub repo
for a few examples, and the beautiful documentation site
for all documentation.
This release simply skips one test file. CRAN labeled an error ‘M1mac’ yet it did not reproduce on any of the other M1 macOS I can access (macbuilder, GitHub Actions) as this appeared related to a local setting of timezone values I could not reproduce anywwhere. So the only way to get rid of the ‘fail’ is to … not to run the test. Needless to say the upload process was a little tedious as I got the passive-aggressive ‘not responding’ treatment on a first upload and the required email answer it lead to. Anyway, after a few days, and even more deep breaths, it is taken care of and now the package result standing is (at least currently) pristinely clean.
The short list of changes follows.
Changes in anytime version 0.3.11 (2024-12-18)
- Skip a test file
Courtesy of my CRANberries, there is also a diffstat report of changes relative to the previous release. The issue tracker tracker off the GitHub repo can be use for questions and comments. More information about the package is at the package page, the GitHub repo and the documentation 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 now sponsor me at GitHub.
Boost is a very large and comprehensive set of (peer-reviewed) libraries for the C++ programming language, containing well over one hundred individual libraries. The BH package provides a sizeable subset of header-only libraries for (easier, no linking required) use by R. It is fairly widely used: the (partial) CRAN mirror logs (aggregated from the cloud mirrors) show over 38.5 million package downloads.
Version 1.87.0 of Boost was released last week following the regular Boost release schedule of April, August and December releases. As before, we packaged it almost immediately and started testing following our annual update cycle which strives to balance being close enough to upstream and not stressing CRAN and the user base too much. The reverse depends check revealed six packages requiring changes or adjustments. We opened issue #103 to coordinate the issue (just as we did in previous years). Our sincere thanks to Matt Fidler who fixed two packages pretty much immediately.
As I had not heard back from the other maintainers since filing the issue, I uploaded the package to CRAN suggesting that the coming winter break may be a good opportunity for the four other packages to catch up. CRAN concurred, and 1.87.0-1 is now available there.
There are no other changes apart from cosmetics in the
DESCRIPTION
file. For once, we did not add any new Boost libraries. The short NEWS entry
follows.
Changes in version 1.87.0-1 (2024-12-17)
Upgrade to Boost 1.87.0, patched as usual to comment-out diagnostic suppression messages per the request of CRAN
Switched to Authors@R
Via my CRANberries, there
is a diffstat
report relative to the previous
release. Comments and suggestions about BH are welcome via 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.
Welcome to post 45 in the $R^4 series!
We introduced r-ci here in post #32 here nearly four years ago. It has found pretty widespread use and adoption, and we received a few kind words then (in the linked issue) and also more recently (in a follow-up comment) from which we merrily quote:
[…] almost 3 years later on and I have had zero problems with this CI setup. For people who want reliable R software, resources like these are invaluable.
And while we followed up with post #41 about r2u for simple continuous integration, we may not have posted when we based r-ci on r2u (for the obvious Linux usage case). So let’s make time now for a (comparitively smaller) update, and an update usage examples.
We made two changes in the last few days. One is a (obvious in
hindsight) simplification. Given that the bootstrap
step
was always executed, and needed no parameters, we pulled it into a new
aggregated setup simply called r-ci
that includes it so
that it can be omitted as a step in the yaml file. Second, we recently
needed Fortran on macOS too, and realized it was not installed by
default so we just added that too.
With that a real and used example is now as simple as the screenshot to the left (and hence one ‘paragraph’ shorter). The trained eye will no doubt observe that there is nothing specific to a given repo. And that is basically the key feature: we can simply copy this file around and get fast and easy and reliable CI by taking advantage of the underlying robustness of r2u solving all dependency automagically and reliably. The option to enable macOS is also solid and compelling as the GitHub runners are fast (but more ‘expensive’ in how the count against the limit of minutes—so again a tradeoff to make), as is the option to run coverage if one so desires. Some of my repos do too.
Take a look at the r-ci website which has more examples for the other supported CI servics it can used with, and feel free to ask questions as issue in the 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. Please report excessive re-aggregation in third-party for-profit settings.
Welcome to the 44th post in the $R^4 series.
A few weeks ago, and following an informal ‘call for talks’ by James Lamb, I had an opportunity to talk about r2u to the Chicago ML and MLops meetup groups. You can find the slides here.
Over the last 2 1/2 years, r2u has become a widely-deployed mechanism in a number of settings, including (but not limited to) software testing via continuous integration, deployment on cloud servers—besides of course to more standard use on local laptops or workstation. 30 million downloads illustrate this. My thesis for the talk was that this extends equally to ML(ops) where no surprises, no hickups automated deployments are key for large-scale model training, evaluation and of course production deployments.
In this context, I introduce r2u while giving credit both to what came before it, the existing alternatives (or ‘competitors’ for mindshare if one prefers that phrasing), and of course what lies underneath it.
The central takeaway, I argue, is that r2u can and does take advantage of a unique situation in that we can ‘join’ the package manager task for the underlying (operating) system and and the application domain, here R and its unique CRAN repository network. Other approaches can, and of course do, provide binaries, but by doing this outside the realm of the system package manager can only arrive at a lesser integration (and I show a common error arising in that case). So where r2u is feasible, it dominates the alternatives (while the alternatives may well provide deployment on more platforms which, even when less integrated, may be of greater importance for some). As always, it all depends.
But the talk, and its slides, motivate and illustrate why we keep calling r2u by its slogan of r2u: Fast. Easy. Reliable. Pick All Three.
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. Please report excessive re-aggregation in third-party for-profit settings.
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.
A new version of our pinp package arrived on CRAN today, and is the first release in four years. The pinp package allows for snazzier one or two column Markdown-based pdf vignettes, and is now used by a few packages. A screenshot of the package vignette can be seen below. Additional screenshots are at the pinp page.
This release contains no new features or new user-facing changes but reflects the standard package and repository maintenance over the four-year window since the last release: updating of actions, updating of URLs and addressing small packaging changes spotted by ever-more-vigilant R checking code.
The NEWS entry for this release follows.
Changes in pinp version 0.0.11 (2024-12-08)
Standard package maintenance for continuous integration, URL updates, and packaging conventions
Correct two minor nags in the Rd file
Courtesy of my CRANberries, there is a diffstat report relative to previous release. More detailed information is on the ping page. For questions or comments use the issue tracker off the GitHub repo. 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.
An updated version of the corels package is now on CRAN! The ‘Certifiably Optimal RulE ListS (Corels)’ learner provides interpretable decision rules with an optimality guarantee—a nice feature which sets it apart in machine learning. You can learn more about corels at its UBC site.
The changes concern mostly maintenance for both the repository (such as continunous integration setup, badges, documentation links, …) and the package level (such as removing the no-longer-requiring C++ compilation standard setter now emitting a NOTE at CRAN.
This post by Dirk Eddelbuettel originated on his Thinking inside the box blog. Please report excessive re-aggregation in third-party for-profit settings.
A new release of the anytime package arrived on CRAN today—the first is well over four years. The package is fairly feature-complete, and code and functionality remain mature and stable, of course.
anytime
is a very focused package aiming to do just one thing really
well: to convert anything in integer, numeric, character,
factor, ordered, … input format to either POSIXct (when called as
anytime
) or Date objects (when called as
anydate
) – and to do so without requiring a format
string as well as accomodating different formats in one input
vector. See the anytime page,
or the GitHub repo
for a few examples, and the beautiful documentation site
for all documentation.
This release slowly matured over four years. It combines a number of strictly internal repository maintenance such as changes to continuous integration with small enhancements (adding for example some new formats, responding better to an error condition, dealing with logical input as an error) with a relaxation of the C++ compilation standard. While we once needed C++11, it is now a constraint as as R itself is quite proactive (the last two releases defaulted already to C++17, suitable compiler permitting) we can now relax this constraint. The documentation site is new, as some other small changes. See the full list of changes which follows.
Changes in anytime version 0.3.10 (2024-12-02)
A new documentation site was added.
Continuous Integration now uses
run.sh
from r-ci with bspmLogical input vectors are now recognised as an error (#121)
Additional dot-separated format
'%Y.%m.%d'
is supportedOther small updates were made throughout the package
No longer set a C++ compilation standard as the default choices by R are sufficient for the package
Switch Rcpp include file to Rcpp/Lightest
We recommend
~/.R/Makevars
compiler flag options-Wno-ignored-attributes -Wno-nonnull -Wno-parentheses
The tinytest runner was simplified
NA
values from conversion now trigger a warning
Courtesy of my CRANberries, there is also a diffstat report of changes relative to the previous release. The issue tracker tracker off the GitHub repo can be use for questions and comments. More information about the package is at the package page, the GitHub repo and the documentation site. If you like this or other open-source work I do, you can now sponsor me at GitHub.
This post by Dirk Eddelbuettel originated on his Thinking inside the box blog. Please report excessive re-aggregation in third-party for-profit settings.
A new version 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 new release of the inline package got to CRAN today marking the first release in three and half years. inline facilitates writing code in-line in simple string expressions or short files. The package was used quite extensively by Rcpp in the very early days before Rcpp Attributes arrived on the scene providing an even better alternative for its use cases. inline is still used by rstan and a number of other packages.
This release was tickled by changing in r-devel just this week, and
the corresponding ‘please fix or else’ email I received this morning.
R_NO_REMAP
is now the default in r-devel, and while we had
already converted most (old-style) calls into the API to using the now
mandatory Rf_
prefix, the package contained few remaining
cases in examples as well as one in code generation. The release also
contains a helpful contributed PR making an error message a little
clearer, plus several small and common maintenance changed around
continuous integration, package layout and the repository.
The NEWS
extract follows and details the changes some
more.
Changes in inline version 0.3.20 (2024-11-10)
Error message formatting is improved for
compileCode
(Alexis Derumigny in #25)Switch to using Authors@R, other general packaging maintenance for continuous integration and repository
Use
Rf_
in a handful of cases as R-devel now mandates it
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.
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.
Another pure maintenance release 0.2.7 of the gcbd package is now on CRAN. The gcbd proposes a benchmarking framework for LAPACK and BLAS operations (as the library can exchanged in a plug-and-play sense on suitable OSs) and records result in local database. Its original motivation was to also compare to GPU-based operations. However, as it is both challenging to keep CUDA working packages on CRAN providing the basic functionality appear to come and go so testing the GPU feature can be challenging. The main point of gcbd is now to actually demonstrate that ‘yes indeed’ we can just swap BLAS/LAPACK libraries without any change to R, or R packages. The ‘configure / rebuild R for xyz’ often seen with ‘xyz’ being Goto or MKL is simply plain wrong: you really can just swap them (on proper operating systems, and R configs – see the package vignette for more). But nomatter how often we aim to correct this record, it invariably raises its head another time.
This release accommodates a CRAN change request as we were
referencing the (now only suggested) package gputools
. As
hinted in the previous paragraph, it was once on CRAN but is not right now so we
adjusted our reference.
CRANberries also provides a diffstat report for the latest release.
If you like this or other open-source work I do, you can sponsor me at GitHub.
This post by Dirk Eddelbuettel originated on his Thinking inside the box blog. Please report excessive re-aggregation in third-party for-profit settings.
A new minor release of the drat package arrived on CRAN today, which is just over a year since the previous release. drat stands for drat R Archive Template, and helps with easy-to-create and easy-to-use repositories for R packages. Since its inception in early 2015 it has found reasonably widespread adoption among R users because repositories with marked releases is the better way to distribute code.
Because for once it really is as your mother told you: Friends
don’t let friends install random git commit snapshots. Properly
rolled-up releases it is. Just how CRAN shows us: a model that has
demonstrated for over two-and-a-half decades how to do this.
And you can too: drat
is easy to use, documented by six
vignettes and just works. Detailed information about
drat
is at its documentation site. That
said, and ‘these days’, if you mainly care about github code then r-universe is there too, also
offering binaries its makes and all that jazz. But sometimes you just
want to, or need to, roll a local repository and drat can help
you there.
This release contains a small PR (made by Arne Holmin just after the
previous release) adding support for an ‘OSflacour’ variable (helpful
for macOS). We also corrected an issue with one test file being
insufficiently careful of using git2r
only when installed,
and as usual did a round of maintenance for the package concerning both
continuous integration and documentation.
The NEWS
file summarises the release as follows:
Changes in drat version 0.2.5 (2024-10-21)
Function
insertPackage
has a new optional argumentOSflavour
(Arne Holmin in #142)A test file conditions correctly about git2r being present (Dirk)
Several smaller packaging updates and enhancements to continuous integration and documentation have been added (Dirk)
Courtesy of my CRANberries, there is a comparison to the previous release. More detailed information is on the drat page as well as at the documentation 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 thirteenth release of the qlcal package arrivied at CRAN today.
qlcal delivers the calendaring parts of QuantLib. It is provided (for the R package) as a set of included files, so the package is self-contained and does not depend on an external QuantLib library (which can be demanding to build). qlcal covers over sixty country / market calendars and can compute holiday lists, its complement (i.e. business day lists) and much more. Examples are in the README at the repository, the package page, and course at the CRAN package page.
This releases synchronizes qlcal with the QuantLib release 1.36 (made this week) and contains some minor updates to two calendars.
Changes in version 0.0.13 (2024-10-15)
Synchronized with QuantLib 1.36 released yesterday
Calendar updates for South Korea and Poland
Courtesy of my CRANberries, there is a diffstat report for this release. See the project page and package documentation for more details, and more examples. 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 minor release 0.1.5 of RApiSerialize arrived on CRAN today. The RApiSerialize package is used by both my RcppRedis as well as by Travers excellent qs package. This release adds an optional C++ namespace, available when the API header file is included in a C++ source file. And as one often does, the release also brings a few small updates to different aspects of the packaging.
Changes in version 0.1.4 (2024-09-28)
Courtesy of my CRANberries, there is a diffstat report relative to previous release. More details are at the RApiSerialize page; code, issue tickets etc at the GitHub repositoryrapiserializerepo.
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.
Version 0.3.15 of the Rblpapi package arrived on CRAN today. Rblpapi provides a direct interface between R and the Bloomberg Terminal via the C++ API provided by Bloomberg (but note that a valid Bloomberg license and installation is required).
This is the fifteenth release since the package first appeared on CRAN in 2016. This release updates to the current version 3.24.6 of the Bloomberg API, and rounds out a few corners in the packaging from continuous integration to the vignette.
The detailed list of changes follow below.
Changes in Rblpapi version 0.3.15 (2024-09-18)
A warning is now issued if more than 1000 results are returned (John in #377 addressing #375)
A few typos in the rblpapi-intro vignette were corrected (Michael Streatfield in #378)
The continuous integration setup was updated (Dirk in #388)
Deprecation warnings over
char*
where C++ className
is now preferred have been addressed (Dirk in #391)Several package files have been updated (Dirk in #392)
The
request
formation has been corrected, and an example was added (Dirk and John in #394 and #396)The Bloomberg API has been upgraded to release 3.24.6.1 (Dirk in #397)
Courtesy of my CRANberries, there is also a diffstat report for the this release. As always, more detailed information is at the Rblpapi repo or the Rblpapi page. Questions, comments etc should go to the issue tickets system at the GitHub repo.
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 update 0.3.10 for our nanotime
package is now on CRAN. nanotime
relies on the RcppCCTZ
package (as well as the RcppDate
package for additional C++ operations) and offers efficient high(er)
resolution time parsing and formatting up to nanosecond resolution,
using the bit64
package for the actual integer64
arithmetic. Initially
implemented using the S3 system, it has benefitted greatly from a
rigorous refactoring by Leonardo who not only rejigged
nanotime
internals in S4 but also added new S4 types for
periods, intervals and durations.
This release updates one S4 methods to very recent changes in r-devel
for which CRAN had reached out.
This concerns the setdiff()
method when applied to two
nanotime
objects. As it only affected R 4.5.0, due next
April, if rebuilt in the last two or so weeks it will not have been
visible to that many users, if any. In any event, it now works again for
that setup too, and should be going forward.
We also retired one demo function from the very early days,
apparently it relied on ggplot2
features that have since
moved on. If someone would like to help out and resurrect the demo,
please get in touch. We also cleaned out some no longer used tests, and
updated DESCRIPTION to what is required now. The NEWS snippet below has
the full details.
Changes in version 0.3.10 (2024-09-16)
Thanks to my CRANberries, there is a diffstat report for this release. More details and examples are at the nanotime page; code, issue tickets etc at the GitHub repository – and all documentation is provided at the nanotime documentation site.
If you like this or other open-source work I do, you can sponsor me at GitHub.
This post by Dirk Eddelbuettel originated on his Thinking inside the box blog. Please report excessive re-aggregation in third-party for-profit settings.
A new 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 shiny new release 0.2.4 of pkgKitten
arrived on CRAN earlier, and
has also been been uploaded to Debian. pkgKitten
makes it simple to create new R packages via a simple function
invocation. A wrapper kitten.r
exists in the littler
package to make it even easier.
This release contains several improvements to the (optional) setup of the (wonderful) tinytest package, now supports the (now mandatory) ‘Authors@R’ and polished a few aspect around the package repository and continuous integrations.
The set of changes follows.
Changes in version 0.2.4 (2024-08-30)
The .Rbuildignore stanza now includes .github
The support of and usage illustrations of tinytest are much enhanced (Paul Hudor in #18 adressing #19 and #20)
The .gitignore file now includes C++ related files
Improvements and polish to badges and continuous integration
The DESCRIPTION file now contains an Authors@R entry
More details about the package are at the pkgKitten webpage, the pkgKitten docs site, and the pkgKitten GitHub repo.
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.