-
Notifications
You must be signed in to change notification settings - Fork 0
/
feature-comparison.shtml
165 lines (164 loc) · 3.9 KB
/
feature-comparison.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
163
164
165
<!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" xml:lang="en" lang="en">
<head>
<title>USOCKET</title>
<link rel="stylesheet" type="text/css" href="style.css">
<meta http-equiv="Content-Type"
content="text/html; charset=ISO-8859-1">
</head>
<body>
<div class="header">
<h1>USOCKET</h1>
</div>
<h2>Comparison to "trivial-sockets"</h2>
<p><em>usocket</em> supports more backends than <em>trivial-sockets</em>.
The
latter
implements different feature-sets for different backends
while the former supplies consistent functionality for all backends.</p>
<div style="border: 3px solid black; margin: 0px; padding: 2px;">
<table style="border: 1px solid black;" border="1" cellspacing="1">
<tbody>
<tr>
<th colspan="2">Feature</th>
<th colspan="8">In trivial-sockets?</th>
<th rowspan="2">In usocket?</th>
</tr>
<tr>
<th colspan="2"><br>
</th>
<th title="ArmedBear">ABCL</th>
<th title="Allegro">ACL</th>
<th>clisp</th>
<th>CMUCL</th>
<th>LispWorks</th>
<th>OpenMCL</th>
<th>SBCL</th>
<th>overall</th>
</tr>
<tr>
<th rowspan="3">Client side tcp streams</th>
<th>:element-type</th>
<td>Yes</td>
<!-- ABCL --> <td title="bivalent streams">Yes*</td>
<td>Yes</td>
<td>Yes</td>
<td>Yes</td>
<td title="bivalent streams">Yes*</td>
<td>Yes</td>
<td>Yes</td>
<td>Yes</td>
</tr>
<tr>
<th>:external-format</th>
<td>No</td>
<td>No</td>
<td>Yes</td>
<td>No</td>
<td>No</td>
<td>No</td>
<td>No</td>
<td>No</td>
<td>No</td>
</tr>
<tr>
<th>binding local interface/port</th>
<td>No</td>
<td>Yes</td>
<td>No</td>
<td>No</td>
<td>No</td>
<td>Yes</td>
<td>Yes</td>
<td>No</td>
<td>Yes</td>
</tr>
<tr>
<th rowspan="5">Server socket creation</th>
<th>Binding specific local port</th>
<td colspan="9">Yes</td>
</tr>
<tr>
<th>Binding specific local interface</th>
<td>No</td>
<td>Yes</td>
<td>No</td>
<td>Yes</td>
<td>No</td>
<td>Yes</td>
<td>Yes</td>
<td>No</td>
<td>Yes</td>
</tr>
<tr>
<th>Selectable backlog length</th>
<td>No</td>
<td>Yes</td>
<td>No</td>
<td>Yes</td>
<td>No</td>
<td>Yes</td>
<td>Yes</td>
<td>No</td>
<td>Yes</td>
</tr>
<tr>
<th>reuse-address</th>
<td>Yes</td>
<td>Yes</td>
<td>No*</td>
<td>Yes</td>
<td>Yes</td>
<td>Yes</td>
<td>Yes</td>
<td>No*</td>
<td>Yes*</td>
</tr>
<tr>
<th>:element-type for created connections</th>
<td colspan="8">No</td>
<td>Yes</td>
</tr>
<tr>
<th rowspan="5">Accepting connections</th>
<th>:element-type for created stream</th>
<td>Yes</td>
<td>Yes*</td>
<td>Yes</td>
<td>Yes</td>
<td>Yes</td>
<td>Yes*</td>
<td>Yes</td>
<td>Yes</td>
<td>Yes*</td>
</tr>
<tr>
<th>:external-format for created stream</th>
<td>No</td>
<td>No</td>
<td>Yes</td>
<td>No</td>
<td>No</td>
<td>No</td>
<td>No</td>
<td>No</td>
<td>No</td>
</tr>
</tbody>
</table>
</div>
<p>In summary: there are only a very limited number of features you can
depend
on to work on all platforms supported by trivial-sockets. While usocket
doesn't support all features, you can depend on the features to be
available.
</p>
<hr>
<div style="float: left; font-size: x-small; font-weight: bold;">Back
to <a href="http://common-lisp.net/">Common-lisp.net</a>.
</div>
<div class="check" style="float: right;"> <a
href="http://validator.w3.org/check/referer">Valid XHTML 1.0 Strict</a>
</div>
</body>
</html>