Se ha lanzado una nueva versión del lenguaje de programación del sistema Nim. Tiene incompatibilidad parcial con la versión 1.0, por ejemplo debido a una conversión de tipos más estricta. Pero en este caso hay una bandera -useVersion:1.0.
La principal innovación es un nuevo recolector de basura, habilitado por la opción -gc:arc. El autor del lenguaje, Andreas Rumpf, va a escribir un artículo detallado sobre las ventajas de ARC, pero por ahora te invita a leer con su actuación en el FOSDEM, que muestra los resultados del benchmark.
- El compilador ahora admite la opción --asm para un examen más conveniente del código ensamblador producido.
- El pragma de alineación se puede usar en campos y variables de objetos, esto es similar a aligns en C/C++.
- El operador =sink ahora es opcional. El compilador ahora puede usar una combinación de =destroy y copyMem para mover objetos de manera eficiente.
- Las conversiones a enteros sin signo no se verifican en tiempo de ejecución. Detalles en https://github.com/nim-lang/RFCs/issues/175
- Nueva sintaxis para lvalue: var b {.byaddr.} = expr, conectado mediante import std/decls
- El compilador admite un nuevo modificador -panics:on, que convierte errores de tiempo de ejecución como IndexError o OverflowError en errores fatales que no se pueden detectar mediante try. Esto puede mejorar la eficiencia del tiempo de ejecución y el tamaño del programa.
- El código JS generado utiliza sólo espacios en lugar de una mezcla de espacios y tabulaciones.
- El compilador ha agregado soporte para el pragma .localPassc, que se puede usar para manejar opciones especiales de backend de C(++) para un archivo C(++) que se genera a partir del módulo Nim actual.
- Nimpretty ya no acepta un argumento negativo para establecer la sangría, ya que esto estaba rompiendo archivos.
- Se han agregado nuevas macros (recopilar, duplicar, capturar), conectadas mediante importación de azúcar.
Además, se han agregado muchos cambios a la biblioteca estándar y se han corregido muchos errores.
Fuente: linux.org.ru