On 19 March 2025 at 11:16, Ben Bolker wrote:
|    FWIW  Rcpp handles this (for CLOENV) with an ifdef:
| 
|              #if (defined(R_VERSION) && R_VERSION >= R_Version(4,5,0))
|              return R_ClosureEnv(fun);
|              #else
|              return CLOENV(fun);
|              #endif
| 
| 
https://github.com/RcppCore/Rcpp/blob/257e1977cd6e251d0a3d691050ad43fa29cf9666/inst/include/Rcpp/Function.h#L102-L106

Beat me to it while I was away from my desk :-) We added that last week after
we good the nag from CRAN.

We are to follow the r-devel version R which is accessible e.g. 'as a
service' at winbuilder and macbuilder, at rhub (v2), and of course by
compiling locally (as I still do). Or by using one the available containers:
rocker/r-devel and rocker/drd are two I look after and they get updated
weekly.

Also note that when I made the update above I spotted a nice section in WRE
(where one 'of course' needs the r-devel version) which has what I quote
below. You could make use of that too.

Dirk


Quote from WRE follows

6.21.8 Some backports ΒΆ

This section lists backports of recently added definitions that can be used
in packages that need to be compiled under older versions of R that do not
yet contain these entry points.

    #if R_VERSION < R_Version(4, 4, 1)
    #define allocLang Rf_allocLang
    
    SEXP Rf_allocLang(int n)
    {
        if (n > 0)
              return LCONS(R_NilValue, Rf_allocList(n - 1));
        else
              return R_NilValue;
    }
    #endif
    
    #if R_VERSION < R_Version(4, 5, 0)
    # define isDataFrame(x) Rf_isFrame(x)
    # define R_ClosureFormals(x) FORMALS(x)
    # define R_ClosureEnv(x) CLOENV(x)
    # define R_ParentEnv(x) ENCLOS(x)
    
    SEXP R_mkClosure(SEXP formals, SEXP body, SEXP env)
    {
        SEXP fun = Rf_allocSExp(CLOSXP);
        SET_FORMALS(fun, formals);
        SET_BODY(fun, body);
        SET_CLOENV(fun, env);
        return fun;
    }
    
    void CLEAR_ATTRIB(SEXP x)
    {
        SET_ATTRIB(x, R_NilValue);
        SET_OBJECT(x, 0);
        UNSET_S4_OBJECT(x);
    }
    #endif

-- 
dirk.eddelbuettel.com | @eddelbuettel | e...@debian.org

______________________________________________
R-package-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-package-devel

Reply via email to