Релиз Erlang/OTP 25

После года разработки cостоялся релиз функционального языка программирования Erlang 25, нацеленного на разработку распределённых отказоустойчивых приложений, обеспечивающих параллельную обработку запросов в режиме реального времени. Язык получил распространение в таких областях, как телекоммуникации, банковские системы, электронная коммерция, компьютерная телефония и организация мгновенного обмена сообщениями. Одновременно выпущен релиз OTP 25 (Open Telecom Platform) – сопутствующего набора библиотек и компонентов для разработки распределённых систем на языке Erlang.

Основные новшества:

  • Реализована новая конструкция “maybe … end” для группировки нескольких выражений в одном блоке, похожая на “begin … end”, но не приводящая к экспорту переменных из блока.
  • Добавлена поддержка выборочной активации возможностей, позволяющая тестировать и постепенно внедрять новые и потенциально нарушающие совместимость возможности языка и runtime без нарушения работы существующего кода. Возможности могут включаться и отключаться как во время компиляции, так и при помощи директивы feature() в файлах с кодом. Например, для включения нового выражения maybe в коде можно указать “feature(maybe_expr,enable)”.
  • В JIT-компиляторе реализованы оптимизации на основе информации о типах данных и добавлена поддержка 64-разрядных процессоров ARM (AArch64). Улучшена поддержка утилит perf и gdb, в которые обеспечена передача сведений о номерах строк в коде.
  • Добавлен новый модуль peer с функциями для запуска связанных узлов Erlang. После потери управляющего соединения с узлом работа узда автоматически завершается.
  • Добавлена поддержка OpenSSL 3.0.
  • В модуль maps добавлены функции groups_from_list/2 и groups_from_list/3 для группировки списка элементов.
  • В модуль lists добавлены функции uniq/1, uniq/2, enumerate/1 и enumerate/2 для отсеивания дублирующихся элементов в списке и генерации списка кортежей с номерами элементов.
  • В модуле rand реализован новый очень быстрый генератор псевдослучайных чисел.
Release. Ссылка here.