This blog is updated daily.
A general description is here.
The default graphics devices in interactive and non-interactive sessions are now configurable via environment variables R_INTERACTIVE_DEVICE and R_DEFAULT_DEVICE respectively.
New function dev.new() to launch a new copy of the default graphics device (and taking care if it is "pdf" or "postscript" not to trample on the file of an already running copy).
New function dev.copy2pdf(), the analogue of dev.copy2eps().
dev.interactive() no longer treats a graphics device as interactive if it has a display list (but devices can still register themselves on the list of interactive devices).
The X11() and windows() graphics devices have a new argument 'title' to set the window title.
X11() now has the defaults for all of its arguments set by the new function X11.options(), inter alia replacing options "gamma", "colortype" and "X11fonts".
ps.options() now warns on unused option 'append'.
xfig() no longer takes default arguments from ps.options(). (This was not documented prior to 2.6.1 patched.)
pdf() now takes defaults from the new function pdf.options() rather that from ps.options() (and the latter was not documented prior to 2.6.1 patched).
The defaults for all arguments other than 'file' in postscript() and pdf() can now be set by ps.options() or pdf.options()
New functions setEPS() and setPS() as wrappers to ps.options() to set appropriate defaults for figures for inclusion in other documents and for spooling to a printer respectively.
The meaning of numeric 'pch' has been extended where MBCSes are supported. Now negative integer values indicate Unicode points, integer values in 32-127 represent ASCII characters, and 128-255 are valid only in single-byte locales. (Previously what happened with negative pch values was undocumented: they were replaced by the current setting of par("pch").)
Graphics devices can say if they can rotate text well (e.g. postscript() and PDF() can) and if so the device's native text becomes the default for contour labels rather than using Hershey fonts.
The setting of the line spacing (par("cra")[2]) on the X11() and windows() devices is now comparable with postscript() etc, and roughly 20% smaller than before (it used to depend on the locale for X11). (So is the pictex() device, now 20% larger.) This affects the margin size in plots, and should result in better-looking plots.
There is a per-device setting for whether new frames need confirmation. This is controlled by either par("ask") or grid.prompt() and affects all subsequent plots on the device using base or grid graphics.
There is a new version of the X11() device based on cairo graphics which is selected by type = "cairo", and is available on machines with cairo installed and preferably pango (which most machines with gtk+ >= 2.8 will have). This version supports translucent colours and normally does a better job of font selection so it has been possible to display (e.g.) English, Polish, Russian and Japanese text on a single X11() window. It is the default where available.
There is a companion function, savePlot(), to save the current plot to a PNG file.
On Unix-alikes, devices jpeg() and png() also accept type = "cairo", and with that option do not need a running X server. The meaning of capabilities("jpeg") and capabilities("png") has changed to reflect this. On MacOS X, there is a further type = "quartz". The default type is selected by the new option "bitmapType", and is "quartz" or "cairo" where available.
Where cairo is supported, there is a svg() device to write SVG files, and cairo_pdf() and cairo_ps() devices to write (possibly bitmap) PDF and postscript files via cairo.
Some features require cairo >= 1.2, and some which are nominally supported under 1.2 seem to need 1.4 to work correctly.
There are new bmp() and tiff() devices.
New function devSize() to report the size of the current graphics device surface (in inches or device units). This gives the same information as par("din"), but independent of the graphics subsystem.
New base graphics function clip() to set the clipping region (in user coordinates).
New functions grconvertX() and grconvertY() to convert between coordinate systems in base graphics.
identify() recycles its 'labels' argument if necessary.
stripchart() is now a generic function, with default and formula methods defined. Additional graphics parameters may be included in the call. Formula handling is now similar to boxplot().
strwidth() and strheight() gain 'font' and 'vfont' arguments and accept in-line pars such as 'family' in the same way as text() does. (PR#776)
example(ask=TRUE) now applies to grid graphics (e.g. from lattice) as well as to base graphics.
option("device.ask.default") replaces "par.ask.default" now it applies also to grid.prompt().
plot.formula() only prompts between plots for interactive devices (it used to prompt for all devices).
Most users of the X11() device will see a new device that has different fonts, anti-aliasing of lines and fonts, and supports semi-transparent colours.
Considerable efforts have been made to make the default output from graphics devices as similar as possible (and in particular close to that from postscript/pdf). Many devices were misinterpreting 'pointsize' in some ways, for example as being in device units (pixels) rather than in points.
identify() recycles its 'labels' argument if necessary.
stripchart() is now a generic function, with default and
formula methods defined. Additional graphics parameters may
be included in the call. Formula handling is now
similar to boxplot().
ps.options() now warns on unused option 'append'.
xfig() no longer takes default arguments from ps.options(). (This was not documented prior to 2.6.1 patched.)
pdf() now takes defaults from the new function pdf.options() rather that from ps.options() (and the latter was not documented prior to 2.6.1 patched).
The defaults for all arguments other than 'file' in postscript() and pdf() can now be set by ps.options() or pdf.options()
New functions setEPS() and setPS() as wrappers to ps.options()
to set appropriate defaults for figures for inclusion in other
documents and for spooling to a printer respectively.
The default graphics devices in interactive and
non-interactive sessions are now configurable via environment
variables R_INTERACTIVE_DEVICE and R_DEFAULT_DEVICE
respectively.
New function dev.new() to launch a new copy of the default
graphics device (and taking care if it is "pdf" or
"postscript" not to trample on the file of an already running
copy).
New function dev.copy2pdf(), the analogue of dev.copy2eps().
dev.interactive() no longer treats a graphics device as
interactive if it has a display list (but devices can still
register themselves on the list of interactive devices).
plot.formula() only prompts between plots for interactive
devices (it used to prompt for all devices).
The X11() and windows() graphics devices have a new argument
'title' to set the window title.
X11() now has the defaults for all of its arguments set by the
new function X11.options(), inter alia replacing options
"gamma", "colortype" and "X11fonts".
The meaning of numeric 'pch' has been extended where MBCSes are
supported. Now negative integer values indicate Unicode
points, integer values in 32-127 represent ASCII characters,
and 128-255 are valid only in single-byte locales.
(Previously what happened with negative pch values was
undocumented: they were replaced by the current setting of
par("pch").)
Graphics devices can say if they can rotate text well
(e.g. postscript() and PDF() can) and if so the device's
native text becomes the default for contour labels rather than
using Hershey fonts.
strwidth() and strheight() gain 'font' and 'vfont' arguments and
accept in-line pars such as 'family' in the same way as text()
does. (PR#776)
The setting of the line spacing (par("cra")[2]) on the X11() and
windows() device is now comparable with postscript() etc, and
roughly 20% smaller than before (it used to depend on the
locale for X11). (So is the pictex() device, now 20% larger.)
This affects the margin size in plots, and should result in
better-looking plots.
There is a per-device setting for whether new frames need
confirmation. This is controlled by either par("ask") or
grid.prompt() and affects all subsequent plots on the device
using base or grid graphics.
example(ask=TRUE) now applies to grid graphics (e.g. from
lattice) as well as to base graphics.
option("device.ask.default") replaces "par.ask.default" now it
applies also to grid.prompt().
There is a new version of the X11() device based on cairo
graphics which is selected by type = "cairo", and is available
on machines with cairo installed and preferably pango (which
most machines with gtk+ >= 2.8 will have). This version
supports translucent colours and normally does a better job of
font selection so it has been possible to display (e.g.)
English, Polish, Russian and Japanese text on a single X11()
window.
There is a companion function, savePlot(), to save the current plot to a PNG file.
On Unix-alikes, devices jpeg() and png() also accept type = "cairo", and with that option do not need a running X server. The meaning of capabilities("jpeg") and capabilities("png") has changed to reflect this. On MacOS X, there is a further type = "quartz" -- the default type is selected by the new option "bitmapType".
Where cairo is supported, there is a svg() device to write SVG files, and cairo_pdf() and cairo_ps() to write (possibly bitmap) PDF and postscript files via cairo.
Some features require cairo >= 1.2, and some which are nominally supported under 1.2 seem to need 1.4 to work correctly.
There are new bmp() and tiff() devices.
New function devSize() to report the size of the current
graphics device surface (in inches or device units). This
gives the same information as par("din"), but independent of
the graphics subsystem.
New graphics function clip() to set the clipping region (in
user coordinates).
New functions grconvertX() and grconvertY() to convert between
coordinate systems in base graphics.
Creating new S4 class and method definitions in an environment that could not be identified (as package, namespace or global) previously generated an error. It now results in creating and using an artificial package name from the current date/time, with a warning. See ?getPackageName.
The S4 pseudo-class "single" has been removed. ["double" will follow shortly: the S4 class for a REALSXP is "numeric"is deprecated, but remains until a bug in the Matrix package is fixed.]
coerce() is now a proper S4 object and so prints correctly.
@ now checks it is being applied to an S4 object, and if not gives a warning (which will become an error in 2.8.0).