Clojure 1.12

Clojure 1.12: novidades do novo lançamento da linguagem de programação

Clojure 1.12 traz novos recursos, como o carregamento dinâmico de bibliotecas no REPL, chamadas simplificadas para métodos Java e a correção de vulnerabilidades, fortalecendo sua plataforma funcional e multithread.

Logo do Clojure em um fundo azul claro, destacando a palavra 'Clojure' ao lado de um símbolo com cores azul, verde e branco.

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 namespace clojure.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 e Class/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.