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
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