Quando o terceiro lançamento principal da linguagem de programação Dart for lançado em meados de 2023, valores nulos não serão mais permitidos onde não são esperados. Portanto, a linguagem Dart do Google não aceitará null como resposta.
Nulo neste contexto é um valor de atribuição que indica a ausência de um valor ou objeto referenciado. As referências nulas datam de cerca de 1964, quando o cientista da computação britânico Tony Hoare introduziu o conceito na família de linguagens ALGOL. Ele os considerou seu “erro de bilhões de dólares” pela quantidade de tempo e dinheiro que custou em reparos de erros – um problema até hoje.
O Dart, uma linguagem semelhante a C orientada a objetos, que uma vez aspirou a substituir o JavaScript, suportava segurança nula sonora – uma maneira de evitar erros de acessar variáveis ??definidas como nulas – a partir da versão 2.12. Mas manteve modos para execução de código sem segurança nula ou com segurança nula parcial.
Linguagem Dart do Google não aceitará null como resposta
O Dart 3 não irá mais atender essas possibilidades abaixo do ideal.
“Nosso próximo lançamento, o Dart 3, completa a jornada para uma linguagem totalmente segura e totalmente segura”, explicou Michael Thomsen, gerente de produto do Dart e do Flutter, em uma postagem no blog. “Como última etapa dessa jornada, estamos removendo vários artefatos históricos do SDK e da linguagem Dart, incluindo a remoção do suporte para execução sem segurança nula sólida”.
A boa segurança nula, explica Thomsen, significa que uma variável não anulável nunca contém um valor nulo. Nem toda implementação de segurança nula é tão certa: TypeScript, por exemplo, não é sólido – você pode atribuir um valor nulo a uma variável não nula. C# tem exceções para suas verificações nulas. E Kotlin também tem exceções.
A transição do Dart ajudará a detectar bugs relacionados ao tipo no tempo de compilação e deve melhorar a legibilidade do código, a capacidade de manutenção e a compilação antecipada (AOT).
Há um custo no entanto. Segurança nula sólida será a única opção para que os arquivos pubspec – metadados do pacote Dart – com uma restrição SDK definida para menos de 2.12 não sejam mais resolvidos no Dart 3. De acordo com Thomsen, cerca de 85 por cento do código Flutter (escrito em Dart) oferece suporte a segurança nula sólida neste ponto. Aqueles com aplicativos e pacotes nos 15% restantes devem adaptar seu código antes da chegada do Dart 3.
A montadora alemã BMW gerenciou recentemente uma revisão de código de segurança nula para seu aplicativo MyBMW, que foi construído com a estrutura Dart Flutter. “Embora a migração para segurança nula certamente não tenha sido fácil para uma base de código em larga escala como o aplicativo MyBMW, as ferramentas do Google nos deram uma grande ajuda no processo de migração”, disse Christian Schmid, chefe de desenvolvimento de aplicativos móveis da BMW AG, em uma declaração. “Depois de concluir a migração, gostamos de ter uma base de código menos propensa a erros.”
Atualmente, o Dart ocupa o 16º lugar em popularidade de linguagem de programação de acordo com a Pesquisa de desenvolvedores de 2022 do Stack Overflow. Entre cerca de 72.000 entrevistados, cerca de 6,54% disseram que usaram o Dart, em comparação com 9,16% para Kotlin (15º), 9,32% para Rust (14º) e 11,15% para Go (13º). A linguagem de programação Swift da Apple ficou em 19º lugar, com 4,91 por cento. A linguagem mais usada entre os respondentes foi o JavaScript (1º), usado por 65,36 por cento.
Após o lançamento do Dart 3, o próximo marco significativo para a linguagem provavelmente será o suporte para compilar o código Dart no WebAssembly (Wasm), o que permitirá que os aplicativos da Web do Flutter sejam executados como código nativo nos navegadores. Esse esforço requer a cooperação do W3C e dos fornecedores de navegadores para adicionar suporte para linguagens coletadas de lixo (como Dart) ao Wasm por meio da extensão WasmGC.