Pull to refresh

Вышел Erlang/OTP 17.0

Reading time2 min
Views8.8K
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<erl_eval.30.106461118>
2> TestFun(4).
24

Усовершенствование поддержки юникода

Например, все исходники теперь по умолчанию используют utf8. О других усовершенствованиях более подробно здесь.

Так же

  • Новая опция {active, N} для TCP, UDP и SCTP сокетов
  • Улучшен маппинг из ASN.1 OCTET STRING и битовых строк в Erlang типы, и другие улучшения и оптимизации в ASN.1
  • Добавлен новый, опциональный, механизм балансировки использования планировщика
  • Добавлена экспериментальная возможность использования «dirty» планироващиков


LYSE доработали новую главу по мапам — learnyousomeerlang.com/maps
Joe Armstrong об изменениях — http://joearms.github.io/2014/02/01/big-changes-to-erlang.html
Готовые пакеты для вашей системы можно найти здесь.
Полный лог изменений
Официальная новость
Tags:
Hubs:
Total votes 42: ↑39 and ↓3+36
Comments5

Articles