Repository navigation
Help packages transition away from C++11 #484
Description
As of a reverse depends run started 2025 Sep 09 the following 226 packages fail when switching to Armadillo 15.0.2:
abclass, acebayes, adaHuber, ADMM, ahMLE, alpaca, ANN2, AntMAN, ARCokrig, autoRasch, bama, bayescopulareg, bayeslm, BayesReversePLLH, BayesRGMM, bayMDS, BClustLonG, biClassify, bife, bisque, bmabasket, BNPmix, BOSSreg, bpgmm, brmsmargins, BSPBSS, Buddle, BVSNLP, catSurv, CB2, CERFIT, CircSpaceTime, cIRT, clhs, clusterHD, cmenet, combinIT, COMIX, communication, CoOL, corrcoverage, covdepGE, covTestR, CovTools, CoxPlus, coxrt, cPCG, cpss, curveDepth, dcortools, DCSmooth, dcurver, deforestable, DepthProc, dga, DGM, didimputation, dina, DriftBurstHypothesis, DSSP, DtD, DySS, edina, elmNNRcpp, em, errum, evgam, ExhaustiveSearch, expSBM, FamilyRank, FarmTest, fasterElasticNet, fastGLCM, fastpos, fctbases, FGLMtrunc, filling, fipp, flamingos, FMCCSD, fmerPack, fmf, fourPNO, FRESHD, FSSF, gbp, GCSM, geoFKF, geoFourierFDA, GiRaF, gjam, glamlasso, GMKMcharlie, GofKmt, GPM, gridOT, gsynth, GxEScanR, HACSim, hdbm, higlasso, HMB, HMMEsolver, HTLR, iccbeta, ILSE, imbalance, IncDTW, infinitefactor, interflex, intkrige, intsurv, IrishDirectorates, ivsacim, ivx, JFM, JMbayes, jmcm, jmotif, KernelKnn, KoulMde, LassoGEE, latentgraph, ldsep, ldsr, linconGaussR, Lmoments, lodr, lowmemtkmeans, ltsspca, lvmcomp, manifold, MAPITR, matchingR, mclustcomp, mcmcse, mDAG, meshed, meteorits, milr, mirtjml, mixedCCA, modeLLtest, multivar, netClust, netcmc, netcontrol, NetworkDistance, networkR, nlmeVPC, NPCirc, ohoegdm, parallelDist, parglm, pdSpecEst, penalized, penPHcure, pgsc, pleiotest, PLSiMCpp, PPMR, PQLseq, pqrfe, PRDA, qris, ratematrix, rbridge, RcppCensSpatial, RcppHMM, Rdimtools, registr, Riemann, RiemBase, Rlinsolve, RLumCarlo, RLumModel, rmarchingcubes, robustcov, rocTree, rofanova, roptim, ROptSpace, rotations, rrpack, rSpectral, rsvddpd, SAGMM, samurais, sasfunclust, SBmedian, scanstatistics, scINSIGHT, sdpdth, sfcr, SFS, ShrinkCovMat, slasso, SMMA, SMME, smmR, SNPknock, spFW, SPlit, spnn, sprintr, Sshaped, SSOSVM, SuperpixelImageSegmentation, surbayes, symphony, T4cluster, tabularMLC, TAG, tci, TDAkit, telefit, textmineR, tfarima, tmvtnsim, tree.interpreter, treenomial, tvR, UtilityFrailtyPH12, VMDecomp, VUROCS, WeibullR
In most cases this is due to C++11 being forced, which leads to Armadillo 15.0.2 erroring out. From the first package:
using C++ compiler: ‘g++ (Debian 14.3.0-5) 14.3.0’
using C++11
ccache g++ -std=c++11 -std=gnu++11 -I"/usr/share/R/include" -DNDEBUG -I../inst/include -I'/usr/local/lib/R/site-library/Rcpp/include' -I'/usr/local/lib/R/site-library/RcppArmadillo/include' -fopenmp -fpic -\
g0 -O3 -Wall -pipe -Wno-unused -fext-numeric-literals -DBOOST_NO_AUTO_PTR -DARMA_USE_CURRENT -c RcppExports.cpp -o RcppExports.o
In file included from /usr/local/lib/R/site-library/RcppArmadillo/include/RcppArmadillo.h:29,
from ../inst/include/abclass/Abclass.h:21,
from ../inst/include/abclass.h:22,
from RcppExports.cpp:4:
/usr/local/lib/R/site-library/RcppArmadillo/include/RcppArmadillo/version/arma.h:40:6: error: #error "Do not select 'current' with C++11 (or older) as 'current' requires C++14 or newer."
40 | #error "Do not select 'current' with C++11 (or older) as 'current' requires C++14 or newer."
| ^~~~~
In file included from /usr/local/lib/R/site-library/RcppArmadillo/include/current/armadillo:27,
from /usr/local/lib/R/site-library/RcppArmadillo/include/RcppArmadillo/interface/RcppArmadilloForward.h:57,
from /usr/local/lib/R/site-library/RcppArmadillo/include/RcppArmadillo.h:32:
/usr/local/lib/R/site-library/RcppArmadillo/include/current/armadillo_bits/compiler_check.hpp:82:4: error: #error "*** C++14 compiler required; enable C++14 mode in your compiler, or use an earlier version of A\
rmadillo"
82 | #error "*** C++14 compiler required; enable C++14 mode in your compiler, or use an earlier version of Armadillo"
| ^~~~~
This shows one error from RcppArmadillo anticipating the following error from Armadillo. We will try to confirm which 226 package have that issue and see about contacting maintainers.
Edit 2025-09-11: One package identified as misclassified, it was lacking a dependency. The remaining 226 are confirmed.
Activity
[-]Help transition away from C++11[/-][+]Help packages in transition away from C++11[/+]coatless commentedon Sep 11, 2025
Excellent, off to test out some of my new toys! (maybe develop newer toys... 😃 )
eddelbuettel commentedon Sep 11, 2025
If/when we both have a moment one of these days may might sense to gab. There are a few moving pieces. Kurt very kindly put a check into r-devel which they have enabled on the incoming checker 'r-devel' (see here for the commit) and Uwe now includes a short snippet I once wrote in reply (and edited once or twice, below 'details'). This seems to work for at least a few packages. When I check the 'cran' organization here for string 'DARMA_USE_CURRENT' the number of hits increases steadily day by day. That is step one: getting packages to migreate to 'current'.
Another step is this issue. The list above is from a reverse-depends check I did where I forced '-DARMA_USE_CURRENT' globally so those stuck with C++11 will fail. I am trying to shell script something now to ascertain that there we no other failures.
Slowly but steadily we will get there. New ideas and suggestions welcome!
Details
Text being sent out, originally from an email:
[-]Help packages in transition away from C++11[/-][+]Help packages transition away from C++11[/+]eddelbuettel commentedon Sep 19, 2025
In the meantime we refined the analysis further from both the CRAN side thanks particularly to @kurthornik who also wrote the following in email
and I will plan to work on PRs or emailed patched for these sixteen packages over the next few days.
eddelbuettel commentedon Sep 20, 2025
The next (six today, not five) with two recursive reverse depends are
and I will add those next.
eddelbuettel commentedon Sep 26, 2025
And now added a few more with one reverse dependency.
eddelbuettel commentedon Nov 20, 2025
This issue can now be closed. We will of course continue to support packages using RcppArmadillo and greatly appreciate the many packages that did change and update.