Dirk Eddelbuettel: RcppArmadillo 15.2.0-0 on GitHub: New Upstream, Simpler OpenMP
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) 1270 other packages on CRAN, downloaded 42 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 650 times according
to Google Scholar.
This versions updates to the 15.2.0 upstream release made today. It
brings a few changes over Armadillo 15.0 (see below for more). It
follows the most recent RcppArmadillo
15.0.2-2 release and the Armadillo
15 upstream transition with its dual focus on moving on from C++11
and deprecation of a number of API access points. As we had a few
releases last month to manage the transition, we will sit this upgrade
out and not upload to CRAN in order to normalize our
update cadence towards the desired about six in six months (that the
CRAN Policy asks for). One can of course install as usual directly from
the GitHub
repository as well as from r-universe
which also offers binaries for all CRAN platforms.
The transition to Armadillo 15 appears to be going slowly but
steadily. We had well over 300 packages with either a need to relax the
C++11 setting and/or update away from now-deprecated API access points.
That number has been cut in half thanks to a lot of work from
a lot of package maintainers which is really appreciated! Of
course, a lot remains to be done. Issues #489 and
#491
contain the over sixty PRs and patches I prepared for all packages with
at least one reverse dependency. Most (but not all) have aided in CRAN updates, some packages are
still outstanding in terms of updates. As before meta-issue #475
regroups all the resources for the transition. If you, dear
reader, have a package that is affected and I could be of assistance
please do reach out.
The other change we made is to greatly simplify the detection and
setup of OpenMP. As before, we rely on configure to attempt
compilation of a minimal OpenMP-using program in order to pass the
success or failure onto Armadillo as a can-or-cannot use OpenMP. In
the year 2025 one of the leading consumer brands still cannot ship an OS
where this works out of the box, so we try to aide there. For all others
systems, R actually covers this pretty well and has a reliable
configuration variable that we rely upon. Just as we recommend for
downstream users of the package. This setup should be robust, but is a
change so by all means if you knowingly rely on OpenMP please test and
report back.
The detailed changes since the last CRAN release follow.
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.Changes in RcppArmadillo version 15.2.0-0 (2025-10-20) (GitHub Only)
- Upgraded to Armadillo release 15.2.0 (Medium Roast Deluxe)
- Added
rande()for generating matrices with elements from exponential distributionsshift()has been deprecated in favour ofcircshift(), for consistency with Matlab/Octave- Reworked detection of aliasing, leading to more efficient compiled code
- OpenMP detection in
configurehas been simplified
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.
In
The discovery of a backdoor in XZ Utils in the spring of 2024 shocked the open source community, raising critical questions about software supply chain security. This post explores whether better Debian packaging practices could have detected this threat, offering a guide to auditing packages and suggesting future improvements.
The XZ backdoor in versions 5.6.0/5.6.1 made its way briefly into many major Linux distributions such as Debian and Fedora, but luckily didn t reach that many actual users, as the backdoored releases were quickly removed thanks to the heroic diligence of
If the changes are extensive, and you want to use a LLM to help spot potential security issues, generate the report of both the upstream and Debian packaging differences in Markdown with:
To compare changes across the new and old upstream tarball, one would need to compare commits afba662b New upstream version 5.8.0 and fa1e8796 New upstream version 5.8.1 by running
With all the above tips you can now go and try to audit your own favorite package in Debian and see if it is identical with upstream, and if not, how it differs.
There is only one tiny thing that maybe a very experienced Autotools user could potentially have noticed: the
One of my servers at work leads a very light life: it is our main backups
server (so it has a I/O spike at night, with little CPU involvement) and
has some minor services running (i.e. a couple of Tor relays and my
personal email server yes, I have the authorization for it ). It is a
very stable machine But today I was surprised:
As I am about to migrate it to Debian 13 (Trixie), naturally, I am set to
reboot it. But before doing so:

A bit delayed in terms of an announcement, but last month I tagged a new version of onak, my OpenPGP compatible keyserver. It s been 2 years since the
Dear lazyweb,
At work, we are trying to rotate the GPG signing keys for the Linux packages of
the
Like each month, have a look at the work funded by
Our Debian User Group met on September 27th for our first meeting
since our summer hiatus. As always, it was fun and productive!
Here's what we did:
pollo:
Some of us ended up grabbing a drink after the event at 





We had 886 responses with status code 200 and 64 connections closed.
The backend terminated 64 connections while the load balancer still had
active requests directed to it.
Let's change the Load Balancer
Great! Now all the requests worked.
This is a common issue, not specific to Envoy Proxy or the setup
shown earlier. Major cloud providers have all documented it.
Even thought the success rate is 100%, the status code distribution
show some responses with status code 503. This is the case where is not
that obvious that the problem is related to idle timeout.
However, it's clear when we look the Envoy access logs:
Key Takeaways: