Nastąpiła premiera funkcjonalnego języka programowania Erlang 29, skierowanego na rozwój rozproszonych aplikacji odpornych na błędy, zapewniających równoległe przetwarzanie żądań w czasie rzeczywistym. Język zyskał zastosowanie w takich dziedzinach jak telekomunikacja, systemy bankowe, handel elektroniczny, telefonia komputerowa oraz organizacja natychmiastowej wymiany wiadomości. Jednocześnie wydano wersję OTP 29 (Open Telecom Platform) — zestaw bibliotek i komponentów do rozwijania rozproszonych systemów w języku Erlang.
Główne nowości:
- W serwerze SSH domyślnie wyłączone są usługi shell i exec, a także podsystem SFTP. Aby umożliwić wywoływanie kodu Erlang przez uwierzytelnionych użytkowników przez SSH, wymagane jest teraz zmodyfikowanie ustawień. W SSH domyślnie aktywowany jest hybrydowy algorytm wymiany kluczy mlkem768x25519-sha256.
- W bibliotece SSL W domyślnej konfiguracji priorytetowo ustawiono hybrydowy algorytm wymiany kluczy „x25519mlkem768”, odporny na ataki z wykorzystaniem komputerów kwantowych, będący kombinacją X25519 ECDH oraz algorytmu ML-KEM (CRYSTALS-Kyber).
- Dodano atrybut „-unsafe” do oznaczania funkcji jako niebezpiecznych (unsafe). W bibliotece Erlang/OTP takie funkcje są oznaczone, a kompilator teraz wydaje ostrzeżenie. Dodano możliwość śledzenia przez xref wywołań niebezpiecznych funkcji i funkcji bez dokumentacji.
- Aby zapewnić prawidłowe działanie zewnętrznych narzędzi kompilacyjnych, takich jak Rebar3, filtrowanie ignorowanych wywołań (ignore_xref) teraz odbywa się bezpośrednio w xref.
- Dodano moduł ct_doctest do automatycznego testowania przykładów kodu z dokumentacji.
- Dodano moduł io_ansi do tworzenia aplikacji konsolowych, które obsługują podstawianie w terminalu sekwencji ANSI (Virtual Terminal Sequences), na przykład do zmiany stylu i koloru tekstu.
- Podczas wyszukiwania ścieżek plików z kodem (PATH) aktualny katalog („.”) przeniesiono z pierwszej na ostatnią pozycję listy i teraz jest sprawdzany jako ostatni.
- Zaprzestano tworzenia 32-bitowych kompilacji dla systemu Windows.
- Zrealizowano pełnoprawny oddzielny typ danych dla rekordów (native record, EEP-79), który można wykorzystać zamiast tradycyjnych rekordów opartych na krotkach.
- Dodano ogranicznik „is_integer/3” do sprawdzania, czy całkowite liczby należą do zakresu (na przykład „is_integer(I, 0, 100)”).
- Zrealizowano generatory list z wieloma wartościami (EEP-78), które zwracają wiele elementów podczas iteracji (na przykład „[-I, I || I 42 || K”
Źródło: opennet.ru
