Вышел 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<erl_eval.30.106461118> 2> TestFun(4). 24 

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

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

Так же

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

Готовые пакеты для вашей системы можно найти здесь.
Полный лог изменений
Официальная новость

P.S. не хватает кармы, чтобы опубликовать в тематических хаб.

ссылка на оригинал статьи http://habrahabr.ru/post/218855/