Основные новшества:
- Реализована новая конструкция "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 реализован новый очень быстрый генератор псевдослучайных чисел.
Источник: https://www.opennet.ru/opennews/art.shtml?num=57223
(opennet.ru, мини-новости)