Se ha lanzado una nueva versión del lenguaje de programación del sistema Nim, que en septiembre celebró su primer aniversario. primera versión estable. El lenguaje es similar en sintaxis a Python y casi como C++ en rendimiento. De acuerdo a Preguntas Frecuentes El lenguaje toma prestado en gran medida (en orden de contribución): Modula 3, Delphi, Ada, C++, Python, Lisp, Oberon.
Funciona en todas partes gracias a la capacidad de compilar en C/C++/Objective-C/JS. Es compatible macros, OOP, genéricos, y deducciones, intercambio de código activo y mucho más. Licencia: MIT.
Los cambios más significativos:
-
Hay un nuevo recolector de basura ORC que utiliza el algoritmo de ARC, pero al mismo tiempo maneja las referencias circulares de una manera especial. Habilitado por la opción -gc:orc. Acerca de las diferencias ARC/ORC hay un gran articulo.
-
Se ha agregado un modo para definiciones de funciones estrictas, que permite una verificación adicional de la mutabilidad de los objetos. Se activa mediante la pragma {.experimental: "strictFuncs".} o mediante la clave --experimental:strictFuncs.
-
La palabra clave from ahora se puede utilizar como operador.
-
Se agregó .noalias pragma. Se asigna a la palabra clave restrictiva de C para aumentar la eficiencia que la palabra clave puede proporcionar.
-
Las advertencias específicas ahora se pueden convertir en errores mediante --warningAsError[X]:on|off.
-
Nuevo comando: nim r main.nim [args...], que compila y ejecuta main.nim, e incluye --usenimcache para que el resultado se almacene en $nimcache/main$exeExt, usando la misma lógica que nim c - r para deshacerse de la recompilación cuando las fuentes no han cambiado. Ejemplo:
nim r compilador/nim.nim --ayuda # compilado por primera vez
echo 'importar sistema operativo; echo getCurrentCompilerExe()' | nim r - # esto también funciona
compilador nim r/nim.nim --fullhelp # sin recompilación
nim r —nimcache:/tmp main # binario guardado en /tmp/main
-
Se agregó una nueva sugerencia -hint:msgOrigin, que mostrará dónde generó el compilador mensajes de error/advertencia. Esto ayuda cuando no es obvio de dónde viene el mensaje.
-
Se agregó la bandera —backend:js|c|cpp|objc (o -b:js, etc.) para cambiar el backend.
-
Se agregó el indicador --usenimcache para generar archivos binarios en nimcache.
-
Claves eliminadas: --oldNewlines, --laxStrings, --oldast, --oldgensym
-
La utilidad nimsuggest ahora muestra no solo la declaración previa, sino también la ubicación de implementación para una solicitud def.
Además, se han agregado muchos cambios a la biblioteca estándar y se han corregido muchos errores.
Fuente: linux.org.ru