[Rcpp-devel] CRAN package Rcpp

Dirk Eddelbuettel edd at debian.org
Tue Mar 31 12:54:21 CEST 2026


Hi Kurt,

On 31 March 2026 at 09:53, Kurt Hornik wrote:
| Dear Dirk,
| 
| I hope you are getting some kind of Easter Break :-)  [I don't.]

Nope :-/

My wife's in Paris for a few days, giving a seminar at the OECD today (and
had a seminar to give in Canada too last week, honoring one of her late
mentors and then colleague).  I am at home as it is a teaching term for me
and prefer not to leave for two weeks.

| We could really use your help on the following.  Last week Luke
| committed the last round of non-API changes, this time addressing the
| non-API *variables*.  As a consequence, we now get close to 400 CRAN
| package NOTE the use of R_UnboundValue (plus around 40 NOTE the use of
| R_NamespaceRegistry, and a few more), where most of the R_UnboundValue
| uses seem to be via Rcpp.

We know. I noticed a few days ago and filed

  https://github.com/RcppCore/Rcpp/issues/1465

which Iñaki addressed already in the (now pending) PR

  https://github.com/RcppCore/Rcpp/pull/1466

but it so happens that we had two PRs aheead of it in the reverse dependency
queue.  One has been taken care of, the other is running now.

| Specifically, you have e.g.
| 
| #if R_VERSION < R_Version(4,5,0)
|            SEXP res = Rf_findVarInFrame( env, nameSym ) ;
| #else
|            SEXP res = R_getVarEx(nameSym, env, FALSE, R_UnboundValue);
| #endif
|            if( res == R_UnboundValue ) return R_NilValue ;
| 
| where indeed Rf_findVarInFrame returns R_UnboundValue "if not found",
| but R_getVarEx could use any value, e.g. an R R_NilValue or a C NULL.
| 
| Changing to something like
| 
| #if R_VERSION < R_Version(4,5,0)
|            SEXP res = Rf_findVarInFrame( env, nameSym ) ;
|            if( res == R_UnboundValue ) return R_NilValue ;
| #else
|            SEXP res = R_getVarEx(nameSym, env, FALSE, NULL);
|     	   if( res == NULL ) return R_NilValue ;
| #endif
| 
| will avoid using the non-API R_UnboundValue for current versions of R.

Iñaki's PR actually removes both branches (in two spots), and alters a third
similarly. Maybe Luke can glance at that and comment?

| Luke has a patched version of Rcpp with these changes, with which the
| number of package for which we NOTE the use of R_UnboundValue goes down
| to about 80, which is a major step forward.
| 
| I know you prefer that we do not NMU Rcpp: so could Luke send you his
| patches and you kindly provide a new Rcpp hot-fix release with these
| patches?  That would really help us move forward, and be very much
| appreciated.

We would welcome a patch by Luke at the repo (or by email) so that we could
review it.

I presume a CRAN hotfix would ideally be against the last released Rcpp
version now on CRAN, our PRs get of course applied to the main branch which
by now is a few PRs ahead. We probably should not comingle this.

The current reverse depends check should be finished in 1 1/2 days.  

Cheers, Dirk

-- 
dirk.eddelbuettel.com | @eddelbuettel | edd at debian.org


More information about the Rcpp-devel mailing list