9 апреля вышел мажорный релиз платформы Erlang/OTP 17.0.
Пожалуй одно из самых главных нововведений, которое все давно ждали. Лучше всего показать на примере:
В текущем релизе, данный тип помечен как экспериментальный и имеет ряд ограничений, а именно:
Полный список возможной, который будет реализован позже, находится здесь.
OSE — это высоко-производительная, POSIX совместимая операционная система реального времени, которая призвана увеличить эффективность использования оборудования.
В highlights указано, что не все часть платформы были портированы.
И использовать их рекурсивно:
Например, все исходники теперь по умолчанию используют utf8. О других усовершенствованиях более подробно здесь.
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. не хватает кармы, чтобы опубликовать в тематических хаб.
This entry passed through the Full-Text RSS service — if this is your content and you're reading it on someone else's site, please read the FAQ at http://ift.tt/jcXqJW.
Комментариев нет:
Отправить комментарий