La versión Nim 0.20 puede considerarse candidata para la primera versión estable 1.0, incorporando varios cambios que rompen la interoperabilidad necesarios para formar la primera rama estable que confirmará el estado del lenguaje. La versión 1.0 se promociona como una versión estable y con soporte a largo plazo que garantizará el mantenimiento de la compatibilidad con versiones anteriores en la parte estabilizada del lenguaje. Por otra parte, el compilador también tendrá disponible un modo experimental, en el que se desarrollarán nuevas características que puedan violar la compatibilidad con versiones anteriores.
Entre los cambios propuestos en Nim 0.20 se encuentran:
- "Not" ahora es siempre un operador unario, es decir expresiones como "afirmar (no a)" ahora no están permitidas y solo se permite "afirmar no a";
- Se habilitaron controles estrictos para la conversión de números enteros y reales en la etapa de compilación, es decir. la expresión "const b = uint16(-1)" ahora generará un error, ya que -1 no se puede convertir a un tipo entero sin signo;
- Se proporciona el descompresión de tuplas para constantes y variables de bucle.
Por ejemplo, ahora puedes usar asignaciones como 'const (d, e) = (7, "ocho")" y "for (x, y) in f"; - Se proporcionó inicialización predeterminada de hashes y tablas. Por ejemplo, después de declarar “var s: HashSet[int]” puede ejecutar inmediatamente “s.incl(5)”, lo que anteriormente generaba un error;
- Información de error mejorada para problemas relacionados con el operador "case" y el índice de matriz fuera de límites;
- Está prohibido cambiar la longitud de la tabla durante la iteración.
Fuente: opennet.ru