Size: a a a

2020 October 16

AB

Alex Bubnov in pro.elixir
поэтому и "репл"
источник

LL

Lama Lover in pro.elixir
Alex Bubnov
в beam настоящий исполняемый код существует только в модулях, отсюда все костыли
Так и почему замыкания из репла не генерить в модули...
источник

LL

Lama Lover in pro.elixir
Ну кароче долгая дискуссия будет
источник

AB

Alex Bubnov in pro.elixir
сложна!
источник

AB

Alex Bubnov in pro.elixir
Lama Lover
Так и почему замыкания из репла не генерить в модули...
для модулей нет никакого gc, соответственно, вот эти модули замыканий из шелла будут копиться в памяти.
чтобы у них был gc - нужно добавлять какой-то жуткий запил в шелл, причем специфичный именно для шелла, потому что в релиз-моде такая фигня будет исключительно бессмысленным оверхедом.
источник

ŹR

Źmićer Rubinštejn in pro.elixir
Lama Lover
Тут упадёт, а вот в каком-нибудь generic решении, где мы не знаем какое значение к нам приехало как ключ, будет неприятно
def update_state(state, key, value) do
 Pathex.force_set(state, path(key), value)
end
def update_state(state, key, value) do
 Pathex.force_set(state, path(^key), value)
end

Вот поэтому я и говорю про крышку
источник

LL

Lama Lover in pro.elixir
Alex Bubnov
для модулей нет никакого gc, соответственно, вот эти модули замыканий из шелла будут копиться в памяти.
чтобы у них был gc - нужно добавлять какой-то жуткий запил в шелл, причем специфичный именно для шелла, потому что в релиз-моде такая фигня будет исключительно бессмысленным оверхедом.
Да, это правда
источник

LL

Lama Lover in pro.elixir
Źmićer Rubinštejn
def update_state(state, key, value) do
 Pathex.force_set(state, path(^key), value)
end

Вот поэтому я и говорю про крышку
:/
источник

AB

Alex Bubnov in pro.elixir
Alex Bubnov
для модулей нет никакого gc, соответственно, вот эти модули замыканий из шелла будут копиться в памяти.
чтобы у них был gc - нужно добавлять какой-то жуткий запил в шелл, причем специфичный именно для шелла, потому что в релиз-моде такая фигня будет исключительно бессмысленным оверхедом.
о, дошло еще - ведь шеллом можно прицепиться к удаленной ноде, и нагрузить в неё этих одноразовых модулей.
есть ли у beam лимит числа модулей, интересно.
источник

AB

Alex Bubnov in pro.elixir
короче, развивая эту тему, мы придем к чему-то аналогичному jvm, у которой очень большие проблемы с hot code reload
источник

AB

Alex Bubnov in pro.elixir
он там есть, да, но работает ожидаемо плохо.
источник

ŹR

Źmićer Rubinštejn in pro.elixir
Źmićer Rubinštejn
def update_state(state, key, value) do
 Pathex.force_set(state, path(^key), value)
end

Вот поэтому я и говорю про крышку
Не, хуйня какая-то
источник

ŹR

Źmićer Rubinštejn in pro.elixir
Я чет подумал, что так еще сложнее
источник

M

MrFlorius in pro.elixir
Наверное тупое решение, но нельзя сделать репл в виде модуля с одной функцией который каждый раз будет перекомпилироваться?
источник

AB

Alex Bubnov in pro.elixir
MrFlorius
Наверное тупое решение, но нельзя сделать репл в виде модуля с одной функцией который каждый раз будет перекомпилироваться?
а почему с одной?
источник

AB

Alex Bubnov in pro.elixir
типа, только последнее выражение?
источник

M

MrFlorius in pro.elixir
чтобы она каждый раз вызывалась, типа main такой
источник

LL

Lama Lover in pro.elixir
MrFlorius
Наверное тупое решение, но нельзя сделать репл в виде модуля с одной функцией который каждый раз будет перекомпилироваться?
А как вызывать старые значения?
И перекомпилировать модуль каждый раз тоже не очень просто и эффективно
источник

AB

Alex Bubnov in pro.elixir
сложно. у репла bindings, у модуля - не более двух копий одновременно
источник

AB

Alex Bubnov in pro.elixir
короче, это всё сложно
источник