Programming Language 1.12 Released

After two and a half years of development, the dynamic programming language Clojure 1.12 has been released. Clojure is based on LISP language structures and combines the functionalities of functional and multi -flow programming with modern script languages. The program code in Clojure is broadcast in Java byte-code and executed on the JVM virtual machine. The Clojure compiler, libraries, and runtime components are spread under the Eclipse Public License.

Some of the notable changes in the new version include:

  • Added functions for dynamic loading of libraries in the interactive REPL (Read-Eval-Print Loop) without restarting JVM and without losses of the state of execution.
  • A function in Clojure CLI called invoke-tool has been added to call auxiliary functions in individual processes.
  • A new namespace clojure.java.process has been introduced in addition to Clojure.java.shell to simplify the launch of external processes and organize data exchange with them.
  • The update provides the capability to refer to Java methods as ordinary functions with the compiler generating the wrapper automatically.
  • Support for new syntax of calls with the name of the class in which they are defined, such as Class/Method (call to the static method), Class/.Method (Calling the Method), and Class/New (Call Call).
  • The update also allows contacting arrays using the componentClass/#dimensions syntax. For example, to refer to a class with a two-dimensional array of strings, you can specify “String/2”.
  • An eliminated vulnerability (CVE-2024-22871) that led to bloating in a certain way of serialized objects.
/Reports, release notes, official announcements.