		Windows-specific changes to R
		=============================

See the file NEWS for changes that affect all versions of R.


rw1022
======

The long-running saga of importing R metafiles into Word is over;
lines are now visible in screen previews in Word.  It was necessary to
use `geometric' rather than `cosmetic' pens to achieve scalable line
widths in metafiles: Word was failing to show lines drawn with
`cosmetic' pens.

bringToTop() now works with MDI child windows as well as SDI windows.

Rcmd build/check use a different check for a directory, to work around
a bug in (some versions of) Windows Perl.

The datetime code has been modified to work around a problem reported
on a Win98 machine which caused times to be reported in GMT.  (This
seems a bug in a particular version of msvcrt.dll and few machines
were affected.)  A side-effect of the changes is that the timezone
names reported are usually more sensible (but sometimes less).

File etc/Makeconf-tests was missing from rw102Xsp.zip.

Rcmd SHLIB now supports compilation from C++ sources.

Rterm now saves and resets the console window title.

On Win2k, system(intern=TRUE) was failing to reset stderr to the console.



rw1021
======

Pipe connections now work under RGui and embedded R.dll, although
slower than under Rterm, and as they run with no stdin or stdout to
inherit what you can do with them is limited.  They work better for
reading than writing.

The installer will no longer crash trying to install addons with a
long PATH and R_HOME not set.  Similarly, Rcmd accepts long paths.

Using Rcmd INSTALL with an incorrect path specification ending in \ no
longer runs amok.

Internal pager no longer fails when given a file of one line and no
line ending.

Hyperlinks to other packages in CHTML files launched by help() will
now work irrespective of the working directory (but like HTML, only
to packages in the same library).  The .chm files do need to be
re-built under this version.

help(, winhelp=TRUE) will now find alias topics as well as main items.

Hitting the total memory allocation limit set by --max-mem-size will
give a warning (and will usually also lead to an error, and that may
suppress printing out the warning).

There is a new make target test-Reg to run the regression tests (which
now do I/0, so might give different results on Windows).

Rcmd build with the latest tar.exe will exclude files as intended.

There are further improvements in the GUI console receiving output
(e.g. from tcltk interactive functions) during input.  If you can,
arrange to send output in a single piece, or at least a whole line at
a time (although partial lines will now work).  For example, don't use
print() but capture the output in a text connection and use something
like cat(paste(outlines, "", collapse="\n)) to output a single string.

The initial rescaling is no longer done for windows(rescale="fixed"),
and the scrollbars in that mode are more responsive but move the
viewport 20 pixels at a time.



rw1020
======

This version has been compiled against msvcrt.dll not crtdll.dll.
This gives small speed increases and generally more accurate results.
Packages compiled against crtdll.dll will still work (as far as we are
aware), but for best results should be re-compiled.  (A few packages
need to be re-compiled for 1.2.0 on all platforms, and any that used
malloc directly need to be recompiled on this one.)


This release has a number of changes to bring its behaviour closer to that 
of Unix versions of R.

-   The default font for graphics on windows(), win.printer() and
    win.metafile() devices is now Arial: the font numbers for the
    Times New Roman and Arial families have been interchanged.

-   The history is only saved when the workspace is (to be compatible with
    Unix versions of R) and whether it is restored is controlled by
    option --no-restore-history (implied by --no-restore and --vanilla):
    the default remains to restore.

-   Environment variables R_HISTFILE and R_HISTSIZE can be set to specify
    the name of the commands history file (default .Rhistory)
    and its maximum size (in lines, default 512).

-   More locale support is now enabled where supported by the version of
    Windows in use.  It means that sorting and comparison of character
    strings will be locale-specific.  You may not want this (the sort
    order in `English_United Kingdom' is aAbB..., for example) and
    setting Sys.setlocale("LC_COLLATE", "C") should give the previous
    behaviour.  Further, users of Windows 9x/ME should be able to use
    their native character set for the names of R objects (as NT/2000
    users always have: this is caused by the change to msvcrt.dll).
    (For the benefit of those used to Unix, LC_ALL can be set in the
    environment, although this is not usually supported by Windows,
    and setting individual LC_* such as LC_COLLATE will also work.)

