После двух с половиной лет разработки представлен релиз динамического языка программирования Clojure 1.12, базирующегося на языковых конструкциях Lisp и сочетающего в себе возможности функционального и многопоточного программирования с чертами современных скриптовых языков. Код программ на языке Clojure транслируется в Java байт-код и выполняется на виртуальной машине JVM. Код компилятора Clojure, библиотек и runtime-компонентов распространяется в рамках лицензии Eclipse Public License.
Среди изменений в новой версии:
- Добавлены функции для динамической загрузки библиотек в интерактивном режиме REPL (Read-Eval-Print Loop) без перезапуска JVM и без потери состояния выполнения.
- В Clojure CLI добавлена функция invoke-tool для вызова вспомогательных функций в отдельных процессах.
- В дополнение к clojure.java.shell добавлено новое пространство имён clojure.java.process, упрощающее запуск внешних процессов и организацию обмена данными с ними.
- Предоставлена возможность обращения к Java-методам как к обычным функциям (компилятор автоматически сгенерирует обёртку).
- Добавлена поддержка нового синтаксиса вызова методов с указанием имени класса, в котором они определены: Class/method (вызов статического метода), Class/.method (вызов экземпляра метода) и Class/new (вызов конструктора).
- Предоставлена возможность обращения к массивам, используя синтаксис «ComponentClass/#dimensions», например, для ссылки на класс c двумерным массивом строк можно указать «String/2».
- Устранена уязвимость (CVE-2024-22871), приводящая к зацикливанию при чтении определённым образом сериализированных объектов.
Источник: http://www.opennet.ru/opennews/art.shtml?num=61827