This blog is updated daily.
A general description is here.
‘xpdrows.data.frame()’ was not checking for unique row names; in particular, this affected assignment to non-existing rows _via_ numerical indexing. (PR#16570)
‘merge(<dendrogram>, ..)’ now works correctly for two `independent' dendrograms (PR#15648), and still compatibly _via_ ‘adjust = "auto"’ e.g. for two branches of an existing dendrogram.
Work around a bug in OS X Yosemite where key environment variables may be duplicated causing issues in subprocesses. The duplicates are now removed on R startup (_via_ Rprofile). (PR#16042)
‘colorRamp()’ and ‘colorRampPalette()’ now allow non-opaque colours and a ramp in opacity _via_ the new argument ‘alpha = TRUE’. (Suggested by Alberto Krone-Martins, but optionally as there are existing uses which expect only RGB values.)
‘tail(warnings())’ now works, _via_ the new ‘`[`’ method.
Methods invoked by ‘NextMethod()’ had a different dynamic parent to the generic. This was causing trouble where S3 methods invoked _via_ lazy evaluation could lose track of their generic. (PR#15267)
Errors in the encoding specified on the command line _via_ ‘--encoding=foo’ were not handled properly. (PR#15405)
Profiling _via_ ‘Rprof()’ now optionally records information at the statement level, not just the function level.
Profiling _via_ ‘Rprof()’ now optionally records information about time spent in GC.
There is a new function ‘mcaffinity()’ which allows getting or setting the CPU affinity mask for the current R process on systems that supports this (currently only Linux has been tested successfully). It has no effect on systems which do not support process affinity. Users are not expected to use this function directly (with the exception of fixing libraries that break affinity settings like OpenBLAS) - the function is rather intended to support affinity control in high-level parallel functions. In the future, R may supplement lack of affinity control in the OS by its own bookkeeping _via_ ‘mcaffinity()’ related to processes and threads it spawns.
Field assignments in reference class objects _via_ ‘$<-’ were not being checked because the magic incantation to turn methods on for that primitive operator had been inadvertently omitted.
‘rep(x, times)’ and ‘rep.int(x, times)’ now both work also when ‘times’
is of length one and larger than the maximal integer.
Changes when redirection of a ‘http://’ URL to a ‘https://’ URL is encountered:
• The internal methods of ‘download.file()’ and ‘url()’ now report that they cannot follow this (rather than failing silently).
• (Unix-alike) ‘download.file(method = "auto")’ (the default) re-tries with ‘method = "libcurl"’.
• (Unix-alike) ‘url(method = "default")’ with an explicit ‘open’ argument re-tries with ‘method = "libcurl"’. This covers many of the usages, e.g. ‘readLines()’ with a URL argument.
The ‘configure’ check for the ‘zlib’ version is now robust to versions longer than 5 characters, including ‘1.2.11’.
Environmental variable ‘_R_CHECK_TESTS_NLINES_’ controls how ‘R CMD check’ reports failing tests (see §8 of the ‘R Internals’ manual).
(C-level Native routine registration.) The undocumented ‘styles’ field of the components of ‘R_CMethodDef’ and ‘R_FortranMethodDef’ is deprecated.
‘rep(x, times)’ and ‘rep.int(x, times)’ now both work also when ‘times’ is of length one and larger than the maximal integer.
‘vapply(x, *)’ now works with long vectors ‘x’. (PR#17174)
‘isS3method("is.na.data.frame")’ and similar are correct now. (PR#17171)
‘grepRaw(<long>, <short>, fixed = TRUE)’ now works, thanks to a patch by Mikko Korpela. (PR#17132)
Package installation into a library where the package exists _via_ symbolic link now should work wherever ‘Sys.readlink()’ works, resolving PR#16725.
‘"Cincinnati"’ was missing an ‘"n"’ in the ‘precip’ dataset.
Fix buffer overflow vulnerability in ‘pdf()’ when loading an encoding file. Reported by Talos (TALOS-2016-0227).
‘getDLLRegisteredRoutines()’ now produces its warning correctly when multiple DLLs match, thanks to Matt Dowle's PR#17184.
‘Sys.timezone()’ now returns non-NA also on platforms such as ‘Ubuntu 14.04.5 LTS’, thanks to Mikko Korpela's PR#17186.
‘format(x)’ for an illegal ‘"POSIXlt"’ object ‘x’ no longer segfaults.
‘methods(f)’ now also works for ‘f’ ‘"("’ or ‘"{"’.
(Windows only) ‘dir.create()’ did not check the length of the path to create, and so could overflow a buffer and crash R. (PR#17206)
On some systems, very small hexadecimal numbers in hex notation would underflow to zero. (PR#17199)
‘pmin()’ and ‘pmax()’ now work again for ‘ordered’ factors and 0-length S3 classed objects, thanks to Suharto Anggono's PR#17195 and PR#17200.
‘bug.report()’ did not do any validity checking on a package's ‘BugReports’ field. It now ignores an empty field, removes leading whitespace and only attempts to open ‘http://’ and ‘https://’ URLs, falling back to emailing the maintainer.
Bandwidth selectors ‘bw.ucv()’ and ‘bw.SJ()’ gave incorrect answers or incorrectly reported an error (because of integer overflow) for inputs longer than 46341. Similarly for ‘bw.bcv()’ at length 5793.
Another possible integer overflow is checked and may result in an error report (rather than an incorrect result) for much longer inputs (millions for a smooth distribution).
‘findMethod()’ failed if the active signature had expanded beyond what a particular package used. (Example with packages ‘XR’ and ‘XRJulia’ on CRAN.)
‘qbeta()’ underflowed too early in some very asymmetric cases. (PR#17178)
‘R CMD Rd2pdf’ had problems with packages with non-ASCII titles in ‘.Rd’ files (usually the titles were omitted).
The ‘configure’ check for the ‘zlib’ version is now robust to versions longer than 5 characters, including ‘1.2.11’.
(C-level Native routine registration.) The undocumented ‘styles’ field of the components of ‘R_CMethodDef’ and ‘R_FortranMethodDef’ is deprecated.
Changes when redirection of a ‘http://’ URL to a ‘https://’ URL is encountered:
• The internal methods of ‘download.file()’ and ‘url()’ now report that they cannot follow this (rather than failing silently).
• (Unix-alike) ‘download.file(method = "auto")’ (the default) re-tries with ‘method = "libcurl"’.
• (Unix-alike) ‘url(method = "default")’ with an explicit ‘open’ argument re-tries with ‘method = "libcurl"’. This covers many of the usages, e.g. ‘readLines()’ with a URL argument.
‘R CMD Rd2pdf’ had problems with packages with non-ASCII titles in ‘.Rd’ files (usually the titles were omitted).
Package installation into a library where the package exists _via_ symbolic link now should work wherever ‘Sys.readlink()’ works, resolving PR#16725.
‘findMethod()’ failed if the active signature had expanded beyond what a particular package used. (Example with packages ‘XR’ and ‘XRJulia’ on CRAN.)
S4 values are automatically coerced to vector (_via_ ‘as.vector’) when subassigned into atomic vectors.
‘findMethod()’ failed if the active signature had expanded beyond what a particular package used. (Example with packages ‘XR’ and ‘XRJulia’ on CRAN).
Changes when redirection of a ‘http://’ URL to a ‘https://’ URL is encountered:
The internal methods of ‘download.file()’ and ‘url()’ now report that they cannot follow this (rather than failing silently).
(Unix-alike) ‘download.file(method = "auto")’ (the default) re-tries with ‘method = "libcurl"’.
(Unix-alike) ‘url(method = "default")’ with an explicit ‘open’ argument re-tries with ‘method = "libcurl"’. This covers many of the usages, e.g. ‘readLines()’ with a URL argument.
The ‘configure’ check for the ‘zlib’ version is now robust to versions longer than 5 characters, including ‘1.2.10’.
‘R CMD build’ no longer wraps a ‘BugReports’ field containing a long
URL, which made it unusable in R <= 3.3.2.
‘R CMD build’ no longer wraps a ‘BugReports’ field containing a long URL, which made it unusable in R <= 3.3.2.
‘qbeta()’ underflowed too early in some very asymmetric cases. (PR#17178)
‘findMethod’ failed if the active signature had expanded beyond what a particular package used. (Example with packages ‘XR’ and ‘XRJulia’ on CRAN).
Bandwidth selectors ‘bw.ucv()’ and ‘bw.SJ()’ gave incorrect answers or incorrectly reported an error (because of integer overflow) for inputs longer than 46341. Similarly for ‘bw.bcv()’ at length 5793.
Another possible integer overflow is checked and may result in an error report (rather than an incorrect result) for much longer inputs (millions for a smooth distribution).
‘pmin()’ and ‘pmax()’ now work again for ‘ordered’ factors and 0-length S3 classed objects, thanks to Suharto Anggono's PR#17195 and PR#17200.
‘rep(x, times)’ and ‘rep.int(x, times)’ now both work also when ‘times’ is larger than the maximal integer, including when it is of length greater than one. (PR#16932)
The check for the zlib version is now robust to versions longer than 5
characters, including 1.2.10.
The check for the zlib version is now robust to versions longer than 5 characters, including 1.2.10.
Enviromental variable ‘_R_CHECK_TESTS_NLINES_’ controls how ‘R CMD
check’ reports failing tests (see §8 of the ‘R Internals’ manual).
Environmental variable ‘_R_CHECK_TESTS_NLINES_’ controls how ‘R CMD check’ reports failing tests (see §8 of the ‘R Internals’ manual).
‘bug.report()’ did not do any validity checking on a package's ‘BugReports’ field. It now ignores an empty field, removes leading whitespace and only attempts to open ‘http://’ and ‘https://’ URLs, falling back to emailing the maintainer.
‘bw.SJ()’ and ‘density(*, bw="SJ")’ no longer fail because of integer
overflow for large sample size n (starting from n as small as 65536).
Bandwidth selectors ‘bw.ucv()’ and ‘bw.SJ()’ gave incorrect answers or incorrectly reported an error (because of integer overflow) for inputs longer than 46341. Similarly for ‘b2.bcv()’ at length 5793.
Another possible integer overflow is checked and may result in a reported error (rather than an incorrect result) for much longer inputs (millions for a smooth distribution).
‘bw.SJ()’ and ‘density(*, bw="SJ")’ no longer fail because of integer overflow for large sample size n (starting from n as small as 65536).
‘bug.report()’ did not do any validity checking on a package's ‘BugReports’ field. It now ignores an empty field and only attempts to open ‘http://’ and ‘https://’ URLs, falling back to emailing the maintainer.
On some systems, very small hexadecimal numbers in hex notation would underflow to zero. (PR#17199)
(Windows only) ‘dir.create()’ did not check the length of the path to create, and so could overflow a buffer and crash R. (PR#17206)
(Windows only) ‘dir.create()’ did not check the length of the path to create, and so could overflow a buffer and crash R. PR#17206
The check for the zlib version is now robust to versions longer than 5 characters, including 1.2.10.
Enviromental variable ‘_R_CHECK_TESTS_NLINES_’ controls how ‘R CMD check’ reports failing tests (see §8 of the ‘R Internals’ manual).
The internal methods of ‘download.file()’ and ‘url()’ now report if they are unable to follow the redirection of a ‘http://’ URL to a ‘https://’ URL (rather than failing silently).
‘methods(f)’ now also works for ‘f’ ‘"("’ or ‘"{"’.
‘format(x)’ for an illegal ‘"POSIXlt"’ object ‘x’ no longer segfaults.
‘Sys.timezone()’ now returns non-NA also on platforms such as ‘Ubuntu 14.04.5 LTS’, thanks to Mikko Korpela's PR#17186.
‘"Cincinnati"’ was missing an ‘"n"’ in the ‘precip’ dataset.
‘getDLLRegisteredRoutines()’ now produces its warning correctly when multiple DLLs match, thanks to Matt Dowle's PR#17184.
Fix buffer overflow vulnerability in ‘pdf()’ when loading an encoding file. Reported by Talos (TALOS-2016-0227).
Package installation into a library where the package exists via symbolic link now should work wherever ‘Sys.readlink()’ works, resolving PR#16725.
‘grepRaw(<long>, <short>, fixed = TRUE)’ now works, thanks to a patch by Mikko Korpela. (PR#17132)
‘isS3method("is.na.data.frame")’ and similar are correct now. (PR#17171)
‘rep(x, times)’ and ‘rep.int(x, times)’ now both work also when ‘times’ is larger than the maximal integer. (PR#16932)
‘vapply(x, *)’ now works with long vectors ‘x’. (PR#17174)
‘min()’ and ‘max()’ now also work correctly when the argument list starts with ‘character(0)’. (PR#17160)
‘xtabs(~ exclude)’ no longer fails from wrong scope, thanks to Suharto Anggono's PR#17147.
‘extSoftVersion()’ now reports the version (if any) of the ‘readline’ library in use.
The version of LAPACK included in the sources has been updated to 3.6.1, a bug-fix release including a speedup for the non-symmetric case of ‘eigen()’.
Use ‘options(deparse.max.lines=)’ to limit the number of lines recorded in ‘.Traceback’ and other deparsing activities.
‘format(<AsIs>)’ looks more regular, also for non-character atomic matrices.
‘abbreviate()’ gains an option ‘named = TRUE’.
The online documentation for package ‘methods’ is extensively rewritten. The goals are to simplify documentation for basic use, to note old features not recommended and to correct out-of-date information.
Calls to ‘setMethod()’ no longer print a message when creating a generic function in those cases where that is natural: S3 generics and primitives.
Versions of the ‘readline’ library >= 6.3 had been changed so that terminal window resizes were not signalled to ‘readline’: code has been added using a explicit signal handler to work around that (when R is compiled against readline >= 6.3). (PR#16604)
‘configure’ works better with Oracle Developer Studio 12.5.
‘R CMD check’ reports more dubious flags in files ‘src/Makevars[.in]’, including ‘-w’ and ‘-g’.
‘R CMD check’ has been set up to filter important warnings from recent versions of ‘gfortran’ with ‘-Wall -pedantic’: this now reports non-portable GNU extensions such as out-of-order declarations.
‘R CMD config’ works better with paths containing spaces, even those of home directories (as reported by Ken Beath).
Use of the C/C++ macro ‘NO_C_HEADERS’ is deprecated (no C headers are included by R headers from C++ as from R 3.3.0, so it should no longer be needed).
The check for non-portable flags in ‘R CMD check’ could be stymied by ‘src/Makevars’ files which contained targets.
(Windows only) When using certain desktop themes in Windows 7 or higher, ‘Alt-Tab’ could cause ‘Rterm’ to stop accepting input. (PR#14406; patch submitted by Jan Gleixner.)
‘pretty(d, ..)’ behaves better for date-time ‘d’ (PR#16923).
When an S4 class name matches multiple classes in the S4 cache, perform a dynamic search in order to obey namespace imports. This should eliminate annoying messages about multiple hits in the class cache. Also, pass along the package from the ‘ClassExtends’ object when looking up superclasses in the cache.
‘sample(NA_real_)’ now works.
Packages using non-ASCII encodings in their code did not install data properly on systems using different encodings.
‘merge(df1, df2)’ now also works for data frames with column names ‘"na.last"’, ‘"decreasing"’, or ‘"method"’. (PR#17119)
‘contour()’ caused a segfault if the ‘labels’ argument had length zero. (Reported by Bill Dunlap.)
‘unique(warnings())’ works more correctly, thanks to a new ‘duplicated.warnings()’ method.
‘findInterval(x, vec = numeric(), all.inside = TRUE)’ now returns ‘0’s as documented. (Reported by Bill Dunlap.)
(Windows only) ‘R CMD SHLIB’ failed when a symbol in the resulting library had the same name as a keyword in the ‘.def’ file. (PR#17130)
‘pmax()’ and ‘pmin()’ now work with (more ?) classed objects, such as ‘"Matrix"’ from the ‘Matrix’ package, as documented for a long time.
‘axis(side, x = D)’ and hence ‘Axis()’ and ‘plot()’ now work correctly for ‘"Date"’ and time objects ‘D’, even when “time goes backward”, e.g., with decreasing ‘xlim’. (Reported by William May.)
‘str(I(matrix(..)))’ now looks as always intended.
‘plot.ts()’, the ‘plot()’ method for time series, now respects ‘cex’, ‘lwd’ and ‘lty’. (Reported by Greg Werbin.)
‘parallel::mccollect()’ now returns a named list (as documented) when called with ‘wait = FALSE’. (Reported by Michel Lang.)
If a package added a class to a class union in another package, loading the first package gave erroneous warnings about “undefined subclass”.
‘c()’'s argument ‘use.names’ is documented now, as belonging to the (C internal) default method. In “parallel”, argument ‘recursive’ is also moved from the generic to the default method, such that the formal argument list of ‘base’ generic ‘c()’ is just ‘(...)’.
‘rbeta(4, NA)’ and similarly ‘rgamma()’ and ‘rnbinom()’ now return ‘NaN’'s with a warning, as other r<dist>(), and as documented. (PR#17155)
Using ‘options(checkPackageLicense = TRUE)’ no longer requires acceptance of the licence for non-default standard packages such as ‘compiler’. (Reported by Mikko Korpela.)
‘split(<very_long>, *)’ now works even when the split off parts are long. (PR#17139)
Subsetting very large matrices (‘prod(dim(.)) >= 2^31’) now works thanks to Michael Schubmehl's PR#17158.
‘bartlett.test()’ used residual sums of squares instead of variances, when the argument was a list of ‘lm’ objects. (Reported by Jens Ledet Jensen).
‘plot(<lm>, which = *)’ now correctly labels the contour lines for the standardized residuals for ‘which = 6’. It also takes the correct p in case of singularities (also for ‘which = 5’). (PR#17161)
Reference class calls to ‘methods()’ did not re-analyse previously defined methods, meaning that calls to methods defined later would fail. (Reported by Charles Tilford).
‘findInterval(x, vec, left.open = TRUE)’ misbehaved in some cases. (Reported by Dmitriy Chernykh.)
‘format.POSIXlt()’ behaved incorrectly in R 3.2.4. E.g. the output of ‘format(as.POSIXlt(paste0(1940:2000,"-01-01"), tz = "CET"), usetz = TRUE)’ ended in two ‘"CEST"’ time formats.
reference class calls to ‘methods()’ did not re-analyse previously defined methods, meaning that calls to methods defined later would fail. (Reported by Charles Tilford).
‘plot(<lm>, which = *)’ now correctly labels the contour lines for the standardized residuals for ‘which = 6’. It also takes the correct p in case of singularities (also for ‘which = 5’). (PR#17161)
‘bartlett.test()’ used residual sums of squares instead of variances, when the argument was a list of ‘lm’ objects. (Reported by Jens Ledet Jensen).
Subsetting very large matrices (‘prod(dim(.)) >= 2^31’) now works thanks to Michael Schubmehl's PR#17158.
‘bartlett.test()’ used residual sums of squares instead of variances, when argument was a list of ‘lm’ objects. (Reported by Jens Ledet Jensen).
‘split(<very_long>, *)’ now works even when the split off parts are long. (PR#17139)
‘split(<very_long>, *)’ now works with long vectors. (PR#17193)
Convenience function ‘hasName()’ has been added; it is intended to
replace the common idiom ‘!is.null(x$name)’ without the usually
unintended partial name matching.
‘format(<AsIs>)’ looks more regular, also for non-character atomic matrices.
Use ‘options(deparse.max.lines=)’ to limit the number of lines recorded in ‘.Traceback’ and other deparsing activities.
‘abbreviate()’ gains an option ‘named = TRUE’.
Calls to ‘setMethod()’ no longer print a message when creating a generic function in those cases where that is natural: S3 generics and primitives.
‘str(I(matrix(..)))’ now looks as always intended.
‘parallel::mccollect()’ now returns a named list (as documented) when called with ‘wait = FALSE’. (Reported by Michel Lang.)
‘rbeta(4, NA)’ and similarly ‘rgamma()’ and ‘rnbinom()’ now return ‘NaN’'s with a warning, as other r<dist>(), and as documented. (PR#17155)
Using ‘options(checkPackageLicense = TRUE)’ no longer requires acceptance of the licence for non-default standard packages such as ‘compiler’. (Reported by Mikko Korpela.)
When an S4 class name matches multiple classes in the S4 cache, perform a dynamic search in order to obey namespace imports. This should eliminate annoying messages about multiple hits in the class cache. Also, pass along the package from the ‘ClassExtends’ object when looking up superclasses in the cache.
‘c()’'s argument ‘use.names’ is documented now, as belonging to the (C internal) default method. In “parallel”, argument ‘recursive’ is also moved from the generic to the default method, such that the formal argument list of ‘base’ generic ‘c()’ is just ‘(...)’.
Calls to ‘setMethod()’ no longer print a message when creating a generic function in the cases where that is natural: S3 generics and primitives.
If a package added a class to a class union in another package, loading the first package gave erroneous warnings about “undefined subclass”.
The online documentation for package ‘methods’ is extensively rewritten. The goals are to simplify documentation for basic use, to note old features not recommended and to correct out-of-date information.
‘c()’'s argument ‘use.names’ is documented now.
‘abbreviate()’ gets option ‘named = TRUE’.
Use of the C/C++ macro ‘NO_C_HEADERS’ is deprecated (no C headers are included by R headers from C++ as from R 3.3.0, so it should no longer be needed).
‘axis(side, x = D)’ and hence ‘Axis()’ and ‘plot()’ now work correctly for ‘"Date"’ and time objects ‘D’, even when “time goes backward”, e.g., with decreasing ‘xlim’. (Reported by William May.)
‘plot.ts()’, the ‘plot()’ method for time series, now respects ‘cex’, ‘lwd’ and ‘lty’. (Reported by Greg Werbin.)
‘R CMD config’ works better with paths containing spaces, even those of home directories (as reported by Ken Beath).
‘R CMD config’ copes better with paths containing spaces, even home directories.
‘plot.ts()’, the ‘plot()’ method for time series, now obeys ‘cex’, ‘lwd’, and ‘lty’. (Reported by Greg Werbin).
‘R CMD check’ reports more dubious flags in files ‘src/Makevars[.in]’, including ‘-w’ and ‘-g’.
‘R CMD check’ has been set up to filter important warnings from recent versions of ‘gfortran’ with ‘-Wall -pedantic’: this now reports non-portable GNU extensions such as out-of-order declarations.
‘axis(side, x = D)’ and hence ‘Axis()’ and ‘plot()’ now work correctly for ‘"Date"’ and time objects ‘D’, even when “time goes backward”, e.g., with decreasing ‘xlim’. (Reported by William May).
‘pmax()’ and ‘pmin()’ now work with (more ?) classed objects, such as ‘"Matrix"’ from the ‘Matrix’ package, as documented for a long time.
‘findInterval(x, vec = numeric(), all.inside = TRUE)’ now returns ‘0’s as documented. (Reported by Bill Dunlap.)
‘rgamma(1, Inf)’ or ‘rgamma(1, 0, 0)’ no longer give ‘NaN’ but the correct limit.
(Windows only) ‘R CMD SHLIB’ failed when a symbol in the resulting library had the same name as a keyword in the ‘.def’ file. (PR#17130)
‘unique(warnings())’ works more correctly, thanks to a new ‘duplicated.warnings()’ method.
Use ‘options(deparse.max.lines)’ to limit the number of lines recorded in .Traceback and other deparsing activities.
The version of LAPACK included in the sources has been updated to 3.6.1, a bug-fix release including a speedup for the non-symmetric case of ‘eigen()’.
‘contour()’ caused a segfault if the ‘labels’ argument had length zero. (Reported by Bill Dunlap.)
The version of LAPACK included in the sources has been updated to 3.6.1, a bug-fix release including a speedup for the non-symmmetric case of ‘eigen()’.
‘configure’ works better with Oracle Developer Studio 12.5.
‘merge(df1, df2)’ now also works for data frames with column names ‘"na.last"’, ‘"decreasing"’, or ‘"method"’. (PR#17119)
‘pretty(d, ..)’ behaves better for date-time ‘d’ (PR#16923).
‘sample(NA_real_)’ now works.
(Windows only) When using certain desktop themes in Windows 7 or higher, ‘Alt-Tab’ could cause ‘Rterm’ to stop accepting input. (PR#14406; patch submitted by Jan Gleixner.)
When a class name matches multiple classes in the cache, perform a dynamic search in order to obey namespace imports. This should eliminate annoying messages about multiple hits in the class cache. Also, pass along the package from the ‘ClassExtends’ object when looking up superclasses in the cache.
Packages using non-ASCII encodings in their code did not install data properly on systems using different encodings.
When a class name matches multiple classes in the cache, perform a dynamic search in order to obey namespace imports. This should eliminate annoying messages about multiple hits in the class cache. Also, pass along the package from the ‘ClassExtends’ object when looking up superclasses in the cache.
When a class name matches multiple classes in the cache, perform a
dynamic search in order to obey namespace imports. This should
eliminate annoying messages about multiple hits in the class cache.
Also, pass along the package from the ‘ClassExtends’ object when
looking up superclasses in the cache.
(Windows only) When using certain desktop themes in Windows 7 or higher, ‘Alt-Tab’ could cause ‘Rterm’ to stop accepting input. (PR#14406; patch submitted by Jan Gleixner.)
‘pretty(d, ..)’ for date-time ‘d’ tweaked more nicely (PR#16923).
When a class name matches multiple classes in the cache, perform a dynamic search in order to obey namespace imports. This should eliminate annoying messages about multiple hits in the class cache. Also, pass along the package from the ‘ClassExtends’ object when looking up superclasses in the cache.
(Windows only) When using certain desktop themes in Windows 7 or higher, ‘Alt-Tab’ could cause ‘Rterm’ to stop accepting input. (PR#14406; patch submitted by Jan Gleixner.)
Convenience function ‘hasName()’ has been added; it is intended to replace the common idiom ‘!is.null(x$name)’ without the usually unintended partial name matching.
The check for non-portable flags in ‘R CMD check’ could be stymied by ‘src/Makevars’ files which contained targets.
‘pretty(d, ..)’ for date-time ‘d’ rarely failed when ‘"halfmonth"’ time steps were tried (PR#16923) and on ‘inaccurate’ platforms such as 32-bit Windows or a configuration with ‘--disable-long-double’; see comment #15 of PR#16761.
Use of ‘Ctrl-C’ to terminate a reverse incremental search started by ‘Ctrl-R’ in the ‘readline’-based Unix terminal interface is now supported when R was compiled against ‘readline’ >= 6.0 (‘Ctrl-G’ always worked). (PR#16603)
‘extSoftVersion()’ now reports the version (if any) of the ‘readline’ library in use.
Versions of the ‘readline’ library >= 6.3 had been changed so that terminal window resizes were not signalled to ‘readline’: code has been added using a explicit signal handler to work around that (when R is compiled against readline >= 6.3). (PR#16604)
‘as<-()’ avoids an infinite loop when a virtual class comes between a
subclass and an actual superclass.
Fix level propagation in ‘unlist()’ when the list contains zero-length
lists or factors.
Fix S3 dispatch on S4 objects when the ‘methods’ package is not
attached.
Internal S4 dispatch sets ‘.Generic’ in the method frame for
consistency with ‘standardGeneric()’ (PR#16929).
Fix ‘order(x, decreasing=TRUE)’ when ‘x’ is an integer vector
containing ‘MAX_INT’. Ported from a fix Matt Dowle made to
‘data.table’.
‘as<-()’ avoids an infinite loop when a virtual class comes between a subclass and an actual superclass.
Fix level propagation in ‘unlist()’ when the list contains zero-length lists or factors.
Fix S3 dispatch on S4 objects when the ‘methods’ package is not attached.
Internal S4 dispatch sets ‘.Generic’ in the method frame for consistency with ‘standardGeneric()’ (PR#16929).
Fix ‘order(x, decreasing=TRUE)’ when ‘x’ is an integer vector containing ‘MAX_INT’. Ported from a fix Matt Dowle made to ‘data.table’.
‘R CMD INSTALL’ and hence ‘install.packages()’ gave an internal error installing a package called ‘description’ from a tarball on a case-insensitive file system.
‘match(x, t)’ (and hence ‘x %in% t’) failed when ‘x’ was of length one, and either ‘character’ and ‘x’ and ‘t’ only differed in their ‘Encoding’ or when ‘x’ and ‘t’ where ‘complex’ with ‘NA’s or ‘NaN’s. (PR#16885.)
‘unloadNamespace(ns)’ also works again when ‘ns’ is a ‘namespace’, as from ‘getNamespace()’.
‘rgamma(1,Inf)’ or ‘rgamma(1, 0,0)’ no longer give ‘NaN’ but the correct limit.
‘length(baseenv())’ is correct now.
‘pretty(d, ..)’ for date-time ‘d’ rarely failed when ‘"halfmonth"’ time steps were tried (PR#16923) and on ‘inaccurate’ platforms such as 32-bit windows or a configuration with ‘--disable-long-double’; see comment #15 of PR#16761.
In ‘text.default(x, y, labels)’, the rarely(?) used default for ‘labels’ is now correct also for the case of a 2-column matrix ‘x’ and missing ‘y’.
‘as.factor(c(a = 1L))’ preserves ‘names()’ again as in R < 3.1.0.
‘strtrim(""[0], 0[0])’ now works.
Use of ‘Ctrl-C’ to terminate a reverse incremental search started by ‘Ctrl-R’ in the ‘readline’-based Unix terminal interface is now supported for ‘readline’ >= 6.3 (‘Ctrl-G’ always worked). (PR#16603)
‘diff(<difftime>)’ now keeps the ‘"units"’ attribute, as subtraction already did, PR#16940.
‘diff(<difftime>)’ now keeps the ‘"units"’ attribute, as subtraction already did, PR#16940.
(Windows only) Tcl/Tk version 8.6.4 is now included in the binary
builds. The ‘tcltk*.chm’ help file is no longer included; please use
<URL: http://www.tcl.tk/man/> instead.
Use of ‘Ctrl-C’ to terminate a reverse incremental search started by ‘Ctrl-R’ in the ‘readline’-based Unix terminal interface is now supported for ‘readline’ >= 6.3 (‘Ctrl-G’ always worked). (PR#16603)
(Windows only) Tcl/Tk version 8.6.4 is now included in the binary builds. The ‘tcltk*.chm’ help file is no longer included; please use <URL: http://www.tcl.tk/man/> instead.
‘as.factor(c(a = 1L))’ preserves ‘names()’ again as in R < 3.1.0.
‘strtrim(""[0], 0[0])’ now works.
‘pretty(d, ..)’ for date-time ‘d’ rarely failed when ‘"halfmonth"’ time steps were tried (PR#16923) and on ‘inaccurate’ platforms such as 32-bit windows or a configuration with ‘--disable-long-double’; see comment #15 of PR#16761.
‘rgamma(1,Inf)’ or ‘rgamma(1, 0,0)’ no longer give ‘NaN’ but the correct limit.
In ‘text.default(x, y, labels)’, the rarely(?) used default for ‘labels’ is now correct also for the case of a 2-column matrix ‘x’ and missing ‘y’.
‘length(baseenv())’ is correct now.
‘pretty(d, ..)’ for date-time ‘d’ rarely failed on ‘inaccurate’ platforms such as 32-bit windows or a configuration with ‘--disable-long-double’; see comment #15 of PR#16761.
‘unloadNamespace(ns)’ also works again when ‘ns’ is a ‘namespace’, as from ‘getNamespace()’.
‘match(x, t)’ (and hence ‘x %in% t’) failed when ‘x’ was of length one, and either ‘character’ and ‘x’ and ‘t’ only differed in their ‘Encoding’ or when ‘x’ and ‘t’ where ‘complex’ with ‘NA’s or ‘NaN’s. (PR#16885.)
‘R CMD INSTALL’ and hence ‘install.packages()’ gave an internal error installing a package called ‘description’ from a tarball on a case-insensitive file system.
New convenience function ‘Rcmd()’ in package ‘tools’ for invoking ‘R CMD’ tools from within R.
New functions ‘makevars_user()’ and ‘makevars_site()’ in package ‘tools’ to determine the location of the user and site specific ‘Makevars’ files for customizing package compilation.
‘diag(NULL, 1)’ crashed because of missed type checking. (PR#16853)
‘isSymmetrix(m)’ is much faster for large asymmetric matrices ‘m’.
‘isSymmetrix(m)’ is much faster for large asymmetric matrices ‘m’.
‘download.file()’ with ‘method = "wininet"’ incorrectly warned of download file length difference when reported length was unknown. (PR#16805)
A bug fix in R 3.0.2 fixed problems with ‘locator()’ in X11, but introduced problems in Windows. Now both should be fixed. (PR#15700)
‘match(x, table)’ is faster (sometimes by an order of magnitude) when ‘x’ is of length one and ‘incomparables’ is unchanged, thanks to Peter Haverty (PR#16491).
On Unix-like platforms which support the ‘getline’ C library function, ‘system(*,intern = TRUE)’ no longer truncates (output) lines longer than 8192 characters, thanks to Karl Millar. (PR#16544)
The ‘format’ method for ‘object_size’ objects now also accepts “binary” units such as ‘"KiB"’ and e.g., ‘"Tb"’. (Partly from PR#16649.)
New string utilities ‘startsWith(x, prefix)’ and ‘endsWith(x, suffix)’. Also provide speedups for some ‘grepl("^...",*)’ uses (related to proposals in PR#16490).
Jumps to outer contexts, for example in error recovery, now make intermediate jumps to contexts where ‘on.exit()’ actions are established instead of trying to run all ‘on.exit()’ actions before jumping to the final target. This unwinds the stack gradually, releases resources held on the stack, and significantly reduces the chance of a segfault when running out of C stack space. Error handlers established using ‘withCallingHandlers()’ and ‘options("error")’ specifications are ignored when handling a C stack overflow error as attempting one of these would trigger a cascade of C stack overflow errors. (These changes resolve PR#16753.)
‘pretty(d, n, min.n, *)’ for date-time objects ‘d’ works again in border cases with large ‘min.n’, returns a ‘labels’ attribute also for small-range dates and in such cases its returned length is closer to the desired ‘n’. (PR#16761) Additionally, it finally does cover the range of ‘d’, as it always claimed.
‘tsp(x) <- NULL’ did not handle correctly objects inheriting from both ‘"ts"’ and ‘"mts"’. (PR#16769)
(Windows only) The ‘Rgui’ front end did not always initialize the console properly, and could cause R to crash. (PR#16698)
The ‘import()’ namespace directive now accepts an argument ‘except’ which names symbols to exclude from the imports. The ‘except’ expression should evaluate to a character vector (after substituting symbols for strings). See Writing R Extensions.
‘install.packages()’ could give false errors when ‘options("pkgType")’ was ‘"binary"’. (Reported by Jose Claudio Faria.)
‘prcomp()’ gains a new option ‘rank.’ allowing to directly aim for less than ‘min(n,p)’ PC's. The ‘summary()’ and its ‘print()’ method have been amended, notably for this case.
‘as.roman(ch)’ now correctly deals with more diverse character vectors ‘ch’; also arithmetic with the resulting roman numbers works in more cases. (PR#16779)
‘gzcon()’ gains a new option ‘text’, which marks the connection as text-oriented (so e.g. ‘pushBack()’ works). It is still always opened in binary mode.
R now uses a new version of the logo (donated to the R Foundation by RStudio). It is defined in ‘.svg’ format, so will resize without unnecessary degradation when displayed on HTML pages-there is also a vector PDF version. Thanks to Dirk Eddelbuettel for producing the corresponding X11 icon.
‘gzcon()’ gains a new option ‘text’, which marks the connection as text-oriented (so e.g. ‘pushBack()’ works). It is still always opened in binary mode.
‘tools::undoc(dir = D)’ and ‘codoc(dir = D)’ now also work when ‘D’ is a directory whose ‘normalizePath()’ed version does not end in the package name, e.g. from a symlink.
On Unix-like platforms which support the ‘getline’ C library function, ‘system(*,intern = TRUE)’ no longer truncates (output) lines longer than 8192 characters, thanks to Karl Millar's PR#16544.
S4 dispatch works within calls to ‘.Internal()’. This means explicit S4 generics are no longer needed for ‘unlist()’ and ‘as.vector()’.
The radix sort algorithm and implementation from ‘data.table’ (‘forder’) replaces the previous radix (counting) sort and adds a new method for ‘order()’. Contributed by Matt Dowle and Arun Srinivasan, the new algorithm supports logical, integer (even with large values), real, and character vectors. It outperforms all other methods, but there are some caveats (see ‘?sort’).
New function ‘grouping()’ returns a permutation that stably rearranges data so that identical values are adjacent. The return value includes extra partitioning information on the groups. The implementation came included with the new radix sort.
‘parallel::detectCores()’ now has default ‘logical = TRUE’ on all platforms - as this was the default on Windows, this change only affects Sparc Solaris.
Option ‘logical = FALSE’ is now supported on Linux and recent versions of OS X (for the latter, thanks to a suggestion of Kyaw Sint).
R now uses a new version of the logo (donated to the R Foundation by RStudio). It is defined in ‘.svg’ format, so will resize without unnecessary degradation when displayed on HTML pages-there is also a vector PDF version.
The minimum preferred version of PCRE has since R 3.0.0 been 8.32 (released in Nov 2012). Versions 8.10 to 8.31 are now deprecated (with warnings from ‘configure’), but will still be accepted until R 3.4.0.
‘configure’ looks for C functions ‘__cospi’, ‘__sinpi’ and ‘__tanpi’ and uses these if ‘cospi’ _etc_ are not found. (OS X is the main instance.)
When R headers such as ‘R.h’ and ‘Rmath.h’ are called from C++ code in packages they include the C++ versions of system headers such as ‘<cmath>’ rather than the legacy headers such as ‘<math.h>’. (Headers ‘Rinternals.h’ and ‘Rinterface.h’ already did, and inclusion of system headers can still be circumvented by defining ‘NO_C_HEADERS’, including as from this version for those two headers.)
The manual has long said that R headers should *not* be included within an ‘extern "C"’ block, and almost all the packages affected by this change were doing so.
The connections API now includes a function ‘R_GetConnection()’ which allows packages implementing connections to convert R ‘connection’ objects to ‘Rconnection’ handles used in the API. Code which previously used the low-level R-internal ‘getConnection()’ entry point should switch to the official API.
Data frames with a column named ‘"stringsAsFactors"’ now format and print correctly. (PR#16580)
Jumps to outer contexts, for example in error recovery, now make intermediate jumps to contexts where ‘on.exit()’ actions are established instead of trying to run all ‘on.exit()’ actions before jumping to the final target. This unwinds the stack gradually, releases resources held on the stack, and significantly reduces the chance of a segfault when running out of C stack space. Error handlers established using ‘withCallingHandlers()’ and ‘options("error")’ specifications are ignored when handling a C stack overflow error as attempting one of these would trigger a cascade of C stack overflow errors. These changes resolve PR#16753.
‘tsp(x) <- NULL’ did not handle correctly objects inheriting from both ‘"ts"’ and ‘"mts"’. PR#16769
‘format.POSIXlt()’ behaved incorrectly in R 3.2.4. E.g. the output of ‘format(as.POSIXlt(paste0(1940:2000,"-01-01"), tz = "CET"), usetz = TRUE)’ ended in two ‘"CEST"’ time formats.
‘configure’ looks for ‘__cospi’, ‘__sinpi’ and ‘__tanpi’ and uses these if ‘cospi’ _etc_ are not found. (OS X is the main instance.)
(Windows) R is now built using ‘gcc’ 4.9.3. This build will require recompilation of at least those packages that include C++ code, and possibly others. A build of R-devel using the older toolchain will be temporarily available for comparison purposes.
During the transition, the environment variable ‘R_COMPILED_BY’ has been defined to indicate which toolchain was used to compile R (and hence, which should be used to compile code in packages). The ‘COMPILED_BY’ variable described below will be a permanent replacement for this.
(Windows) A ‘make’ and ‘R CMD config’ variable named ‘COMPILED_BY’ has been added. This indicates which toolchain was used to compile R (and hence, which should be used to compile code in packages).
(Windows) An experimental build of R based on ‘gcc’ 4.9.3 is now available on CRAN on the ‘bin/windows/base/rdevel.html’ snapshot page. This build will require recompilation of at least those packages that include C++ code, and possibly others. The CRAN binary packages still use the older toolchain, so package installs default to ‘type = "source"’.
During the transition, the environment variable ‘R_COMPILED_BY’ will be defined to indicate which toolchain was used to compile R (and hence, which should be used to compile code in packages). The ‘COMPILED_BY’ variable described below will be a permanent replacement for this.
‘as.roman(ch)’ now correctly deals with more diverse character vectors ‘ch’; also arithmetic with resulting roman numbers works in more cases. (PR#16779)
Connection API now includes ‘R_GetConnection()’ which allows packages implementing connections to convert R ‘connection’ objects to ‘Rconnection’ handles used in the API. Code which previously used the low-level R-internal ‘getConnection()’ entry point should switch to the official API.
‘tsp(x) <- NULL’ did not handle objects inheriting from both ‘"ts"’ and ‘"mts"’ properly. PR#16769
‘for()’ loops are generalized to iterate over any object with ‘[[’ and
‘length()’ methods. Thanks to Hervé Pagès for the idea and the patch.
The spacing could be wrong when printing a complex array. (Report and patch by Lukas Stadler.)
‘pretty(d, n, min.n, *)’ for date-time objects ‘d’ works again in border cases with large ‘min.n’, returns a ‘labels’ attribute also for small-range dates and in such cases its returned length is closer to the desired ‘n’. PR#16761