A versión Nim 0.20 pódese considerar candidata á primeira versión estable 1.0, que incorpora varios cambios de interoperabilidade necesarios para formar a primeira rama estable que comprometerá o estado da lingua. A versión 1.0 preséntase como unha versión de soporte estable e a longo prazo que estará garantida para manter a compatibilidade con versións anteriores na parte estabilizada do idioma. Por separado, o compilador tamén disporá dun modo experimental no que se desenvolverán novas funcións que poidan romper a compatibilidade con versións anteriores.
Entre os cambios propostos en Nim 0.20 están:
- "Non" é agora sempre un operador unario, é dicir. agora non se permiten expresións como “afirmar(non a)” e só se permite “afirmar non a”;
- Activaron comprobacións estritas para a conversión de números enteiros e reais na fase de compilación, é dicir. a expresión "const b = uint16(-1)" agora producirá un erro, xa que -1 non se pode converter nun tipo de enteiro sen signo;
- Ofrécese a desempaquetado de tuplas para constantes e variables de bucle.
Por exemplo, agora podes usar asignacións como 'const (d, e) = (7, "oito")" e "for (x, y) in f"; - Proporcionou a inicialización predeterminada de hash e táboas. Por exemplo, despois de declarar "var s: HashSet[int]" pode executar inmediatamente "s.incl(5)", o que anteriormente provocou un erro;
- Información de erros mellorada para problemas relacionados co operador "caso" e co índice de matriz fóra dos límites;
- Está prohibido cambiar a lonxitude da táboa durante a iteración.
Fonte: opennet.ru