Erjang — Erlang VM поверх Java VM
Erjang — это виртуальная машина для Эрланга, которая работает на Java.
Как это работает?
Виртуальная машина загружает .beam-файлы, транслирует их в .class-файлы и передает в Java VM.
В будущем планируется сделать Erjang самодостаточной виртуальной машиной для Эрланга (планаруется реализация всех BIF'ов в Java, избавление от внешних рланговских процессов и необходимости использовать jinterface для некоторых участков кода)
Работает ли оно?
Примерно 3/4 из .beam-файлов в стандартной поставке Erlang/OTP успешно конвертируются в .class-файлы. Это конечно не означает, что все из них транслируется корректно, время покажет. На данный момент запускаются простые примеры из src/main/erl, такие как ring, fib и другие. Это значит, что ключевые моменты (процессы, сообщения, динамическая подгрузка, исключения, трассировка, exit-сигналы, spawn, spawn_link) работают.
Для больших чисел fib в Erjang'е работает в полтора раза быстрее, чем в родной VM (в частности, из-за более эффективной реализации bignum в Java).
- проект на GitHub'е
- Гуглогруппа
- README, который надо обязательно прочитать перед запуском.
Так же в вики есть дополнительная информация о том, как реализуются различные тонкости Эрланга (хвостовая рекурсия, паттерн матчинг и т.п.)
via Francesco Cesarini @ Twitter
