This blog is updated daily.
A general description is here.
The windows() device would sometimes ignore font family requests (PR#12931).
The clip region was sometimes wrong when printing from the menu on a windows() graphics device (in 2.7.2 only).
dir.create(recursive = TRUE) was not working on //server/share paths.
iconv() was incorrectly identifying R running in an Eastern European locale as using ISO-8859-2 (aka Latin-2) rather than CP1250: they differ in the positions of some characters, notably s and z with caron. This was seen in tcltk output from Rcmdr in 2.7.x, but might have occurred elsewhere (and earlier).
This also affected localeToCharset() which incorrectly returned "ISO8859-2".
The same issue seems to have caused problems with starting R 2.7.x in the Chinese (Hong Kong S.A.R.) locale on some systems (e.g. PR#12658).
iconv() was incorrectly identifying R running in an Eastern European locale as using ISO-8859-2 (aka Latin-2) rather than CP1250: they differ in the positions of some characters, notably s and z with caron. This was seen in tcltk output from Rcmdr in 2.7.x, but might have occurred elsewhere (and earlier).
This also affected localeToCharset() which incorrectly returned "ISO8859-2".
The same issue seems to have caused problems with starting R 2.7.x in the Chinese (Hong Kong S.A.R.) locale on some systems (e.g. PR#12658).
quartz() would segfault if asked to create a file for bitmap output which could not be created. This applied also to the type="quartz" versions of bmp(), jpeg(), png() and tiff().
dnbinom(0, size, mu = <large>) suffered from cancellation in 2.7.2 only.
seek() now clears the pushback on a text-mode connection if used to set a new position. (PR#12640)
source() did not respect the setting of options("keep.source") when setting source references.
Attempting to open an X11() device on a non-existent display when one is already open on another display now gives a warning rather than terminating R via a fatal X11 error. (PR#12628)
within(<dataframe>, { ... }) now also works when '...' removes more than one column.
data.frame(row.names=NULL) once again behaves differently from the default (as documented).
plot(isoreg(x,y)) now plots the points correctly, also when 'x' is not sorted.
duplicated() and unique() now handle 'incomparables' better, and avoid occasional segfaults (PR#12551).
The use of multiple packages in 'LinkingTo' works again, and  now works when the dependent packages are in the libraries loaded  by R but noty to be  installed to (but not in the library path seen by R --vanilla).
sprintf() returns elements of the result in UTF-8 when the
 format or any character input has a corresponding element
 declared as UTF-8. Similarly for paste(), elements of the
 result are in UTF-8 when any input to that element is declared
 as UTF-8.
axis() has new arguments 'col.ticks' and 'lwd.ticks' to allow
 the colour and line width of ticks to be set separately from
 that of the line (e.g. to set one or the other to transparent
 or zero width).
legend() has a new argument 'box.col' to set the colour of the
 enclosing box.
legend() gains a 'xpd' argument to make it easier to place a
 legend in the margins or outer margins.
stripchart() now passes '...' to title() (as well as to
 plot.default() and axis()). (Wish of PR#12202)
help.search() has to new argument 'searchEngine' to go
 directly to the search form: this is needed by users of
 Firefox 3 to workaround a bug in interpreting the search
 results pages.
Plotmath computed the glyph metrics for the wrong character (and
 perhaps for a non-existent one) if this was a single-byte
 character with the top bit set. An example was symbol("\300").
sink() and cat() could divert output to a non-writable connection.
phyper(x, 0,0,0) no longer hangs for huge x and gives 1 for x >= 0.
 (PR#11813)
plnorm(x, ..., log.p=TRUE) is now correct for x <= 0. (PR#11867)
<data.frame>[, ch] gives an error (again!) when ch is a string not
 exactly matching the column names, thanks to an oral bug report by
 Matthew Dowle.
data.frame(x=1:2, y=3:4, row.names=c("a","NA"))[c(2,NA),] has
 correct row names c("NA,"NA.1") again.
The GUI data editor for dataframes did not handle escape
 characters in entries properly. (PR#11897)
PCRE has been updated to 7.7 (bugfix release).
package.skeleton() wrongly warned about invalid code_files names
 when these were not in the current directory.
shapiro.test(c(0,0,1)) now has P value >= 0 (instead of barely
 negative).
assign() now warns if given a character vector of length > 1,
 rather than silently taking the first element.
rcond(<exactly singular matrix>) now gives 0 instead of an error.
There was a memory leak in C function ucstoutf8 used by some
 graphics devices.
Plots of profile.mle() objects (package 'stats4') were
 misbehaving when the 'which' argument had been used in their
 calculation.
dnbinom(x, size, mu=*, ..) is now more accurate for very large
 'size'. The same applies to pnbinom() and rnbinom().
axis() was ignoring par() mgp[3] if mgp was set in-line.
Closing an X11 View() or dataentry window via its frame's
 close control now works better on some window managers.
Calling lapply() was not handling method dispatch correctly for
 is.numeric(), is.matrix(), is.array(), log() and the Math2
 group. This affected data.matrix() which incorrectly regarded
 "Date" and "POSIXct" objects as numeric, and has been adjusted
 to do so as exceptions.
package.skeleton() was not looking for non-function objects in
 its 'environment' argument.
nls() was only finding its 'weights' argument in the case when
 all the variables in the formula were of the same length and
 hence that model.frame() could be used.
It was silently ignoring 'subset' and 'na.action' except in that case. Now they are ignored only if 'data' is a list and variables taken from 'data' are not all of the same length, in which case a warning is given.
The 'mle' confint() method now takes 'level' into account when
 setting 'alpha' for the profile.
within() was not handling correctly expressions that produced
 NULL columns. (PR#11131)
dev.print() and dev.copy2{eps,pdf}() now ensure that the current
 device is restored as the active device even if an error
 occurs. (PR#9801)
as.Date() could fail to convert character strings representing
 days on which midnight did not exist in the current timezone
 (as happened in parts of Africa on 1960-01-01).
The automatic placement of legend() with 'title' and a
 reversed 'x' axis was incorrect. (PR#12019)
The use of multiple packages in 'LinkingTo' works again, and
 now works when the dependent packages are in libraries loaded
 by R but not by R --vanilla.
bxp() (and hence boxplot) now respects in-line graphical
 parameters 'xaxp'/'yaxp' as appropriate. (PR#11463)
barplot(log = "y") failed if there were NAs in the 'height'
 argument. (PR#11585)
pbeta() is more accurate in some cases with extreme values of
 'ncp'. (PR#11277).
edit.data.frame() no longer fails if called on a 0-column
 data frame and no column is created.
pchisq(x, df=0) was always one even for x < 0; similarly for
 pgamma(x, alpha=0).
add1() and drop1() now return a P-value of NaN in cases with
 df=0 for test="Chisq" (they gave NaN until pchisq was altered
 in R 2.6.2).
The default methods of drop1() and add1() now re-evaluate in the
 object's formula environment, rather than simply in the parent
 (informal bug report by Werner Stahel).
The undocumented limit of 8191 bytes on comments (from # to
 the end of the line) in R code has been removed.
qgamma() warns if used with shape < 1e-10, when it may be
 unreliable. (PR#12324)
Installing a source package was not using the package's declared
 encoding (if any) as a default encoding for the help.search()
 database in Meta/hsearch.rds. This could cause packages with
 a default encoding to have some of their entries rejected by
 help.search() in a multi-byte locale (such as a UTF-8 locale).
sprintf() returns elements of the result in UTF-8 when the format or any character input has a corresponding element declared as UTF-8. Similarly for paste(), elements of the result are in UTF-8 when any input to that element is declared as UTF-8.
axis() has new arguments 'col.ticks' and 'lwd.ticks' to allow the colour and line width of ticks to be set separately from that of the line (e.g. to set one or the other to transparent or zero width).
legend() has a new argument 'box.col' to set the colour of the enclosing box.
legend() gains a 'xpd' argument to make it easier to place a legend in the margins or outer margins.
stripchart() now passes '...' to title() (as well as to plot.default() and axis()). (Wish of PR#12202)
help.search() has new argument 'searchEngine' to go directly to the search form: this is needed by users of Firefox 3 to workaround a bug in interpreting the search results pages.
Plotmath computed the glyph metrics for the wrong character (and perhaps for a non-existent one) if this was a single-byte character with the top bit set. An example was symbol("\300").
sink() and cat() could divert output to a non-writable connection.
phyper(x, 0,0,0) no longer hangs for huge x and gives 1 for x >= 0. (PR#11813)
plnorm(x, ..., log.p=TRUE) is now correct for x <= 0. (PR#11867)
<data.frame>[, ch] gives an error (again!) when ch is a string not exactly matching the column names, thanks to an oral bug report by Matthew Dowle.
data.frame(x=1:2, y=3:4, row.names=c("a","NA"))[c(2,NA),] has correct row names c("NA,"NA.1") again.
The GUI data editor for dataframes did not handle escape characters in entries properly. (PR#11897)
PCRE has been updated to 7.7 (bugfix release).
package.skeleton() wrongly warned about invalid code_files names when these were not in the current directory.
shapiro.test(c(0,0,1)) now has P value >= 0 (instead of barely negative).
assign() now warns if given a character vector of length > 1, rather than silently taking the first element.
rcond(<exactly singular matrix>) now gives 0 instead of an error.
There was a memory leak in C function ucstoutf8 used by some graphics devices.
Plots of profile.mle() objects (package 'stats4') were misbehaving when the 'which' argument had been used in their calculation.
dnbinom(x, size, mu=*, ..) is now more accurate for very large 'size'. The same applies to pnbinom() and rnbinom().
axis() was ignoring par() mgp[3] if mgp was set in-line.
Closing an X11 View() or dataentry window via its frame's close control now works better on some window managers.
Calling lapply() was not handling method dispatch correctly for is.numeric(), is.matrix(), is.array(), log() and the Math2 group. This affected data.matrix() which incorrectly regarded "Date" and "POSIXct" objects as numeric, and has been adjusted to do so as exceptions.
package.skeleton() was not looking for non-function objects in its 'environment' argument.
nls() was only finding its 'weights' argument in the case when all the variables in the formula were of the same length and hence that model.frame() could be used.
It was silently ignoring 'subset' and 'na.action' except in that case. Now they are ignored only if 'data' is a list and variables taken from 'data' are not all of the same length, in which case a warning is given.
The 'mle' confint() method now takes 'level' into account when setting 'alpha' for the profile.
within() was not handling correctly expressions that produced NULL columns. (PR#11131)
dev.print() and dev.copy2{eps,pdf}() now ensure that the current device is restored as the active device even if an error occurs. (PR#9801)
as.Date() could fail to convert character strings representing days on which midnight did not exist in the current timezone (as happened in parts of Africa on 1960-01-01).
The automatic placement of legend() with 'title' and a reversed 'x' axis was incorrect. (PR#12019)
The use of multiple packages in 'LinkingTo' works again, and now works when the dependent packages are in libraries loaded by R but not by R --vanilla.
bxp() (and hence boxplot) now respects in-line graphical parameters 'xaxp'/'yaxp' as appropriate. (PR#11463)
barplot(log = "y") failed if there were NAs in the 'height' argument. (PR#11585)
pbeta() is more accurate in some cases with extreme values of 'ncp'. (PR#11277).
edit.data.frame() no longer fails if called on a 0-column data frame and no column is created.
pchisq(x, df=0) was always one even for x < 0; similarly for pgamma(x, alpha=0).
add1() and drop1() now return a P-value of NaN in cases with df=0 for test="Chisq" (they gave NaN until pchisq was altered in R 2.6.2).
The default methods of drop1() and add1() now re-evaluate in the object's formula environment, rather than simply in the parent (informal bug report by Werner Stahel).
The undocumented limit of 8191 bytes on comments (from # to the end of the line) in R code has been removed.
qgamma() warns if used with shape < 1e-10, when it may be unreliable. (PR#12324)
Installing a source package was not using the package's declared encoding (if any) as a default encoding for the help.search() database in Meta/hsearch.rds. This could cause packages with a default encoding to have some of their entries rejected by help.search() in a multi-byte locale (such as a UTF-8 locale).
help.search() has to new argument 'searchEngine' to go directly to the search form: this is needed by users of Firefox 3 to workaround a bug in interpreting the search results pages.
Rgui has a new menu item 'Html search page' on the Help menu, which goes directly to the HTML search form. This is needed by users of Firefox 3, which generates incorrect links in search results when the page is accessed via the 'Html help' menu item (or via help.start()).
qgamma() warns if used with shape < 1e-10, when it may be unreliable. (PR#12324)
Installing a source package was not using the package's declared encoding (if any) as a default encoding for the help.search() database in Meta/hsearch.rds. This could cause packages with a default encoding to have some of their entries rejected by help.search() in a multi-byte locale (such as a UTF-8 locale).
pbeta() is more accurate in some cases with extreme values of 'ncp'. (PR#11277).
Saving a graph in TIFF format could crash R (PR#11804).
Rterm in interactive use did not implement R_FlushConsole() fully.
getGraphicsEvent() did not return onMouseMove events while a
 mouse button was depressed.
The confirmation of a new frame for a windows() graphics
 device works harder to give the device focus, including
 bringing it to the top.
glob (used by Sys.glob() and unlink()) was not working correctly
 on some filename patterns including non-ASCII characters.
 Part of the problem was specific to 2.7.x, part has existed
 since 2.5.0.
Sys.glob() returned a UTF-8 result in 2.7.[01] but failed to
 mark its encoding.
User menus were not properly removed when a graph window was 
 closed.
Rscript -e (and Rterm -e) failed on Vista because the MSVCRT
 function 'tmpfile' is broken on that platform.
Making a .msi installer now works with WiX 2.0.5805.0 (the file
 format had been changed since 2.0.4221.0 as previously tested).
The grid package could set the clipping region outside the
 device region, and the windows() device now intersects the two
 when setting the clipping region. Once an invalid region was
 set, semi-transparent text and lines might have been omitted.
Saving a graph in TIFF format could crash R (PR#11804).
Rterm in interactive use did not implement R_FlushConsole() fully.
getGraphicsEvent() did not return onMouseMove events while a mouse button was depressed.
The confirmation of a new frame for a windows() graphics device works harder to give the device focus, including bringing it to the top.
glob (used by Sys.glob() and unlink()) was not working correctly on some filename patterns including non-ASCII characters. Part of the problem was specific to 2.7.[01], part has existed since 2.5.0.
Sys.glob() returned a UTF-8 result in 2.7.[01] but failed to mark its encoding.
User menus were not properly removed when a graph window was closed.
Rscript -e (and Rterm -e) failed on Vista because the MSVCRT function 'tmpfile' is broken on that platform.
Making a .msi installer now works with WiX 2.0.5805.0 (the file format had been changed since 2.0.4221.0 as previously tested).
The grid package could set the clipping region outside the device region, and the windows() device now intersects the two when setting the clipping region. Once an invalid region was set, semi-transparent text and lines might have been omitted.
Some (but not all) Korean users have been having problems with Korean translations of the RGui menus. These had not been updated for a long time, and have now been removed.
axis() has new arguments 'col.ticks' and 'lwd.ticks' to allow the colour and line width of ticks to be set separately from that of the line (e.g. to set one or the other to transparent or zero width).
legend() has a new argument 'box.col' to set the colour of the enclosing box.
legend() gains a 'xpd' argument to make it easier to place a legend in the margins or outer margins.
stripchart() now passes '...' to title() (as well as to plot.default() and axis()). (Wish of PR#12202)
The automatic placement of legend() with 'title' and a reversed 'x' axis was incorrect. (PR#12019)
pchisq(x, df=0) was always one even for x < 0; similarly for pgamma(x, alpha=0).
add1() and drop1() now return a P-value of NaN in cases with df=0 for test="Chisq" (they gave NaN until pchisq was altered in R 2.6.2).
The default methods of drop1() and add1() now re-evaluate in the object's formula environment, rather than simply in the parent (informal bug report by Werner Stahel).
The undocumented limit of 8191 bytes on comments (from # to the end of the line) in R code has been removed.
edit.data.frame() not longer fails if called on a 0-column  data frame and no column is created.
The automatic placement of legend() with 'title' and a
 reversed 'x' axis was incorrect. (PR#12019)
edit.data.frame() not longer fails if called on a 0-column data frame and no column is created.
bxp() (and hence boxplot) now respects in-line graphical parameters 'xaxp'/'yaxp' as appropriate. (PR#11463)
barplot(log = "y") failed if there were NAs in the 'height' argument. (PR#11585)
pbeta() is more accurate in some cases with extreme values of ncp. (PR#11277).
Calling lapply() with certain primitives was not handling method  dispatch correctly for  is.numeric(), is.matrix(), is.array(),  log() and the Math2  group. This affected data.matrix() which  incorrectly regarded  "Date" and "POSIXct" objects as numeric,  and has been adjusted  to still do sodo so as exceptions.
The use of multiple packages in 'LinkingTo' works again, and now works when the dependent packages are in libraries loaded by R but not by R --vanilla.
The use of multiple packages in 'LinkingTo' works again.
The automatic placement of legend() with 'title' and a reversed 'x' axis was incorrect. (PR#12019)
sprintf() returns elements of the result in UTF-8 when the format or any character input has a corresponding element declared as UTF-8. Similarly for paste(), elements of the result are in UTF-8 when any input to that element is declared as UTF-8.
as.Date() could fail to convert character strings representing days on which midnight did not exist in the current timezone (as happened in parts of Africa on 1960-01-01).
Plots of profile.mle() objects (package 'stats4') were misbehaving when the 'which' argument had been used in their calculation.
dnbinom(x, size, mu=*, ..) is now more accurate for very large 'size'. The same applies to pnbinom() and rnbinom().
The 'mle' confint() method now takes 'level' into account when setting 'alpha' for the profile.
within() was not handling correctly expressions that produced NULL columns. (PR#11131)
dev.print() and dev.copy2{eps,pdf}() now ensure that the current device is restored as the active device even if an error occurs. (PR#9801)
Calling lapply() with certain primitives was not handling method dispatch correctly for is.numeric(), is.matrix(), is.array(), log() and the Math2 group. This affected data.matrix() which incorrectly regarded "Date" and "POSIXct" objects as numeric, and has been adjusted to still do so.
There was a memory leak in C function ucstoutf8 used by some graphics devices.
axis() was ignoring par() mgp[3] if mgp was set in-line.
There was a memory leak in ucstoutf8 used by some graphics devices.
axis() was ignoring par() mgp[3] is mgp was set in-line.
Calling lapply() with certain primitives was not handling method dispatch correctly for is.numeric(), is.matrix(), is.array(), log() and the Math2 group. This affected data.matrix() which incorrectly regarded "Date" and "POSIXct" objects as numeric.
package.skeleton() was not looking for non-function objects in its 'environment' argument.
nls() was only finding its 'weights' argument in the case when all the variables in the formula were of the same length and hence that model.frame() could be used.
It was silently ignoring 'subset' and 'na.action' except in that case. Now they are ignored only if 'data' is a list and variables taken from 'data' are not all of the same length, in which case a warning is given.
Closing an X11 View() or dataentry window via its frame's close control now works better on some window managers.
rcond(<exactly singular matrix>) now gives 0 instead of an error.
axis() was ignoring par() mgp[3] is mgp was set in-line.
co[rv](use = "complete.obs") now always gives an error if there are no complete cases: they used to give NA if method = "pearson" but an error for the other two methods. (Note that this is pretty arbitrary, but zero-length vectors always give an error so it is at least consistent.)
Since sd(na.rm=TRUE) and var(na.rm=TRUE) both call cov(use = "complete.obs"), this applies also to them.
cor(use="pair") used to give diagonal 1 even if the variable was completely missing for the rank methods but NA for the Pearson method: it now gives NA in all cases.
cor(use="pair") for the rank methods gave a matrix result with dimensions > 0 even if one of the inputs had 0 columns.
There was a memory leak in ucstoutf8 used by some graphics devices.
The grid package could set the clipping region outside the device region, and the windows() device now intersects the two when setting the clipping region. Once an invalid region was set, semi-transparent text and lines might have been omitted.
Making a .msi installer now works with WiX 2.0.5805.0 (the file format had been changed since 2.0.4221.0 as previously tested).
getGraphicsEvent() did not return onMouseMove events while a mouse button was depressed.
Rscript -e (and Rterm -e) failed on Vista because the MSCVVCRT  function 'tmpfile' is broken on that platform.
Making a .msi installer now works with WiX 2.0.5805.0 (the file format had been changed since 2.0.4221.0 as previously tested).
getGraphicsEvent() did not return onMouseMove events while a mouse button was depressed.
Rscript -e (and Rterm -e) failed on Vista because the MSCVVCRT  function 'tmpfile' is broken on that platform.
assign() now warns if given a character vector of length > 1, rather than silently taking the first element.
Rscript -e (and Rterm -e) failed on Vista because the MSCVRT function 'tmpfile' is broken on that platform.
assign() now warns if given a character vector of length > 1, rather than silently taking the first element.
Rscript -e (and Rterm -e) failed on Vista because the MSCVRT function 'tmpfile' is broken on that platform.
shapiro.test(c(0,0,1)) now has P value >= 0 (instead of barely negative).
package.skeleton() wrongly warned about invalid code_files names when these were not in the current directory.
PCRE has been updated to 7.7 (bugfix release).
User menus were not properly removed when a graph window was closed.
The GUI data editor for dataframes did not handle escape characters in entries properly. (PR#11897)
glob (used by Sys.glob() and unlink()) was not working correctly on some filename patterns including non-ASCII characters. Part of the problem was specific to 2.7.x, part has existed since 2.5.0.
Sys.glob() returned a UTF-8 result in 2.7.[01] but failed to mark its encoding.
data.frame(x=1:2, y=3:4, row.names=c("a","NA"))[c(2,NA),] has correct row names c("NA,"NA.1") again.
<data.frame>[, ch] gives an error (again!) when ch is a string not exactly matching the column names, thanks to an oral bug report by Matthew Dowle.
plnorm(x, ..., log.p=TRUE) is now correct for x <= 0. (PR#11867)
<data.frame>[, ch] gives an error (again!) when ch is a string not exactly mathing the column names, thanks to an oral bug report by Matthew Dowle.
Rterm did not always flush console output properly.
Rterm in interactive use did not implement R_FlushConsole() fully.
getGraphicsEvent did not return onMouseMove events while a mouse button was depressed.
The confirmation of a new frame for a windows() graphics device works harder to give the device focus, including bringing it to the top.
phyper(x, 0,0,0) no longer hangs for huge x and gives 1 for x >= 0. (PR#11813)
Plotmath computed the glyph metrics for the wrong character (and  perhaps for a non-existent one) if this was a single-byte  character with the top bit set. An example was  symbol("\300").
phyper(x, 0,0,0) no longer hangs for huge x and gives 1 for x >= 0. (PR#11813)
Plotmath computed the glyph metrics for the wrong character (and  perhaps for a non-existent one) if this was a single-byte  character with the top bit set. An example was  symbol("\300").
Rterm did not always flush console output properly.
Saving a graph in TIFF format could crash R (PR#11804).
sink() and cat() could divert output to a non-writable connection.
Plotmath computed the glyph metrics for the wrong character (and perhaps for a non-existent one) if this was a single-byte character with the top bit set. An example was symbol("\300").
symbol() in plotmath expressions works again with non-ASCII input on devices that use UTF-8 for the symbol font.
Adobe Symbol was missing from the encodings in  tools::charset_to_EncodingUnicode.
The 'noquote' method for c() now works correctly with three or more arguments.
file.choose() in SDI mode now restores the window focus properly.
tools::texi2dvi() has a new argument 'texinputs' to allow the
 TeX and bibtex input paths to be specified (even on MiKTeX).
dev.copy2pdf() gains an 'out.type' argument to allow it to be
 used with cairo_pdf() or quartz(type = "pdf").
poly() has additional checks against user error (as in PR#11243).
The Mac OS quartz() device draws contiguous lines much faster.
A field containing just a sign is no longer regarded as numeric
 (it was on all platforms in 2.7.0, but not on most in earlier
 versions of R).
CITATION files are now read in Latin-1: quite a few were
 failing if used in a multibyte locale such as UTF-8.
The DESCRIPTION file of a package can specify an 'OS_type' field
 as either 'unix' or 'windows' to confine installation to that
 OS type.
HoltWinters() now uses optimize() rather than optim for
 one-parameter problems which should be more reliable (PR#11469).
axis() now respects the setting of par("xpd") when clipping.
The 'factor' method of format() now preserves names, dims and
 dimnames in the same way as for character and numeric inputs.
 (PR#11512)
The use of unserialize() on character strings is deprecated:
 that was a format used in R < 2.4.0.
The use of embedded nuls in character strings is deprecated:
 They will no longer be allowed in R 2.8.0.
R CMD check checks for possible check directories in the
 sources -- in mid-2008 there were about 20 examples on CRAN.
R CMD build tries harder to clean up the inst/doc directory
 from the remnants of earlier builds.
It also removes any directories with extension .Rcheck, and files .DS_Store and ._* (created by tar on Mac OS X under some circumstances: it now sets environment variables to ask for such files not to be created by that tar.)
Encoding<- on NA_character_ converted it to "NA".
Adobe Symbol was missing from the encodings in
 tools::charset_to_Encoding.
diag(matrix(x, 0, 0)) now returns a 0-length vector of the
 correct mode, instead of always numeric.
The parser sometimes accepted invalid quoted strings in a UTF-8
 locale.
plot.default(x, y) now dispatches to Axis() methods whether
 y is NULL or not.
On Mac OS X, the Cocoa Quartz window could close without warning
 under certain circumstances (specific autorelease pool flush).
Plotting symbols with separate border and fill colours (e.g.,
 plot(pch = 21)) now works with transparent 'col', but opaque
 or semi-transparent 'bg'. Previously, if 'col' was
 transparent then 'bg' was ignored and nothing was drawn.
file.path() did not work correctly in 2.7.0 if the components
 had different encodings.
merge() failed if there were no common columns and one of the
 inputs had zero rows.
expand.grid() failed if an input had length 0.
match() does again truncate strings at embedded nuls (as newly
 documented in 2.7.0).
Because of a typo, 'pointsize' in png(type="cairo") (and jpeg,
 bmp, tiff) devices was being interpreted in pixels not bigpoints.
is() was wrong for some S3 class objects with class of length
 greater than one.
undoc() / codoc() were not checking all S4 methods in some cases.
Use of textConnection(NULL, mode="w") could segfault.
Use of strwidth/height(units="user") (the default) is again an
 error before a user coordinate system has been set on the
 device, rather than giving nonsensical values (the effect of
 r31367).
Rare string width calculations in package grid were not
 interpreting the string encoding correctly.
hasMethods(f, env) {without specified 'package'} now works better.
A missing PROTECT could cause segfaults on string
 comparisons. (PR#11421)
str(structure(1, classID = "Pooh")) now works fine.
A missing PROTECT could cause segfaults in if() if coercion of
 the condition was required or a warning was to be given.
plot(<table>) now uses a sensible default main title.
validObject() called with complete=TRUE did not use inherited
 validity methods for slot classes.
Several bugs fixed in as(): the initial method lookup was not
 using the table with inherited methods (so inheritance had to
 be recomputed each time); coerce() should not be called
 directly--it can insert invalid inherited methods; the
 constructed as() methods were not retaining the function's
 environment.
influence.measures(<glm-object>) now computes the same
 Cook's distance approximations as cooks.distance().
plot(<glm>, which=5) uses more correct Cook's distance contours;
 (fix to fix to PR#9316).
pdf() and postscript() were not working correctly in 2.7.0 with
 UTF-8 encoded data in a non-UTF-8 MBCS (e.g. EUC-JP on Unix,
 CJK locales on Windows).
conformMethod(), called by setMethod(), now checks better about
 argument names in wrong order. Whereas it only warns currently,
 it is planned to become an error in the future.
The predict() method for prcomp() had an incorrect check for
 the number of columns of 'newdata' if the columns were not named.
The axis() function now distinguishes between setting "at" to
 NULL or a zero-length vector, treating the latter as a request
 for no ticks. This corrects the handling of the "x" parameter
 to rug().
glob2rx("*[*") now produces a correct regular expression.
The canvas is no longer painted on copy or save in Cocoa Quartz.
identify() in Quartz can now be terminated by either using popup
 menu equivalent (Ctrl-click or second mouse button) or by pressing
 the <Esc> key. The latter was documented but did not work.
tools:::.check_package_depends() {called from 'R CMD check'} now
 also works correctly when directory-name != package-name.
Source references were sometimes off by a line.
The quartz() parameter 'antialias' is no longer ignored.
The Quartz device is now trying hard to remove anti-aliasing
 effects for rasterized backends in plots that use adjacent,
 borderless rectangles such as image().
The srcfilecopy() function now adds a timestamp to the object it
 creates.
parse() would lose a token when run on stdin().
socketConnection() was using internally the class "socket"
 and not "sockconn", which caused a conflict with make.socket().
 (PR#11515)
Quartz is now trying harder to find the proper font for a given
 family which resolves font issues on Mac OS X 10.4. Full font
 names and PostScript names can be used interchangeably. (Note,
 however that italic/oblique font faces of Helvetica are not
 included in the Mac OS X 10.4 system).
qf() no longer gives NaN when one of df1 and df2 is large and
 the other is infinite (including if both are infinite); it is more
 accurate e.g. for qf(1e-18, 2,4).
qbeta(-1e10, 50, 40, log.p=TRUE) no longer hangs.
Cocoa Quartz backend autodetection of display DPI was not
 correct for screens rotated by 90 or 270 degrees.
selectMethod("coerce", .) now uses a correct default for
 'useInherited', and hence no longer may mess up the method cache.
show() now also works on "unregistered" S3 class objects.
formatC(*, format="fg", flag="#") is no longer dropping trailing
 zeros.
tools::texi2dvi() has a new argument 'texinputs' to allow the TeX and bibtex input paths to be specified (even on MiKTeX).
dev.copy2pdf() gains an 'out.type' argument to allow it to be used with cairo_pdf() or quartz(type = "pdf").
poly() has additional checks against user error (as in PR#11243).
The Mac OS quartz() device draws contiguous lines much faster.
A field containing just a sign is no longer regarded as numeric (it was on all platforms in 2.7.0, but not on most in earlier versions of R). Similarly, '.' is now always non-numeric.
CITATION files are now read in Latin-1: quite a few were failing if used in a multibyte locale such as UTF-8.
The DESCRIPTION file of a package can specify an 'OS_type' field as either 'unix' or 'windows' to confine installation to that OS type.
HoltWinters() now uses optimize() rather than optim for one-parameter problems which should be more reliable (PR#11469).
axis() now respects the setting of par("xpd") when clipping.
The 'factor' method of format() now preserves names, dims and dimnames in the same way as for character and numeric inputs. (PR#11512)
read.DIF(*, transpose=TRUE) now allows to correctly read DIF files produced by some versions of Excel.
The use of unserialize() on character strings is deprecated: that was a format used in R < 2.4.0.
The use of embedded nuls in character strings is deprecated: They will no longer be allowed in R 2.8.0.
R CMD check checks for possible check directories in the sources -- in mid-2008 there were about 20 examples on CRAN.
R CMD build tries harder to clean up the inst/doc directory from the remnants of earlier builds.
It also removes any directories with extension .Rcheck, and files .DS_Store and ._* (created by tar on Mac OS X under some circumstances: it now sets environment variables to ask for such files not to be created by that tar.)
Encoding<- on NA_character_ converted it to "NA".
Adobe Symbol was missing from the encodings in tools::charset_to_Encoding.
diag(matrix(x, 0, 0)) now returns a 0-length vector of the correct mode, instead of always numeric.
The parser sometimes accepted invalid quoted strings in a UTF-8 locale.
plot.default(x, y) now dispatches to Axis() methods whether y is NULL or not.
On Mac OS X, the Cocoa Quartz window could close without warning under certain circumstances (specific autorelease pool flush).
Plotting symbols with separate border and fill colours (e.g., plot(pch = 21)) now works with transparent 'col', but opaque or semi-transparent 'bg'. Previously, if 'col' was transparent then 'bg' was ignored and nothing was drawn.
file.path() did not work correctly in 2.7.0 if the components had different encodings.
merge() failed if there were no common columns and one of the inputs had zero rows.
expand.grid() failed if an input had length 0.
match() does again truncate strings at embedded nuls (as newly documented in 2.7.0).
Because of a typo, 'pointsize' in png(type="cairo") (and jpeg, bmp, tiff) devices was being interpreted in pixels not bigpoints.
is() was wrong for some S3 class objects with class of length greater than one.
undoc() / codoc() were not checking all S4 methods in some cases.
Use of textConnection(NULL, mode="w") could segfault.
Use of strwidth/height(units="user") (the default) is again an error before a user coordinate system has been set on the device, rather than giving nonsensical values (the effect of r31367).
Rare string width calculations in package grid were not interpreting the string encoding correctly.
hasMethods(f, env) {without specified 'package'} now works better.
A missing PROTECT could cause segfaults on string comparisons. (PR#11421)
str(structure(1, classID = "Pooh")) now works fine.
A missing PROTECT could cause segfaults in if() if coercion of the condition was required or a warning was to be given.
plot(<table>) now uses a sensible default main title.
validObject() called with complete=TRUE did not use inherited validity methods for slot classes.
Several bugs fixed in as(): the initial method lookup was not using the table with inherited methods (so inheritance had to be recomputed each time); coerce() should not be called directly--it can insert invalid inherited methods; the constructed as() methods were not retaining the function's environment.
influence.measures(<glm-object>) now computes the same Cook's distance approximations as cooks.distance().
plot(<glm>, which=5) uses more correct Cook's distance contours; (fix to fix to PR#9316).
pdf() and postscript() were not working correctly in 2.7.0 with UTF-8 encoded data in a non-UTF-8 MBCS (e.g. EUC-JP on Unix, CJK locales on Windows).
conformMethod(), called by setMethod(), now checks better about argument names in wrong order. Whereas it only warns currently, it is planned to become an error in the future.
The predict() method for prcomp() had an incorrect check for the number of columns of 'newdata' if the columns were not named.
The axis() function now distinguishes between setting "at" to NULL or a zero-length vector, treating the latter as a request for no ticks. This corrects the handling of the "x" parameter to rug().
glob2rx("*[*") now produces a correct regular expression.
The canvas is no longer painted on copy or save in Cocoa Quartz.
identify() in Quartz can now be terminated by either using popup menu equivalent (Ctrl-click or second mouse button) or by pressing the <Esc> key. The latter was documented but did not work.
tools:::.check_package_depends() {called from 'R CMD check'} now also works correctly when directory-name != package-name.
Source references were sometimes off by a line.
The quartz() parameter 'antialias' is no longer ignored.
The Quartz device is now trying hard to remove anti-aliasing effects for rasterized backends in plots that use adjacent, borderless rectangles such as image().
The srcfilecopy() function now adds a timestamp to the object it creates.
parse() would lose a token when run on stdin().
socketConnection() was using internally the class "socket" and not "sockconn", which caused a conflict with make.socket(). (PR#11515)
Quartz is now trying harder to find the proper font for a given family which resolves font issues on Mac OS X 10.4. Full font names and PostScript names can be used interchangeably. (Note, however that italic/oblique font faces of Helvetica are not included in the Mac OS X 10.4 system).
qf() no longer gives NaN when one of df1 and df2 is large and the other is infinite (including if both are infinite); it is more accurate e.g. for qf(1e-18, 2,4).
qbeta(-1e10, 50, 40, log.p=TRUE) no longer hangs.
Cocoa Quartz backend autodetection of display DPI was not correct for screens rotated by 90 or 270 degrees.
selectMethod("coerce", .) now uses a correct default for 'useInherited', and hence no longer may mess up the method cache.
show() now also works on "unregistered" S3 class objects.
formatC(*, format="fg", flag="#") is no longer dropping trailing zeros.
read.table(file = stdin()) with invalid input could leave the connection in an invalid state and hence cause a later segfault. (PR#11627)
read.DIF() did not obey the default 'stringsAsFactors = TRUE'.
Rgui now accepts Unicode characters invalid in the locale when
 pasted in and converts them to \uxxxx sequences before passing
 to R.
The Save as | Postscript ... file selection box now offers
 *.eps (default) and *.ps file selections.
nchar() now gives the number of characters and their width as
 would be printed in Rgui for non-representable UTF-8 strings,
 not as they would be printed in Rterm (via <U+xxxx> escapes).
savePlot() now adds the file type as an extension to the
 filename if no dot ('.') is present in the filename. This
 provides the same default as in versions prior to 2.7.0, but
 allows the extension to be specified explicitly. (Contributed
 by Steve Ellison.)
Sys.getenv() could read incorrectly non-ASCII values.
The vertical scrollbar on the data editor/viewer now works
 when scrolling beyond 65535 rows. (PR#11291)
getWinProgressBar() returned an integer result -- it now
 returns a double value.
basename() and dirname() could truncate their results when
 Unicode chars were used (usually in a CJK locale).
memory.size() no longer wraps around allocations greater than
 2Gb. (PR#11596)
Rgui now accepts Unicode characters invalid in the locale when pasted in and converts them to \uxxxx sequences before passing to R.
The Save as | Postscript ... file selection box now offers *.eps (default) and *.ps file selections.
nchar() now gives the number of characters and their width as would be printed in Rgui for non-representable UTF-8 strings, not as they would be printed in Rterm (via <U+xxxx> escapes).
savePlot() now adds the file type as an extension to the filename if no dot ('.') is present in the filename. This provides the same default as in versions prior to 2.7.0, but allows the extension to be specified explicitly. (Contributed by Steve Ellison.)
Sys.getenv() could read incorrectly non-ASCII values.
The vertical scrollbar on the data editor/viewer now works when scrolling beyond 65535 rows. (PR#11291)
getWinProgressBar() returned an integer result -- it now returns a double value.
basename() and dirname() could truncate their results when Unicode chars were used (usually in a CJK locale).
memory.size() no longer wraps around allocations greater than 2Gb. (PR#11596)
read.table(file = stdin()) with invalid input could leave the connection in an invalid state and hence cause a later segfault. (PR#11627)
show() now also works on "unregistered" S3 class objects.
formatC(*, format="fg", flag="#") is no longer dropping trailing zeros.
selectMethod("coerce", .) now uses a correct default for 'useInherited', and hence no longer may mess up the method cache.
Cocoa Quartz backend autodetection of display DPI was not correct for screens rotated by 90 or 270 degrees.
nchar() now gives the number of characters and their width as  would be printed in Rgui for non-representable UTF-8 strings,  not as they would  be printed in Rterm (via <U+xxxx> escapes).
memory.size() no longer wraps around allocations greater than 2Gb. (PR#11596)
The 'factor' method of format() now preserves names, dims and dimnames in the same way as for character and numeric inputs. (PR#11512)
plot(<table>) now uses a sensible default main title.
qf() no longer gives NaN when one of df1 and df2 is large and the other is infinite (including if both are infinite); it is more accurate e.g. for qf(1e-18, 2,4).
qbeta(-1e10, 50, 40, log.p=TRUE) no longer hangs.
nchar() now gives the number of characters and their width as  would be printed in Rgui for non-representable UTF-8 strings,  not as they would  be printed in Rterm (via <U+xxxx> escapes).
memory.size() no longer wraps around allocations greater than 2Gb. (PR#11596)
Quartz is now trying harder to find the proper font for a given family which resolves font issues on Mac OS X 10.4. Full font names and PostScript names can be used interchangeably. (Note, however that italic/oblique font faces of Helvetica are not included in the Mac OS X 10.4 system).
savePlot() now adds the file type as an extension to the filename if no dot ('.') is present in the filename. This provides the same default as in versions prior to 2.7.0, but allows the extension to be specified explicitly. (Contributed by Steve Ellison.)
R CMD build tries harder to clean up the inst/doc directory from the remnants of earlier builds.
   It also removes any directories with extension .Rcheck., and  files .DS_Store and ._* (created by tar on Mac OS X under some  circumstances: it now sets environment variables to ask for  such files not to be created by that tar.)
The 'factor' method of format() now preserves names, dims and dimnames in the same way as for character and numeric inputs.
nchar() now gives the number of characters and their width as would be printed in Rgui for UTF-8 strings, not as they would be printed in Rterm (via <U+xxxx> escapes).
socketConnection() was using internally the class "socket" and not "sockconn", which caused a conflict with make.socket(). (PR#11515)
Source references were sometimes off by a line.
The quartz() parameter 'antialias' is no longer ignored.
The Quartz device is now trying hard to remove anti-aliasing effects for rasterized backends in plots that use adjacent, borderless rectangles such as image().
The srcfilecopy() function now adds a timestamp to the object it creates.
parse() would lose a token when run on stdin().
conformMethod(), called by setMethod(), now checks better about  argument names in wrong order. Whereas it only warns currently,  it is planned to become be an error in the future.
tools:::.check_package_depends() {called from 'R CMD check'} now also works correctly when directory-name != package-name.
axis() now respects the setting of par("xpd") when clipping.
The axis() function now distinguishes between setting "at" to NULL or a zero-length vector, treating the latter as a request for no ticks. This corrects the handling of the "x" parameter to rug().
glob2rx("*[*") now produces a correct regular expression.
The canvas is no longer painted on copy or save in Cocoa Quartz.
identify() in Quartz can now be terminated by either using popup menu equivalent (Ctrl-click or second mouse button) or by pressing the <Esc> key. The latter was documented but did not work.
HoltWinters() now uses optimize() rather than optim for one-parameter problems which should be more reliable (PR#11469).
hasMethods(f, env) {without specified 'package'} now works better.
conformMethod(), called by setMethod(), now checks better about argument names in wrong order. Whereas it only warns currently, it is planned to become be an error in the future.
The predict() method for prcomp() had an incorrect check for the number of columns of 'newdata' if the columns were not named.
validObject() called with complete=TRUE did not use inherited validity methods for slot classes.
sSeveral bugs fixed in as(): the initial method lookup was not  using  the table with inherited methods (so inheritance had to  be  recomputed each time); coerce() should not be called  directly--it  can insert invalid inherited methods; the  constructed as()  methods were not retaining the function's  environment.
plot(<glm>, which=5) uses more correct cCook's distance contours;  (fix to fix to PR#9316).
pdf() and postscript() were not working correctly in 2.7.0 with  UTF-8  encoded data in a non-UTF-8 MBCS (e.g. EUC-JP on Unix,  CJK locales on Windows).
The predict() method for prcomp() had an incorrect check for the number of columns of 'newdata' if the columns were not named.
pdf() and postscript() were not working correctly in 2.7.0 with  UTF-8  encoded data in a non-UTF-8 MBCS (e.g. EUC-JP on Unix,  CJK locales on Windows).
basename() and dirname() could truncate their results when Unicode chars were used (usually in a CJK locale).
getWinProgressBar() returned an integer result -- it now  returns a double value.  
o basename() and dirname() could truncate their results when Unicode chars were used (usually in a CJK locale).
getWinProgressBar() returned an integer result -- it now returns a double value.
o basename() and dirname() could truncate their results when Unicode chars were used (usually in a CJK locale).
pdf() and postscript() were not working correctly with UTF-8 encoded data in a non-UTF-8 MBCS (e.g. CJK locales on Windows).
influence.measures(<glm-object>) now computes the same Cook's distance approximations as cooks.distance().
plot(<glm>, which=5) uses more correct cook's distance contours; (fix to fix to PR#9316).
validObject called with complete=TRUE did not use inherited validity methods for slot classes.
several bugs fixed in as(): the initial method lookup was not using the table with inherited methods (so inheritance had to be recomputed each time); coerce() should not be called directly--it can insert invalid inherited methods; the constructed as() methods were not retaining the function's environment.
getWinProgressBar() returned an integer result -- it now returns a double value.
A missing PROTECT could cause segfaults in if() if coercion of the condition was required or a warning was to be given.
getWinProgressBar() returned an integer result -- it now returns a double value.
A missing PROTECT could cause segfaults on string comparisons. (PR#11421)
str(structure(1, classID = "Pooh")) now works fine.
The DESCRIPTION file of a package can specify an 'OS_type' field as either 'unix' or 'windows' to confine installation to that OS type.
QuartzThe Mac OS quartz() device draws contiguous lines much faster.
R CMD check checks for possible check directories in the sources -- in mid-2008 there were about 20 examples on CRAN.
file.path() did not work correctly in 2.7.0 if the components  had  different encodings.
is() was wrong for some S3 class objects with class forof length  greater than one.
undoc() / codoc() where not checking all S4 methods in some cases.
R CMD build tries harder to clean up the inst/doc directory from the remnants of earlier builds.
It also removes any directories with extension .Rcheck.
Use of strwidth/height(units="user") (the default) is again an error before a user coordinate system has been set on the device, rather than giving nonsensical values (the effect of r31367).
Rare string width calculations in package grid were not interpreting the string encoding correctly.
is() was wrong for some S3 class objects with multi-string classclass for length  greater than one.
Use of textConnection(NULL, mode="w") could segfault.
A field containing just a sign is no longer regarded as numeric (it was on all platforms in 2.7.0, but not on most in earlier versions of R).
CITATION files are now read in Latin-1: quite a few were failing if used in a multibyte locale such as UTF-8.
Quartz draws contiguous lines much faster.
is() was wrong for some S3 class objects with multi-string class.
undoc() / codoc() where not checking all S4 methods in some cases.
Because of a typo, 'pointsize' in png(type="cairo") etc (and jpeg,  bmp, tiff) devices was being interpreted in pixels not bigpoints.
Rgui now accepts Unicode characters invalid in the locale when pasted in and converts them to \uxxxx sequences before passing to R.
The Save as | Postscript ... file selection box now offers *.eps (default) and *.ps file selections.
Rgui now accepts Unicode characters invalid in the locale when
 pasted in and converts them to \uxxxx sequences before passing
 to R.
Because of a typo, 'pointsize' in png(type="cairo") etc devices was being interpreted in pixels not bigpoints.
Quartz draws contiguous lines much faster
The use of embedded nuls in character strings is deprecated: They will no longer be allowed in R 2.8.0.
merge() failed if there were no common columns and one of the inputs had zero rows.
expand.grid() failed if an input had length 0.
match() does again truncate strings at embedded nuls (as newly documented in 2.7.0).
The vertical scrollbar on the data editor/viewer now works when scrolling beyond 65535 rows. (PR#11291)
Under certain rare circumstances the parser could accept
 invalid UTF-8 quoted strings.
The parser sometimes accepted invalid quoted strings in a UTF-8 locale.
file.path() did not work correctly if the components had different encodings.
plot.default(x, y) now should correctly dispatchdispatches to Axis() methods  whether  y is NULL or not.
On Mac OS X, the Cocoa Quartz window could close without warning  under certain  circumstances (specific autorelease pool flush).
Rgui now accepts Unicode characters invalid in the locale when pasted in and converts them to \uxxxx sequences before passing to R.
Sys.getenv() could read incorrectly non-ASCII values.
poly() has additional checks against user error (as in PR#11243).
The C macro 'allocString' is deprecated -- use 'mkChar',
 or 'allocVector' directly if really necessary.
plot.default(x, y) now should correctly dispatch to Axis() methods whether y is NULL or not.
Plotting symbols with separate border and fill colours (e.g., plot(pch = 21)) now works with transparent 'col', but opaque or semi-transparent 'bg'. Previously, if 'col' was transparent then 'bg' was ignored and nothing was drawn.
list.files() gains a 'ignore.case' argument, to allow case-insensitive matching on some Windows/MacOS file systems.
tools::texi2dvi() has a new argument 'texinputs' to allow the TeX and bibtex input paths to be specified (even on MiKTeX).
dev.copy2pdf() gains an 'out.type' argument to allow it to be used with cairo_pdf() or quartz(type = "pdf").
The use of unserialize() on character strings is deprecated: that was a format used in R < 2.4.0.
The C macro 'allocString' is deprecated -- use 'mkChar', or 'allocVector' directly if really necessary.
R CMD build tries harder to clean up the inst/doc directory from the remnants of earlier builds.
Encoding<- on NA_character_ converted it to "NA".
Adobe Symbol was missing from the encodings in tools::charset_to_Encoding.
diag(matrix(x, 0, 0)) now returns a 0-length vector of the correct mode, instead of always numeric.
Under certain rare circumstances the parser could accept invalid UTF-8 quoted strings.
Cocoa Quartz window could close without warning under certain circumstances (specific autorelease pool flush).
The C macro 'allocString' will be removed in 2.8.0 -- use 'mkChar', or 'allocVector' directly if really necessary.
load() again reads correctly character strings with embedded nuls. (This was broken in 2.6.x, but worked in earlier versions.)
Collating (e.g. <) and sorting is done in UTF-8 where one of  the items is in UTF-8. It seems that MSVCRT's collation  order can be different in widechar and in ASCII, so this  can lead to inconsistencies.
The size of the Rgui buffer is now set in characters not bytes (the difference only matters in CJK locales), but for backwards compatibility the entry in Rconsole is still called 'bufbytes'. The default has been increased to 250,000 chars (0.5Mb).
dbeta(.., ncp) is now more accurate for large ncp, and typically no longer underflows for give.log = TRUE.
determinant(matrix(,0,0)) now returns a correct "det" result; also value 1 or 0 depending on 'logarithm', rather than numeric(0).
