On Tue, 3 Apr 2018, Martin Maechler wrote:

Martin Maechler <maech...@stat.math.ethz.ch>
    on Tue, 3 Apr 2018 17:03:02 +0200 writes:

Francois Rousset <francois.rous...@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@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-tier...@uiowa.edu
Iowa City, IA 52242                 WWW:  http://www.stat.uiowa.edu
______________________________________________
R-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel

Reply via email to