Julia 1.9 lançado com várias melhorias no compilador, e mais

E foi lançado o Julia 1.9 com várias melhorias no compilador, e mais. Confira as novidades e veja como instalar no Linux.

Julia é uma linguagem dinâmica, de alto nível e alto desempenho para computação técnica. Ela é rápida, pois foi projetada desde o início para alta performance.

Dito isso, Julia se destaca como uma linguagem de programação de alto nível, alto desempenho, tipagem dinâmica, multiparadigma e plataforma cruzada para computação genérica, técnica e científica, com uma sintaxe semelhante à de outros ambientes de computação semelhantes.

Essa linguagem usa o despacho múltiplo como um paradigma, facilitando a expressão de padrões de programação orientada a objetos e funcionais.

A biblioteca padrão fornece E/S assíncrona, controle de processo, criação de log, criação de perfil, um gerenciador de pacotes e muito mais.

Além disso, há um ecossistema rico de mais de 2400 pacotes e contados em vários domínios.

Julia é fácil de usar pois possui sintaxe de alto nível e é digitado dinamicamente, fornecendo acessibilidade para programadores de todos os níveis de experiência e níveis de experiência, e fazendo com que pareça uma linguagem de script.

Agora, foi anunciado o lançamento da nova versão da linguagem de programação Julia 1.9.

Novidades do Julia 1.9

Julia 1.9 lançado com várias melhorias no compilador, e mais
Julia 1.9 lançado com várias melhorias no compilador, e mais

Esta nova versão do Julia 1.9 destaca várias melhorias de compilador/tempo de execução, pois houve uma redução significativa no tempo para a primeira execução.

A pré-compilação do pacote agora salva o código nativo em “pkgimage”, o que significa que o código gerado durante a pré-compilação não precisará ser recompilado após o carregamento do pacote. O uso do modo pkgimages pode ser desabilitado com a opção “–pkgimages=no”.

Outra mudança que se destaca no Julia 1.9 é que as chamadas com argumentos não específicos do tipo agora podem ser otimizadas por divisão de união para injeção ou resolução estática, mesmo se houver vários tipos diferentes de candidatos a despacho.

Isso pode melhorar o desempenho em determinadas situações em que os tipos de objeto não são totalmente resolvidos estaticamente, resolvendo estaticamente os sites de chamada “@nospecialize-d” e evitando a recompilação.

No Julia 1.9 os literais de um único caractere agora suportam a mesma sintaxe dos literais de cadeia de caracteres; essas sintaxes podem representar sequências UTF-8 inválidas, conforme permitido pelo tipo Char.

Além disso, no Linux e no Windows, a opção “–threads=auto” agora tenta determinar o número de processadores disponíveis com base na afinidade da CPU, que é uma máscara normalmente definida em ambientes de HPC e nuvem.

A opção “–math-mode=fast” foi desativada, em vez da qual é recomendável usar a macro “@fastmath”, que tem semântica bem definida, mais o parâmetro “–threads” agora tem o formato “auto | N[,auto|M]”, onde M especifica o número de threads interativos a serem criados.

No Julia 1.9 foi adicionada a opção “–heap-size-hint=” para definir o limite após o qual a coleta de lixo ativa começa. O tamanho pode ser especificado em bytes, kilobytes (1.000 KB), megabytes (300 MB) ou gigabytes (1,5 GB).

A macro “@invoke” introduzida na versão 1.7 agora é exportada e está disponível para uso.

Além disso, agora ele usa o método “Core.Typeof(x)” em vez de “Any” quando a anotação de tipo para o argumento “x” é omitida. Isso é necessário para que os tipos passados ​​como argumentos sejam processados ​​corretamente.

Para completar, “Threads.@spawn” agora tem um primeiro argumento opcional de “:default” ou “:interactive”. Uma tarefa interativa requer uma resposta de baixa latência e é projetada para ser curta ou frequente. Tarefas interativas serão executadas em encadeamentos interativos se forem especificadas ao iniciar Julia.

Das outras alterações destacam-se:

  • Negar a função de predicado “!f” agora retorna uma função composta “(!) ∘ f” em vez de uma função anônima.
  • As funções de fatia de dimensão agora funcionam em várias dimensões: cada fatia, cada linha e cada coluna retornam um objeto Slices que permite o envio para fornecer métodos mais eficientes.
  • A macro ” @kwdef ” foi adicionada à API pública.
  • Corrigido um problema com a ordem das operações em “fld1”.
  • A classificação agora é sempre estável ao longo do tempo (QuickSort redesenhado).
  • O número padrão de encadeamentos BLAS agora é igual ao número de encadeamentos de CPU na arquitetura ARM e metade do número de encadeamentos de CPU em outras arquiteturas.
  • Printf: Mensagens de erro reformuladas para strings malformadas para melhor legibilidade.
  • Perfil: Nova função “Profile.take_heap_snapshot(arquivo)” que grava um arquivo no formato “.heapsnapshot” baseado em JSON suportado pelo Chrome.
  • Adicionado suporte para a especificação Unicode 15.
  • Combinações aninhadas de tuplas e tuplas de caracteres nomeados agora podem ser usadas como parâmetros de tipo.

Para saber mais sobre essa versão do Julia, acesse a nota de lançamento.

Como instalar ou atualizar o Julia

Para instalar a versão mais recente do Julia nas principais distribuições Linux, use esse tutorial:
Como instalar a linguagem de programação Julia no Linux via Snap

Sobre o Edivaldo Brito

Edivaldo Brito é analista de sistemas, gestor de TI, blogueiro e também um grande fã de sistemas operacionais, banco de dados, software livre, redes, programação, dispositivos móveis e tudo mais que envolve tecnologia.

Deixe um comentário

Esse site utiliza o Akismet para reduzir spam. Aprenda como seus dados de comentários são processados.