[Rd] names lost in functions from packages installed by R-devel r74500
luke-tierney at uiowa.edu
luke-tierney at uiowa.edu
Tue Apr 3 20:00:14 CEST 2018
On Tue, 3 Apr 2018, Martin Maechler wrote:
>>>>>> 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.
Actually the difference is that a function defined in a package is
compiled with more optimizations than one defined at session top
level. A change had broken a piece of the optimization code, and has
now been fixed. Thanks for the report.
Best,
luke
>
> Thank you again for the report!
>
> Martin Maechler
> ETH Zurich
>
>
>
> >> =============
>
> >>> sessionInfo()
> >> R Under development (unstable) (2018-03-31 r74500)
>
> [ ........... ]
>
> ______________________________________________
> R-devel at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-devel
>
--
Luke Tierney
Ralph E. Wareham Professor of Mathematical Sciences
University of Iowa Phone: 319-335-3386
Department of Statistics and Fax: 319-335-3017
Actuarial Science
241 Schaeffer Hall email: luke-tierney at uiowa.edu
Iowa City, IA 52242 WWW: http://www.stat.uiowa.edu
More information about the R-devel
mailing list