A equipe Rust está perto de lançar a versão 1.65 da linguagem. Entre as mudanças, é descrito como “realmente uma conquista monumental” – tipos associados genéricos (GATs) como um recurso estável. Portanto, a linguagem de programação Rust versão 1.65 está quase pronta, incluindo tipos genéricos associados estáveis.
O RFC para este recurso é datado de abril de 2016, portanto, levou mais de seis anos e meio para chegar. De acordo com um post anterior do Traits Working Group, “é o problema mais votado no repositório Rust”. Em Rust, um trait é uma coleção de métodos que podem ser implementados para qualquer tipo de dado, como uma interface em outras linguagens, mas incluindo implementação e assinatura de método.
Rust já tem genéricos, mas “agora você pode apenas ter genéricos em aliases de tipo em traits (que chamamos apenas de tipos associados)”, explicou o mantenedor do Rust, Jack Huey. Este não é apenas um detalhe. “Os GATs fornecem uma base fundamental para uma vasta gama de padrões e APIs”, acrescentou Huey.
Linguagem de programação Rust 1.65 quase pronta, incluindo tipos genéricos associados estáveis
Por que o recurso demorou tanto para se estabilizar? Huey descreveu alguns dos problemas em agosto do ano passado, quando disse que “temos grandes esperanças de poder estabilizar esse recurso nos próximos meses”, uma esperança que se mostrou excessivamente otimista. Os GATs exigiam muito trabalho para os internos do Rust, incluindo análise, resolução de tempos de vida, validação de limites e muito mais, com muitos dos pull requests constituintes (código adicionado ao Rust) sendo “grandes e com considerável trabalho de design por trás deles”, disse Huey.
A notícia menos boa é que ainda existem limitações para GATs. Alguns códigos GAT não compilarão “mesmo que devessem”, disse Huey, e “infelizmente, consertar isso requer algumas refatorações no compilador que não são um projeto de curto prazo”.
Conserto de bugs
O bug tem a ver com o tempo de vida dos valores e, na mitigação, a mensagem de erro do compilador agora dirá algo como “`array` não vive o suficiente”, o que é informativo. “Achamos que o recurso ainda é imensamente útil mesmo com [esse bug] por perto”, disse Huey. É melhor, claro, ter um bug que impeça a compilação de código, do que um que compila código incorreto. Existem algumas outras limitações, e os codificadores da Rust são aconselhados a ler o post de Huey cuidadosamente antes de mergulhar.
“Estou em êxtase que isso finalmente esteja acontecendo! Eu tenho vários projetos que estão esperando por isso e nenhuma das limitações de hoje será um problema. Muito obrigado a todos os envolvidos!” disse um desenvolvedor.
A versão 1.65 inclui recursos adicionais conforme documentado nas notas de lançamento, incluindo uma atualização do compilador para o LLVM 15. Outro recurso recém-estabilizado é let else.
O pré-lançamento 1.65 foi disponibilizado para teste no início desta semana, e o lançamento completo está agendado para 3 de novembro.