-   It is possible to make DVI and HTML versions of the manuals: 
    see file INSTALL in the source distribution.

-   New utility Rcmd.exe to emulate R CMD : see below.

-   unlink() now works the same way on Windows and Unix.  Thus on
    Windows it no longer deletes empty directories, but has a new
    argument recursive=TRUE to delete directories (empty or not).

-   The startup code looks for .Renviron, a file pointed to by
    environment variable R_ENVIRON and then .Renviron in the home
    directory.  This file can contain lines of the forms NAME=value
    and NAME=${NAME1-value} to take the value of NAME1 if set (and not
    empty), otherwise `value'.

-   make check no longer makes R, just runs the tests (as make test
    always has).  Tests are run in the C locale.


Gui changes
-----------

-   There are new console menu items `Load History' on the File menu and
    `Clear console' on the Edit menu. (The current line is not cleared.)

-   The menu items `Load/Save Image' are now called `Load/Save Workspace'.

-   The Print menu item on the File menu of a console or pager now prints
    the selection if there is one, and the whole (saved) contents otherwise.

-   There is a new `Save to File' item on the File menu of a console or
    pager which saves the selection if there is one, and the whole
    (saved) contents otherwise.

-   The Rgui console now uses the same history mechanism as Rterm. The
    history limit is now just on the number of lines (rather than on the
    number of lines and the total size).  The mechanism has been altered
    so that Rterm records repeated lines (as Rgui always did).

-   There are some additional command-line editing commands in Rgui: see
    the Help | Console information screen.  (There is also one
    addition, ^W, in Rterm: see README.rterm.)

-   Selection works slightly differently: if the selection extends beyond
    the last character on the line the (invisible) CRLF is made part of
    the selection, but not if only up to the last character is selected.

-   The data editor is no longer modal (which seems not to have worked
    properly in the GraphApp toolkit) and this allows its popups to be
    modal.

-   The size of the console scroll buffer can be set in file Rconsole,
    and resized (upwards) via the GUI preferences editor.

-   The GUI console copes much better with receiving output (e.g. from
    tcltk interactive functions) during input.



New utilities for preparing packages
------------------------------------

    There are several new utilities in the rw1020sp.zip distribution.

    The utilities Rd2dvi.sh Rd2txt Rdconv Rdindex Sd2Rd are no longer
    batch files but accessed through a new front-end Rcmd.exe, so if this
    is in your path (otherwise use ...\rw1020\bin\Rcmd) you can use

	Rcmd Rd2dvi.sh [options] files
	Rcmd Rd2txt              file
	Rcmd Rdconv    [options] file
	Rcmd Rdindex   [options] files
	Rcmd Sd2Rd     [options] file

    There are new utilities INSTALL, REMOVE, SHLIB which can be used
    to install a source package, remove a package and make a DLL, and
    implementations of the Unix R utilities BATCH, build and
    check. Invoke these by

	Rcmd INSTALL [options] pkgdir(s)
	Rcmd REMOVE  [options] pkg(s)
	Rcmd SHLIB   [options] file(s)
	Rcmd build   [options] pkgdir(s)
	Rcmd check   [options] pkgdir(s)
	Rcmd BATCH   [options] infile [outfile]

    Use option --help with any of these for fuller details.


The default for options("papersize") is set according to the locale,
and so might be set to "letter" under US or Canadian versions of
Windows.

Rterm in interactive use sets the title of the window it is running
in, and unsets it when it terminates.

The Windows memory manager proved to be (far) too slow to work with
the new generational garbage collector, so it has been replaced.  The
current memory manager rarely releases memory back to Windows (but
reuses memory very efficiently) so total memory usage will often grow
slowly over the course of a session.  Memory used for transient large
objects will normally be returned at garbage collection.  (Once memory
usage has gone over the 256Mb of address space that is initially
reserved, it is unlikely to be reduced much, but the allocated memory
will be reused.)  You can compile R to use the Windows memory manager
if you need to.

New function memory.size() showing the amount of memory currently in
use or the maximum that has been used.

New command-line option --max-mem-size to set the maximum memory
allocation: it has a minimum allowed value of 10M.  This is intended
to catch attempts to allocate excessive amounts of memory which may
cause other processes to run out of resources.  The default is the
smaller of the amount of physical RAM in the machine and 256Mb.

DLLs for packages (including standard packages supplied with R)
automatically gain version information when compiled under this
version.  (Use the Version tab on the Properties dialog box to see it,
or the new function DLL.version() within R.)

Windows (.hlp) help files now have hyperlinks to other objects within
the same package.

The windows() graphics device has a new argument `record' to set the
initial state of the recording flag, and this defaults to the setting
of the option "graphics.record" (and that defaults to FALSE).

