А с hipe не получится собрать полностью проект из-за ограничений. Плюс сколько я последнее время ни пробовал собирать с hipe модули которые для этого подходят (много вычислений в рамках одного модуля), только один раз получил от hipe прирост производительности.
Почему же... Переключений же нет, когда все модули в native скомпилированы
ну это смотря какой код в конкретном случае. в целом трудно представить erlang программу в которой постоянного переключения между beam и нативным кодом не будет
ну это смотря какой код в конкретном случае. в целом трудно представить erlang программу в которой постоянного переключения между beam и нативным кодом не будет
Ну там у HiPE были конкретные лимитации типа persistent_term, матчить в бинарях и try rescue эликсировский
у меня опыт не очень большой - но по факту и своих костылей и других библиотек (от парсеров до cql клиентов) - обосраться какой быстрый нативный код, но при этом чисто эрланговское приложение работает эластичней. чем больше процессов - тем это заметнее.
у меня опыт не очень большой - но по факту и своих костылей и других библиотек (от парсеров до cql клиентов) - обосраться какой быстрый нативный код, но при этом чисто эрланговское приложение работает эластичней. чем больше процессов - тем это заметнее.
может вдруг кто-нибудь уже делал для erl_eval поддержку рекордов (аналогично с rr в erl shell)? А то я стал копать код shell и понял, что там за 5 минут не разберёшься.
Если кому интересно, вся идея с подстановкой рекордов в erl_eval заключается в следующем: - найти где-нибудь Forms с описаниями рекордов - слепить фэйковый модуль в котором будет описание рекордов и фэйковая функция состоящая из Expr которые мы хотим выполнить - заменить в этом модуле Expr работающие с рекордами на работу с таплами с помощью волшебного модуля erl_expand_records - вытащить из фэйковой функции преобразованного выше модуля новые Expr - и уже их спокойно выполнить
Если кому интересно, вся идея с подстановкой рекордов в erl_eval заключается в следующем: - найти где-нибудь Forms с описаниями рекордов - слепить фэйковый модуль в котором будет описание рекордов и фэйковая функция состоящая из Expr которые мы хотим выполнить - заменить в этом модуле Expr работающие с рекордами на работу с таплами с помощью волшебного модуля erl_expand_records - вытащить из фэйковой функции преобразованного выше модуля новые Expr - и уже их спокойно выполнить
По такой схеме работает shell.
ого... А можно будет где-то на твою реализацию посмотреть?
посоветуйте plz ресурс по хакингу своих языков-поделок под BEAM (Core Erlang итп)
лучший ресурс, имхо - исходники имеющихся проектов. elixir, lfe, joxa(сложна читать, потому что он полностью бутстрапится). можно читать clojerl, там тоже довольно интересно, но абсолютно непрактично. на http://blog.erlang.org/ есть три поста про core erlang от 2018 года, но core erlang - довольно спорный таргет, и эмитить обычный эрланг(как это делает эликсир) может быть чуть сложнее, но профитней.
лучший ресурс, имхо - исходники имеющихся проектов. elixir, lfe, joxa(сложна читать, потому что он полностью бутстрапится). можно читать clojerl, там тоже довольно интересно, но абсолютно непрактично. на http://blog.erlang.org/ есть три поста про core erlang от 2018 года, но core erlang - довольно спорный таргет, и эмитить обычный эрланг(как это делает эликсир) может быть чуть сложнее, но профитней.
С чего ты решил, что эликсир эмитит обычный эрланг?