Die neue Version der Programmiersprache OCaml 4.14.2 ist verfügbar. Diese unterstützt Konzepte der funktionalen, imperativen und objektorientierten Programmierung und ist darauf ausgelegt, sichere und zuverlässige Software zu erstellen. OCaml verwendet statische Typisierung, Garbage Collection, typensichere Programmierung zur Vermeidung von Buffer Overflow, sowie Prüfungen und statische Analysen während der Kompilierung. Der OCaml-Toolchain-Code wird unter der LGPL-Lizenz veröffentlicht.
Änderungen in der neuen Version:
- In der Laufzeitumgebung:
- Prototypen wurden zu Definitionen und Deklarationen im C-Stil hinzugefügt.
- Strikte Prototypen werden für die primitiven Typen verwendet.
- Für macOS wird die Verwendung von „-flat-namespace“ eingestellt.
- Es wird überprüft, ob Bool_val(v) den Typ bool in C++ hat;
- Im Build-System:
- Die Verwendung von Pfaden mit Leerzeichen als Installationsziele ist jetzt erlaubt.
- Für OpenBSD >= 7.3 wurde beim Linken das Flag „-no-execute-only“ aktiviert.
- Es ist erlaubt, dass Codeseiten lesbar bleiben. Dies ist notwendig für das Marshalling von Closures.
- Die Steuerflussintegration für OpenBSD >= 7.4 wurde deaktiviert, um Probleme mit ungültigen Befehlen auf bestimmten CPUs zu beheben.
- Fehler wurden behoben:
- Bei der Berechnung hochrangiger Fehlermeldungen für Funktionsanwendungen und -einbindungen werden inkonsistente Gleichungen nicht hinzugefügt.
- Behebung der fehlerhaften Behandlung von Injektivität für private rekursive Typen.
- Korrektur des nicht abgefangenen Ausnahmfehlers Ctype.Escape in einigen fehlerhaften Programmen, die rekursive Typen bilden.
- Behebung von compact_allocate zur Umgehung pathologischer Fälle, die zu sehr langsamer Komprimierung führen.
- Automatische Aktivierung des emulierten fma für Visual Studio 2019+, was die Konfiguration entweder mit pre-Haswell/pre-Piledriver CPUs oder das Ausführen in VirtualBox ermöglicht. Die Parität mit anderen Windows-Ports wurde wiederhergestellt; es ist jetzt nicht mehr erforderlich, die Option «—enable-imprecise-c99-float-ops» explizit anzugeben.
- Korrektur in caml_unregister_frametable.
- Vernünftigeres Reinitialisieren der I/O-Mutexe nach fork().
- Behebung eines rückwärtsinkompatiblen Speicherzuweisungsproblems für den Frame-Tabellenwert auf amd64 BSD (OpenBSD, FreeBSD, NetBSD) Systemen.
- Behebung der fix-modulo-cons-Kompilierung für die Ausdrücke «try-with», «&&» und «||».
- Explizite Erstellung von Nicht-PIE ausführbaren Dateien auf 32-Bit x86 Architekturen.
- Ein Problem mit dem Blockieren von doppelten Bibliotheken für den Linker beim Kompilieren von ocamlc.opt und der Verwendung von systhread wurde behoben.
Quelle: opennet.ru
