-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathindex.shtml
162 lines (147 loc) · 6.62 KB
/
index.shtml
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
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
<head>
<title>CFFI - The Common Foreign Function Interface</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<link rel="stylesheet" type="text/css" href="estilo.css" />
<script src="//code.jquery.com/jquery-1.11.0.min.js"></script>
<script src="moment.min.js"></script>
<script type="text/javascript">
$.ajax({ url: "VERSION", dataType: "text"
}).done(function(data, status, response) {
$(function() {
$("#version").text(data);
$("#version2").text(" (" + data + ")");
var date = Date.parse(response.getResponseHeader('Last-Modified'));
$("#timestamp").text(moment(date).format("MMMM Do, YYYY"));
});
});
</script>
<script type="text/javascript">
var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-1409489-7']);
_gaq.push(['_trackPageview']);
(function() {
var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
})();
</script>
</head>
<table id="content">
<tr>
<!-- CONTENT -->
<td id="main" width="70%">
<div id="header">
<h1 class="title">CFFI</h1>
<div class="slogan">The Common Foreign Function Interface</div>
</div>
<div class="node">
<h2 class="title"><a id="overview">Introduction</a></h2>
<div class="content">
<p>CFFI, the Common Foreign Function Interface, purports to
be a portable foreign function interface for Common
Lisp. The CFFI library is composed of a
Lisp-implementation-specific backend in the CFFI-SYS
package, and a portable frontend in the CFFI package.
</p>
<p>The CFFI-SYS backend package defines a low-level
interface to the native FFI support in the Lisp
implementation. It offers operators for allocating and
dereferencing foreign memory, calling foreign functions,
and loading shared libraries. The CFFI frontend provides a
declarative interface for defining foreign functions,
structures, typedefs, enumerated types, etc. It is
implemented in portable ANSI CL making use of the
low-level operators exported by CFFI-SYS.
</p>
</div>
<h2 class="title"><a id="features">Features</a></h2>
<div class="content">
<p>Some of the key features include:</p>
<ul>
<li>an
extensible <a href="manual/html_node/Foreign-Types.html">foreign
type system</a>;</li>
<li><a href="manual/html_node/Callbacks.html">callback</a>
support;</li>
<li>support
for <a href="manual/html_node/Strings.html">foreign
string</a> encodings;</li>
<li>ported to ABCL, Allegro CL, Corman CL, Clasp, CLISP,
CMUCL, Digitool MCL, ECL, LispWorks, Clozure CL, SBCL,
MKCL and the Scieneer CL;</li>
<li>a <a href="manual/html_node/The-Groveller.html">groveller</a>;</li>
<li>support for passing structs by value via <a href="http://sourceware.org/libffi/">libffi</a>;</li>
<li>a <a href="http://uffi.kpe.io/">UFFI</a> compatibility
layer.</li>
</ul>
</div>
<h2 class="title"><a id="getting-started">Getting Started</a></h2>
<div class="content">
<!--#config timefmt="%B %_d, %Y" -->
<p>The latest version is <strong><span id="version"><em>to be determined via javascript</em></span><!-- hash include
virtual="VERSION"--></strong>, released
on <strong><span id="timestamp"><em>some date to be determined via javascript</em></span><!-- hash flastmod file="VERSION"--></strong>
(<a href="https://github.com/cffi/cffi/wiki/NEWS">release notes</a>).
For installation instructions, please consult the
<a href="manual/html_node/Installation.html">Installation</a>
chapter of the CFFI User Manual. If you're new to either CFFI
in particular or FFIs in general, have a look at the
<a href="manual/html_node/Tutorial.html"
title="An Introduction to Foreign Interfaces and CFFI"
>tutorial chapter</a>.
</p>
</div>
</div>
</td>
<!-- MENU -->
<td id="sidebar-right">
<div class="block">
<h2 class="title">Documentation</h2>
<div class="content">
<ul>
<li><a href="manual/index.html">CFFI User Manual</a></li>
<li><a href="spec/index.html">CFFI-SYS Specification</a></li>
<li><a href="https://github.com/cffi/cffi/blob/master/doc/mem-vector.txt">Proposed Block Memory Interface</a></li>
<li><a href="https://github.com/cffi/cffi/blob/master/doc/shareable-vectors.txt">Proposed Shareable Byte Vector Interface</a></li>
</ul>
</div>
</div>
<div class="block">
<h2 class="title">Mailing List</h2>
<div class="content">
<ul>
<li><a href="https://mailman.common-lisp.net/listinfo/cffi-devel">cffi-devel</a>
<!-- (<a href="http://dir.gmane.org/gmane.lisp.cffi.devel">gmane</a>) -->
mailing list
</li>
<li><a href="https://github.com/cffi/cffi/discussions">GitHub discussions</a></li>
</ul>
</div>
</div>
<div class="block">
<h2 class="title">Source Code</h2>
<div class="content">
<ul>
<li><a href="/project/cffi/releases/cffi_latest.tar.gz">current version<span id="version2"></span></a></li>
<li><a href="https://github.com/cffi/cffi">git repository</a></li>
<!--<li><a href="/project/cffi/tarballs/?M=D">tarballs</a></li>-->
<li><a href="https://github.com/cffi/cffi/pulls">merge requests</a></li>
<li><a href="https://github.com/cffi/cffi/issues">issues</a></li>
</ul>
</div>
</div>
</td>
</tr>
</table>
<div id="main">
<div class="content">
<div id="footer">
<p><a href="mailto:jamesjb (at) jamesjb (dot) com">James Bielman</a> and
<a href="mailto:loliveira (at) common-lisp (dot) net">Luís Oliveira</a></p>
</div>
</div>
</div> <!-- id main -->
</body>
</html>