
Rust é uma linguagem de programação compilada multiparadigma e de uso geral.
Há poucos dias foi anunciado lançamento da nova versão da popular linguagem de programação «Rust 1.72», versão na qual foram adicionados novos recursos, além de melhorias, correções de bugs e diversas alterações que visam tornar o processo de criação de código mais fácil e fluido.
Para quem não conhece esta linguagem de programação, deve saber que concentra-se na segurança da memória e fornece os meios para alcançar alto paralelismo de tarefas, 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).
Métodos de gerenciamento de memória do Rust eles salvam o desenvolvedor de erros ao manipular ponteiros e protegem contra problemas que surgem devido ao manuseio de memória de baixo nível, como acessar uma área de memória após ela ter sido liberada, desreferenciar ponteiros nulos, estouros de buffer, etc. Para distribuir bibliotecas, fornecer compilações e gerenciar dependências, o projeto desenvolve o gerenciador de pacotes Cargo.
Principais novidades do Rust 1.72
Nesta nova versão apresentada da versão Rust 1.72 um dos características mais inovadoras é a melhoria em utilidade de itens desabilitados por atributos cfg compilação condicional, que permite que você habilite a execução do código Rust dependendo de se determinados recursos da caixa são suportados ou executados em plataformas específicas.
Anteriormente, os elementos desabilitados via cfg não eram visíveis para o compilador, mas agora isso muda, já que o compilador agora 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. 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 restrições no tempo de avaliação de expressões constantes foram removidas, anteriormente, para evitar loops em tempo de compilação, Rust limitou o número máximo de expressões que poderiam ser executadas durante a avaliação constante.
Este recurso causou erros ao compilar código que não estava em conformidade às restrições, então na nova versão foi decidido substituir as restrições estritas com tela de alerta informando sobre cálculos constantes de longa duração. A verificação de lint const_eval_long_running também é aplicada por padrão para detectar loops.
Além disso, nota-se também que As listas do Clippy foram melhoradas, já que várias verificações do Clippy foram movidas para o compilador Rustc:
- undropped_manually_drops: alterado para com nível de negação. Quando se trata de ManuallyDrop, o valor interno não é removido automaticamente. Invocar std::mem::drop não tem efeito. Em vez disso, este lint agora propõe o uso de 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 se torna &mut T sem aproveitar a mutabilidade interna. Tais ações resultam em comportamento imediato e indefinido, independentemente de a referência ser usada ou não.
Do outras mudanças que se destacam da nova versão:
- 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 de constantes em qualquer contexto, é utilizado nas funções:
- Implementado suporte de terceiro nível para plataformas loongarch64-unknown-none*. 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.
Se você interessado em saber mais sobre o assunto, você pode verificar os detalhes em o seguinte link.
Finalmente, para aqueles que estão Interessado em atualizar de uma versão anterior do Rust instalado via rustup, você pode obter a nova versão do Rust 1.72.0 com:
rustup update stable