forked from matthiasl/Erlang-FAQ
-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathimplementations.xml
executable file
·280 lines (227 loc) · 8.17 KB
/
implementations.xml
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
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
<?xml version="1.0" encoding="iso-8859-1" ?>
<!DOCTYPE chapter SYSTEM "chapter.dtd">
<chapter>
<header>
<title>Implementation and Ports of Erlang</title>
<prepared>Matthias Lang</prepared>
<docno></docno>
<date>2007-09-12</date>
<rev>1.0</rev>
<file>implementations.xml</file>
</header>
<section>
<marker id="implementations"/>
<title>What Production-quality implementations of Erlang are there?</title>
<list>
<item><p> <url href="http://www.erlang.org/"> Open Source
Erlang </url>
is the most popular implementation.
It is built from the same source tree as the commercial
version of Erlang. You can use Open Source Erlang to build
commercial products without having to pay royalties or licence
fees to Ericsson.
<marker id="commercial-erlang"/>
</p></item>
<item><p> <url href="http://www.erlang.se/">
Ericsson's Commercial Erlang</url>. This is essentially
the same as Open Source Erlang. The main differences are:
</p>
<list>
<item><p>Commercial Erlang comes with a support agreement
</p></item>
<item><p>The OTP team go to greater lengths
to test the commercial release, so you
get a more stable product. Similarly, they
make the transition between versions smoother.
</p></item>
<item><p>The commercial version includes some
encryption-related code which cannot be
provided in the open source release for legal reasons.
</p></item>
<item><p>The commercial release does <em>not
</em> contain applications which are
considered experimental or unstable.
</p></item>
</list>
</item>
</list>
</section>
<section><title>What Experimental and Research Implementations are there?</title>
<list>
<item><p><url
href="http://www.it.uu.se/research/group/hipe">
High Performance Erlang</url> (HIPE).
HIPE is an in-progress project to create a faster Erlang
by compiling to native code. Since R8A, the HIPE compiler
is tightly integrated with the normal BEAM system; if
you have downloaded open source erlang, then you also have
HIPE. A <url href="http://www.erlang.se/euc/01/kostis2001/sld001.htm">presentation at the EUC 2001</url> described how to use it.</p></item>
<item><p>
<url href="http://www.iro.umontreal.ca/~etos/">
Erlang to Scheme Compiler</url> (ETOS).
ETOS is another research project to compile Erlang
programs to native code by first translating the
program into scheme. They have some impressive benchmarks.
ETOS is no longer under active development.</p></item>
<item><p>
Geoff's Erlang (GERL) supported a subset of the Erlang
language. GERL compiled to native code via C. GERL has
fallen into disuse.</p></item>
<item><p><url
href="http://www.adfa.edu.au/~lpb/research/sserl/">
Safe Erlang</url>,
which is a prototype made by extending an older version
of Ericsson's implementation, is intended for
applications where Erlang nodes must cooperate with
other Erlang nodes which are not trusted. Safe Erlang
is no longer under active development.</p></item>
</list>
</section>
<section>
<marker id="version-table"/>
<title> Which version of Erlang am I running?</title>
<p>
Starting with R13A, the message you see when you start
Erlang actually tells which release you are running:
</p>
<pre>
Erlang R13B (erts-5.7.1) [smp:4:4] [rq:4] [async-threads:0] [kernel-poll:false]
Eshell V5.7.1 (abort with ^G)
</pre>
<p>
From Erlang code, in recent releases,
call <c>erlang:system_info(otp_release)</c>
to find out which release you are running.
</p>
<p>
In earlier releses, the message you saw when you
started Erlang didn't show you the version number of
OTP:
</p>
<pre>
Erlang (BEAM) emulator version 5.1.1 [source]
Eshell V5.1.1 (abort with ^G)
</pre>
<p>
The start script revealed some more information:
</p>
<pre>
Eshell V5.3.6.3 (abort with ^G)
1> init:script_id().
{"OTP APN 181 01","R9C"}
</pre>
</section>
<section><title> What operating systems does Erlang run on?</title>
<p>
Erlang runs on most unix and unix-like systems and on the
currently popular flavours of windows. Ericsson
have compiled it for
</p>
<list>
<item><p> Solaris (including 64 bit)</p></item>
<item><p> BSD</p></item>
<item><p> Linux</p></item>
<item><p> OSX</p></item>
<item><p> TRU64</p></item>
<item><p> Windows NT/2000/2003/XP/Vista</p></item>
<item><p> VxWorks</p></item>
</list>
<p>
There are reports on the mailing list of other people
compiling it successfully IRIX, along with reports of
Erlang running on less usual systems such as iPhones, Xboxes
Tilera 64-core CPUs and many embedded systems.
</p><p>
</p></section>
<section><title> What implementations of the Erlang Virtual Machine are there?</title>
<p>
Almost everyone uses "the new BEAM", where BEAM stands
for Bogdan/Björn's Erlang Abstract Machine. This is
the virtual machine supported in the commercial release.
</p><p>
The other virtual machines are of mostly historical interest:
</p>
<section>
<title>JAM</title><p>
This was the original Erlang virtual machine,
inspired by the (Prolog) WAM. JAM stands for
"Joe's Abstract Machine".</p>
</section>
<section>
<title>old BEAM</title><p>
This was an attempt to compile Erlang
to C, and then compile the C to native code. It was
abandoned after benchmarking showed that the resulting
code was only faster than VM-based Erlang for small programs.
</p>
</section>
</section>
<section><title>Is there an unofficial port for...?</title>
<p>
<em>MacOS X</em>: Releases since R9B compile on
MacOS X.
</p><p>
<em>QNX</em>: Vlad Dumitrescu has looked
at porting to QNX. If you're interested, ask on the
erlang mailing list.</p><p>
<em>VxWorks</em>: VxWorks support is
included in the standard distribution. </p><p>
</p></section>
<section>
<marker id="cygwin-cross"/>
<title>Can Erlang be compiled under Microsoft Windows?</title>
<p>
There is a README.win32 file at the top of the source code
distribution which explains how to do this.
</p></section>
<section><title>Can Erlang be cross compiled?</title>
<p>
From release R13B04 (released February 2010) onwards, the standard
Erlang/OTP distribution includes support and documentation for cross
compiling. This is described in the INSTALL-CROSS.md file at the
top of the Erlang source, available from the
<url href='http://erlang.org/download.html'>downloads page</url>.
</p>
<p>
Releases <em>prior</em> to R13B04 can also be cross-compiled
with a moderate amount of effort. There's a fairly
<url href='http://www.trapexit.org/Cross_compiling'>
detailed writeup</url> on the trapexit wiki which covers
cross compiling between linux systems.
</p>
</section>
<section><title>Is Erlang small enough for Pocket PCs?</title>
<p>
Various people on the erlang-questions mailing list have reported
Erlang running on pocket PCs, including the
<url href="http://dynamism.com/sl-c3000/main.shtml">Sharp Zaurus</url>.
</p></section>
<section><title>Is Erlang small enough for embedded systems?</title>
<p>
Rule of thumb: if the embedded system can run an
operating system like linux, then it is probably possible
to get current implementations of Erlang running on it
with a reasonable amount of effort.
Getting Erlang to run on, say, an 8 bit CPU with 32kByte of
RAM is not feasible.
People successfully run the Ericsson implementation of
Erlang on systems with as little as 16MByte of RAM. It
is reasonably straightforward to fit Erlang itself into
2MByte of persistant storage (e.g. a flash disk).
</p><p>
A 2MByte stripped Erlang system can include the
beam emulator and almost all of the stdlib, sasl,
kernel, inets and runtime_tools libraries, provided
the libraries are compiled without debugging information
and are compressed:
</p>
<code>
compile:file("foo", [compressed,no_debug_info]).
</code>
<p>
This can be automated by editing otp.mk.in and adding
<c>+compressed +no_debug_info</c>
to the erlang compiler options and then rebuilding all the libraries.
</p>
</section>
</chapter>