This blog is updated daily.
A general description is here.
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)
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'.