Nach zweieinhalb Jahren Entwicklung wird die Version 1.12 der dynamischen Programmiersprache Clojure präsentiert, die auf den Sprachkonstrukten von Lisp basiert und sowohl funktionale als auch Multithreading-Programmierung mit Merkmalen moderner Skriptsprachen kombiniert. Der Code von Clojure-Programmen wird in Java-Bytecode übersetzt und auf der JVM (Java Virtual Machine) ausgeführt. Der Code des Clojure-Compilers, der Bibliotheken und der Runtime-Komponenten wird unter der Eclipse Public License veröffentlicht.
Zu den Änderungen in der neuen Version gehören:
- Funktionen zum dynamischen Laden von Bibliotheken im interaktiven REPL (Read-Eval-Print Loop) wurden hinzugefügt, ohne die JVM neu zu starten und den Ausführungszustand zu verlieren.
- Die Funktion invoke-tool zur Aufruf von Hilfsfunktionen in separaten Prozessen wurde zur Clojure CLI hinzugefügt.
- Zusätzlich zu clojure.java.shell wurde der neue Namensraum clojure.java.process hinzugefügt, der das Starten von externen Prozessen und den Datenaustausch mit ihnen vereinfacht.
- Es wurde die Möglichkeit geschaffen, auf Java-Methoden wie auf normale Funktionen zuzugreifen (der Compiler erzeugt automatisch eine Wrapper-Funktion).
- Unterstützung für die neue Syntax zum Aufrufen von Methoden mit Angabe des Klassennamens, in dem sie definiert sind: Class/method (Aufruf einer statischen Methode), Class/.method (Aufruf einer Instanzmethode) und Class/new (Aufruf eines Konstruktors) hinzugefügt.
- Die Möglichkeit, auf Arrays mit der Syntax „ComponentClass/#dimensions“ zuzugreifen, wurde bereitgestellt. Beispielsweise kann für den Verweis auf eine Klasse mit einem zweidimensionalen Array von Zeichenfolgen „String/2“ angegeben werden.
- Die Schwachstelle (CVE-2024-22871), die zu einer Endlosschleife beim Lesen bestimmter Serienobjekte führt, wurde behoben.
Quelle: opennet.ru