The windows() graphics device has new options for what happens when it
is resized, which can be set from the command line of from the menu.
See ?windows for details.

New function bringToTop() to bring a graphics window to the top of the
windows stack (useful from menu actions, ...).

If the options setting for a pager or editor (or the editor argument
to edit.default) is a path containing a space, it is automatically
quoted if not already quoted.

The range of allowed text sizes in a windows/win.print device has been
increased, so smaller values of cex will work.  (The smallest allowed
text size is 2pt not 8pt.)

Interactive use of Rterm.exe on Windows 2000 systems is now possible 
(including under ESS).

Better rendering of wide (lwd > 1) and dashed (lty != "solid") lines
on the windows/win.print device.

The installer rwinst.exe when first asked to install a package tries
to find a current installation of R, first from R_HOME if set in the
environment, then from the PATH (it looks for ...\rw1020\bin).

make pkgcheck-foo will unzip zipped example files if needed.



rw1011
======

New file README.Rterm providing basic documentation on Rterm.exe.

undoc() is now available under Windows.

There is a new script R_HOME/bin/build.sh, a version of R CMD build.
You will need R_HOME set as an environment variable to use it, and you
will need the full set of tools from tools.zip (see readme.packages)
in your path.

The batch wrappers to Perl files Rdconv.bat Rdindex.bat Rd2txt.bat
Sd2Rd.bat have been revised to work on more Perl/OS versions.

Setting cell widths from the menu in the data editor now works reliably.

Having an empty line at the beginning of .Rhistory no longer breaks the
history-recall mechanism in Rgui.

Characters using the AltGr key now work in interactive use of Rterm.
(AltGr used to work like Alt.)

Ctrl+V now works as described in a pager (pasting to the console).

Other versions of Tcl/Tk may be used by setting TCL_VERSION in 
MkRules (but only 8.31 and 8.32 have been tested).

A file Makevars.win in the src directory of a package will be used in
preference to a file Makevars.

The Makefiles for packages now allow C++ code (with extension .cc or
.cpp or .C) in the src directory.

If you use a private library and HTML help, you need to copy R.css
from rw1011\library to each private library directory.

Function win.version() should give slightly more information (the
latest service pack number x.y) on Windows 2000.



rw1010
======

There is now a GUI preferences editor on the Edit menu in Rgui.

A data entry editor is now implemented.  This is similar to the Unix
one (see ?dataentry: that has itself been considerably enhanced in
parallel with the Windows version) with the additional features that
double-clicking in a cell turns it into an editable field (entered as
a new value by navigating away from the cell), and there is a
right-click popup menu.

Rterm will now load and save the commands history (as Rgui does).
There is a new item on the File menu in Rgui to save the commands
history at that point in a session, and a new function savehistory()
(only applicable in Rgui and Rterm).

Colours in Rconsole can be specified as "Windows" and will be taken 
from the current Windows colour scheme. (The preferences editor will
save the actual colour, though.)

