Alternatives
- BEAM (and HiPE) - OTP Group at Ericsson
- LING - Erlang on Xen
- Erjang - experimental JVM port
BEAM.SMP
-
Scheduler #1: run queue
-
Scheduler #2: run queue
- …
- process migration logic
- async thread pool
What scheduler runs
- processes: lightweight and preemptive
- ports
- BIFs and NIFs
- network io select/kpoll
Memory management
- immutable data
- per-process heaps
- message passing
- large refcounted binaries
- ETS tables
- …
Garbage collection
- per process: heap + stack
- stop-and-copy with minor and major collection
- young and old heap
Bytecode
- interpreted
- hot code reloading
- no JIT compilation, research is ongoing
- some optimizations are done on loading
- HiPE - partial native compilation
Languages running on BEAM
- Erlang
- Elixir
- LFE (Lisp Flavoured Erlang)
- Luerl (Lua)
←
→
/
#