forked from trifork/erjang
-
Notifications
You must be signed in to change notification settings - Fork 1
/
README
79 lines (50 loc) · 1.96 KB
/
README
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
Erjang - a JVM-based Erlang VM
Wiki Pages: www.erjang.org
Discussion: http://groups.google.com/group/erjang
Source: http://github.com/krestenkrab/erjang
--
BUILDING
You should be able to do "ant jar", and thereafter run the sample
with
prompt% ant jar
...
prompt% ./ring_test.sh
...
loading io
loading timer
loading ring
loading erlang
io:format "~p Starting message~n" [{1259,922511,63000}]
io:format "~p Around ring ~p times ~n" [{1259,922512,434000},10000]
io:format "~p Around ring ~p times ~n" [{1259,922513,600000},20000]
io:format "~p Around ring ~p times ~n" [{1259,922514,763000},30000]
io:format "~p Around ring ~p times ~n" [{1259,922515,930000},40000]
io:format "~p Around ring ~p times ~n" [{1259,922517,117000},50000]
....
The source for the few samples are in src/main/erl.
--
RUNNING
When running, it writes files named ".erj/module-${CRC}.jar". These
files are written in response to erlang:compile_module(Module,Binary).
These files also serve as a cache of files translated from beam -> jar.
If something goes astray, it may help to remove the .erj directory
forcing Erjang to recompile next time it runs.
--
PREREQUISITES
I have only been testing this with Erlang/OTP R13B02.
While we are still bootstrapping, the compiler uses a remote
erlang process to parse beam files (using beam_disasm), so you
need to have this running:
prompt% cd src/main/erl
prompt% erl -sname beam_loader@localhost -s beam_loader
Otherwise you will get errors like this:
Exception in thread "main" java.lang.Error: java.io.IOException: Cannot connect to peer node
at erjang.beam.Compiler.<clinit>(Compiler.java:55)
at erjang.EModule.load_module(EModule.java:429)
at erjang.Erj.main(Erj.java:61)
Eventually this will obviously be self-hosted in Erjang.
To run the tests, you need an OTP distribution, and go edit src/test/java/erjang/TestAll.java
to tell it where your OTP_HOME is.
Cheers!
Kresten Krab Thorup
krab _at_ trifork dot com