The placement of multiple pagers is now `random' (so they will not
always appear in the exact centre of the screen) and under the MDI
interface the pager rows and columns settings are now used.

The postscript() device can now spool plots to a printer. You will
need a suitable program to send a file to the spooler (or even to send
it to ghostscript to interpret PostScript for the printer): the RedMon
suite available from http://www.cs.wisc.edu/~ghost/rjl.html and
GhostScript distribution sites should provide suitable tools.  See
?postscript for further details.

The new xfig() device can be used, and a port of xfig to Windows (with
an X server and the Cygwin B20.1 environment and X11R6.4 installed) is at
ftp.franken.de:/pub/win32/develop/gnuwin32/cygwin/porters/Humblet_Pierre_A/B20
as  xfig-3.2.2-cygwin-b20.1-bin.tar.gz.

The R DLL and executables now contain standard Windows version
information, which will appear on a Version tab of the Properties
dialog box in Explorer.

The internal unzip and the installer now use unzip5.41, not unzip5.40, and
the DLL interface is incompatible.

There are changes in the tools needed to build R (see the file INSTALL)
and those recommended for building packages from source (see the file
readme.packages).

New makefile target zipdata-% to zip up data directories in packages.

If there is a file `Makefile.win' in a package src directory this
will be used rather than MakePkgs (and the tcltk package provides
an example).

There is an example package `windlgs' in the package sources
distribution that shows how to use graphapp to build dialog boxes to
be called from menus, with a worked example of a t test done in three
ways.  More details of graphapp, including a tutorial and a reference
manual, are at http://www.cs.usyd.edu.au/~loki/graphapp.

Optional support for the Tcl/Tk interface.  To use this you need to
install tcl831.exe from dev.scriptics.com, and you will need the Tcl
and Tk dlls in your path.  Also, you need to set the environment
variable TCL_LIBRARY, to something like c:/Program Files/Tcl/lib/tcl8.3.
The demos(tk*) will work on Windows.

The R mathematical functions can now be built as a DLL for use
with your own C programs.  See  src/nmath/standalone/README in the
sources.

Rdconv.bat no longer depends on having a Unix-compatible `cat' program
in your path.

A long-standing bug in the (vertical) alignment of symbols in plotmath
has been corrected.

Pagers should no longer flash when launched.

Launching a pager or data editor or graphics window now brings it
to the front, even from Rterm.exe. (Not for Tcl/Tk windows, unfortunately.)

Failure to load a DLL with dyn.load now gives extended error information.



rw1001
======

The installer, rwinst.exe, now checks for ZIP files as well as zip files,
as some browsers manage to map filenames to uppercase.

There are batch files  Rd2txt.bat Rdconv.bat Rdindex.bat Sd2Rd.bat
which are the equivalent of the Unix `R CMD foo' utilities mentioned in
`Writing R Extensions'.  To use these you must have R_HOME set as an
environment variable (using the form P:/R/rw1001).  There is also a
shell script Rd2dvi.sh which you can use if you have sh.exe (as
used to compile packages) and latex etc. The environment variable
XDVI sets the previewer, defaulting to xdvi.bat.

A file `Makevars' in the `src' directory of a package can be used to
add to/override the MakeDll makefile used to make foo.dll, as on Unix.
(See `Creating shared libraries', section 3.4 of `Writing R Extensions'.)

Under rare conditions (lots of very short input lines) the history buffer
could overrun and so cause crashes. This has been possible since rw0623,
but first caused reported problems in rw1000 and has now been fixed.

Certain HP printer drivers (e.g. the 6/6MP-Postscript driver) reset the
FPU and so were causing crashes.  This has been circumvented in this
version by restoring the settings before and after each page.

Building on a non-default drive should be more reliable, as Perl is
used to find the current drive.


    -------------------------------------------------------------------

	For changes prior to the release of R 1.0.0 on 29 Feb 2000
	see the file CHANGES0 in the source distribution.
