Эрланг на JVM/CLR

Я только что начал читать книгу Джо Армстронгса об Эрланге и выслушал его прекрасную беседу на Радио Software Engineering.

Его интересный язык/система и тот, чье время, похоже, появилось с появлением многоядерных машин.

Мой вопрос: что там, чтобы остановить его портирование в JVM или CLR? Я понимаю, что обе виртуальные машины не настроены для запуска легких процессов, к которым призывает Эрланг, - но не могли ли они имитировать потоки? Могли бы мы увидеть облегченную или сокращенную версию Erlang на не Erlang VM?

Ответ 1

Erjang - это виртуальная машина для Erlang, которая работает на Java ™.

Ответ 2

Вы не могли использовать библиотеки JVM/CLR, учитывая их зависимость от изменяемых объектов.

Обработка исключений Erlang сильно отличается от исключений JVM и CLR, вам нужно было бы как-то справиться с этим.

Реализация процессов как потоков будет означать, что любая значительная система Erlang исчерпывает память довольно быстро (размер процесса на моей машине при создании: 1268 байт, размер стека потоков в CLR: 1 МБ), а связь между процессами намного медленнее, чем в Erlang.

То, что вы, вероятно, хотите, это реализация модели Actor на JVM или CLR.

Scala и Clojure уже упомянуты. Кроме того, существует много реализаций Actor для JVM: Kilim, Функциональная Java, Jetlang, Гильдия актеров, ActorFoundry, и по крайней мере один для CLR: Retlang, который может использоваться из любой JVM/CLR язык.

Ответ 3

По образовательным причинам мы реализуем подмножество ErlangVM для CLR. Мы были очень вдохновлены Крестен Крабом Торпом и его проектом Erjang, основанной на JVM Erlang VM. В Erjang используется структура kilim для представления легких процессов, и она начинает привлекать внимание.

Javalimit - блог автора Erjang.

Репозиторий Erjang

Ответ 4

Это хорошая дискуссия. Некоторый контекст может быть полезен.

Из списка рассылки Erlang в ноябре прошлого года:

Мой вклад в дискуссию об Эрланге на JVM? Нет, не очень хорошая идея: (

Ответ 5

Ничего, на самом деле. Вы можете взглянуть на Clojure, что является интересным функциональным языком, созданным на JVM.

Ответ 6

Axum - проект инкубации на CLR - был явно вдохновлен Erlang.

Ответ 7

Я не знаю никакой технической проблемы, связанной с этим.

Фактически Scala (функциональный язык JVM) использует так называемую Модель актера, которая очень похожа на, и, как я понимаю, она сильно зависит от Модель Erlang совместно-ничего concurrency. Нити не могли имитировать процессы Erlang. Они слишком тяжелые.

Ответ 8

Только для полноты дополнительной источник о теме.

Ответ 9

Возможные? Да. Практическая? Ну, наверное, нет; они решают разные проблемы по-разному, и, следовательно, имеют множество существенных различий в том, как они это делают. Это сильно повлияет на перенос, и производительность, скорее всего, сильно пострадает. Это не значит, что это невозможно сделать, просто есть способы сделать то, что такой порт принесет в таблицу.