-
Notifications
You must be signed in to change notification settings - Fork 2
/
Portability.html
107 lines (102 loc) · 3.65 KB
/
Portability.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Resources for Portable Programming</title>
</head>
<body bgcolor="#FFFFFF">
<h1 align=center>
Resources for Portable Programming</h1>
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.
<ul>
<li>
<a
href="http://wwwold.dkuug.dk/jtc1/sc22/open/n2794/n2795.pdf">C99
standard</a> (technically a final draft: currently unavailable,
but
<a href="http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1256.pdf">this</a>
appears to be a corrected version).
And its
<a href
="http://www.open-std.org/JTC1/SC22/WG14/www/C99RationaleV5.10.pdf">rationale</a>.
</li>
<li>
<a href="http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1570.pdf">C11
standard</a> (technically a final draft), and an
<a href="http://en.wikipedia.org/wiki/C11_%28C_standard_revision%29">overview</a>
of the changes.
</li>
<li>
<a
href="http://www.fortran.com/stds_docs.html">Fortran
standards</a>, including links to the F77 as well as the correct
<a
href="http://www.fortran.com/F77_std/rjcnf-3.html#sh-3.2">layout</a>
of Fortran 77 subprograms. Final draft standards are available
for <a href="ftp://ftp.nag.co.uk/sc22wg5/N001-N1100/N692.pdf">F90</a>
and
<a href="http://j3-fortran.org/doc/2003_Committee_Draft/ISO_IEC_1539-1.pdf">F2003</a>.
</li>
<li>
<a href="http://www.dsm.fordham.edu/~ftnchek/"><tt>ftnchek</tt></a>, a
program to check against Fortran standards.
</li>
<li>
<a
href="http://pubs.opengroup.org/onlinepubs/9699919799/mindex.html">POSIX
1003 standards (2008, revised 2016)</a>: how Unix-alike functions
and tools are to behave.
<a
href="http://www.opengroup.org/onlinepubs/009695399/mindex.html">
(2004 edition)</a>.
</li>
<li>
<a
href="http://mirrors.rcn.net/pub/sourceware/gcc/summit/2003/Porting%20to%2064%20bit.pdf">Porting to 64 bit GNU/Linux systems</a>.
Covers a lot of details about 64- vs 32-bit architectures.
</li>
<li>
<a href="http://www.pathname.com/fhs/">The self-styled Filesystem Hierarchy
Standard</a>. Not written to the standard of a standard, but
Debian Linux policy.
</li>
<li>
<a href="http://people.redhat.com/drepper/dsohowto.pdf">How to
write shared libraries</a>. Lots of information on GCC 4.0.0
features, including controlling symbol visibility as implemented
in R 2.3.0.
</li>
<li>
<a
href="http://mirrors.rcn.net/pub/sourceware/gcc/summit/2003/mudflap.pdf">mudflap</a>.
A bounds-checking (etc) tool for GCC 4.
</li>
<li>
<a href="http://valgrind.org">Valgrind</a>.
A debugging tool for ix86 Linux. (See also `Writing R Extensions'.)
</li>
<li>
GCC <a href="http://gcc.gnu.org/readings.html">Links and selected
readings</a>
</li>
<li>
<a href="http://www.validlab.com/goldberg/paper.pdf">What Every
Computer Scientist Should Know about Floating-Point Arithmetic</a>
by David Goldberg, including Doug Priest's supplement on
extended-precision systems (such as <tt>ix86</tt>).
</li>
<li>
<a href="http://www.freebsd.org/cgi/man.cgi">FreeBSD's collection of
man pages</a> (including for some commercial Unixes).
And <a href="http://nixdoc.net/man-pages">more</a> from *nixDoc.
</li>
<li>
Jan Walter's <a href="http://unixpapa.com/incnote/index.html">Unix
incompatibility notes</a>. Not 100% reliable (please don't pretest
<tt>isalpha</tt> by <tt>isascii</tt>, for example).
</li>
</ul>
</body>
</html>