[Rd] Progress report on 64-bit builds under Windows

Prof Brian Ripley ripley at stats.ox.ac.uk
Mon Jul 16 10:48:16 CEST 2007


We have been asked for a couple of years about builds of R for 
64-bit Windows, e.g. at UserR 2006.  Users of 64-bit Windows still 
seem very thin on the ground, but apparently

   'Microsoft scraps 32-bit operating systems

   Microsoft has announced that Windows Server 2008 will be the last 32-bit
   system it releases, for servers or clients, as it makes its way fully
   into the world of 64-bit computing.'

(http://www.pcpro.co.uk/news/113114/microsoft-scraps-32bit-operating-systems.html)

I've not heard recently of any programmeR working on such a build.

I have Vista 64 on my current Windows desktop, intending it to be my main 
Windows platform (the machine also has Windows XP).  With the current 
Rtools.exe I am successfully doing R development on it (e.g. the only 
CRAN package that I can install under XP but not Vista 64 is RSQLite, an 
internal problem in dlltool).

A 64-bit version of R could be just a sub-architecture: only the binaries 
in R_HOME/bin and DLLs in R_HOME/modules and library/*/libs need to be 
different.  So in an ideal world we would be able to distribute binary 
packages that supported both 32- and 64-bit builds, and to build those on 
a single OS via 32/64-bit cross-compilers.  Quite a number of packages 
need support software of course: one of those is Tcl/Tk. (That is built 
using VC++, so presumably could be built using a 64-bit edition of VC++: 
see below.  Similarly iconv.dll.)


1) The good news is that under Vista 64 you get a 4GB address space for 
the current builds of R, rather than 2GB for most 32-bit versions of 
Windows, or 3GB if the /3GB switch was used.  So there is a worthwhile 
gain in using a 64-bit OS even with a 32-bit build of R.


2) To make a 64-bit build of R we need a 64-bit toolchain.  Kai Tietz has 
been working on versions of gcc and binutils, see

http://www.nabble.com/64-bit-MinGW-on-64-bit-Windows-XP-tf4012895.html

This is essentially a cross-compiler running under Cygwin.  I didn't 
succeed in getting that to build, but did build a cross-compiler chain 
under x86_64 Linux and built simple C programs that run correctly.  This 
enabled me to try building R.  There were several problems:

- most Fortran programs give an ICE (internal compiler error).
- importing a variable from a DLL gives an ICE.
- a couple of modules gave ICEs if optimization was used.
- the headers have many problems, with broken attempts at inlining and
   missing declarations.
- R itself will need some changes, as on Win64 'long' is 32-bit and cannot
   store a pointer.

Given that the toolchain is a one-man effort, I do not see these getting 
resolved soon.


3) An alternative is to use a non-GNU toolchain, e.g. from Microsoft, 
Intel or PGI (formerly Portland).  There seems no longer to be a Fortran 
compiler compatible with Microsoft Visual Studio (formerly from 
DEC/Compaq/HP), but Intel and PGI have Fortran compilers, at a price.
Someone from Microsoft reported that he had built a 64-bit version of R, 
but gave an invalid return address and we have not been able to find out 
how he did it.

There is a free (but not Free) version of Visual Studio 2005 that is said 
to be 32-bit only, but I have discovered that the free Vista Platform SDK 
contains a 64-bit toolchain.  (I have full Visual Studio 2005, which has 
64-bit and 64-bit on 32-bit and v.v. cross-compilers.)  So I believe it 
should be possible to build a 64-bit version of R using Microsoft 
compilers and f2c, and may try to do so over the summer.


Is there anyone working on (or interested in working on) these issue?

-- 
Brian D. Ripley,                  ripley at stats.ox.ac.uk
Professor of Applied Statistics,  http://www.stats.ox.ac.uk/~ripley/
University of Oxford,             Tel:  +44 1865 272861 (self)
1 South Parks Road,                     +44 1865 272866 (PA)
Oxford OX1 3TG, UK                Fax:  +44 1865 272595



More information about the R-devel mailing list