Francois Rousset
2018-Apr-03 14:38 UTC
[Rd] names lost in functions from packages installed by R-devel r74500
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. 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 -------------- next part -------------- A non-text attachment was scrubbed... Name: bugdemo_0.1.1.tar.gz Type: application/gzip Size: 728 bytes Desc: not available URL: <https://stat.ethz.ch/pipermail/r-devel/attachments/20180403/bf16da0c/attachment.gz>
Martin Maechler
2018-Apr-03 15:03 UTC
[Rd] names lost in functions from packages installed by R-devel r74500
>>>>> 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
Martin Maechler
2018-Apr-03 17:14 UTC
[Rd] names lost in functions from packages installed by R-devel r74500
>>>>> Martin Maechler <maechler at stat.math.ethz.ch> >>>>> on Tue, 3 Apr 2018 17:03:02 +0200 writes:>>>>> 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 ... This has been fixed now, both in R-devel (svn rev 74511) and in R 3.5.0 alpha (r 74513). I was wrong in that this was related to (de)serialization. Rather I had forgotten that JIT (just in time) compilation and explicit compilation may differ in their results. Thank you again for the report! Martin Maechler ETH Zurich >> ============ >>> sessionInfo() >> R Under development (unstable) (2018-03-31 r74500) [ ........... ]
Apparently Analagous Threads
- names lost in functions from packages installed by R-devel r74500
- names lost in functions from packages installed by R-devel r74500
- Bugreport on integration of Sweave and latex beamer
- Hard memory limit of 16GB under Windows?
- Problem with .libPaths & Rterm.exe (under Vista)