Thanks for the reports. Will look into it soon and report back. Luke Sent from my iPhone> On Jan 3, 2019, at 2:15 PM, Martin Morgan <mtmorgan.bioc at gmail.com> wrote: > > For what it's worth this also introduced > >> df = data.frame(v = package_version("1.2")) >> rbind(df, df)$v > [[1]] > [1] 1 2 > > [[2]] > [1] 1 2 > > instead of > >> rbind(df, df)$v > [1] '1.2' '1.2' > > which shows up in Travis builds of Bioconductor packages > > stat.ethz.ch/pipermail/bioc-devel/2019-January/014506.html > > and elsewhere > > Martin Morgan > > ?On 1/3/19, 7:05 PM, "R-devel on behalf of Duncan Murdoch" <r-devel-bounces at r-project.org on behalf of murdoch.duncan at gmail.com> wrote: > >> On 03/01/2019 3:37 p.m., Duncan Murdoch wrote: >> I see this too; by bisection, it seems to have first appeared in r72943. > > Sorry, that was a typo. I meant r75943. > > Duncan Murdoch > >> >> Duncan Murdoch >> >>> On 03/01/2019 2:18 p.m., I?aki Ucar wrote: >>> Hi, >>> >>> I found the following issue in r-devel (2019-01-02 r75945): >>> >>> `foo<-` <- function(x, value) { >>> bar(x) <- value * x >>> x >>> } >>> >>> `bar<-` <- function(x, value) { >>> stopifnot(all(value / x == 1)) >>> x + value >>> } >>> >>> `foo<-` <- compiler::cmpfun(`foo<-`) >>> `bar<-` <- compiler::cmpfun(`bar<-`) >>> >>> x <- c(2, 2) >>> foo(x) <- 1 >>> x # should be c(4, 4) >>> #> [1] 3 3 >>> >>> If the functions are not compiled or the stopifnot call is removed, >>> the snippet works correctly. So it seems that something is messing >>> around with the references to "value" when the call to stopifnot gets >>> compiled, and the wrong "value" is modified. Note also that if "x <- >>> 2", then the result is correct, 4. >>> >>> Regards, >>> >> > > ______________________________________________ > R-devel at r-project.org mailing list > stat.ethz.ch/mailman/listinfo/r-devel > > ______________________________________________ > R-devel at r-project.org mailing list > stat.ethz.ch/mailman/listinfo/r-devel
Should be fixed in r75946. Best, luke On Fri, 4 Jan 2019, Tierney, Luke wrote:> Thanks for the reports. Will look into it soon and report back. > > Luke > > Sent from my iPhone > >> On Jan 3, 2019, at 2:15 PM, Martin Morgan <mtmorgan.bioc at gmail.com> wrote: >> >> For what it's worth this also introduced >> >>> df = data.frame(v = package_version("1.2")) >>> rbind(df, df)$v >> [[1]] >> [1] 1 2 >> >> [[2]] >> [1] 1 2 >> >> instead of >> >>> rbind(df, df)$v >> [1] '1.2' '1.2' >> >> which shows up in Travis builds of Bioconductor packages >> >> stat.ethz.ch/pipermail/bioc-devel/2019-January/014506.html >> >> and elsewhere >> >> Martin Morgan >> >> ?On 1/3/19, 7:05 PM, "R-devel on behalf of Duncan Murdoch" <r-devel-bounces at r-project.org on behalf of murdoch.duncan at gmail.com> wrote: >> >>> On 03/01/2019 3:37 p.m., Duncan Murdoch wrote: >>> I see this too; by bisection, it seems to have first appeared in r72943. >> >> Sorry, that was a typo. I meant r75943. >> >> Duncan Murdoch >> >>> >>> Duncan Murdoch >>> >>>> On 03/01/2019 2:18 p.m., I?aki Ucar wrote: >>>> Hi, >>>> >>>> I found the following issue in r-devel (2019-01-02 r75945): >>>> >>>> `foo<-` <- function(x, value) { >>>> bar(x) <- value * x >>>> x >>>> } >>>> >>>> `bar<-` <- function(x, value) { >>>> stopifnot(all(value / x == 1)) >>>> x + value >>>> } >>>> >>>> `foo<-` <- compiler::cmpfun(`foo<-`) >>>> `bar<-` <- compiler::cmpfun(`bar<-`) >>>> >>>> x <- c(2, 2) >>>> foo(x) <- 1 >>>> x # should be c(4, 4) >>>> #> [1] 3 3 >>>> >>>> If the functions are not compiled or the stopifnot call is removed, >>>> the snippet works correctly. So it seems that something is messing >>>> around with the references to "value" when the call to stopifnot gets >>>> compiled, and the wrong "value" is modified. Note also that if "x <- >>>> 2", then the result is correct, 4. >>>> >>>> Regards, >>>> >>> >> >> ______________________________________________ >> R-devel at r-project.org mailing list >> stat.ethz.ch/mailman/listinfo/r-devel >> >> ______________________________________________ >> R-devel at r-project.org mailing list >> stat.ethz.ch/mailman/listinfo/r-devel > ______________________________________________ > R-devel at r-project.org mailing list > 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: stat.uiowa.edu
I confirm it is fixed in r75946. Thanks. I?aki On Fri, 4 Jan 2019 at 09:27, Tierney, Luke <luke-tierney at uiowa.edu> wrote:> > Should be fixed in r75946. > > Best, > > luke > > On Fri, 4 Jan 2019, Tierney, Luke wrote: > > > Thanks for the reports. Will look into it soon and report back. > > > > Luke > > > > Sent from my iPhone > > > >> On Jan 3, 2019, at 2:15 PM, Martin Morgan <mtmorgan.bioc at gmail.com> wrote: > >> > >> For what it's worth this also introduced > >> > >>> df = data.frame(v = package_version("1.2")) > >>> rbind(df, df)$v > >> [[1]] > >> [1] 1 2 > >> > >> [[2]] > >> [1] 1 2 > >> > >> instead of > >> > >>> rbind(df, df)$v > >> [1] '1.2' '1.2' > >> > >> which shows up in Travis builds of Bioconductor packages > >> > >> stat.ethz.ch/pipermail/bioc-devel/2019-January/014506.html > >> > >> and elsewhere > >> > >> Martin Morgan > >> > >> ?On 1/3/19, 7:05 PM, "R-devel on behalf of Duncan Murdoch" <r-devel-bounces at r-project.org on behalf of murdoch.duncan at gmail.com> wrote: > >> > >>> On 03/01/2019 3:37 p.m., Duncan Murdoch wrote: > >>> I see this too; by bisection, it seems to have first appeared in r72943. > >> > >> Sorry, that was a typo. I meant r75943. > >> > >> Duncan Murdoch > >> > >>> > >>> Duncan Murdoch > >>> > >>>> On 03/01/2019 2:18 p.m., I?aki Ucar wrote: > >>>> Hi, > >>>> > >>>> I found the following issue in r-devel (2019-01-02 r75945): > >>>> > >>>> `foo<-` <- function(x, value) { > >>>> bar(x) <- value * x > >>>> x > >>>> } > >>>> > >>>> `bar<-` <- function(x, value) { > >>>> stopifnot(all(value / x == 1)) > >>>> x + value > >>>> } > >>>> > >>>> `foo<-` <- compiler::cmpfun(`foo<-`) > >>>> `bar<-` <- compiler::cmpfun(`bar<-`) > >>>> > >>>> x <- c(2, 2) > >>>> foo(x) <- 1 > >>>> x # should be c(4, 4) > >>>> #> [1] 3 3 > >>>> > >>>> If the functions are not compiled or the stopifnot call is removed, > >>>> the snippet works correctly. So it seems that something is messing > >>>> around with the references to "value" when the call to stopifnot gets > >>>> compiled, and the wrong "value" is modified. Note also that if "x <- > >>>> 2", then the result is correct, 4. > >>>> > >>>> Regards, > >>>> > >>> > >> > >> ______________________________________________ > >> R-devel at r-project.org mailing list > >> stat.ethz.ch/mailman/listinfo/r-devel > >> > >> ______________________________________________ > >> R-devel at r-project.org mailing list > >> stat.ethz.ch/mailman/listinfo/r-devel > > ______________________________________________ > > R-devel at r-project.org mailing list > > 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: stat.uiowa.edu > ______________________________________________ > R-devel at r-project.org mailing list > stat.ethz.ch/mailman/listinfo/r-devel-- I?aki ?car