Вышел Erlang/OTP 17.0
9 апреля вышел мажорный релиз платформы Erlang/OTP 17.0.Erlang — функциональный язык программирования со строгой динамической типизацией, предназначенный для создания распределённых вычислительных систем.
В релизе 17.0 достаточно много новых возможностей и изменений. Первое, что можно заметить, изменена схема нумерации версий, раньше было R16B, R15B и так далее.
Добавлен новый тип данных — Maps
Пожалуй одно из самых главных нововведений, которое все давно ждали. Лучше всего показать на примере:
1> Map = #{ key1 => «Value1», key2 => «Value2»}.
#{key1 => «Value1», key2 => «Value2»}
2> maps: get (key1, Map).
«Value1»
#{key2:= MatchValue} = Map.
#{key1 => «Value1», key2 => «Value2»}
4> MatchValue.
«Value2»
Map2 = Map#{key3 => «Value3»}.
#{key1 => «Value1», key2 => «Value2», key3 => «Value3»}
Map3 = Map2#{key1:= change_value1}.
#{key1 => change_value1, key2 => «Value2», key3 => «Value3»}
В текущем релизе, данный тип помечен как экспериментальный и имеет ряд ограничений, а именно: Значение можно извлекать только вспомогательными функциями, но нельзя использовать следующую конструкцию: Value = Map#{key1}
Нельзя задать ключ, который не известен по время компиляции
Полный список возможной, который будет реализован позже, находится здесь.Erlang/OTP портирован на ОС реального времени OSE
OSE — это высоко-производительная, POSIX совместимая операционная система реального времени, которая призвана увеличить эффективность использования оборудования.В highlights указано, что не все часть платформы были портированы.Теперь анонимным функциям можно давать имена
И использовать их рекурсивно:
1> TestFun = fun Factorial (0) → 1; Factorial (Num) when Num > 0 → Num * Factorial (Num — 1) end.
#Fun
P.S. не хватает кармы, чтобы опубликовать в тематических хаб.