This blog is updated daily.
A general description is here.
R_HOME/bin/helpPRINT.bat now contains an example of use with
 MiKTeX to produce a PDF version of the help file.
The windows() device now works around the total clipping of
 semi-transparent rectangles and circles that extend outside
 the device region.
The script editor did not respect user preferences for the
 background colour.
normalizePath() no longer returns a garbage string when the
 input is bad; it now signals an error. (PR#13199)
File share/sh/dcf.sh was not distributed with the binary
 build. (PR#13200)
dir.create() did not print the path correctly in warning messages.
The C-level function consolecmd had been broken in non-Latin-1
 single-byte locales in R 2.8.0 by changes intended to support
 the Japanese IME. This affected some menu items in Rgui
 (e.g. to source R files with non-Latin-1 names) and submitting
 commands from the script editor, but only in rarer encodings
 such as Central European, Greek and Cyrillic. (PR#13195,
 probably also PR#13120)
The attenpt to make the 'Load' button in the GUI preferences
 start in the home directory failed if the latter was specified
 with forwward slashes, and reset the current search directory
 for other file open dialogs (e.g. for opening a script).
The installer would sometimes write the current version
 information to the registry even if that option was not
 checked.
Rcmd INSTALL --with-package-versions now works in a few more
 cases (of lazy loading and lazy data), but still many of the
 options are not supported (e.g. --use-zip). Versioned
 installs are now deprecated, so regard them as unsupported on
 Windows (and a warning is given). (PR#13284)
R_HOME/bin/helpPRINT.bat now contains an example of use with MiKTeX to produce a PDF version of the help file.
The windows() device now works around the total clipping of semi-transparent rectangles and circles that extend outside the device region.
The script editor did not respect user preferences for the background colour.
normalizePath() no longer returns a garbage string when the input is bad; it now signals an error. (PR#13199)
File share/sh/dcf.sh was not distributed with the binary build. (PR#13200)
dir.create() did not print the path correctly in warning messages.
The C-level function consolecmd had been broken in non-Latin-1 single-byte locales in R 2.8.0 by changes intended to support the Japanese IME. This affected some menu items in Rgui (e.g. to source R files with non-Latin-1 names) and submitting commands from the script editor, but only in rarer encodings such as Central European, Greek and Cyrillic. (PR#13195, probably also PR#13120)
The attenpt to make the 'Load' button in the GUI preferences start in the home directory failed if the latter was specified with forwward slashes, and reset the current search directory for other file open dialogs (e.g. for opening a script).
The installer would sometimes write the current version information to the registry even if that option was not checked.
Rcmd INSTALL --with-package-versions now works in a few more cases (of lazy loading and lazy data), but still many of the options are not supported (e.g. --use-zip). Versioned installs are now deprecated, so regard them as unsupported on Windows (and a warning is given). (PR#13284)
sum() now has a method for "difftime" objects (via the Summary
 group).
max(), min() and range() applied to "difftime" object(s) now return a result in the common units of the objects, if there is one.
installed.packages() is now tolerant of malformed DESCRIPTION
 files in installed packages (it ignores them, with a warning).
qt() now works for 0 < df < 1.
For consistency with matrix() and array(), dimnames(x) <-
 list() removes the dimnames (as assigning NULL would do).
 It was previously an error.
nlminb() copies names from 'start' to the parameter vector
 used (for consistency with optim()).
legend() gains a 'title.col' argument: the title colour was
 previously set from the first element of 'text.col' (which
 remains the default).
In an Rd file, use of top-level \itemize{} inside a \value{}
 block is unnecessary and almost always gave a faulty
 conversion. Most cases are now detected and corrected, but
 give a warning as such code will not work correctly in earlier
 versins of R.
Also, use of \code{} inside a code block such as \examples{} will give a erroneous conversion that is now detected and warned against.
Autoflushing of stdout is turned on when Rd processing, so
 warnings/error are likely to appear in the right place in
 redirected output (such as that from R CMD check).
R_PDFLATEXCMD is added to the environment variables set by
 'R CMD' and is used by R CMD Rd2dvi.
R_LATEXCMD, R_PDFLATEXCMD, R_MAKEINDEXCMD and R_DVIPSCMD default to 'latex', 'pdflatex', 'makeindex' and 'dvips' respectively if no suitable executable was found at configure time (since they might well be available at run time, particularly for binary installations of R). This affects R CMD Rd2dvi and help(offline=TRUE).
R CMD Rd2dvi now gives an explicit error message if latex (or pdflatex) fails.
R CMD Rd2dvi gains a --no-index argument: processing some special characters on PDF indices gave errors which used to be ignored.
R CMD INSTALL --with-package-versions is deprecated (and
 support has always been incomplete on Windows).
So is install.packages(installWithVers = TRUE).
add1.glm() no longer warns if applied to a binomial glm with a
 factor response.
aggregate.data.frame() now does something sensible with a
 zero-column 'x' rather than failing with an obscure error
 message. It gives an explicit error message if called with a
 zero-row 'x'.
integrate() now accepts integer results from f(): as documented,
 but only double was accepted.
contrib.url() produced an incorrect URL for the type
 "mac.binary".
pairwise.wilcox.test() did not pass on the 'paired' argument
 (caught by Matthias Kohl)
bmp(), jpeg(), and png() on unix with type="cairo" would segfault
 on closure if the output file could not be opened.
tiff() on unix would not write the output file for the first page
 when multiple pages were plotted.
str(1 + structure(1, class = "test")) no longer recurses indefinitely.
pf(x, .., ncp, lower.tail=FALSE, log=TRUE) is much more accurate
 for large x now.
dev2bitmap() failed in 2.8.0 if 'taa' and 'gaa' were both NA.
Under rare circumstances equality tests for character strings
 could fail to report equality in 2.8.0 in the same way as
 2.7.2. (This needed a current encoding of Latin-1 or UTF-8,
 one string whose encoding was marked as that encoding and one
 that was marked as "unknown". In that circumstance the two
 strings are not actually known to be equal, but earlier
 versions of R assumed that "unknown" meant the current
 encoding, and this is done once again.)
R CMD config could echo messages from GNU make if called from
 within a Makefile (as e.g. package Rcpp does), especially from
 within a parallel make run.
Rounding error could affect window(extend=TRUE) when applied
 to monthly series. (PR#13272)
Offline help on a Unix-alike now works even if options
 "latexcmd" and "dvipscmd" contain spaces
 (e.g. "dvips -Pmy_printer").
Informative error messages are given if running latex or dvips fail.
Using plot.lm() on a "glm" object since 2.7.1 with which=5
 caused the Pearson rather than deviance residuals to be used
 in which=2 or 3 (including in the default case). (Thanks to
 Effie Greathouse and Greg Snow.)
plot.lm() did not report on omitting observations with leverage one if they also had residual exactly zero. This was seen in example(occupationalStatus).
deparse(nlines=) no longer pads short results with blank
 lines. (PR#13299)
legend(xpd=) now restores 'xpd' correctly. (PR#12756)
The "formula" method for lines() now works if 'subset' is
 supplied and no 'data' argument (as that for points() did).
Sweave() now takes the defaults for the options 'pdf.version'
 and 'pdf.encoding' of its RweaveLatex driver from pdf.options().
prettyNum(x, drop0trailing=TRUE) treated "1.1e20" as "1.1e2"
 and hence str() did as well, in 2.8.0 only.
dchisq(x, df, ncp) no longer hangs for large x and ncp > 0,
 and is more accurate in some cases (PR#13309).
installed.packages(lib.loc = D, priority="NA") now also works when
 D contains a single package. (PR#13332)
legend(...., merge=TRUE) now warns and has no effect in the
 case where no line segments are drawn. (PR#13340)
transform.data.frame() works better when two or more columns are
 added.
Deparsing argument lists with non-syntactic names (e.g. that for
 transform()) now uses backticks rather than double quotes to
 produce syntactically valid output.
matrix() failed to check for 0-length 'dimnames': it now
 treats them as NULL (as array did). (PR#13361)
0^NA is now NA, not Inf, consistent with x^NA, x != 1.
anova.mlm() did not work if T had only one row (including
 e.g. the case M = ~1).
axis.POSIXct() mislabelled for some time ranges of a few hours
 (reported by Martin Becker).
mantelhaen.test() with 'exact=FALSE' was not respecting
 'alternative'. It now does one-sided tests similarly to
 prop.test().
anova.mlm() had trouble with some designs where near-zero rows of
 the tranformation matrix were not removed (caught by Nils Skutara).
Rd conversion was handling expressions like
 '\item{foo}{see \eqn{x}}' (with one argument to \eqn
 immediately followed by a right brace) incorrectly, sometimes
 giving a spurious warning about 'missing text'.
R CMD INSTALL used the C locale to install the DESCRIPTION
 file, and so escaped non-ASCII characters in packages with a
 declared encoding of "latin1" or "UTF-8". (However, the
 installed DESCRIPTION file was rarely used since the dumped
 metadata are available.)
xspline() now respects inline par settings.
It and grid.xspline() now handle the special case of only two control points, and splines with control points that are located well outside the device (e.g., a zoomed view of a larger curve). (Both cases were giving the error "reached MAXNUMPTS").
In setClass("C", contains="list"); x <- new("C", 1:3), x[2:3] now
 remains of class "C". So does rep(x, 2) or rep.int(x, 3).
median.default() now also works for "numeric"-like vectors.
The pdf() device can now handle the case where an image uses a
 very large number of colours with different levels of
 semi-transparency (alpha-values). It used to segfault.
 (Also PR#13264)
window() failed to apply a fuzz to 'start' or 'end' and so
 sometimes warned incorrectly for time series with 'freq' not a
 power of two (e.g. 12 or 24).
unique.default() now preserves the "tzone" attribute on
 "POSIXct" objects.
If all the packages had dependency lists of equal lengths,
 occasionally install.packages() would compute an incorrect
 sort order.
col(x, as.factor=TRUE) and row(x, as.factor=TRUE) would fail
 if x had no column (row) names. It was documented
 incorrectly, and now returns a matrix factor.
setRepositories() failed if "pkgType" was set to
 "mac.binary.leopard".
sum() now has a method for "difftime" objects (via the Summary group).
max(), min() and range() applied to "difftime" object(s) now return a result in the common units of the objects, if there is one.
installed.packages() is now tolerant of malformed DESCRIPTION files in installed packages (it ignores them, with a warning).
qt() now works for 0 < df < 1.
For consistency with matrix() and array(), dimnames(x) <- list() removes the dimnames (as assigning NULL would do). It was previously an error.
nlminb() copies names from 'start' to the parameter vector used (for consistency with optim()).
legend() gains a 'title.col' argument: the title colour was previously set from the first element of 'text.col' (which remains the default).
In an Rd file, use of top-level \itemize{} inside a \value{} block is unnecessary and almost always gave a faulty conversion. Most cases are now detected and corrected, but give a warning as such code will not work correctly in earlier versins of R.
Also, use of \code{} inside a code block such as \examples{} will give a erroneous conversion that is now detected and warned against.
Autoflushing of stdout is turned on when Rd processing, so warnings/error are likely to appear in the right place in redirected output (such as that from R CMD check).
R_PDFLATEXCMD is added to the environment variables set by 'R CMD' and is used by R CMD Rd2dvi.
R_LATEXCMD, R_PDFLATEXCMD, R_MAKEINDEXCMD and R_DVIPSCMD default to 'latex', 'pdflatex', 'makeindex' and 'dvips' respectively if no suitable executable was found at configure time (since they might well be available at run time, particularly for binary installations of R). This affects R CMD Rd2dvi and help(offline=TRUE).
R CMD Rd2dvi now gives an explicit error message if latex (or pdflatex) fails.
R CMD Rd2dvi gains a --no-index argument: processing some special characters on PDF indices gave errors which used to be ignored.
R CMD INSTALL --with-package-versions is deprecated (and support has always been incomplete on Windows).
So is install.packages(installWithVers = TRUE).
add1.glm() no longer warns if applied to a binomial glm with a factor response.
aggregate.data.frame() now does something sensible with a zero-column 'x' rather than failing with an obscure error message. It gives an explicit error message if called with a zero-row 'x'.
integrate() now accepts integer results from f(): as documented, but only double was accepted.
contrib.url() produced an incorrect URL for the type "mac.binary".
pairwise.wilcox.test() did not pass on the 'paired' argument (caught by Matthias Kohl)
bmp(), jpeg(), and png() on unix with type="cairo" would segfault on closure if the output file could not be opened.
tiff() on unix would not write the output file for the first page when multiple pages were plotted.
str(1 + structure(1, class = "test")) no longer recurses indefinitely.
pf(x, .., ncp, lower.tail=FALSE, log=TRUE) is much more accurate for large x now.
dev2bitmap() failed in 2.8.0 if 'taa' and 'gaa' were both NA.
Under rare circumstances equality tests for character strings could fail to report equality in 2.8.0 in the same way as 2.7.2. (This needed a current encoding of Latin-1 or UTF-8, one string whose encoding was marked as that encoding and one that was marked as "unknown". In that circumstance the two strings are not actually known to be equal, but earlier versions of R assumed that "unknown" meant the current encoding, and this is done once again.)
R CMD config could echo messages from GNU make if called from within a Makefile (as e.g. package Rcpp did), especially from within a parallel make run.
Rounding error could affect window(extend=TRUE) when applied to monthly series. (PR#13272)
Offline help on a Unix-alike now works even if options "latexcmd" and "dvipscmd" contain spaces (e.g. "dvips -Pmy_printer").
Informative error messages are given if running latex or dvips fail.
Using plot.lm() on a "glm" object since 2.7.1 with which=5 caused the Pearson rather than deviance residuals to be used in which=2 or 3 (including in the default case). (Thanks to Effie Greathouse and Greg Snow.)
plot.lm() did not report on omitting observations with leverage one if they also had residual exactly zero. This was seen in example(occupationalStatus).
deparse(nlines=) no longer pads short results with blank lines. (PR#13299)
legend(xpd=) now restores 'xpd' correctly. (PR#12756)
The "formula" method for lines() now works if 'subset' is supplied and no 'data' argument (as that for points() did).
Sweave() now takes the defaults for the options 'pdf.version' and 'pdf.encoding' of its RweaveLatex driver from pdf.options().
prettyNum(x, drop0trailing=TRUE) treated "1.1e20" as "1.1e2" and hence str() did as well, in 2.8.0 only.
dchisq(x, df, ncp) no longer hangs for large x and ncp > 0, and is more accurate in some cases (PR#13309).
installed.packages(lib.loc = D, priority="NA") now also works when D contains a single package. (PR#13332)
legend(...., merge=TRUE) now warns and has no effect in the case where no line segments are drawn. (PR#13340)
transform.data.frame() works better when two or more columns are added.
Deparsing argument lists with non-syntactic names (e.g. that for transform()) now uses backticks rather than double quotes to produce syntactically valid output.
matrix() failed to check for 0-length 'dimnames': it now treats them as NULL (as array did). (PR#13361)
0^NA is now NA, not Inf, consistent with x^NA, x != 1.
anova.mlm() did not work if T had only one row (including e.g. the case M = ~1).
axis.POSIXct() mislabelled for some time ranges of a few hours (reported by Martin Becker).
mantelhaen.test() with 'exact=FALSE' was not respecting 'alternative'. It now does one-sided tests similarly to prop.test().
anova.mlm() had trouble with some designs where near-zero rows of the tranformation matrix were not removed (caught by Nils Skutara).
Rd conversion was handling expressions like '\item{foo}{see \eqn{x}}' (with one argument to \eqn immediately followed by a right brace) incorrectly, sometimes giving a spurious warning about 'missing text'.
R CMD INSTALL used the C locale to install the DESCRIPTION file, and so escaped non-ASCII characters in packages with a declared encoding of "latin1" or "UTF-8". (However, the installed DESCRIPTION file was rarely used since the dumped metadata are available.)
xspline() now respects inline par settings.
It and grid.xspline() now handle the special case of only two control points, and splines with control points that are located well outside the device (e.g., a zoomed view of a larger curve). (Both cases were giving the error "reached MAXNUMPTS").
In setClass("C", contains="list"); x <- new("C", 1:3), x[2:3] now remains of class "C". So does rep(x, 2) or rep.int(x, 3).
median.default() now also works for "numeric"-like vectors.
The pdf() device can now handle the case where an image uses a very large number of colours with different levels of semi-transparency (alpha-values). It used to segfault. (Also PR#13264.)
window() failed to apply a fuzz to 'start' or 'end' and so sometimes warned incorrectly for time series with 'freq' not a power of two (e.g. 12 or 24).
unique.default() now preserves the "tzone" attribute on "POSIXct" objects.
If all the packages had dependency lists of equal lengths, occasionally install.packages() would compute an incorrect sort order.
col(x, as.factor=TRUE) and row(x, as.factor=TRUE) would fail if x had no column (row) names. It was documented incorrectly, and now returns a matrix factor.
setRepositories() failed if "pkgType" was set to "mac.binary.leopard".
formals<-() changed the body of the function if this was a length-one list.
body<-() failed if the function had no arguments. It now warns if discarding elements from a 'value' of type "expression".
