È disponibile una nuova versione del linguaggio di programmazione OCaml 4.14.2, che supporta concetti di programmazione funzionale, imperativa e orientata agli oggetti, ed è progettato per creare programmi sicuri e affidabili. Il linguaggio utilizza tipizzazione statica, raccolta dei rifiuti, tipi che evitano il buffer overflow, verifica e analisi statica durante la compilazione. Il codice sorgente per il linguaggio OCaml è distribuito con licenza LGPL.
Modifiche nella nuova versione:
- Nell'ambiente di esecuzione:
- Aggiunti prototipi alle definizioni e dichiarazioni in stile funzioni-C.
- Sono stati utilizzati prototipi rigorosi per i primitivi.
- Per macOS è cessato l'uso di «-flat-namespace».
- È stata garantita la verifica che Bool_val(v) abbia tipo bool in C++;
- Nel sistema di build:
- Consentito l'uso di percorsi con spazi come obiettivi di installazione.
- Per OpenBSD >= 7.3, durante la linkaggio è stato utilizzato il flag «-no-execute-only».
- È consentito ai segmenti di codice di rimanere leggibili. Questo è necessario per il marshalling di chiusure.
- Disattivata l'integrazione del flusso di controllo per OpenBSD >= 7.4 per correggere errori con istruzioni non valide su alcune CPU.
- Errori corretti:
- Durante il calcolo dei messaggi di errore ad alto livello per applicazioni di funzioni e inclusioni, non vengono aggiunte uguaglianze inconsistenti.
- Correzione della gestione errata dell'injectività per tipi ricorsivi privati.
- Correzione dell'eccezione non gestita Ctype.Escape in alcuni programmi errati che generano tipi ricorsivi.
- Correzione di compact_allocate per gestire casi patologici che portano a una compressione molto lenta.
- Abilitazione automatica di fma emulato per Visual Studio 2019+, che consente di eseguire configurazioni sia con CPU pre-Haswell/pre-Piledriver o di avviare esecuzioni in VirtualBox. Ripristinato il parità con altri porting per Windows, ora non è richiesta l'indicazione esplicita dell'opzione "—enable-imprecise-c99-float-ops".
- Correzione in caml_unregister_frametable.
- Reinizializzazione più ragionevole dei mutex I/O dopo fork().
- Correzione della dimensione della tabella dei frame che compromette la retrocompatibilità nei sistemi amd64 BSD (OpenBSD, FreeBSD, NetBSD).
- Correzione del fix-modulo-cons nella compilazione delle espressioni "try-with", "&&" e "||".
- Compilazione esplicita di file eseguibili non-PIE su architetture x86 a 32 bit.
- Risolta la questione dell'inesistenza di librerie duplicate per il linker durante la compilazione di ocamlc.opt e nell'uso di systhread.
Fonte: opennet.ru
