From maechler at stat.math.ethz.ch  Tue Apr  3 17:03:02 2018
From: maechler at stat.math.ethz.ch (Martin Maechler)
Date: Tue, 3 Apr 2018 17:03:02 +0200
Subject: [Rd] names lost in functions from packages installed by R-devel
 r74500
In-Reply-To: <cde5f0e1-40f5-9b58-38c6-6bcbad22bcc5@umontpellier.fr>
References: <cde5f0e1-40f5-9b58-38c6-6bcbad22bcc5@umontpellier.fr>
Message-ID: <23235.38822.497055.259303@stat.math.ethz.ch>

>>>>> Francois Rousset <francois.rousset at umontpellier.fr>
>>>>>     on Tue, 3 Apr 2018 16:38:42 +0200 writes:

    > Dear list members,
    > If I install with R-devel r74500 on Windows (sessionInfo below) the 
    > attached 'bugdemo' package with the single function

    > foo <- function() {
    > ? named <- c("bar"=TRUE)
    > ? print(named)
    > ? return(named)
    > }

    > then run

    >> bugdemo::foo()
    > [1] TRUE
    > [1] TRUE

    > The "bar" name is lost. It is not lost when I define foo in the R 
    > session instead of using its packaged version.

    > To reproduce:

    > =======================================

    > install.packages("bugdemo_0.1.1.tar.gz",type="source",repos=NULL)

    > bugdemo::foo()



    > =======================================

    > I also tested whether this was a problem with the "R CMD build" step or 
    > the "install.packages()" step by building with R 3.4.4 and installing 
    > with R-devel, and reciprocally, and the problem appears to be in the 
    > install step of R-devel.

Confirmed.

It is a bug somewhere between the byte compiler and
(de)serialization .. really beyond my own expertise:

If you install  without byte compilation *),  foo() behaves as
expected, i.e., does not "lose" the names.

On the other hand, as you mention, if you define foo in the
globalenv, and call it, the JIT kicks in pretty quickly and you
can see that 'foo' is byte compiled as well, but it still does not break.

This is pretty important, so thank you very much for the nice
reproducible report!

Martin Maechler
ETH Zurich

---
*) R-devel CMD INSTALL --no-byte-compile -l ...

    > F.

    > =============

    >> sessionInfo()
    > R Under development (unstable) (2018-03-31 r74500)
    > Platform: x86_64-w64-mingw32/x64 (64-bit)
    > Running under: Windows 7 x64 (build 7601) Service Pack 1

    > Matrix products: default

    > locale:
    > [1] LC_COLLATE=French_France.1252? LC_CTYPE=French_France.1252 
    > LC_MONETARY=French_France.1252
    > [4] LC_NUMERIC=C?????????????????? LC_TIME=French_France.1252

    > attached base packages:
    > [1] stats???? graphics? grDevices utils???? datasets? methods base

    > other attached packages:
    > [1] bugdemo_0.1.1

    > loaded via a namespace (and not attached):
    > [1] compiler_3.6.0? tools_3.6.0???? withr_2.1.2 memoise_1.1.0?? 
    > digest_0.6.15?? devtools_1.13.5
    >> 


    > -- 
    > Fran?ois Rousset
    > CNRS research scientist 
    > <http://www.isem.univ-montp2.fr/recherche/teams/evolutionary-genetics/staff/roussetfrancois/?lang=en> 
    > - Institut des Sciences de l'Evolution (ISE-M)
    > Universit? de Montpellier - Dept. Scientifique B3ESTE

    > x[DELETED ATTACHMENT external: bugdemo_0.1.1.tar.gz, application/gzip]
    > ______________________________________________
    > R-devel at r-project.org mailing list
    > https://stat.ethz.ch/mailman/listinfo/r-devel



[Rd] names lost in functions from packages installed by R-devel r74500
Martin Maechler