Após dois anos e meio de desenvolvimento, foi lançado o Clojure 1.12, uma nova versão da linguagem de programação dinâmica baseada nas construções do Lisp. O Clojure combina a programação funcional e a programação multithread com características modernas de linguagens de script. O código Clojure é compilado em bytecode Java e executado na máquina virtual JVM. O compilador, as bibliotecas e os componentes de tempo de execução do Clojure são distribuídos sob a licença Eclipse Public License.
Principais mudanças na versão 1.12:
- Carregamento dinâmico de bibliotecas no REPL: Agora é possível carregar bibliotecas dinamicamente no modo interativo REPL (Read-Eval-Print Loop) sem a necessidade de reiniciar a JVM e sem perder o estado atual da execução.
- Nova função invoke-tool no Clojure CLI: A CLI recebeu uma nova função chamada
invoke-tool
, que permite chamar funções auxiliares em processos separados, melhorando a organização e execução de tarefas complexas. - Novo namespace para processos externos: Além do
clojure.java.shell
, foi adicionado o namespaceclojure.java.process
, que simplifica a execução de processos externos e a comunicação com eles. - Chamadas simplificadas para métodos Java: A nova versão permite que métodos Java sejam acessados como funções comuns, com o compilador gerando automaticamente uma camada de abstração.
- Suporte a novo sintaxe para chamadas de métodos Java: Agora é possível chamar métodos usando a sintaxe:
Class/method
para métodos estáticos,Class/.method
para métodos de instância eClass/new
para construtores. - Acesso simplificado a arrays: Clojure agora suporta o acesso direto a arrays usando a sintaxe “ComponentClass/#dimensions”. Por exemplo, um array bidimensional de strings pode ser referenciado como
"String/2"
. - Correção de vulnerabilidade: A vulnerabilidade CVE-2024-22871, que causava loops infinitos ao ler objetos serializados de forma específica, foi corrigida nesta versão.
Com essas atualizações, o Clojure 1.12 reforça seu compromisso em oferecer uma plataforma robusta e moderna para desenvolvedores que utilizam a JVM.