Thinking inside the box (original) (raw)
RcppDate 0.0.6: New Upstream
RcppDate wraps the featureful datelibrary 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. TheRcppDate package 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 vie.
This release syncs with upstream release 3.0.4 made yesterday which contains a few PRs (including one by us) for the clang++-20
changes some of which we already had in release 0.0.5. We also made a routine update to the continuous integration.
Changes in version 0.0.6 (2025-05-29)
- Updated to upstream version 3.0.4
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 boxblog. If you like this or other open-source work I do, you can sponsor me at GitHub.
RcppArmadillo 14.4.3-1 on CRAN: Small Upstream Bug Fix
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. RcppArmadillointegrates this library with the R environment and language–and is widely used by (currently) 1251 other packages on CRAN, downloaded 39.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 628 times according to Google Scholar.
Conrad released a minor bugfix version yesterday which addresses corner cases with non-finite values in sparse matrices. And despite conference traveling, I managed to wrap this up and ship it to CRAN where it appeared yesterday. The changes since the last CRANrelease are summarised below.
Changes in RcppArmadillo version 14.4.3-1 (2025-05-21)
- Upgraded to Armadillo release 14.4.3 (Filtered Espresso)
- Fix for several corner cases involving handling of non-finite elements by sparse matrices
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-Forgepage.
This post by Dirk Eddelbuettel originated on his Thinking inside the boxblog. If you like this or other open-source work I do, you can sponsor me at GitHub.
RcppArmadillo 14.4.2-1 on CRAN: Another Small Upstream Fix
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. RcppArmadillointegrates this library with the R environment and language–and is widely used by (currently) 1245 other packages on CRAN, downloaded 39.4 million times (per the partial logs from the cloud mirrors of CRAN), and the CSDA paper (preprint / vignette) by Conrad and myself has been cited 628 times according to Google Scholar.
A new release arriveed at CRAN yesterday with a fix forexpmat()
and adjustments for clang++-20
. These changes since the last CRANrelease are summarised below.
Changes in RcppArmadillo version 14.4.2-1 (2025-04-25)
- Upgraded to Armadillo release 14.4.2 (Filtered Espresso)
- Fix for
expmat()
- Workaround for bugs in clang 20 compiler
- Micro-cleanup in one test file
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-Forgepage.
This post by Dirk Eddelbuettel originated on his Thinking inside the boxblog. If you like this or other open-source work I do, you can sponsor me at GitHub.
RcppZiggurat 0.1.8 on CRAN: Build Refinements
A new release 0.1.8 of RcppZigguratis now on the CRAN network forR, following up on the 0.1.7 release last week which was the first release in four and a half years.
The RcppZigguratpackage updates the code for the Ziggurat generator by Marsaglia and others which provides very fast draws from a Normal (or Exponential) 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 switches the vignette to the standard trick of premaking it as a pdf and including it in a short Sweave document that imports it via pdfpages
; this minimizes build-time dependencies on other TeXLive components. It also incorporates a change contributed by Tomas to rely on the system build of the GSL on Windows as well if Rtools 42 or later is found. No other changes.
The NEWS
file entry below lists all changes.
Changes in version 0.1.8 (2025-03-30)
- The vignette is now premade and rendered as Rnw via pdfpage to minimize the need for TeXLive package at build / install time (Dirk)
- Windows builds now use the GNU GSL when Rtools is 42 or later (Tomas Kalibera in #25)
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 boxblog. If you like this or other open-source work I do, you can sponsor me at GitHub.
RcppArmadillo 14.4.1-1 on CRAN: Small Upstream Fix
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. RcppArmadillointegrates this library with the R environment and language–and is widely used by (currently) 1236 other packages on CRAN, downloaded 39 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 620 times according to Google Scholar.
This release brings a small upstream bug fix to the two FFTW3-interfacing functions, something not likely to hit many CRAN packages.
The changes since the last and fairly recent CRAN release are summarised below.
Changes in RcppArmadillo version 14.4.1-1 (2025-03-27)
- Upgraded to Armadillo release 14.4.1 (Filtered Espresso)
- Fix for
fft()
andifft()
when using FFTW3 in multi-threaded contexts (such as OpenMP)
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-Forgepage.
This post by Dirk Eddelbuettel originated on his Thinking inside the boxblog. If you like this or other open-source work I do, you can sponsor me at GitHub.
RcppRedis 0.2.5 on CRAN: Fix Bashism in Configure, Maintenance
A new minor release 0.2.5 of our RcppRedispackage arrived on CRAN today.RcppRedisis one of several packages connecting R to the fabulous Redis in-memory datastructure store (and much more). RcppRedisdoes 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,RQuantLiband RDieHarder, this addresses a nag from CRANabout 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
tosnprintf
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 RApiSerializeis 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 boxblog. If you like this or other open-source work I do, you can sponsor me at GitHub.
RcppZiggurat 0.1.7 on CRAN: New Generators, Many Updates
A new release 0.1.7 of RcppZigguratis now on the CRAN network forR. This marks the first release in four and a half years.
The RcppZigguratpackage 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 tests- An 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 boxblog. If you like this or other open-source work I do, you can sponsor me at GitHub.
RcppArmadillo 14.4.0-1 on CRAN: New Upstream
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. RcppArmadillointegrates 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()
expressions- Faster
sort()
andsort_index()
for complex matrices- Expanded the field class with
.reshape()
and.resize()
member functions- More 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-Forgepage.
This post by Dirk Eddelbuettel originated on his Thinking inside the boxblog. If you like this or other open-source work I do, you can sponsor me at GitHub.
RcppExamples 0.1.10: New factor Example, Other Updates
A new version 0.1.10 of the RcppExamplespackage is now on CRAN, and marks the first release in five and half years.
RcppExamplesprovides 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 theRcpp 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 code- Added a new
FactorExample
with conversion to and from character vectors- Updated 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 boxblog. If you like this or other open-source work I do, you can now sponsor me at GitHub.
RcppNLoptExample 0.0.2: Minor Updates
An update to our package RcppNLoptExamplearrived on CRAN earlier today marking the first update since the intial release more than four year ago. The nloptr package, created byJelmer 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 nloptrwhich 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 boxblog. If you like this or other open-source work I do, you can now sponsor me at GitHub.
RcppTOML 0.2.3 on CRAN: Compiler Nag, Small Updates
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 trackerat the GitHub repo.
This post by Dirk Eddelbuettel originated on his Thinking inside the boxblog. If you like this or other open-source work I do, you can now sponsor me at GitHub.
RcppSimdJson 0.1.13 on CRAN: Compiler Nag, New Upsteam
A new release 0.1.13 of the RcppSimdJsonpackage is now on CRAN.
RcppSimdJsonwraps 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:🧵: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 boxblog. If you like this or other open-source work I do, you can now sponsor me at GitHub.
RcppDate 0.0.5: Address Minor Compiler Nag
RcppDate wraps the featureful datelibrary 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. TheRcppDate 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 fromclang++-20
. One upstream PRalready 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 boxblog. If you like this or other open-source work I do, you can sponsor me at GitHub.
Rcpp now used by 3000 CRAN packages!
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 availabletoo.
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 boxblog. If you like this or other open-source work I do, you can sponsor me at GitHub.
RcppDE 0.1.8 on CRAN: Maintenance
A maintenance release of our RcppDE package arrived at CRAN. RcppDE is a “port” ofDEoptim, 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 boxblog. If you like this or other open-source work I do, you can sponsor me at GitHub.
RcppUUID 1.2.0 on CRAN: Adding Clock-based UUIDs
The RcppUUID package on CRAN has been providing UUIDs (based on the underlying Boostlibrary) 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 BHpackage)
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 boxblog. If you like this or other open-source work I do, you can sponsor me at GitHub.
RcppArmadillo 14.2.3-1 on CRAN: Small Upstream Fix
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. RcppArmadillointegrates 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 LAPACK- Fix 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-Forgepage.
This post by Dirk Eddelbuettel originated on his Thinking inside the boxblog. If you like this or other open-source work I do, you can sponsor me at GitHub.
RcppBDT 0.2.7 on CRAN: Maintenance
Another minor maintenance release for the RcppBDTpackage is now on CRAN.
The RcppBDTpackage is an early adopter of Rcppand was one of the first packages utilizing Boost and its Date_Timelibrary. 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 trackerat the GitHub repo.
This post by Dirk Eddelbuettel originated on his Thinking inside the boxblog. If you like this or other open-source work I do, you can now sponsor me at GitHub.
RcppMsgPack 0.2.4 on CRAN: Maintenance
Another maintenance release of RcppMsgPackgot 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. RcppMsgPackbrings 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 boxblog. If you like this or other open-source work I do, you can now sponsor me at GitHub.
RcppFastFloat 0.0.5 on CRAN: New Upstream, Updates
A new minor release of RcppFastFloatjust arrived on CRAN. The package wraps fast_float, another nice library by Daniel Lemire. For details, see the arXiv preprint or publishedpaper 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 boxblog. If you like this or other open-source work I do, you can now sponsor me at GitHub.
Rcpp 1.0.14 on CRAN: Regular Semi-Annual Update
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 CRANfor 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 onRcpp for making analytical code go faster and further. On CRAN, 13.6% of all packages depend (directly) onRcpp, 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 #1315fixing #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 boxblog. If you like this or other open-source work I do, you can sponsor me at GitHub.
RcppGetconf 0.0.4 on CRAN: Updates
A minor package update, the first in over six years, for the RcppGetconfpackage for reading system configuration — not unlikegetconf
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 URLs- The
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 thelocal RcppGetconf page and the GitHub repo.
This post by Dirk Eddelbuettel originated on his Thinking inside the boxblog. If you like this or other open-source work I do, you can now sponsor me at GitHub.
RcppCCTZ 0.2.13 on CRAN: Maintenance
A new release 0.2.13 of RcppCCTZ is now on CRAN.
RcppCCTZuses 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 RcppCCTZpage 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 theRcppCCTZ 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 boxblog. Please report excessive re-aggregation in third-party for-profit settings.
RcppArmadillo 14.2.2-1 on CRAN: Small Upstream Fixes
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. RcppArmadillointegrates 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 ensmallenand mlpack repositories following the [14.2.0 release]. Use of (member functions).min(index)
and .max(index)
was deprecated inArmadillo 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 RcppArmadillodue 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-Forgepage.
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 boxblog. Please report excessive re-aggregation in third-party for-profit settings.
RcppAPT 0.0.10: Maintenance
A new version of the RcppAPTpackage arrived on CRAN earlier today. RcppAPTconnects 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.
RcppAPTallows 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 boxblog. Please report excessive re-aggregation in third-party for-profit settings.
RcppArmadillo 14.2.0-1 on CRAN: New Upstream Minor
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. RcppArmadillointegrates 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 packagedoes 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 solver- More 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-Forgepage.
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 boxblog. Please report excessive re-aggregation in third-party for-profit settings.
RcppSpdlog 0.0.19 on CRAN: New Upstream, New Features
Version 0.0.19 of RcppSpdlog arrived on CRAN early this morning and has been uploaded to Debian. RcppSpdlogbundles 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 fmt11.0.2. It also contains a contributed PR which allows usestd::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 boxblog. Please report excessive re-aggregation in third-party for-profit settings.
Rcpp 1.0.13-1 on CRAN: Hot Fix
A hot-fix release 1.0.13-1, consisting of two small PRs relative to the last regular CRAN release1.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 boxblog. Please report excessive re-aggregation in third-party for-profit settings.
RcppDate 0.0.4: New Upstream Minor
RcppDate wraps the featureful datelibrary 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 boxblog. Please report excessive re-aggregation in third-party for-profit settings.
RcppFastAD 0.0.4 on CRAN: Updated Again
A new release 0.0.4 of the RcppFastAD package by James Yang and myself is now on CRAN.
RcppFastADwraps the FastADheader-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 thepackage 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 boxblog. Please report excessive re-aggregation in third-party for-profit settings.
RcppFastAD 0.0.3 on CRAN: Updated
A new release 0.0.3 of the RcppFastAD package by James Yang and myself is now on CRAN.
RcppFastADwraps the FastADheader-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 thepackage 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 boxblog. Please report excessive re-aggregation in third-party for-profit settings.
RcppArmadillo 14.0.2-1 on CRAN: Updates
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. RcppArmadillointegrates 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 whatcitation()
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-Forgepage.
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 boxblog. Please report excessive re-aggregation in third-party for-profit settings.
RcppCNPy 0.2.13 on CRAN: Micro Bugfix
Another (again somewhat minor) maintenance release of the RcppCNPypackage arrived on CRAN earlier today.
RcppCNPyprovides 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 Rcppappears 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.
CRANberriesalso 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 boxblog. Please report excessive re-aggregation in third-party for-profit settings.
RcppMagicEnum 0.0.1 on CRAN: New Package!
Happy to announce a new package: RcppMagicEnum. It arrived on CRAN yesterday following the resumption of normal service following the CRAN summer break. RcppMagicEnumbrings the magicenumlibrary by Daniil Goncharov to R.
Modern C++ is powerful, but still lacks reflection. This may change with C++26 but until then this library can help. A simple example, also shown on the README is as follows (and can be called from R viaRcpp::sourceCpp()
if the RcppMagicEnumpackage is installed):
// [[Rcpp::depends(RcppMagicEnum)]]
#include <RcppMagicEnum>
// define a simple enum class, it uses optional typing as well as optional assigned values
enum class Color : int { RED = -10, BLUE = 0, GREEN = 10 };
// [[Rcpp::export]]
void example() {
// instantiate an enum value in variable 'val'
auto val = Color::RED;
// show the current value on stdout
Rcpp::Rcout << "Name of enum: " << magic_enum::enum_name(val) << std::endl;
Rcpp::Rcout << "Integer value of enum: " << magic_enum::enum_integer(val) << std::endl;
}
/*** R
example()
*/
It produces the following output (where the ‘meta-comment’ at the end ensure the included and created-by-sourcing functionexample()
is also called):
> Rcpp::sourceCpp("miniex.cpp")
> example()
Name of enum: RED
Integer value of enum: -10
>
The plan to experiment some more with this and then see if we could possible make factor variables map to such enums and vice versa. Help and discussion input is always welcome, and could be submitted either on the rcpp-devel list or as an issue at the repo.
The short NEWS entry follows.
Changes in version 0.0.1 (2024-07-31)
- Initial version and CRAN upload
If you like this or other open-source work I do, you can sponsor me at GitHub.
This post by Dirk Eddelbuettel originated on his Thinking inside the boxblog. Please report excessive re-aggregation in third-party for-profit settings.
RcppEigen 0.3.4.0.1 on CRAN: Minor Maintenance
A new maintenance release of RcppEigen is now on CRAN, and will go to Debian shortly as usual. Eigen is a C++ template library for linear algebra: matrices, vectors, numerical solvers, and related algorithms.
A very recent change in the development version of R (aka “r-devel”) expanded the set of declared BLAS and LAPACK functions (and I tootedapprovingly about it as well). It turns out that thexerbla()
declaration there (which, as usual for R and as discussed in Writing R Extensions, defines the new optional character length entry for a char vector) conflicts with one in theblas.h
header in Eigen upsetting the compilation of just one reverse-dependency. So CRAN, as they so often (and quietly) do in these cases, gave us a friendly and concise heads-up and asked for a change so we complied, did the usual reverse-dependency check of the other 400+ packages using RcppEigen and produced the new release which was injected into the repository during the current summer break.
The complete NEWS
file entry follows.
Changes in RcppEigen version 0.3.4.0.1 (2024-08-14)
- Conditionally comment-out
xerbla
inblas.h
as it is now providedd by R-devel albeit withFC_LEN_T
(per a CRAN request)- Minor package updates (continuous integration, badges)
Courtesy of CRANberries, there is also a diffstat report for the most recent release.
If you like this or other open-source work I do, you can sponsor me at GitHub.
This post by Dirk Eddelbuettel originated on his Thinking inside the boxblog. Please report excessive re-aggregation in third-party for-profit settings.
Rcpp 1.0.13 on CRAN: Some Updates
The Rcpp Core Team is once again pleased to announce a new release (now at 1.0.13) of the Rcpp package. It arrived on CRAN earlier today, and has since been uploaded to Debian. Windows and macOS builds should appear at CRAN in the next few days, as will builds in different Linux distribution–and of course r2u should catch up tomorrow too. The release was uploaded last week, but not only does Rcpp always gets flagged because of the grandfathered .Call(symbol)
but CRAN also found two packages ‘regressing’ which then required them to take five days to get back to us. One issue was known; another did not reproduce under our tests against over 2800 reverse dependencies leading to the eventual release today. Yay. Checks are good and appreciated, and it does take time by humans to review them.
This release continues with the six-months January-July cycle started with release 1.0.5 in July 2020. As a reminder, we do of course make interim snapshot ‘dev’ or ‘rc’ releases available via the Rcpp drat repo as well as the r-universe page and repo and strongly encourage their use and testing—I run my systems with these versions which tend to work just as well, and are also fully tested against all reverse-dependencies.
Rcpp has long established itself as the most popular way of enhancing R with C or C++ code. Right now, 2867 packages on CRAN depend onRcpp for making analytical code go faster and further, along with 256 in BioConductor. On CRAN, 13.6% of all packages depend (directly) on Rcpp, and 59.9% of all compiled packages do. From the cloud mirror of CRAN (which is but a subset of all CRAN downloads), Rcpp has been downloaded 86.3 million times. The two published papers (also included in the package as preprint vignettes) have, respectively, 1848 (JSS, 2011) and 324 (TAS, 2018) citations, while the the book (Springer useR!, 2013) has another 641.
This release is incremental as usual, generally preserving existing capabilities faithfully while smoothing our corners and / or extending slightly, sometimes in response to changing and tightened demands fromCRAN or R standards. The move towards a more standardized approach for the C API of R leads to a few changes; Kevin did most of the PRs for this. Andrew Johnsom also provided a very nice PR to update internals taking advantage of variadic templates.
The full list below details all changes, their respective PRs and, if applicable, issue tickets. Big thanks from all of us to all contributors!
Changes in Rcpp release version 1.0.13 (2024-07-11)
- Changes in Rcpp API:
- Set R_NO_REMAP if not already defined (Dirk in #1296)
- Add variadic templates to be used instead of generated code (Andrew Johnson in #1303)
- Count variables were switches to
size_t
to avoid warnings about conversion-narrowing (Dirk in #1307)- Rcpp now avoids the usage of the (non-API) DATAPTR function when accessing the contents of Rcpp Vector objects where possible. (Kevin in#1310)
- Rcpp now emits an R warning on out-of-bounds Vector accesses. This may become an error in a future Rcpp release. (Kevin in #1310)
- Switch
VECTOR_PTR
andSTRING_PTR
to new API-compliantRO
variants (Kevin in #1317 fixing #1316)- Changes in Rcpp Deployment:
- Small updates to the CI test containers have been made (#1304)
Thanks to my CRANberries, you can also look at a diff to the previous release Questions, comments etc should go to the rcpp-devel mailing list off the R-Forge page. Bugs reports are welcome at the GitHub issue tracker as well (where one can also search among open or closed issues).
If you like this or other open-source work I do, you can sponsor me at GitHub.
This post by Dirk Eddelbuettel originated on his Thinking inside the boxblog. Please report excessive re-aggregation in third-party for-profit settings.
RcppArmadillo 14.0.0-1 on CRAN: New Upstream
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. RcppArmadillointegrates this library with the R environment and language–and is widely used by (currently) 1158 other packages on CRAN, downloaded 35.1 million times (per the partial logs from the cloud mirrors of CRAN), and the CSDA paper (preprint / vignette) by Conrad and myself has been cited 587 times according to Google Scholar.
Conrad released a new major upstream version 14.0.0 a couple of days ago. We had been testing this new version extensively over several rounds of reverse-dependency checks across all 1100+ packages. This revealed nine packages requiring truly minor adjustments—which eight maintainers made in a matter of days; all this was coordinated in issue #443. Following the upload, CRAN noticed one more issue (seeissue #446) but this turned out to be local to the package. There are also renewed deprecation warnings with some Armadillo changes which we will need to address one-by-one. Last but not least with this release we also changed the package versioning scheme to follow upstream Armadillo more closely.
The set of changes since the last CRAN release follows.
Changes in RcppArmadillo version 14.0.0-1 (2024-07-05)
- Upgraded to Armadillo release 14.0.0 (Stochastic Parrot)
- C++14 is now the minimum recommended C++ standard
- Faster handling of compound expressions by
as_scalar()
,accu()
,dot()
- Faster interactions between sparse and dense matrices
- Expanded
stddev()
to handle sparse matrices- Expanded relational operators to handle expressions between sparse matrices and scalars
- Added
.as_dense()
to obtain dense vector/matrix representation of any sparse matrix expression- Updated physical constants to NIST 2022 CODATA values
- New package version numbering scheme following upstream versions
- Re-enabling
ARMA_IGNORE_DEPRECATED_MARKE
for silent CRAN builds
Courtesy of my CRANberries, there is a diffstat report relative to previous release. More detailed information is on the RcppArmadillo page. Questions, comments etc should go to the rcpp-devel mailing list off the Rcpp R-Forgepage.
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 boxblog. Please report excessive re-aggregation in third-party for-profit settings.
RcppSimdJson 0.1.12 on CRAN: Maintenance
A new maintenance release 0.1.12 of the RcppSimdJsonpackage is now on CRAN.
RcppSimdJsonwraps the fantastic and genuinely impressive simdjson library by Daniel Lemire and collaborators. Via very clever algorithmic engineering to obtain largely branch-free code, coupled with modern C++ and newer compiler instructions, it results in parsing gigabytes of JSON parsed per second which is quite mindboggling. The best-case performance is ‘faster than CPU speed’ as use of parallel SIMD instructions and careful branch avoidance can lead to less than one cpu cycle per byte parsed; see the video of the talk by Daniel Lemire at QCon.
This release responds to another CRAN request, this time to accomodate compilation under C++20 with g++-14
. As this was alreadt addressed upstream in simdjson it was simply a matter of upgrading to the current upstream which Daniel did in a PR.
The (once again very short) NEWS entry for this release follows.
Changes in version 0.1.12 (2024-07-05)
Courtesy of my CRANberries, there is also a diffstat report for this release. For questions, suggestions, or issues please use the issue tracker at the GitHub repo.
If you like this or other open-source work I do, you can now sponsor me at GitHub.
This post by Dirk Eddelbuettel originated on his Thinking inside the boxblog. Please report excessive re-aggregation in third-party for-profit settings.
RcppArmadillo 0.12.8.4.0 on CRAN: Upstream Bugfix
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. RcppArmadillointegrates this library with the R environment and language–and is widely used by (currently) 1151 other packages on CRAN, downloaded 34.6 million times (per the partial logs from the cloud mirrors of CRAN), and the CSDA paper (preprint / vignette) by Conrad and myself has been cited 584 times according to Google Scholar.
Conrad released a new upstream bugfix yesterday (to improve views of sparse matrices). We uploaded it yesterday too but it once agfain took a day for the hard-working CRAN maintainers to concur that the two NOTEs from reverse-dependency checking over 1100 packages were in a fact false positves. And so it appeared on CRAN earlier today. We also increased the versioned dependency on Rcpp to match the use of optional entry-point headers Rcpp/Light
, Rcpp/Lighter
and Rcpp/Lightest
. No other changes were made.
The set of changes since the last CRAN release follows.
Changes in RcppArmadillo version 0.12.8.4.0 (2024-05-30)
- Upgraded to Armadillo release 12.8.4 (Cortisol Injector)
- Faster handling of sparse submatrix views
- Update versioned Depends on Rcpp to 1.0.8 or later to match use of Light/Lighter/Lightest headers.
Courtesy of my CRANberries, there is a diffstat report relative to previous release. More detailed information is on the RcppArmadillo page. Questions, comments etc should go to the rcpp-devel mailing list off the Rcpp R-Forgepage.
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 boxblog. Please report excessive re-aggregation in third-party for-profit settings.
RcppArmadillo 0.12.8.3.0 on CRAN: Upstream Bugfix
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. RcppArmadillointegrates this library with the R environment and language–and is widely used by (currently) 1144 other packages on CRAN, downloaded 34.2 million times (per the partial logs from the cloud mirrors of CRAN), and the CSDA paper (preprint / vignette) by Conrad and myself has been cited 583 times according to Google Scholar.
Conrad released a new upstream bugfix yesterday (for a corner case with fftw3
). We uploaded it yesterday too but it took a day for the hard-working CRAN maintainers to concur that the one (!) NOTE from reverse-dependency checking over 1100 packages was in a fact a false positve. And so it appeared on CRAN (very) early this morning. We also made a change removing a long-redundant setter for C++11 mode via the plugin. No other changes were made.
The set of changes since the last CRAN release follows.
Changes in RcppArmadillo version 0.12.8.3.0 (2024-05-07)
- Upgraded to Armadillo release 12.8.3 (Cortisol Injector)
- Fix issue in
fft()
andfft2()
in multi-threaded contexts with FFTW3 enabled- No longer set C++11 for the Rcpp plugin as this standard has been the default by R for very long time now.
Courtesy of my CRANberries, there is a diffstat report relative to previous release. More detailed information is on the RcppArmadillo page. Questions, comments etc should go to the rcpp-devel mailing list off the Rcpp R-Forgepage.
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 boxblog. Please report excessive re-aggregation in third-party for-profit settings.
RcppInt64 0.0.5 on CRAN: Minor Maintenance
The new-ish package RcppInt64(announced last fall in this post, with three small updates following) arrived on CRAN yesterday as relase 0.0.5. RcppInt64collects some of the previous conversions between 64-bit integer values in R and C++, and regroups them in a single package. It offers two interfaces: both a more standard as<>()
converter from R values along with its companions wrap()
to return to R, as well as more dedicated functions ‘from’ and ‘to’.
This release addresses an new nag from CRAN who no longer want us to use the ‘non-API’ header function SET_S4_OBJECT
so a small change was made.
The brief NEWS entry follows:
Changes in version 0.0.5 (2024-04-30)
- Minor refactoring of internal code to not rely on
SET_S4_OBJECT
.
Courtesy of my CRANberries, there is a diffstat report relative to the previous release. If you like this or other open-source work I do, you can sponsor me at GitHub.
This post by Dirk Eddelbuettel originated on his Thinking inside the boxblog. Please report excessive re-aggregation in third-party for-profit settings.
RcppArmadillo 0.12.8.2.1 on CRAN: Micro Fix
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. RcppArmadillointegrates this library with the R environment and language–and is widely used by (currently) 1135 other packages on CRAN, downloaded 33.7 million times (per the partial logs from the cloud mirrors of CRAN), and the CSDA paper (preprint / vignette) by Conrad and myself has been cited 579 times according to Google Scholar.
Yesterday’s release accommodates reticulate by suspending a single test that now ‘croaks’ creating a reverse-dependency issue for that package. No other changes were made.
The set of changes since the last CRAN release follows.
Changes in RcppArmadillo version 0.12.8.2.1 (2024-04-15)
- One-char bug fix release commenting out one test that upsets reticulate when accessing a scipy sparse matrix
Courtesy of my CRANberries, there is a diffstat report relative to previous release. More detailed information is on the RcppArmadillo page. Questions, comments etc should go to the rcpp-devel mailing list off the Rcpp R-Forgepage.
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 boxblog. Please report excessive re-aggregation in third-party for-profit settings.
RcppArmadillo 0.12.8.2.0 on CRAN: Upstream Fix
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. RcppArmadillointegrates this library with the R environment and language–and is widely used by (currently) 1136 other packages on CRAN, downloaded 33.5 million times (per the partial logs from the cloud mirrors of CRAN), and the CSDA paper (preprint / vignette) by Conrad and myself has been cited 578 times according to Google Scholar.
This release brings a new upstream bugfix release Armadillo 12.8.2 prepared by Conrad two days ago. It took the usual day to noodle over 1100+ reverse dependencies and ensure two failures were independent of the upgrade (i.e., “no change to worse” in CRANparlance). It took CRAN another because we hit a random network outage for (spurious) NOTE on a remote URL, and were then caught in the shrapnel from another large package ecosystem update spuriously pointing some build failures that were due to a missing rebuild to us. All good, as human intervention comes to the rescue.
The set of changes since the last CRAN release follows.
Changes in RcppArmadillo version 0.12.8.2.0 (2024-04-02)
- Upgraded to Armadillo release 12.8.2 (Cortisol Injector)
- Workaround for FFTW3 header clash
- Workaround in testing framework for issue under macOS
- Minor cleanups to reduce code bloat
- Improved documentation
Courtesy of my CRANberries, there is a diffstat report relative to previous release. More detailed information is on the RcppArmadillo page. Questions, comments etc should go to the rcpp-devel mailing list off the Rcpp R-Forgepage.
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 boxblog. Please report excessive re-aggregation in third-party for-profit settings.
RcppArmadillo 0.12.8.1.0 on CRAN: Upstream Fix, Interface Polish
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. RcppArmadillointegrates this library with the R environment and language–and is widely used by (currently) 1130 other packages on CRAN, downloaded 32.8 million times (per the partial logs from the cloud mirrors of CRAN), and the CSDA paper (preprint / vignette) by Conrad and myself has been cited 578 times according to Google Scholar.
This release brings a new upstream bugfix release Armadillo 12.8.1 prepared by Conradyesterday. It was delayed for a few hours as CRAN noticed an error in one package which we all concluded was spurious as it could be reproduced outside of the one run there. Following from the previous release, we also use the slighty faster ‘Lighter’ header in the examples. And once it got to CRAN I also updated the Debian package.
The set of changes since the last CRAN release follows.
Changes in RcppArmadillo version 0.12.8.1.0 (2024-03-02)
- Upgraded to Armadillo release 12.8.1 (Cortisol Injector)
- Workaround in
norm()
for yet another bug in macOS accelerate framework- Update README for RcppArmadillo usage counts
- Update examples to use '#include <RcppArmadillo/Lighter>' for faster compilation excluding unused Rcpp features
Courtesy of my CRANberries, there is a diffstat report relative to previous release. More detailed information is on the RcppArmadillo page. Questions, comments etc should go to the rcpp-devel mailing list off the Rcpp R-Forgepage.
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 boxblog. Please report excessive re-aggregation in third-party for-profit settings.
RcppEigen 0.3.4.0.0 on CRAN: New Upstream, At Last
We are thrilled to share that RcppEigen has now upgraded to Eigen release 3.4.0! The new release 0.3.4.0.0 arrived on CRAN earlier today, and has been shipped to Debian as well. Eigen is a C++ template library for linear algebra: matrices, vectors, numerical solvers, and related algorithms.
This update has been in the works for a full two and a half years! It all started with a PR #102 by Yixuan bringing the package-local changes for R integration forward to usptream release 3.4.0. We openedissue #103 to steer possible changes from reverse-dependency checking through. Lo and behold, this just … stalled because a few substantial changes were needed and not coming. But after a long wait, and like a bolt out of a perfectly blue sky, Andrew revived it in January with a reverse depends run of his own along with a set of PRs. That was the push that was needed, and I steered it along with a number of reverse dependency checks, and occassional emails to maintainers. We managed to bring it down to only three packages having a hickup, and all three had received PRs thanks to Andrew – and even merged them. So the plan became to release today following a final fourteen day window. And CRAN was convinced by our arguments that we followed due process. So there it is! Big big thanks to all who helped it along, especially Yixuan and Andrew but also Mikael who updated another patch set he had prepared for the previous release series.
The complete NEWS
file entry follows.
Changes in RcppEigen version 0.3.4.0.0 (2024-02-28)
- The Eigen version has been upgrade to release 3.4.0 (Yixuan)
- Extensive reverse-dependency checks ensure only three out of over 400 packages at CRAN are affected; PRs and patches helped other packages
- The long-running branch also contains substantial contributions from Mikael Jagan (for the lme4 interface) and Andrew Johnson (revdep PRs)
Courtesy of CRANberries, there is also a diffstat report for the most recent release.
If you like this or other open-source work I do, you can sponsor me at GitHub.
This post by Dirk Eddelbuettel originated on his Thinking inside the boxblog. Please report excessive re-aggregation in third-party for-profit settings.
RcppArmadillo 0.12.8.0.0 on CRAN: New Upstream, Interface Polish
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. RcppArmadillointegrates this library with the R environment and language–and is widely used by (currently) 1119 other packages on CRAN, downloaded 32.5 million times (per the partial logs from the cloud mirrors of CRAN), and the CSDA paper (preprint / vignette) by Conrad and myself has been cited 575 times according to Google Scholar.
This release brings a new (stable) upstream (minor) release Armadillo 12.8.0 prepared by Conradtwo days ago. We, as usual, prepared a release candidate which we tested against the over 1100 CRAN packages using RcppArmadillo. This found no issues, which was confirmed by CRAN once we uploaded and so it arrived as a new release today in a fully automated fashion.
We also made a small change that had been prepared by GitHub issue #400: a few internal header files that were cluttering the top-level of the include directory have been moved to internal directories. The standard header is of course unaffected, and the set of ‘full / light / lighter / lightest’ headers (matching we did a while back in Rcpp) also continue to work as one expects. This change was also tested in a full reverse-dependency check in January but had not been released to CRAN yet.
The set of changes since the last CRAN release follows.
Changes in RcppArmadillo version 0.12.8.0.0 (2024-02-06)
- Upgraded to Armadillo release 12.8.0 (Cortisol Injector)
- Faster detection of symmetric expressions by
pinv()
andrank()
- Expanded
shift()
to handle sparse matrices- Expanded
conv_to
for more flexible conversions between sparse and dense matrices- Added
cbrt()
- More compact representation of integers when saving matrices in CSV format
- Five non-user facing top-level include files have been removed (#432closing #400 and building on #395 and#396)
Courtesy of my CRANberries, there is a diffstat report relative to previous release. More detailed information is on the RcppArmadillo page. Questions, comments etc should go to the rcpp-devel mailing list off the Rcpp R-Forgepage.
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 boxblog. Please report excessive re-aggregation in third-party for-profit settings.
RcppAnnoy 0.0.22 on CRAN: Maintenance
A very minor maintenance release, now at version 0.0.22, of RcppAnnoyhas arrived on CRAN.
RcppAnnoyis the Rcpp-based R integration of the nifty Annoy library by Erik Bernhardsson. Annoy is a small and lightweight C++ template header library for very fast approximate nearest neighbours—originally developed to drive the Spotify music discovery algorithm. It had all the buzzwords already a decade ago: it is one of the algorithms behind (drum roll …) vector search as it finds_approximate_ matches very quickly and also allows to persist the data.
This release responds to a CRAN request to clean up empty macros and sections in Rd files.
Details of the release follow based on the NEWS file.
Changes in version 0.0.22 (2024-01-23)
- Replace empty examples macro to satisfy CRAN request.
Courtesy of my CRANberries, there is also a diffstat report for this release.
If you like this or other open-source work I do, you can sponsor me at GitHub.
This post by Dirk Eddelbuettel originated on his Thinking inside the boxblog. Please report excessive re-aggregation in third-party for-profit settings.
Rcpp 1.0.12 on CRAN: New Maintenance / Update Release
The Rcpp Core Team is once again thrilled to announce a new release 1.0.12 of the Rcpp package. It arrived on CRAN early today, and has since been uploaded to Debian as well. Windows and macOS builds should appear at CRAN in the next few days, as will builds in different Linux distribution–and of course at r2u should catch up tomorrow. The release was uploaded yesterday, and run its reverse dependencies overnight. Rcpp always gets flagged nomatter what because the grandfathered.Call(symbol)
but … we had not single ‘change to worse’ among over 2700 reverse dependencies!
This release continues with the six-months January-July cycle started with release 1.0.5 in July 2020. As a reminder, we do of course make interim snapshot ‘dev’ or ‘rc’ releases available via the Rcpp drat repo and strongly encourage their use and testing—I run my systems with these versions which tend to work just as well, and are also fully tested against all reverse-dependencies.
Rcpp has long established itself as the most popular way of enhancing R with C or C++ code. Right now, 2791 packages on CRAN depend onRcpp for making analytical code go faster and further, along with 254 in BioConductor. On CRAN, 13.8% of all packages depend (directly) on Rcpp, and 59.9% of all compiled packages do. From the cloud mirror of CRAN (which is but a subset of all CRAN downloads), Rcpp has been downloaded 78.1 million times. The two published papers (also included in the package as preprint vignettes) have, respectively, 1766 (JSS, 2011) and 292 (TAS, 2018) citations, while the the book (Springer useR!, 2013) has another 617.
This release is incremental as usual, generally preserving existing capabilities faithfully while smoothing our corners and / or extending slightly, sometimes in response to changing and tightened demands fromCRAN or R standards.
The full list below details all changes, their respective PRs and, if applicable, issue tickets. Big thanks from all of us to all contributors!
Changes in Rcpp release version 1.0.12 (2024-01-08)
- Changes in Rcpp API:
- Missing header includes as spotted by some recent tools were added in two places (Michael Chirico in #1272 closing #1271).
- Casts to avoid integer overflow in matrix row/col selections have neem added (Aaron Lun #1281).
- Three print format correction uncovered by R-devel were applied with thanks to Tomas Kalibera (Dirk in #1285).
- Correct a print format correction in the RcppExports glue code (Dirk in #1288fixing #1287).
- The upcoming
OBJSXP
addition to R 4.4.0 is supported in thetype2name
mapper (Dirk and Iñaki in #1293).- Changes in Rcpp Attributes:
- Generated interface code from base R that fails under LTO is now corrected (Iñaki in #1274 fixing a StackOverflow issue).
- Changes in Rcpp Documentation:
- The caption for third figure in the introductory vignette has been corrected (Dirk in #1277 fixing #1276).
- A small formatting issue was correct in an Rd file as noticed by R-devel (Dirk in #1282).
- The Rcpp FAQ vignette has been updated (Dirk in #1284).
- The
Rcpp.bib
file has been refreshed to current package versions.- Changes in Rcpp Deployment:
- The RcppExports file for an included test package has been updated (Dirk in #1289).
Thanks to my CRANberries, you can also look at a diff to the previous release Questions, comments etc should go to the rcpp-devel mailing list off the R-Forge page. Bugs reports are welcome at the GitHub issue tracker as well (where one can also search among open or closed issues).
If you like this or other open-source work I do, you can sponsor me at GitHub.
This post by Dirk Eddelbuettel originated on his Thinking inside the boxblog. Please report excessive re-aggregation in third-party for-profit settings.
RcppInt64 0.0.4 on CRAN: Minor Bugfix
The new-ish package RcppInt64(announced earlier this fall in this post, with two small updates following) arrived on CRAN minutes ago as relase 0.0.4.RcppInt64collects some of the previous conversions between 64-bit integer values in R and C++, and regroups them in a single package. It offers two interfaces: both a more standard as<>()
converter from R values along with its companions wrap()
to return to R, as well as more dedicated functions ‘from’ and ‘to’.
This release addresses an issues Sebastianreported a few hours and which is reported by newer, pickier compilers: We need to include <cstdint>
so thatint64_t
is declared. CRAN was at its usual best processing this efficiently including tests of the by now two reverse dependencies. Twenty two minutes total, all automated:
The brief NEWS entry follows:
Changes in version 0.0.4 (2023-12-09)
- The
cstdint
header is now included (closes #1).
Courtesy of my CRANberries, there is a diffstat report relative to previous release.
If you like this or other open-source work I do, you can sponsor me at GitHub.
This post by Dirk Eddelbuettel originated on his Thinking inside the boxblog. Please report excessive re-aggregation in third-party for-profit settings.
RcppArmadillo 0.12.6.6.1 on CRAN: No More Deprecation
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. RcppArmadillointegrates this library with the R environment and language–and is widely used by (currently) 1126 other packages on CRAN, downloaded 31.7 million times (per the partial logs from the cloud mirrors of CRAN), and the CSDA paper (preprint / vignette) by Conrad and myself has been cited 569 times according to Google Scholar.
This release ends the practice on asking Armadillo to suppress deprecation warnings. RcppArmadillo, as noted, has a large user base. Sometimes Conrad sometimes made changes without too much of a heads-up so at times it was opportune to not bring those warnings to dozens (or maybe hundreds) of packages at CRAN. Yet we need to balance this with the demonstrable need to call out older deprecated code use. So sixteen months ago, with GitHub issue #391, we started to alert author of 30+ affected packages and supplied either pull requests or emailed patches to all. Eleven months ago GitHub issues #402 was added for a second deprecation.
And the time of making the switch has come. Release 0.12.6.6.1 no longer defines ARMA_IGNORE_DEPRECATED_MARKER
. So among the over 1100 packages using RcppArmadilloat CRAN, around a good dozen or so were flagged in the upload – but CRAN concurred and let the package migrate to CRAN.
If you maintain an affected package, consider applying the patch or pull request now. A simple stop-gap measure also exists by adding-DARMA_IGNORE_DEPRECATED_MARKER
tosrc/Makevars
as either PKG_CPPFLAGS
orPKG_CXXFLAGS
to reactivate it. But a proper code update, which is generally simple, may be better. If you are unsure, do not hesitate to get in touch.
The set of changes since the last CRAN release follows.
Changes in RcppArmadillo version 0.12.6.6.1 (2023-12-03)
Courtesy of my CRANberries, there is a diffstat report relative to previous release. More detailed information is on the RcppArmadillo page. Questions, comments etc should go to the rcpp-devel mailing list off the Rcpp R-Forgepage.
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 boxblog. Please report excessive re-aggregation in third-party for-profit settings.