Recent developments in CXXR are to be found at github.com/cxxr-devel/cxxr; see also the discussion group at groups.google.com/d/forum/cxxr-devel. The material below (and elsewhere on this website) relates to my original development of CXXR, which has been somewhat neglected of late, though I hope (as of 2015-04-02) to remedy this in the next couple of months.
CXXR is currently released only in source (.tar.gz
) form: the
current release is 0.42-2.15.1. Earlier
releases, as well as the 'bleeding edge' development version, can be obtained
from the Subversion
repository; see the refactoring history for
what has changed from release to release. Please make yourself known to me if
you try CXXR, and contact me with any queries (address at foot of page).
svn update
a working directory which previously contained
0.25-2.9.2 or earlier it is necessary 'manually' to delete the directories
library/*/R-ex
beneath trunk
; otherwise make
check
will glean examples from obsolete manual pages.
Note for Subversion users regarding 0.36-2.13.1 and later:
if you svn update a working directory which previously contained 0.35-2.12.1 or
earlier you may find it necessary to delete manually the files
src/main/gram{,Latex,Rd}.{c,d}
. In 0.36-2.13.1,
gramRd.c
was superseded by gramRd.cpp
, and a
corresponding change has subsequently affected gram.c
and
gramLatex.c
.
CXXR makes use of the Boost libraries, available from www.boost.org. Boost is available as a package
as part of many Linux distributions. It is available in prepackaged form for
Mac OS from www.macports.org. CXXR
currently requires Boost version 1.53.0 or newer. Try configure
--help
if you have a suitable Boost installed but the
configure
script is unable to find it.
To build CXXR, follow the instructions in the INSTALL
file in
the top-level directory. Then invoke CXXR by running bin/R
from
within the build directory; the usual R options are available. At this early
stage of development, installing CXXR is definitely not recommended - it would
overwrite your standard R installation - and consequently make
install
will simply give a warning message and fail.
The configuration option --enable-provenance-tracking
can be
used to enable the experimental provenance tracking facilities, and in
particular the provenance.graph
R command. Beware that these
facilities are subject to change, and that cross-session provenance-tracking
requires use of the new CXXR serialization facilities which are equally subject
to change.
Please note that as downloaded, CXXR will compile without any C++ compiler
optimisation and with a number of additional runtime checks enabled, and as a
result CXXR will run considerably slower than CR. You will notice this even
during the build process: do not be surprised if 'make' takes well over an
hour. (The use of the configuration option
--disable-byte-compiled-packages
is recommended; this will speed
things up somewhat.) However, you are strongly advised to use this
configuration until you are confident that CXXR is running correctly on your
platform and with your application, packages etc. After that, see the FAQ on how to rebuild for maximum performance.
(all on 32-bit Intel, unless otherwise stated):
make check-devel
OK (using packages
gcc-4.3.0-8
, glibc-2.8-8
,
libstdc++-4.3.0-8
). (Last checked for CXXR
0.36-2.13.1
.)gcc-4.7-2.1.1
,
glibc-2.15-22.17.1
,
libstdc++47-4.7.1-20120723-1
) This is currently my main
development platform. Builds and checks OK. make check-devel
OK. tools::testInstalledPackages(types=c("tests",
"vignettes")))
OK.gcc 4.3.2-1ubuntu11
,
libc6 2.8~20080505-0ubuntu9
, libstdc++6
4.3.2-1ubuntu12
). (Last checked for 0.41-2.15.1.)make check
is OK. (Beware that some Apple header
files, in particular CFBundle.h
, are inconsistent with
non-Xcode versions of gcc
, and give rise to the error
message "format string argument not a string type".)tr1::unordered_map
included with gcc 4.0.1 is broken; this
was the version of gcc supplied with Xcode at release 3.1.3. For CXXR to
build, it is necessary to use a later version of gcc, such as the
gcc43
package of MacPorts; some tweaking is then necessary
for the CXXR build process to use the right compilers and the right
libraries. Not checked with recent releases.connections.cpp
(and possibly other files) fail to compile
owing to an inconsistency vis-à-vis the system header files.
(Not recently retested.) Let me know if this causes you problems;
otherwise fixing it is low priority.The file src/include/CXXR/config.hpp
can be edited to define
(or leave undefined) various C/C++ preprocessor variables, which configure
debugging and optimisation options, but which are not controlled by options to
the autoconf configure
script. Refer the the doxygen documentation of this file for further
information.