Відбувся реліз функціональної мови програмування Erlang 29, націленої на розробку розподілених стійких до відмови програм, що забезпечують паралельну обробку запитів в режимі реального часу. Мова набула поширення в таких областях, як телекомунікації, банківські системи, електронна комерція, комп'ютерна телефонія та організація миттєвого обміну повідомленнями. Одночасно випущено реліз OTP 29 (Open Telecom Platform) — супутнього набору бібліотек та компонентів для розробки розподілених систем мовою Erlang.
Основні нововведення:
- У SSH-сервері за замовчуванням відключені сервіси shell та exec, а також підсистема SFTP. Для виконання Erlang-коду автентифікованими користувачами через SSH тепер потрібна зміна налаштувань. У SSH за замовчуванням активовано гібридний алгоритм обміну ключами mlkem768x25519-sha256.
- У бібліотеці SSL у конфігурації за умовчанням виставлений найбільш пріоритетним гібридний алгоритм обміну ключами «x25519mlkem768», стійкий до підбору на квантовому комп'ютері і комбінацію з X25519 ECDH і алгоритму ML-KEM (CRYSTALS-Kyber).
- Доданий атрибут "-unsafe" для позначення функцій небезпечними (unsafe). У бібліотеці Erlang/OTP такі функції позначені і компілятор тепер видає попередження. Додана можливість відстеження через xref виклику unsafe-функцій та функцій без документації.
- Для коректної роботи сторонніх складальних інструментів, таких як Rebar3, фільтрація ігнорованих викликів (ignore_xref) тепер виконується безпосередньо всередині xref.
- Додано модуль ct_doctest для автоматичного тестування прикладів коду документації.
- Доданий модуль io_ansi для створення консольних програм, що підтримують підстановку в термінал ANSI-послідовностей (Virtual Terminal Sequences), наприклад, для зміни стилю та кольору тексту.
- При пошуку файлових шляхів з кодом (PATH) поточний каталог (".") переміщений з першої на останню позицію списку і тепер перевіряється в останню чергу.
- Припинено формування 32-розрядних збірок для Windows.
- Реалізовано повноцінний тип даних для записів (native record, EEP-79), який можна використовувати замість традиційних записів, побудованих на кортежах.
- Додано обмежувач "is_integer/3" для перевірки цілих чисел на належність діапазону (наприклад, "is_integer(I, 0, 100)").
- Реалізовані генератори списків з множинними значеннями (EEP-78), що повертають декілька елементів за ітерацію (наприклад, «[-I, I || I 42 || K
Джерело: opennet.ru
