Resources for Portable Programming
This page is a set of pointers to useful references for writing good portable code, for the R developers and for people writing R extensions.
C99 standard
(technically a final draft: currently unavailable, but
this
appears to be a corrected version). And its
rationale
.
C11 standard
(technically a final draft), and an
overview
of the changes.
Fortran standards
, including links to the F77 as well as the correct
layout
of Fortran 77 subprograms. Final draft standards are available for
F90
and
F2003
.
ftnchek
, a program to check against Fortran standards.
POSIX 1003 standards (2008, revised 2016)
: how Unix-alike functions and tools are to behave.
(2004 edition)
.
Porting to 64 bit GNU/Linux systems
. Covers a lot of details about 64- vs 32-bit architectures.
The self-styled Filesystem Hierarchy Standard
. Not written to the standard of a standard, but Debian Linux policy.
How to write shared libraries
. Lots of information on GCC 4.0.0 features, including controlling symbol visibility as implemented in R 2.3.0.
mudflap
. A bounds-checking (etc) tool for GCC 4.
Valgrind
. A debugging tool for ix86 Linux. (See also `Writing R Extensions'.)
GCC
Links and selected readings
What Every Computer Scientist Should Know about Floating-Point Arithmetic
by David Goldberg, including Doug Priest's supplement on extended-precision systems (such as
ix86
).
FreeBSD's collection of man pages
(including for some commercial Unixes). And
more
from *nixDoc.
Jan Walter's
Unix incompatibility notes
. Not 100% reliable (please don't pretest
isalpha
by
isascii
, for example).