This blog is updated daily.
A general description is here.
An irrelevant warning message from updating subclass information was silenced (the namespace would not be writable in this case).
The internal method of ‘download.file()’ can now handle files larger than 2GB on 32-bit builds which support such files (tested on 32-bit R running on 64-bit Windows).
‘kruskal.test()’ warns on more types of suspicious input.
The ‘as.dendrogram()’ method for ‘"hclust"’ objects gains a ‘check’ argument protecting against memory explosion for invalid inputs.
‘capabilities()’ has a new item ‘long.double’ which indicates if the build uses a ‘long double’ type which is longer than ‘double’.
‘nlm()’ no longer modifies the callback argument in place (a new vector is allocated for each invocation, which mimics the implicit duplication that occurred in R < 3.1.0); note that this is a change from the previously documented behavior. (PR#15958)
‘icuSetCollate()’ now accepts ‘locale = "ASCII"’ which uses the basic C function ‘strcmp’ and so collates strings byte-by-byte in numerical order.
‘sessionInfo()’ tries to report the OS version in use (not just that compiled under, and including details of Linux distributions).
‘model.frame()’ (used by ‘lm()’ and many other modelling functions) now warns when it drops contrasts from factors. (Wish of PR#16119)
‘install.packages()’ and friends now accept the value ‘type = "binary"’ as a synonym for the native binary type on the platform (if it has one).
Single source or binary files can be supplied for ‘install.packages(type = "both")’ and the appropriate type and ‘repos = NULL’ will be inferred.
New function ‘pcre_config()’ to report on some of the configuration options of the version of PCRE in use. In particular, this reports if regular expressions using ‘\p{xx}’ are supported.
(Windows.) ‘download.file(cacheOK = FALSE)’ is now supported when ‘internet2.dll’ is used.
‘browseURL()’ has been updated to work with Firefox 36.0 which has dropped support for the ‘-remote’ interface.
The included version of PCRE has been updated to 8.36.
‘configure’ accepts ‘MAKEINFO=texi2any’ as another way to ensure ‘texinfo’ 5.x is used when both 5.x and 4.x are installed.
‘R CMD check’ now checks the packages used in ‘\donttest’ sections of the examples are specified in the ‘DESCRIPTION’ file. (These are needed to run the examples interactively.)
‘R CMD check’ checks for the undeclared use of GNU extensions in Makefiles, and for Makefiles with a missing final linefeed.
‘R CMD build’ will correct line endings in all Makefiles, not just those in the ‘src’ directory.
‘R CMD check’ notes uses of ‘library()’ and ‘require()’ in package code: see the section ‘Suggested packages’ of ‘Writing R Extensions’ for good practice.
The ‘configure’ option ‘--with-valgrind-instrumentation=3’ is deprecated and will be removed in R 3.2.0.
(Windows.) ‘Rscript.exe’ was missing a manifest specifying the modern style for common controls (e.g., the download progress bar).
If a package had extra documentation files but no vignette, the HTML help system produced an empty index page.
The parser now gives an error if a null character is included in a string using Unicode escapes. (PR#16046)
‘qr.Q()’ failed on complex arguments due to pre-3.0(!) typo. (PR#16054)
‘abs()’ failed with named arguments when the argument was complex. (PR#16047)
‘"noquote"’ objects may now be used as columns in dataframes. (PR#15997)
Some values with extremely long names were printed incorrectly. (PR#15999)
Extremely large exponents on zero expressed in scientific notation (e.g. ‘0.0e50000’) could give ‘NaN’. (PR#15976)
‘download.file()’ reported downloaded sizes as 0KB if less than 1MB, only for R 3.1.2 and only on big-endian platforms.
‘prompt()’ did not escape percent signs in the automatically generated usage section of help files.
‘drop.terms()’ dropped some of the attributes of the object it was working with. (PR#16029)
(Windows.) The command completion in ‘Rgui.exe’ messed up the console. (PR#15791)
(Windows.) The ‘choose.files()’ command returned a blank string when the user asked for a single file but cancelled the request. (PR#16074)
‘Math2’ S4 group generics failed to correctly dispatch ‘"structure"’- and ‘"nonStructure"’-derived classes.
‘loadNamespace()’ imposed undocumented restrictions on the ‘versionCheck’ parameter. (Reported by Geoff Lee.)
Rare over-runs detected by AddressSanitizer in ‘substr()’ and its replacement version have been avoided.
_Inter alia_ that fix gives the documented behaviour for ‘substr(x, 1, 2) <- ""’ (subsequently reported as PR#16214).
Loading packages incorrectly defining an S4 generic followed by a function of the same name caused an erroneous cyclic namespace dependency error.
Declared vignette encodings are now always passed to the vignette engine.
Port Tomas Kalibera's fix from R-devel that restores the ‘loadMethod()’ fast path, effectively doubling the speed of S4 dispatch.
‘power.t.test()’ and ‘power.prop.test()’ now make use of the ‘extendInt’ option of ‘uniroot()’ and hence work in more extreme cases. (PR#15792)
If a package was updated and attached when its namespace was already loaded, it could end up with parts from one version and parts from the other. (PR#16120)
‘tools:::.Rdconv()’ didn't accept ‘--encoding=’ due to a typo. (PR#16121)
Unix-alike builds without a suitable ‘makeinfo’ were documented to link the missing HTML manuals to CRAN, but did not.
‘save(*, ascii=TRUE)’ and ‘load()’ now correctly deal with ‘NaN’'s. (PR#16137)
‘split.Date()’ retains fractional representations while avoiding incomplete class propagation.
‘R_ext/Lapack.h’ had not been updated for changes made by LAPACK to the argument lists of its (largely internal) functions ‘dlaed2’ and ‘dlaed3’. (PR#16157)
‘RShowDoc("NEWS", "txt")’ had not been updated for the layout changes of R 3.1.0.
The ‘xtfrm()’ method for class ‘"Surv"’ has been corrected and its description expanded.
‘mode(x) <- y’ would incorrectly evaluate ‘x’ before changing its mode. (PR#16215)
‘besselJ(1, 2^64)’ and ‘besselY(..)’ now signal a warning, returning ‘NaN’ instead of typically segfaulting. (Issue 3 of PR#15554)
HTML conversion of ‘\href’ markup in ‘.Rd’ files did not remove the backslash from ‘\%’ and so gave an invalid URL. In a related change, the ‘\’ escape is now required in such URLs.
‘browseURL()’ has been updated to work with Firefox 36.0 which has dropped support for the ‘-remote’ interface.
HTML conversion of ‘\href’ markup in ‘.Rd’ files did not remove the backslash from ‘\%’ and so gave an invalid URL. In a related change, the ‘\’ escape is now required in such URLs.
HTML conversion of ‘\href’ markup in ‘.Rd’ files did not remove the backslash from ‘\%’ and so gave an invalid URL.
‘besselJ(1, 2^64)’ and ‘besselY(..)’ now signal a warning, returning ‘NaN’ instead of typically segfaulting. (Issue 3 of PR#15554)
‘R CMD check’ notes uses of ‘library()’ and ‘require()’ in package code: see the section ‘Suggested packages’ of ‘Writing R Extensions’ for good practice.
Port Tomas Kalibera's fix from R-devel that restores the ‘loadMethod()’ fast path, effectively doubling the speed of S4 dispatch.
‘R_ext/Lapack.h’ had not been updated for changes made by LAPACK to the argument lists of its (largely internal) functions ‘dlaed2’ and ‘dlaed3’. (PR#16157)
Rare over-runs detected by AddressSanitizer in ‘substr()’ and its replacement version have been avoided.
_Inter alia_ that fix gives the documented behaviour for ‘substr(x, 1, 2) <- ""’ (subsequently reported as PR#16214).
‘mode(x) <- y’ would incorrectly evaluate ‘x’ before changing its mode. (PR#16215)
The ‘xtfrm()’ method for class ‘"Surv"’ has been corrected and its description expanded.
(Windows.) ‘download.file(cacheOK = FALSE)’ is now supported when ‘internet2.dll’ is used.
Single source or binary files can be supplied for ‘install.packages(type = "both")’ and the appropriate type and ‘repos = NULL’ will be inferred.
‘RShowDoc("NEWS", "txt")’ had not been updated for the layout changes of R 3.1.0.
‘R_ext/Lapack.h’ had not been updated for changes to the argument lists of the (largely internal) functions ‘dlaed2’ and ‘dlaed3’. (PR#16157)
‘tools:::.Rdconv()’ didn't accept ‘--encoding=’ due to a typo. (PR#16121)
‘split.Date()’ retains fractional representations while avoiding incomplete class propagation.
New function ‘pcre_config()’ to report on some of the configuration options of the version of PCRE in use. In particular, this reports if regular expressions using ‘\p{xx}’ are supported.
‘split.Date’ retains fractional representations while avoiding incomplete class propagation.
‘install.packages()’ and friends now accept the value ‘type = "binary"’ as a synonym for the native binary type on the platform (if it has one).
Single source or binary files can be supplied for ‘install.packages(type = "both")’ and the approporiate type and ‘repos = NULL’ will be inferred.
‘save(*, ascii=TRUE)’ and ‘load()’ now correctly deal with ‘NaN’'s. (PR#16137)
‘R CMD check’ checks for the undeclared use of GNU extensions in Makefiles, and for Makefiles with a missing final linefeed.
‘R CMD build’ will correct line endings in all Makefiles, not just those in the ‘src’ directory.
‘configure’ accepts ‘MAKEINFO=texi2any’ as another way to ensure ‘texinfo’ 5.x is used when both 5.x and 4.x are installed.
‘R CMD check’ checks for the undeclared use of GNU extensions in makefiles, and for makefiles with a missing final linefeed.
‘R CMD build’ will correct line endings in all Makefiles, not just those in the ‘src’ directory.
Unix-alike builds without a suitable ‘makeinfo’ were documented to link the missing HTML manuals to CRAN, but did not.
‘R CMD check’ checks for the undeclared use of GNU extensions in makefiles, and for makefiles with a missing final linefeed.
‘tools:::.Rdconv()’ didn't accept ‘--encoding=’ due to miscalculated string length. (PR#16121)
Omegahat is no longer listed as providing Windows binary packages, e.g. by ‘setRepositories()’. It has no binary packages available for R 3.1.x and those for earlier versions were 32-bit only.
‘utils::URLencode()’ was updated to use unreserved and reserved characters from RFC 3986 (<URL: http://tools.ietf.org/html/rfc3986>) instead of RFC 1738.
(Windows only) If both 32- and 64-bit versions of R are installed, the ‘bin/R.exe’ and ‘bin/Rscript.exe’ executables now run 64-bit R. (To run 32-bit R, overwrite these files with copies of ‘bin/i386/Rfe.exe’.)
‘R CMD check’ checks for the undeclared use of GNU extensions in Makefiles under ‘src’, and for such files with a missing final linefeed.
‘tools:::.Rdconv()’ didn't accept ‘--encoding=’ due to miscalculated string length (PR#16121).
‘model.frame()’ (used by ‘lm()’ and many other modelling functions) now warns when it drops contrasts from factors. (Wish of PR#16119)
Port Tomas Kalibera's fix from R-devel that restores the loadMethod fast path, effectively doubling the speed of S4 dispatch.
If a package was updated and attached when its namespace was already loaded, it could end up with parts from one version and parts from the other. (PR#16120)
If a package was updated and attached while already loaded, it could end up with parts from one version and parts from the other. (PR#16120)
‘sessionInfo()’ tries to report the OS version in use (not just that compiled under, and including details of Linux distributions).
‘power.t.test()’ and ‘power.prop.test()’ now make use of the ‘extendInt’ option of ‘uniroot()’ and hence work in more extreme cases. (PR#15792)
Declared vignette encodings are now always passed to the vignette engine.
Port Thomas Kalibera's fix from R-devel that restores the loadMethod fast path, effectively doubling the speed of S4 dispatch.
The ‘as.dendrogram()’ method for ‘"hclust"’ objects gains a ‘check’ argument protecting against memory explosion for invalid inputs.
‘Math2’ S4 group generics failed to correctly dispatch ‘"structure"’- and ‘"nonStructure"’-derived classes.
‘R CMD check’ now checks the packages used in ‘\donttest’ sections of the examples are specified in the ‘DESCRIPTION’ file. (These are needed to run the examples interactively.)
The ‘configure’ option ‘--with-valgrind-instrumentation=3’ is deprecated and will be removed in R 3.2.0.
Loading packages incorrectly defining an S4 generic followed by a function of the same name caused an erroneous cyclic namespace dependency error.
‘icuSetCollate()’ now accepts ‘locale = "ASCII"’ which uses the basic C function ‘strcmp’ and so collates strings byte-by-byte in numerical order.
Rare over-runs detected by AddressSanitizer in ‘substr()’ and its replacement version have been avoided.
‘loadNamespace()’ imposed undocumented restrictions on the ‘versionCheck’ parameter. (Reported by Geoff Lee.)
‘Math2’ group generics failed to correctly dispatch ‘"structure"’ and ‘"nonStructure"’-derived classes.
‘capabilities()’ has a new item ‘long.double’ which indicates if the build uses a ‘long double’ type which is longer than ‘double’.
‘nlm()’ no longer modifies the callback argument in place (a new vector is allocated for each invocation, which mimics the implicit duplication that occurred in R < 3.1.0); note that this is a change from the previously documented behavior. (PR#15958)
‘nlm()’ no longer modifies the callback argument in place (a new vector
is allocated for each invocation, which mimics the implicit duplication
that occurred in R < 3.1.0). (PR#15958)
(Windows.) The ‘choose.files()’ command returned a blank string when the user asked for a single file but cancelled the request. (PR#16074)
The ‘"factors"’ component of the result of ‘terms()’ was not computed
properly when no intercept was in the model. (PR#16070)
(Windows.) The command completion in ‘Rgui.exe’ messed up the console. (PR#15791)
The ‘"factors"’ component of the result of ‘terms()’ was not computed properly when no intercept was in the model. (PR#16070)
‘prompt()’ did not escape percent signs in the automatically generated usage section of help files.
‘drop.terms()’ dropped some of the attributes of the object it was working with. (PR#16029)
The included version of PCRE has been updated to 8.36.
‘download.file()’ reported downloaded sizes as 0KB if less than 1MB, only for R 3.1.2 and only on big-endian platforms.
‘nlm()’ no longer modifies the callback argument in place (a new vector is allocated for each invocation, which mimics the implicit duplication that occurred in R < 3.1.0). (PR#15958)
Some values with extremely long names were printed incorrectly. (PR#15999)
Extremely large exponents on zero expressed in scientific notation (e.g. ‘0.0e50000’) could give ‘NaN’. (PR#15976)
‘"noquote"’ objects may now be used as columns in dataframes. (PR#15997)
The parser now gives an error if a null character is included in a string using Unicode escapes. (PR#16046)
‘abs()’ failed with named arguments when the argument was complex. (PR#16047)
‘qr.Q()’ failed on complex arguments due to pre-3.0(!) typo. (PR#16054)
‘qr.Q()’ failed on complex arguments due to pre-3.0(!) typo (PR#16054)
The internal method of ‘download.file()’ can now handle files larger than 2GB on 32-bit builds which support such files (tested on 32-bit R running on 64-bit Windows).
‘kruskal.test()’ warns on more types of suspicious input.
The ‘as.dendrogram’ method for ‘"hclust"’ objects gets a ‘check’ argument protecting against memory explosion for invalid inputs.
(Windows.) ‘Rscript.exe’ was missing a manifest specifying the modern style for common controls (e.g., the download progress bar).
If a package had extra documentation files but no vignette, the HTML help system produced an empty index page.
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)
Adjust X11 auto-launch detection in DISPLAY on OS X to recognize latest XQuartz.
‘hist(x, breaks)’ is more robust in adding a small fuzz to few breaks when some are very large. (PR#15988)
(OS X only.) Package ‘tcltk’ checks when loaded if it is linked against the CRAN X11-based Tcl/Tk and if so that the Tcl/Tk component and the X11 libraries are installed. This allows more informative error messages to be given advising the installation of the missing component or of XQuartz.
The ‘X11()’ device and X11-based versions of the data editor and viewer (invoked by ‘edit()’ and ‘View()’ for data frames and matrices from command-line R) check that the X11 libraries are installed and if not advises installing XQuartz.
‘R CMD check’ now by default checks code usage directly on the package namespace without loading and attaching the package and its suggests and enhances. For good practice with packages in the ‘Suggests’ field, see §1.1.3.1 of ‘Writing R Extensions’. For use of lazy-data objects in the package's own code, see ‘?data’.
A longstanding bug exhibited by ‘nlminb()’ on Windows was traced to a compiler bug in gcc 4.6.3; a workaround has been put in place. (PR#15244 and PR#15914).
Rendering of ‘\command’ in HTML versions of help pages has been improved: this is particularly evident on the help page for ‘INSTALL’.
Forking in package ‘parallel’ called C entry point ‘exit’ in the child. This was unsafe (‘_exit’ should have been called), and could flush ‘stdin’ of the main R process (seen most often on Solaris).
As good practice, ‘stdout’ is now flushed before forking a child.
‘getAnywhere("C_pbinom")’ now returns correctly a single object (rather than unlisting it).
The ‘plot’ method for ‘"hclust"’ objects gets an optional argument ‘check’; When that is true (the default) it checks more carefully for valid input.
‘RShowDoc("NEWS")’ now displays the PDF version.
Matrices and arrays with last dimension zero did not print at all or incompletely. (PR#16012)
The internal method of ‘download.file()’ was not reporting file sizes and progress correctly on files larger than 2GB (inherited from ‘libxml2’). This is corrected for 64-bit builds (32-bit platforms may not support such files, but where possible will be supported in future versions of R).
‘embedFonts()’ now defaults to ‘format = "ps2write"’ for ‘.ps’ and ‘.eps’ files. This is available in Ghostscript 9.x (since 2010) whereas the previous default, ‘format = "pswrite"’, was removed in Ghostscript 9.10.
For consistency with ‘[dpqr]norm()’, ‘[dp]lnorm(sdlog = 0)’ model a point mass at ‘exp(mulog)’ rather than return ‘NaN’ (for an error).
‘capabilities()’ now reports if ICU is compiled in for use for collation (it is only actually used if a suitable locale is set for collation, and never for a ‘C’ locale).
(OS X only.) Package ‘tcltk’ checks when loaded if it is linked against the CRAN X11-based Tcl/Tk and if so that the Tcl/Tk component and the X11 libraries are installed. This allows more informative error messages to be given.
The ‘X11()’ device and X11-based versions of the data editor and viewer (invoked by ‘edit()’ and ‘View()’ for data frames and matrices from command-line R) check that the X11 libraries are installed.
‘icuSetCollate()’ allows ‘locale = "default"’, and ‘locale = "none"’ to use OS services rather than ICU for collation.
Environment variable ‘R_ICU_LOCALE’ can be used to set the default ICU locale, in case the one derived from the OS locale is inappropriate (this is currently necessary on Windows).
New function ‘icuGetCollate()’ to report on the ICU collation locale in use (if any).
‘utils::URLencode()’ was updated to use unreserved and reserved characters from RFC 3986, <URL: http://tools.ietf.org/html/rfc3986>, instead of RFC 1738.
‘unique(warnings())’ and ‘c(warnings())’ are now supported.
The Bioconductor ‘version’ used by ‘setRepositories()’ now defaults to ‘3.0’. (It can be set at runtime _via_ environment variable ‘R_BIOC_VERSION’.)
The ‘configure’ script reports on the more important capabilities/options which will not be compiled in.
More types of external BLAS are recognized by name in that report.
When building R as a shared library, the ‘-L${R_HOME}/lib${R_ARCH}’ flag is placed earlier in the link commands used during installation and when packages are installed: this helps ensure that the current build has priority if an R shared library has already been installed by e.g. ‘install-libR’ in a library mentioned in ‘LDFLAGS’ (and not in ‘your system's library directory’ as documented). (Wish of PR#15790.)
LaTeX package ‘upquote’ is no longer required for R's use of ‘inconsolata’.
(Windows only) If both 32 and 64 bit versions of R are installed, the ‘bin/R.exe’ and ‘bin/Rscript.exe’ executables now run 64 bit R. (To run 32 bit R, overwrite these files with copies of ‘bin/i386/Rfe.exe’.)
Running ‘R CMD check’ with ‘_R_CHECK_DEPENDS_ONLY_’ true now makes the ‘VignetteBuilder’ packages available even if they are listed in ‘Suggests’, since they are needed to recognise and process non-Sweave vignettes.
‘R CMD check’ now reports empty ‘importFrom’ declarations in a ‘NAMESPACE’ file, as these are common errors (writing ‘importFrom(Pkg)’ where ‘import(Pkg)’ was intended).
‘R CMD check’ now by default checks code usage directly on the package namespace without loading and attaching the package and its suggests and enhances. For good practice with packages in the ‘Suggests’ field, see §1.1.3.1 of ‘Writing R Extensions’.
‘dmultinom()’ did not handle non-finite probabilities correctly.
‘prettyNum(x, zero.print=*)’ now also works when ‘x’ contains ‘NA’s.
A longstanding bug in ‘nlminb()’ on Windows was traced to a compiler bug in gcc 4.6.3; a workaround has been put in place. (PR#15244 and PR#15914).
Rendering of ‘\command’ in HTML has been improved: this is particularly evident on the help page for ‘INSTALL’.
‘as.hexmode(x)’ and ‘as.octmode(x)’ now behave correctly for some numeric ‘x’, e.g., ‘c(NA, 1)’ or ‘c(1, pi)’.
‘drop1()’ failed if the ‘scope’ argument had no variables to drop. (PR#15935)
‘edit()’ (and hence ‘fix()’) failed if an object had a non-character attribute named ‘"source"’ (an attribute that had been used in R prior to version 2.14.0).
‘callGeneric()’ could fail if the generic had ‘...’ as a formal argument. (PR#15937).
Forking in package ‘parallel’ called C entry point ‘exit’ in the child. This was unsafe (‘_exit’ should have been called), and could flush ‘stdin’ of the main R process (seen most often on Solaris).
For good practice, ‘stdout’ is flushed before forking a child.
R objects such as ‘list(`a\b` = 1)’ now print correctly.
‘getAnywhere("C_pbinom")’ now works correctly.
The ‘confint()’ method for ‘nls()’ fits failed it these has specified parameter limits despite using an algorithm other than ‘"port"’. (PR#15960)
Subclassing an S4 class failed if the class required arguments to the generator, through its ‘initialize()’ method.
‘removeSource()’ did not properly handle expressions containing arguments that were supplied as missing, e.g. ‘x[i,]’. (PR#15957)
‘as.environment(list())’ now works, and ‘as.list()’ of such an environment is now the same as ‘list()’.
Several ‘tcltk’ functions failed when run in unusual environments. (PR#15970)
‘options(list())’ now works (trivially). (PR#15979)
‘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.
The ‘plot’ method for ‘"hclust"’ objects gets an optional argument ‘check’; When that is true, as per default, it checks more carefully for valid input.
(Windows only) If a user chose to install 64 bit R but not 32 bit R, the ‘bin/R’ and ‘bin/Rscript’ executables failed to run. (PR#15981)
Various possible buffer overruns have been prevented, and missed memory protection added. (PR#15990)
‘Rscript’ no longer passes ‘--args’ to ‘R’ when there are no extra (“user”) arguments.
objects like ‘getClass("refClass")@prototype’ now ‘print()’ and ‘str()’ without error.
‘identical()’ now also looks at the S4 bit.
‘hist(x, breaks)’ is more robust in adding a small fuzz to few breaks when some are very large. (PR#15899)
‘sub()’ and ‘gsub()’ did not handle regular expressions like ‘"\s{2,}"’ properly if the text contained ‘NA’ or non-ascii elements in a UTF-8 locale. Part of this was due to a bug in the TRE library. (PR#16009)
‘RShowDoc("NEWS")’ now displays the pdf version.
matrices and arrays with last dimension zero did not print at all or incompletely. (PR#16012)
‘plot.histogram()’ and hence ‘hist()’ now respect the ‘xaxs’, ‘yaxs’ and ‘lab’ graphics parameters. (PR#16021)
‘bw.SJ(x)’ and other bw.*() no longer segfault when ‘x’ contains non-finite values. (PR#16024)
‘R CMD Rd2pdf’ unintentionally ignored its ‘--os’ option.
The internal method of ‘download.file()’ was not reporting file sizes and progress correctly on files larger than 2GB (inherited from ‘libxml2’). This is corrected for 64-bit builds (32-bit platforms may not support such files).
‘R CMD Rd2pdf’ unintentionally ignored its ‘--os’ option.
The Bioconductor ‘version’ used by ‘setRepositories()’ now defaults to ‘3.0’. (It can be set at runtime _via_ environment variable ‘R_BIOC_VERSION’.)
‘embedFonts()’ now defaults to ‘format = "ps2write"’ for ‘.ps’ and ‘.eps’ files. This is available in Ghostscript 9.x (since 2010) whereas the previous default, ‘format = "pswrite"’, was removed in Ghostscript 9.10.
‘unique(warnings())’ and ‘c(warnings())’ are now supported.
The ‘configure’ script reports on the more important capabilities/options which will not be compiled in.
When building R as a shared library, the ‘-L${R_HOME}/lib${R_ARCH}’ flag is placed earlier in the link commands used during installation and when packages are installed: this helps ensure that the current build has priority if an R shared library has already been installed by e.g. ‘install-libR’ in a library mentioned in ‘LDFLAGS’ (and not in ‘your system's library directory’ as documented). (Wish of PR#15790.)
‘bw.SJ(x)’ and other bw.*() no longer segfault when ‘x’ contains non-finite values. (PR#16024)
‘R CMD check’ now reports empty ‘importFrom’ declarations in a ‘NAMESPACE’ file, as these are common errors (writing ‘importFrom(Pkg)’ where ‘import(Pkg)’ was intended).
‘R CMD check’ now by default checks code usage directly on the package namespace without loading and attaching the package and its suggests and enhances. For good practice with packages in the ‘Suggests’ field, see §1.1.3.1 of ‘Writing R Extensions’.
matrices and arrays with last dimension zero did not print at all or incompletely. (PR#16012)
‘plot.histogram()’ and hence ‘hist()’ now respect the ‘xaxs’, ‘yaxs’ and ‘lab’ graphics parameters. (PR#16021)
‘hist(x, breaks)’ is more robust in adding a small fuzz to few breaks when some are very large. (PR#15899)
‘RShowDoc("NEWS")’ now displays the pdf version.
The ‘confint()’ method for ‘nls()’ fits failed it these has specified parameter limits despite using an algorithm other than ‘"port"’. (PR#15960)
‘sub()’ and ‘gsub()’ did not handle regular expressions like ‘"\s{2,}"’ properly if the text contained ‘NA’ or non-ascii elements in a UTF-8 locale. Part of this was due to a bug in the TRE library. (PR#16009)
‘sub()’ and ‘gsub()’ did not handle regular expressions like ‘"\s{2,}"’ properly if the text contained ‘NA’ elements. (This is a partial fix: our regexp library still doesn't handle that regexp if the text contains UTF-8 characters.) (PR#16009)
‘unique(warnings())’ now works, as does ‘c(warnings())’.
‘unique(warnings())’ now works, as does ‘c()’.
objects like ‘getClass("refClass")@prototype’ now ‘print()’ and ‘str()’ without error.
‘identical()’ now also looks at the S4 bit.
Running ‘R CMD check’ with ‘_R_CHECK_DEPENDS_ONLY_’ true now makes the ‘VignetteBuilder’ packages available even if they are listed in ‘Suggests’, since they are needed to recognise and process non-Sweave vignettes.
Various possible buffer overruns have been prevented, and missed memory protection added. (PR#15990)
‘Rscript’ no longer passes ‘--args’ to ‘R’ when there are no extra (“user”) arguments.
Running ‘R CMD check’ when run with ‘_R_CHECK_DEPENDS_ONLY_’ true now makes the ‘VignetteBuilder’ packages available even if they are listed in ‘Suggests’, since they are needed to recognise and process non-Sweave vignettes.
(Windows only) If both 32 and 64 bit versions of R are installed, the ‘bin/R.exe’ and ‘bin/Rscript.exe’ executables now run 64 bit R. (To run 32 bit R, overwrite these files with copies of ‘bin/i386/Rfe.exe’.)
The ‘plot’ method for ‘"hclust"’ objects gets an optional argument ‘check’; When that is true, as per default, it checks more carefully for valid input.
(Windows only) If a user chose to install 64 bit R but not 32 bit R, the ‘bin/R’ and ‘bin/Rscript’ executables failed to run. (PR#15981)
‘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.
‘merge(<dendrogram>, ..)’ now works correctly. (PR#15648)
‘options(list())’ now works (trivially). (PR#15979)
‘as.environment(list())’ now works, and ‘as.list()’ of such an environment is now the same as ‘list()’.
The ‘summary()’ method for ‘"lm"’ fits warns if the fit is essentially perfect, as most of the summary may be computed inaccurately (and with platform-dependent values).
Programmers who use ‘summary()’ in order to extract just a component which will be reliable (e.g., ‘$cov.unscaled’) should wrap their calls in ‘suppressWarnings()’.
‘configure’ now tests for a C++11-compliant compiler by testing some basic features. This by default tries flags for the compiler specified by ‘CXX’, but an alternative compiler, options and standard can be specified by variables ‘CXX1X’, ‘CXX1XFLAGS’ and ‘CXX1XSTD’ (e.g., ‘-std=gnu++11’).
Error messages involving non-syntactic names (e.g., as produced by ‘`\r`’ when that object does not exist) now encode the control characters. (Reported by Hadley Wickham.)
‘strptime()’ now checks the locale only when locale-specific formats are used and caches the locale in use: this can halve the time taken on OSes with slow system functions (e.g., OS X).
Double-clicking outside of the list box (e.g., on the scrollbar) of a Tk listbox widget generated by ‘tk_select.list()’ no longer causes the window to close. (PR#15407)
(Windows only) When a call to ‘system2()’ specified one of ‘stdin’, ‘stdout’ or ‘stderr’ to be a file, but the command was not found (e.g., it contained its arguments, or the program was not on the ‘PATH’), it left the file open and unusable until R terminated. (Reported by Mathew McLean.)
Various functions in ‘stats’ and elsewhere that use non-standard evaluation are now more careful to follow the namespace scoping rules. E.g., ‘stats::lm()’ can now find ‘stats::model.frame()’ even if ‘stats’ is not on the search path or if some package defines a function of that name.
‘seq()’ and ‘seq.int()’ give more explicit error messages if called with invalid (e.g., ‘NaN’) inputs.
‘checkFF()’ (used by ‘R CMD check’) does a better job of detecting calls from other packages, including not reporting those where a function has been copied from another namespace (e.g., as a default method). It now reports calls where ‘.NAME’ is a symbol registered in another package.
The parser now enforces C99 syntax for floating point hexadecimal constants (e.g., ‘0x1.1p0’), rather than returning unintended values for malformed constants. (PR#15234)
In R 3.0.0, ‘identify()’ and ‘locator()’ did not record information correctly, so replaying a graph (e.g., by copying it to another device) would fail. (PR#15271)
It is now possible for 64-bit builds to allocate amounts of memory limited only by the OS. It may be wise to use OS facilities (e.g., ‘ulimit’ in a ‘bash’ shell, ‘limit’ in ‘csh’), to set limits on overall memory consumption of an R process, particularly in a multi-user environment. A number of packages need a limit of at least 4GB of virtual memory to load.
64-bit Windows builds of R are by default limited in memory usage to the amount of RAM installed: this limit can be changed by command-line option ‘--max-mem-size’ or setting environment variable ‘R_MAX_MEM_SIZE’.
‘Sys.which()’ when used with inputs which would be unsafe in a shell (e.g., absolute paths containing spaces) now uses appropriate quoting.
More matrix algebra functions (e.g., ‘chol()’ and ‘solve()’) accept logical matrices (and coerce to numeric).
Most operations which can sensibly be done with long vectors work: others may return the error ‘long vectors not supported yet’. Most of these are because they explicitly work with integer indices (e.g., ‘anyDuplicated()’ and ‘match()’) or because other limits (e.g., of character strings or matrix dimensions) would be exceeded or the operations would be extremely slow.
Most of the linear algebra functions make fewer copies when the input(s) are not double (e.g., integer or logical).
Several non-API entry points have been transferred to packages (e.g., ‘R_zeroin2’) or replaced by different non-API entry points (e.g., ‘R_tabulate’).
‘as.environment(list())’ now works.
Several ‘tcltk’ functions failed when run in unusual environments. (PR#15970)
‘removeSource()’ did not properly handle expressions containing arguments that were supplied as missing, e.g. ‘x[i,]’. (PR#15957)
Subclassing an S4 class failed if the class required arguments to the generator, through its ‘initialize()’ method.
The ‘confint()’ function failed on results of ‘nls()’ fits that specified parameter limits despite using an algorithm other than ‘"port"’. (PR#15960)
‘getAnywhere("C_pbinom")’ now works correctly.
R objects such as ‘list(`a\b` = 1)’ now print correctly.
‘utils::URLencode()’ was updated to use unreserved and reserved characters from RFC 3986, <URL: http://tools.ietf.org/html/rfc3986>, instead of RFC 1738.
Forking in package ‘parallel’ called C entry point ‘exit’ in the child. This was unsafe (‘_exit’ should have been called), and could flush ‘stdin’ of the main R process (seen most often on Solaris).
For good practice, ‘stdout’ is flushed before forking a child.
‘edit()’ (and hence ‘fix()’) failed if an object had a non-character attribute named ‘"source"’ (an attribute that had been used in R prior to version 2.14.0).
‘callGeneric()’ could fail if the generic had ‘...’ as a formal argument. (PR#15937).
‘edit()’ (and hence ‘fix()’) failed if an object had a non-character attribute named ‘"source"’ (an attribute that had been used in R prior to version 2.15.0).
‘drop1()’ failed if the ‘scope’ argument had no variables to drop. (PR#15935)
‘edit()’ (and hence ‘fix()’ failed if an object had a non-character attribute named ‘"source"’ (an attribute that had been used in R prior to version 2.15.0).
‘as.hexmode(x)’ and ‘as.octmode(x)’ now behave correctly for some numeric ‘x’, e.g., ‘c(NA, 1)’ or ‘c(1, pi)’.
Rendering of ‘\command’ in HTML has been improved: this is particularly evident on the help page for ‘INSTALL’.
A longstanding bug in ‘nlminb()’ on Windows was traced to a compiler bug in gcc 4.6.3; a workaround has been put in place. (PR#15244 and PR#15914).
New function ‘icuGetCollate()’ to report on the ICU collation locale in use (if any).
‘capabilities()’ now reports if ICU is compiled in for use for collation (it is only actually used if a suitable locale is set for collation, and never for a ‘C’ locale).
(OS X only.) Package ‘tcltk’ checks when loaded if it is linked against the CRAN X11-based Tcl/Tk and if so that the Tcl/Tk component and the X11 libraries are installed. This allows more informative error messages to be given.
The ‘X11()’ device and X11-based versions of the data editor and viewer (invoked by ‘edit()’ and ‘View()’ for data frames and matrices from command-line R) check that the X11 libraries are installed.
(OS X only.) Package ‘tcltk’ checks when loaded if it is linked against the CRAN X11-based Tcl/Tk and if so that the Tcl/Tk component and the X11 libraries are installed. This allows more informative error messages to be given.
The ‘X11()’ device and X11-based versions of the data editor and viewer (invoked by ‘edit()’ and ‘View()’ for data frames and matrices) check that the X11 libraries are installed.
‘icuSetCollate()’ allows ‘locale = "default"’, and ‘locale = "none"’ to use OS services rather than ICU for collation.
Environment variable ‘R_ICU_LOCALE’ can be used to set the default ICU locale, in case the one derived from the OS locale is inappropriate (this is currently necessary on Windows).
The ‘configure’ script reports on the more important capabilities/options which are not compiled in.
‘icuSetCollate()’ allows ‘locale = "default"’ to use the OS locale collation category, and ‘locale = "none"’ to use OS services rather than ICU for collation.
Environment variable ‘R_ICU_LOCALE’ can be used to set the initial ICU locale, in case the one derived from the OS locale is inappropriate (this is currently necessary on Windows).
‘icuSetCollate()’ allows ‘locale = "default"’ to use the OS locale collation category, and ‘locale = "none"’ to use OS services rather than ICU for collation.
‘capabilities()’ now reports if ICU is used for collation.
(OS X only.) Package ‘tcltk’ checks if it is linked against the CRAN X11-based Tcl/Tk and if so that the Tcl/Tk component and the X11 libraries are installed. This allows more informative error messages to be given.
‘icuSetCollate()’ allows ‘locale = "default"’ to use the OS locale collation category.
‘configure’ reports on the more important capabilities/options which are not compiled in.
‘embedFonts()’ now defaults to ‘format = "ps2write"’ for ‘.ps’ and ‘.eps’ files. This is available in Ghostscript 9.x (since 2010) whereas the previous default, ‘format = "pswrite"’, was removed in 9.10.
For consistency with ‘[dpqr]norm()’, ‘[dp]lnorm(sdlog = 0)’ model a point mass at ‘exp(mulog)’ rather than return ‘NaN’ (for an error).
When building R as a shared library, the ‘-L${R_HOME}/lib${R_ARCH}’ flag is placed earlier in the link commands used during installation and when packages are installed: this helps ensure that the current build has priority if an R shared library has already been installed by e.g. ‘install-libR’ in a library mentioned in ‘LDFLAGS’ (and not in ‘your system's library directory’ as documented). (Wish of PR#15790.)
LaTeX package ‘upquote’ is no longer required for R's use of ‘inconsolata’.
For consistency with ‘[dpqr]norm()’, and ‘[qr]lnorm()’,
‘[dp]lnorm(sdlog = 0)’ also model a point mass at ‘exp(mulog)’.
Compilers/linkers were handling the visibility control in ‘src/extra/xz’ inconsistently (and apparently in some cases incorrectly), so it has been simplified. (PR#15327)
For consistency with ‘[dpqr]norm()’, and ‘[qr]lnorm()’, ‘[dp]lnorm(sdlog = 0)’ also model a point mass at ‘exp(mulog)’.
‘prettyNum(x, zero.print=*)’ now also works when ‘x’ contains ‘NA’s.
‘dmultinom()’ did not handle non-finite probabilities correctly.
When ‘attach()’ reports conflicts, it does so compatibly with ‘library()’ by using ‘message()’.
‘R CMD Sweave’ no longer cleans any files by default, compatibly with versions of R prior to 3.1.0. There are new options ‘--clean’, ‘--clean=default’ and ‘--clean=keepOuts’.
‘tools::buildVignette()’ and ‘tools::buildVignettes()’ with ‘clean = FALSE’ no longer remove any created files. ‘buildvignette()’ gains a ‘keep’ argument for more cleaning customization.
The Bioconductor ‘version’ used by ‘setRepositories()’ can now be set by environment variable ‘R_BIOC_VERSION’ at runtime, not just when R is installed. (It has been stated that Bioconductor will switch from ‘version’ 2.14 to ‘version’ 3.0 during the lifetime of the R 3.1 series.)
Error messages from bugs in embedded ‘Sexpr’ code in Sweave documents now report the source location.
‘type.convert()’, ‘read.table()’ and similar ‘read.*()’ functions get a new ‘numerals’ argument, specifying how numeric input is converted when its conversion to double precision loses accuracy. The default value, ‘"allow.loss"’ allows accuracy loss, as in R versions before 3.1.0.
For some compilers, integer addition could overflow without a warning. R's internal code for both integer addition and subtraction is more robust now. (PR#15774)
The function determining the default number of knots for ‘smooth.spline()’ is now exported, as ‘.nknots.smspl()’.
‘dbeta(, a,b)’, ‘pbeta()’, ‘qbeta()’ and ‘rbeta()’ are now defined also for a = 0, b = 0, or infinite a and b (where they typically returned ‘NaN’ before).
Many package authors report that the RStudio graphics device does not work correctly with their package's use of ‘dev.new()’. The new option ‘dev.new(noRStudioGD = TRUE)’ replaces the RStudio override by the default device as selected by R itself, still respecting environment variables ‘R_INTERACTIVE_DEVICE’ and ‘R_DEFAULT_DEVICE’.
‘readRDS()’ now returns visibly.
Modifying internal logical scalar constants now results in an error instead of a warning.
‘install.packages(repos = NULL)’ now accepts ‘http://’ or ‘ftp://’ URLs of package archives as well as file paths, and will download as required. In most cases ‘repos = NULL’ can be deduced from the extension of the URL.
The warning when using partial matching with the ‘$’ operator on data frames is now only given when ‘options("warnPartialMatchDollar")’ is ‘TRUE’.
Package help requests like ‘package?foo’ now try the package ‘foo’ whether loaded or not.
General help requests now default to trying all loaded packages, not just those on the search path.
Added a new function ‘promptImport()’, to generate a help page for a function that was imported from another package (and presumably re-exported, or help would not be needed).
‘configure’ option ‘--with-internal-tzcode’ can now be used with variable ‘rsharedir’.
The included version of PCRE has been updated to 8.35.
There is a new target ‘make uninstall-libR’ to remove an installed shared/static ‘libR’.
‘make install-libR’ now works if a sub-architecture is used, although the user will need to specify ‘libdir’ differently for different sub-architectures.
There is more extensive advice on which LaTeX packages are required to install R or to make package manuals (as done by ‘R CMD check’) in the ‘Writing R Extensions’ manual.
Compilers/linkers were handling the visibility controls in ‘src/extra/xz’ inconsistently (and apparently in some cases incorrectly), so it has been simplified. (PR#15327)
(Windows) There is updated support for the use of ICU for collation: see the ‘R Installation and Administration Manual’.
‘dbinom(x, n)’, ‘pbinom()’, ‘dpois()’, etc, are slightly less restrictive in checking if ‘n’ is integer-valued. (Wish of PR#15734.)
‘pchisq(x, df, ncp, log.p = TRUE)’ is more accurate and no longer underflows for small ‘x’ and ‘ncp < 80’, e.g, for ‘pchisq(1e-5, df = 100, ncp = 1, log = TRUE)’. (Based on PR#15635 and a suggestion by Roby Joehanes.)
The ‘s’ (“step into”) command in the debugger would cause R to step into expressions evaluated there, not just into functions being debugged. (PR#15770)
The C code used by ‘strptime()’ rejected time-zone offsets of more than ‘+1200’ (‘+1245’, ‘+1300’ and ‘+1400’ can occur). (PR#15768)
(Windows only.) ‘png(type = "cairo", antialias = "gray")’ was not accepted. (PR#15760)
Use of ‘save(..., envir=)’ with named objects could fail. (PR#15758)
‘Sweave()’ mis-parsed ‘Sexpr’ expressions that contained backslashes. (PR#15779)
The return value from ‘options(foo = NULL)’ was not the previous value of the option. (PR#15781)
‘enc2utf8()’ and ‘enc2native()’ did not always mark the encoding of the return values when it was known.
‘dnbinom(x, size = <large>, mu, log = TRUE)’ no longer underflows to -Inf for large ‘mu’, thanks to a suggestion from Alessandro Mammana (MPI MolGen, Berlin).
‘pbeta(x, a, b, log = TRUE)’ no longer behaves discontinuously (in a small x-region) because of denormalized numbers. Also, ‘pbeta(1-1e-12, 1e30, 1.001, log=TRUE)’ now terminates “in real time”.
The ‘"CRAN"’ filter (see ‘available.packages()’) no longer removes duplicates other than of packages on CRAN, and does not fail if there is no CRAN repository in ‘getOption("repos")’.
The device listing from ‘dev2bitmap()’ and ‘bitmap()’ was truncated to 1000 characters: modern versions of GhostScript on most platforms have many more devices.
(Windows.) Commands such as ‘Sys.which()’ and ‘pipe()’ which needed to find the full path to a command could segfault if the ‘long’ path name was much longer than the ‘short’ path name (which ‘Sys.which()’ returns), as the behaviour of the Windows API call had changed.
‘R CMD build’ will fail with an error if one of the packages specified in the ‘VignetteBuilder’ field is not installed. (Without loading those packages it cannot be ascertained which files are intended to be vignettes. This means that the ‘VignetteBuilder’ packages have to be installed for package checking too.) (Wish of PR#15775.)
Misguided attempts to use ‘chull()’ with non-finite points now give an error (related to PR#15777).
For a formula with exactly 32 variables the 32nd variable was aliased to the intercept in some C-level computations of terms, so that for example attempting to remove it would remove the intercept instead (and leave a corrupt internal structure). (PR#15735)
‘anyDuplicated()’ silently returned wrong values when the first duplicate was at an index which was too large to be stored in an integer vector (although a lot of RAM and patience would have been needed to encounter this).
‘tools::Rd2ex(commentDontrun = FALSE)’ failed if the block had only one line.
Hexadecimal constants such as ‘0x110p-5L’ which were incorrectly qualified by ‘L’ were parsed incorrectly since R 3.0.0, with a slightly garbled warning. (PR#15753)
‘system()’ returned success on some platforms even if the system was unable to launch a process. (PR#15796)
(Windows ‘Rgui’ console.) Unbuffered output was sometimes not output immediately if the prompt was not on the last line of the console.
The built-in help server did not declare the encoding for the ‘DESCRIPTION’ or other text files to be the package encoding, so non-ASCII characters could be displayed incorrectly.
R is now trying harder to not cleanup child processes that were not spawned by ‘mcparallel()’ on platforms that provide information about the source process of the ‘SIGCHLD’ signal. This allows 3rd party libraries to manage the exit status of children that they spawn without R interfering.
‘mcmapply()’ was only parallelizing if the number of jobs was bigger than the number of cores. It now parallelizes if the number of jobs is more than one.
Auto-printing would re-evaluate its argument when trying to dispatch to a print method. This is now avoided when possible.
Unserializing (including ‘load()’ and ‘readRDS()’) could silently return incorrect numeric values from ASCII saves if there was a read error.
‘getParseData()’ could return incorrect values for the parents of some elements. (Reported by Andrew Redd.)
Attempting to use data frames of 2^31 or more rows with ‘merge()’ or to create a merged data frame of that size now gives a clearer error message.
‘parse()’ did not check its ‘file’ argument was a connection if it was not a character string, so e.g. ‘parse(FALSE)’ attempted to read from ‘stdin’.
Nor did ‘dump()’ and ‘dput()’.
The ‘"help.try.all.packages"’ option was ignored when the shortcut syntax for help was used, e.g. ‘?foo’.
A potential segfault in string allocation has been fixed. (Found by Radford Neal.)
Potential memory protection errors in ‘sort()’ and ‘D()’ have been fixed. (Found by Radford Neal.)
Fixed a lack of error checking in graphics event functions. (Found by Radford Neal; a different patch used here than the one in pqR.)
‘numericDeriv()’ sometimes miscalculated the gradient. (PR#15849, reported originally by Radford Neal)
‘numericDeriv()’ sometimes miscalculated the gradient. (PR#15849, reported originally by Radford Neal)
Added a new function ‘promptImport’, to generate a help page for a function that was imported from another package (and presumably re-exported, or help would not be needed).
(Windows) There is updated support from the use of ICU for collation: see the ‘R Installation and Administration Manual’.
Compilers/linkers were handling the visibility controls in ‘src/extra/xz’ inconsistently (and apparently in some cases incorrectly), so it has been simplified. (PR#15327)
Fixed a lack of error checking in graphics event functions. (Found by Radford Neal; a different patch used here than the one in pqR.)
Potential memory protection errors in ‘sort()’ and ‘D()’ have been fixed. (Found by Radford Neal.)
Package help requests like ‘package?foo’ now try the package ‘foo’ whether loaded or not.
General help requests now default to trying all loaded packages, not just those on the search path.
The ‘"help.try.all.packages"’ option was ignored when the shortcut syntax for help was used, e.g. ‘?foo’.
A potential segfault in string allocation has been fixed. (Found by Radford Neal.)
A potential memory protection error in ‘sort()’ has been fixed. (Found by Radford Neal.)
‘parse()’ did not check its ‘file’ argument was a connection if it was not a character string, so e.g. ‘parse(FALSE)’ attempted to read from ‘stdin’.
Nor did ‘dump()’ and ‘dput()’.
The warning when using partial matching with the ‘$’ operator on data frames is now only given when ‘options("warnPartialMatchDollar")’ is ‘TRUE’.
Compilers were handling the visibility control in ‘src/extra/xz’ inconsistently, so it has been simplified. (PR#15327)
Attempting to use data frames of 2^31 or more rows with ‘merge()’ or to create a merged data frame of that size now gives a clearer error message.
Attempts to use ‘merge()’ to create a result with 2^31 or more rows now give a clearer error message.
‘install.packages(repos = NULL)’ now accepts ‘http://’ or ‘ftp://’ URLs of package archives as well as file paths, and will download as required. In most cases ‘repos = NULL’ can be deduced from the extension of the URL.