Dopo un anno di sviluppo, è stata rilasciata la versione 25 del linguaggio di programmazione funzionale Erlang, mirata alla creazione di applicazioni distribuite e affidabili, in grado di gestire richieste in parallelo in tempo reale. Il linguaggio ha trovato applicazione in settori come le telecomunicazioni, i sistemi bancari, l'e-commerce, la telefonia informatica e l'organizzazione di messaggi istantanei. Contemporaneamente è stato rilasciato OTP 25 (Open Telecom Platform), un insieme di librerie e componenti per lo sviluppo di sistemi distribuiti in Erlang.
Novità principali:
- È stata implementata una nuova struttura "maybe … end" per raggruppare più espressioni in un unico blocco, simile a "begin … end", ma che non porta all'esportazione delle variabili dal blocco.
- È stata aggiunta la supporto per l'attivazione selettiva delle funzionalità, che consente di testare e implementare gradualmente nuove funzionalità del linguaggio e del runtime, potenzialmente incompatibili, senza compromettere il funzionamento del codice esistente. Le funzionalità possono essere attivate e disattivate sia durante la compilazione sia mediante la direttiva feature() nei file di codice. Ad esempio, per attivare la nuova espressione maybe nel codice, si può specificare «feature(maybe_expr,enable)».
- Nel compilatore JIT sono state realizzate ottimizzazioni basate su informazioni sui tipi di dati e è stata aggiunta la supporto per processori ARM a 64 bit (AArch64). È stata migliorata la supporto per gli strumenti perf e gdb, con la trasmissione delle informazioni sui numeri di riga nel codice.
- È stato aggiunto un nuovo modulo peer con funzioni per avviare nodi Erlang collegati. Dopo la perdita della connessione di controllo con il nodo, il funzionamento del nodo viene automaticamente interrotto.
- È stata aggiunta la supporto per OpenSSL 3.0.
- Nel modulo maps sono state aggiunte le funzioni groups_from_list/2 e groups_from_list/3 per raggruppare un elenco di elementi.
- Nel modulo lists sono state aggiunte le funzioni uniq/1, uniq/2, enumerate/1 e enumerate/2 per filtrare gli elementi duplicati in un elenco e generare un elenco di tuple con i numeri degli elementi.
- Nel modulo rand è stato implementato un nuovo generatore di numeri pseudocasuali molto veloce.
Fonte: opennet.ru
