E foi lançada a Rust 1.72 com novos recursos, melhorias e correções. Confira as novidades e veja como instalar no Linux.
Rust é uma linguagem de programação multiprocessal compilada, de propósito geral, que está sendo desenvolvida pela Mozilla e apoiada pela LLVM.
Rust se concentra na segurança da memória e fornece os meios para alcançar alto paralelismo de trabalho, evitando o uso de coletor de lixo e tempo de execução (o tempo de execução é reduzido à inicialização básica e à manutenção padrão da biblioteca).
Esta linguagem foi concebida para ser “uma linguagem segura, concorrente e prática” e, acima de tudo, para substituir as linguagens C e C++.
A sintaxe de Rust é semelhante à de C e C++, com blocos de código delimitados por chaves e estruturas de controle de fluxo, como if, else, do, while e for.
Rust é uma linguagem de programação de código aberto que suporta programação funcional pura, processual, imperativa e orientada a objetos.
Essa linguagem de programação funciona de maneira extremamente rápida, evita os segfaults (falhas de segmentação) e garante a segurança dos subprocessos (threads).
Ela suporta abstrações de custo zero, semântica de movimento, segurança de memória garantida, encadeamentos genéricos baseados em recursos e não baseados em dados e correspondência de padrões, e também suporta inferência de tipos, tempo mínimo de execução, bem como links C eficientes.
Rust pode ser executado em um grande número de plataformas e está sendo usado na produção de empresas/organizações, como Dropbox, CoreOS, NGP e muitos mais.
O objetivo do Rust é ser uma boa linguagem para a criação de grandes programas no lado do cliente e do servidor que são executados na Internet.
Isso levou a um conjunto de recursos com ênfase em segurança, controle de distribuição de memória e simultaneidade.
Agora, há poucos dias foi anunciado o lançamento da nova versão da popular linguagem de programação “Rust 1.72”, uma versão na qual foram adicionados novos recursos, além de melhorias, correções de bugs e diversas mudanças que visam torná-lo mais fácil e fluido o processo de criação de código.
Novidades do Rust 1.72
No Rust 1.72 uma das funcionalidades mais inovadoras é a melhoria na usabilidade de elementos desabilitados através dos atributos de compilação condicional “cfg”, que permite ativar a execução do código Rust dependendo se determinados recursos do Box são suportados ou execute em plataformas específicas.
Anteriormente, os elementos cfg-disabled não eram visíveis para o compilador, mas agora isso muda, pois o compilador preserva informações vitais, incluindo nomes de elementos e condições cfg.
Isso permite que o compilador forneça feedback interessante, como destacar a indisponibilidade de um recurso devido à necessidade de habilitar um recurso específico da caixa.
E isso dá aos desenvolvedores uma orientação mais clara e facilita uma experiência de codificação mais eficiente. Por exemplo, permite entender que alguma função não está disponível devido à desativação de determinadas propriedades do recurso na caixa.
Outra das mudanças que se destaca nesta nova versão do Rust 1.72 é que foram eliminadas as restrições no tempo de avaliação de expressões constantes, pois anteriormente, para evitar loops em tempo de compilação, Rust limitava o número máximo de expressões que poderiam ser executadas durante avaliação constante.
Este recurso causava erros na compilação de código que não estava em conformidade com as restrições, portanto, na nova versão foi decidido substituir as restrições rígidas por uma tela de aviso informando cálculos constantes de longa duração.
Além disso, a verificação de lint const_eval_long_running também é aplicada por padrão para detectar loops.
Para completar, nota-se também que as listas do Clippy foram melhoradas, já que uma série de verificações do Clippy foram movidas para o compilador Rustc:
- undropped_manually_drops: alterado para nível não descartado. Ao lidar com ManuallyDrop, o valor interno não é eliminado automaticamente. Chamar std::mem::drop não tem efeito. Em vez disso, este lint agora propõe usar ManuallyDrop::into_inner como opção principal.
- invalid_utf8_in_unchecked: renomeado para nível de negação e nível de aviso; invalid_from_utf8_unchecked invalid_from_utf8. Identifica instâncias em que std::str::from_utf8_unchecked e std::str::from_utf8_unchecked_mut são usados com literais UTF-8 inválidos. Esse uso viola seus pré-requisitos de segurança e leva a um comportamento indefinido. Esta penugem agora é categoricamente proibida.
- invalid_nan_comparisons – Identifica comparações envolvendo f32::NAN ou f64::NAN como operandos. Como NaN carece de comparações significativas
- invalid_reference_casting: destaca casos em que &T é convertido em &mut T sem aproveitar a mutabilidade interna. Tais ações resultam em comportamento imediato e indefinido, independentemente de a referência ser utilizada ou não.
Das outras mudanças que se destacam na nova versão, temos:
- Uma nova parte da API foi movida para a categoria estável, incluindo métodos e implementações de características que foram estabilizadas.
- O atributo “const”, que determina a possibilidade de utilização em qualquer contexto ao invés de constantes, é utilizado nas funções:
- O suporte de terceiro nível para plataformas loongarch64-unknown-none* foi implementado. O terceiro nível envolve suporte básico, mas sem testes automatizados, publicação de compilações oficiais e verificação da compilabilidade do código.
- Em uma versão futura do Rust 1.76, está planejado abandonar o suporte para plataformas Windows 7, 8 e 8.1 e tornar o Windows 10 a versão mínima para fins de compilação e compilação.
Para saber mais sobre essa versão do Rust, acesse a nota de lançamento.
Como instalar ou atualizar o Rust 1.72
Para instalar a versão mais recente do Rust nas principais distribuições Linux, use esse tutorial:
Como instalar a linguagem de programação Rust no Linux