A new port of R to MS Windows on CRAN
Friedrich.Leisch at ci.tuwien.ac.at
Thu Mar 26 14:59:46 CET 1998
I've included Guido Masarotto's port of R 0.61.1 to MS Windows 95/NT
in $CRAN/bin/ms-windows-32 ... you can find both the sources and
I include Guido's README below.
Thanks again to Guido for making this port available!
rgnwbin.tgz and rgnwsrc.tgz are the first results of an attempt to
build R for Win95 and WinNT using egcs-mingw32.
The advantages over the binaries for MsWindows that can be found in CRAN
1. R seems to run faster. Some simple (perhaps too simple)
benchmarks point to a 20% gain.
2. The port is based on a more recent version (0.61.1) and it is more
complete (more "system calls": system, tempfile, unlink,
WinExec - to launch applications without waiting for the result;
support for the standard help system: try help(), help(abline),
help(line,eda), ?women, data(), library())
3. A new menu item "Stop current computation" make possible
to interupt long computation (but only when something is printed).
4. Since egcs-mingw32 uses the standard C calling convention,
you don't need a Watcom compiler to build dynamic link libraries.
Indeed, this was my original motivation.
5. It should be easy to use some other gnu-win32 compilers (maybe
running on a non MsWindows machine). It should be easy to
adapt the port to lcc-win32, too.
But remember: this is experimental code so
USE IT AT YOUR RISK
Just unpack rgwnbin.tgz somewhere.
The executable is R.GNW\bin\R.exe. This binary distribution
includes only the standard packages (base+eda+mva+stepfun).
This is an add-on to the R-0.61.1 distribution.
So unpack R-0.61.1.tar.gz somewhere.
Then, from the same directory, unpack rgwnsrc.tgz.
To rebuild the system, go to R-0.61.1/src/gnuwin32.
should build the standard stuff.
To add a new package, you should
a) download it;
b) unpack it in the R-0.61.1/src directory.
c) go to the R-0.61.1/src/gnuwin32 directory and type
> make pkg-xxx
where xxx is the name of the package.
You should get the directory R-0.61.1/library/xxx
and its subdirectory R/ (the r-code) data/ (the
data of the package) R/libs (the dynamic link library) and
the support for the help system (INDEX, TITLE, an updated
LibIndex). Of course, the data and libs subdirectory
can be missing.
d) if you want the documentation, you can download
the preformatted one.Then unpack it in the R-0.61.1
(not in the R-0.61.1/src) directory. If you don't need
the LaTeX files, remove them.
(1) Of course, you need a compiler. As I have said I used
the egcs-mingw32 one:
(2) You must also have a GNU make and some standard unix
command (ls,cat,sed,rm). Furthemore, make and this
command must be able to overcome the MsDOS limitation
about the length of a command.
I used the ones coming with the djgpp compiler.
According to me, they are the best version for dos and
windows. You can find it in any SIMTEL mirror.
If you want, I can make available a small file with
only the needed tools.
(3) The gnuwin32/Makefile use the g77 Fortran compiler.
If you don't have it, or if you don't want to use it,
you can use something like
> make HAVEG77=NO
> make HAVEG77=NO pkg-xxx
For example, the g77 compiler in egcs-mingw32 was
not able to compile the fortran code in the acepack package.
However, I was able to build this package with the command
> make HAVEG77=NO pkg-acepack
(4) When installing a package, if in R-0.61.1/src/library/xxx/R
exist a file with name yyy.gnw then this file is used
and files with name yyy or yyy.somethingelse are
ignored. In this way, you can configure the R code
of the package. An example is the base/R/system.gnw
(5) This is not a developer's distribution. For example, dependences
are written in a silly way. Furthemore, all the code
in src/appl/, src/appl-f,..... is compiled.
No use of the original Makefile is done.
Hence, you have to start from a cleaned distribution.
BUGS and TODO
(0) The English of this README.
(1) If you exit from the edit windows and this is empty you get a
segmentation fault. This happens also on my Linux box. So,
it seem to be a general problem.
(2) The dll's are statically linked with the other R code.
So they get support for the routines that they need.
In this way, they work but are big. We should have
a large R.dll with all the standard code. Then
the executable and the dll's should simply import
(3) Try and adapt this port to other win32 compiler.
It should be easy. So, why don't try?
(4) The system command does not work if the command to be
execute require some user interaction. It is just a
"simulated reading pipe for a broken OS".
(5) I inserted an event loop at the beginning of the
function which print to the console. In this way,
you can interupt the computation or, for example,
give the focus to the graphics window.
But only when you print. A call to the event loop
must be inserted inside the "main" code.
But, for the moment, I decided to leave the "main"
(6) When building package xxx, all the C and Fortran files
found in library/xxx/src (or library/xxx/src-c if
you don't have the g77 compiler) are compiled
and putted in a dll. On the contrary, we have to make
use of the original Makefile.
(7) The Windows code must be cleaned.
guido masarotto 22 marzo 1998
guido at sirio.stat.unipd.it
r-announce mailing list -- Read http://www.ci.tuwien.ac.at/~hornik/R/R-FAQ.html
Send "info", "help", or "[un]subscribe"
(in the "body", not the subject !) To: r-announce-request at stat.math.ethz.ch
More information about the R-announce