annotate doc/manual/manual_overview.tex @ 208:f8d9b31975f9

- marked off netbsd/sparc64 as completely supported in manual (tested it)
author Tassilo Philipp
date Mon, 27 Mar 2017 01:13:48 +0200
parents 5edaf22a261e
children b593e57b82a5
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
1 %//////////////////////////////////////////////////////////////////////////////
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
2 %
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
3 % Copyright (c) 2007,2009 Daniel Adler <dadler@uni-goettingen.de>,
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
4 % Tassilo Philipp <tphilipp@potion-studios.com>
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
5 %
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
6 % Permission to use, copy, modify, and distribute this software for any
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
7 % purpose with or without fee is hereby granted, provided that the above
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
8 % copyright notice and this permission notice appear in all copies.
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
9 %
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
10 % THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
11 % WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
12 % MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
13 % ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
14 % WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
15 % ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
16 % OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
17 %
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
18 %//////////////////////////////////////////////////////////////////////////////
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
19
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
20 \newpage
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
21
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
22 \section{Overview}
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
23
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
24 The \product{dyncall} library encapsulates architecture-, OS- and compiler-specific
72
2b89d8497aad - html manual work
cslag
parents: 26
diff changeset
25 function call semantics in a virtual %
2b89d8497aad - html manual work
cslag
parents: 26
diff changeset
26 %
73
8326c5ced916 - doc cleanup and html work
cslag
parents: 72
diff changeset
27 \casehtml{\Tg<span class="marker">}{\begin{center}}%
0
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
28 \emph{bind argument parameters from left to right and then call}
72
2b89d8497aad - html manual work
cslag
parents: 26
diff changeset
29 \casehtml{\Tg</span>}{\end{center}}%
2b89d8497aad - html manual work
cslag
parents: 26
diff changeset
30 %
0
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
31 interface allowing programmers to call C functions
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
32 in a completely dynamic manner. In other words, instead of calling a function
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
33 directly, the \product{dyncall} library provides a mechanism to push the function parameters
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
34 manually and to issue the call afterwards.\\
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
35 Since the idea behind this concept is similar to call dispatching mechanisms
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
36 of virtual machines, the object that can be dynamically loaded with arguments,
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
37 and then used to actually invoke the call, is called CallVM. It is possible to
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
38 change the calling convention used by the CallVM at run-time.
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
39 Due to the fact that nearly every platform comes with one or more distinct calling
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
40 conventions, the \product{dyncall} library project intends to be a portable and open-source
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
41 approach to the variety of compiler-specific binary interfaces, platform specific
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
42 subtleties, and so on\ldots\\
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
43 \\
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
44 The core of the library consists of dynamic implementations of different
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
45 calling conventions written in assembler.
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
46 Although the library aims to be highly portable, some assembler code needs to
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
47 be written for nearly every platform/compiler/OS combination.
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
48 Unfortunately, there are architectures we just don't have at home or work. If
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
49 you want to see \product{dyncall} running on such a platform, feel free to send
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
50 in code and patches, or even to donate hardware you don't need anymore.
73
8326c5ced916 - doc cleanup and html work
cslag
parents: 72
diff changeset
51 Check the \textbf{supported platforms} section for an overview of the supported
0
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
52 platforms and the different calling convention sections for details about the
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
53 support.
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
54 \\
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
55 \begin{comment}
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
56 @@@
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
57 A typical binary library consists of symbolic names that map to variables and
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
58 functions, the latter being pre-compiled for a
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
59 specific calling convention and architecture. Given \product{dyncall} has been ported to
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
60 that binary platform, it is possible to call such a function dynamically
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
61 without writing glue code or prototypes or even knowing its C declaration -
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
62 all that is needed is a pointer to it.\\
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
63 To avoid confusion, note that from the point of view of the library all
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
64 parameters are handled the same way, even though the implementation might use
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
65 other ways to pass parameters in order to suit specific calling conventions.\\
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
66 \end{comment}
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
67
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
68
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
69 \subsection{Features}
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
70
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
71 \begin{itemize}
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
72 \item A portable and extendable function call interface for the C programming
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
73 language.
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
74 \item Ports to major platforms including Windows, Mac OS X, Linux, BSD derivates, iPhone and embedded devices and more, including lesser known and/or older platforms like Plan 9, Playstation Portable, Nintendo DS, etc..
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
75 \item Add-on language bindings to Python, R, Ruby, Go, Erlang, Java, Lua, sh, ...
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
76 \item High-level state machine design using C to model calling convention
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
77 parameter transfer.
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
78 \item One assembly \emph{hybrid} call routine per calling convention.
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
79 \item Formatted call, vararg function API.
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
80 \item Comprehensive test suite.
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
81 \end{itemize}
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
82
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
83 \pagebreak
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
84
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
85 \subsection{Showcase}
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
86
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
87 \paragraph{Foreign function call in C}
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
88 This section demonstrates how the foreign function call is issued without, and then
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
89 with, the help of the \product{dyncall} library and scripting language
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
90 bindings.
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
91
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
92 \begin{lstlisting}[language=c,caption=Foreign function call in C]
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
93 double call_as_sqrt(void* funptr, double x)
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
94 {
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
95 return ( ( double (*)(double) )funptr)(x);
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
96 }
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
97 \end{lstlisting}
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
98
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
99 \paragraph{\product{Dyncall} C library example}
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
100
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
101 The same operation can be broken down into atomic pieces
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
102 (specify calling convention, binding arguments, invoking the call)
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
103 using the \dc\ library.
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
104
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
105 \begin{lstlisting}[language=c,caption=Dyncall C library example]
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
106 #include <dyncall.h>
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
107 double call_as_sqrt(void* funptr, double x)
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
108 {
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
109 double r;
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
110 DCCallVM* vm = dcNewCallVM(4096);
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
111 dcMode(vm, DC_CALL_C_DEFAULT);
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
112 dcReset(vm);
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
113 dcArgDouble(vm, x);
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
114 r = dcCallDouble(vm, funptr);
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
115 dcFree(vm);
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
116 return r;
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
117 }
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
118 \end{lstlisting}
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
119
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
120 As you can see, this is more code after all, but completely dynamic.
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
121 And definitely less than generated glue-code for each function call, if
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
122 used correctly.
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
123
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
124 The following are examples from script bindings:
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
125
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
126 \paragraph{Python example}
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
127
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
128 \begin{lstlisting}[language=python,caption=Dyncall Python bindings example]
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
129 import pydc
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
130 def call_as_sqrt(funptr,x):
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
131 return pydc.call(funptr,"d)d", x)
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
132 \end{lstlisting}
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
133
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
134
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
135 \paragraph{R example}
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
136
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
137 \begin{lstlisting}[language=R,caption=Dyncall R bindings example,escapeinside={TEX}{XET}] % escapeinside is a workaround for issues with '<' in lstlisting+tex4ht
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
138 library(rdyncall)
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
139 call.as.sqrt TEX\textlessXET- function(funptr,x)
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
140 .dyncall(funptr,"d)d", x)
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
141 \end{lstlisting}
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
142
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
143
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
144 \pagebreak
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
145
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
146 \subsection{Supported platforms/architectures}
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
147
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
148 The feature matrix below gives a brief overview of the currently supported
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
149 platforms. Different colors are used, where a green cell indicates a supported
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
150 platform, yellow a platform that might work (but is untested) and red a platform
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
151 that is currently unsupported. Gray cells are combinations that don't exist
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
152 at the time of writing, or that are not taken into account.\\
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
153 Light green cells mark complete feature support, as in dyncall and dyncallback. Dark green means basic support but lacking features (e.g. dyncall support, but not dyncallback).
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
154 Please note that a green cell (even a light-green one) doesn't imply that all existing calling conventions/features/build tools are supported for that platform (but the most
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
155 important).
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
156 For detailed info about a platform's support consult the calling convention appendix.
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
157
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
158 \begin{table}[h]
132
b0cca984c740 - manual update, started splitting platform overview in EP and EL for some platforms
cslag
parents: 127
diff changeset
159 \begin{tabular}{r|*{3}{c!{\color{gray2}\vrule}}*{4}{c!{\color{gray2}\vrule}}*{10}{c!{\color{gray2}\vrule}}}
b0cca984c740 - manual update, started splitting platform overview in EP and EL for some platforms
cslag
parents: 127
diff changeset
160 & \ninety{\bf Alpha} & \ninety{\bf ARM} & \ninety{\bf ARM64} & \multicolumn{2}{c!{\color{gray2}\vrule}}{\ninety{\bf MIPS}} & \multicolumn{2}{c!{\color{gray2}\vrule}}{\ninety{\bf MIPS64}} & \ninety{\bf SuperH} & \ninety{\bf PowerPC} & \ninety{\bf PowerPC64} & \ninety{\bf m68k} & \ninety{\bf m88k} & \ninety{\bf x86} & \ninety{\bf x64} & \ninety{\bf Itanium} & \ninety{\bf SPARC} & \ninety{\bf SPARC64} \\
139
5675d34f0a06 - mips64 doc about impl status
cslag
parents: 132
diff changeset
161 % also include hardfloat, here@@@
132
b0cca984c740 - manual update, started splitting platform overview in EP and EL for some platforms
cslag
parents: 127
diff changeset
162 & & & & \ninety{\tiny EB} & \ninety{\tiny EL} & \ninety{\tiny EB} & \ninety{\tiny EL} & & & & & & & & & & \\
b0cca984c740 - manual update, started splitting platform overview in EP and EL for some platforms
cslag
parents: 127
diff changeset
163 \hline
b0cca984c740 - manual update, started splitting platform overview in EP and EL for some platforms
cslag
parents: 127
diff changeset
164 {\bf Windows family} & \marknotx & \markunkn & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \markcmpl & \markcmpl & \marknimp & \marknotx & \marknotx \\
199
e2233f6d887f - mark sparc64/linux as completely supported in manual overview
Tassilo Philipp
parents: 172
diff changeset
165 {\bf Linux} & \marknimp & \markcmpl & \markcmpl & \markcmpl & \markunkn & \markunkn & \markcmpl & \marknotx & \markcmpl & \markcmpl & \marknotx & \marknotx & \markcmpl & \markcmpl & \marknotx & \markcmpl & \markcmpl \\
132
b0cca984c740 - manual update, started splitting platform overview in EP and EL for some platforms
cslag
parents: 127
diff changeset
166 {\bf macOS / iOS / Darwin} & \marknotx & \markcmpl & \markcmpl & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \markcmpl & \markunkn & \marknotx & \marknotx & \markcmpl & \markcmpl & \marknotx & \marknotx & \marknotx \\
b0cca984c740 - manual update, started splitting platform overview in EP and EL for some platforms
cslag
parents: 127
diff changeset
167 {\bf FreeBSD} & \marknimp & \markcmpl & \markcmpl & \markunkn & \markunkn & \markunkn & \markunkn & \marknimp & \markimpl & \markcmpl & \marknotx & \marknotx & \markcmpl & \markcmpl & \marknimp & \markunkn & \markunkn \\
208
f8d9b31975f9 - marked off netbsd/sparc64 as completely supported in manual (tested it)
Tassilo Philipp
parents: 205
diff changeset
168 {\bf NetBSD} & \marknimp & \markcmpl & \marknotx & \markunkn & \markcmpl & \markunkn & \markunkn & \marknimp & \markimpl & \marknotx & \marknimp & \marknimp & \markcmpl & \markcmpl & \marknimp & \markcmpl & \markcmpl \\
205
5edaf22a261e - doc update
Tassilo Philipp
parents: 199
diff changeset
169 {\bf OpenBSD} & \marknimp & \markcmpl & \marknotx & \markunkn & \markunkn & \markcmpl & \markunkn & \marknimp & \markunkn & \marknotx & \marknimp & \marknimp & \markcmpl & \markcmpl & \marknimp & \markcmpl & \markcmpl \\
132
b0cca984c740 - manual update, started splitting platform overview in EP and EL for some platforms
cslag
parents: 127
diff changeset
170 {\bf DragonFlyBSD} & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \markcmpl & \markcmpl & \marknotx & \marknotx & \marknotx \\
172
b27557033057 - added SunOS line to doc overview, for os family
cslag
parents: 169
diff changeset
171 {\bf Solaris / SunOS} & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \markcmpl & \markcmpl & \marknotx & \markcmpl & \markimpl \\
132
b0cca984c740 - manual update, started splitting platform overview in EP and EL for some platforms
cslag
parents: 127
diff changeset
172 {\bf Plan 9 / 9front} & \marknimp & \marknimp & \marknotx & \marknimp & \marknimp & \marknotx & \marknotx & \marknotx & \marknimp & \marknotx & \marknotx & \marknotx & \markcmpl & \marknimp & \marknotx & \marknimp & \marknotx \\
b0cca984c740 - manual update, started splitting platform overview in EP and EL for some platforms
cslag
parents: 127
diff changeset
173 {\bf Haiku / BeOS} & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \markcmpl & \marknotx & \marknotx & \marknotx & \marknotx \\
b0cca984c740 - manual update, started splitting platform overview in EP and EL for some platforms
cslag
parents: 127
diff changeset
174 {\bf Minix} & \marknotx & \markunkn & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \markcmpl & \marknotx & \marknotx & \marknotx & \marknotx \\
b0cca984c740 - manual update, started splitting platform overview in EP and EL for some platforms
cslag
parents: 127
diff changeset
175 {\bf Playstation Portable} & \marknotx & \marknotx & \marknotx & \marknotx & \markcmpl & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx \\
b0cca984c740 - manual update, started splitting platform overview in EP and EL for some platforms
cslag
parents: 127
diff changeset
176 {\bf Nintendo DS} & \marknotx & \markcmpl & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx \\
0
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
177 \end{tabular}
92
5c3fa8897e0e - manual work
cslag
parents: 73
diff changeset
178 \caption{Supported platforms}%
0
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
179 \end{table}
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
180