A versão Nim 0.20 pode ser considerada uma candidata à primeira versão estável 1.0, incorporando diversas mudanças que quebram a interoperabilidade necessárias para formar a primeira ramificação estável que confirmará o estado da linguagem. A versão 1.0 é apresentada como uma versão de suporte estável e de longo prazo que garantirá a manutenção da compatibilidade com versões anteriores na parte estabilizada da linguagem. Separadamente, o compilador também terá um modo experimental disponível no qual serão desenvolvidos novos recursos que podem quebrar a compatibilidade com versões anteriores.
Entre as mudanças propostas no Nim 0.20 estão:
- "Not" agora é sempre um operador unário, ou seja, expressões como “assert(not a)” agora não são permitidas e apenas “assert not a” é permitido;
- Habilitadas verificações rigorosas para conversão de números inteiros e reais na fase de compilação, ou seja, a expressão "const b = uint16(-1)" agora resultará em erro, pois -1 não pode ser convertido em um tipo inteiro sem sinal;
- É fornecida a descompactação de tuplas para constantes e variáveis de loop.
Por exemplo, agora você pode usar atribuições como 'const (d, e) = (7, "eight")" e "for (x, y) in f"; - Fornecida inicialização padrão de hashes e tabelas. Por exemplo, após declarar “var s: HashSet[int]” você pode executar imediatamente “s.incl(5)”, o que anteriormente levava a um erro;
- Informações de erro aprimoradas para problemas relacionados ao operador “case” e índice de array fora dos limites;
- É proibido alterar o comprimento da tabela durante a iteração.
Fonte: opennet.ru