Lanzamiento del lenguaje de programación Nim 1.4.0

Ha salido una nueva versión del lenguaje de programación de sistemas Nim, que cumplió un año desde su lanzamiento este septiembre de la primera versión estable. En cuanto a la sintaxis, el lenguaje es similar a Python, y en cuanto a rendimiento, casi como C++. Según Preguntas Frecuentes el lenguaje toma prestado de (en orden de importancia): Modula 3, Delphi, Ada, C++, Python, Lisp, Oberon.


Funciona en todas partes gracias a la posibilidad de compilar a C/C++/Objective-C/JS. Soporta macros, OOP, generics, excepciones, cambio en caliente de código y mucho más. Licencia — MIT.

Los cambios más significativos:

  • Se ha agregado un nuevo recolector de basura ORC, que utiliza un algoritmo de ARC, pero maneja de manera especial las referencias cíclicas. Se activa con la opción —gc:orc. Sobre las diferencias entre ARC/ORC hay un excelente artículo.

  • Se ha incorporado un modo de definiciones de funciones estrictas, que activa una verificación adicional de la mutabilidad de los objetos. Se activa a través de la pragma {.experimental: "strictFuncs".} o mediante la clave —experimental:strictFuncs.

  • La palabra clave from ahora se puede utilizar como operador.

  • Se ha añadido la pragma .noalias. Se mapea a la palabra clave C restrict, para aumentar la eficiencia que puede proporcionar esta palabra.

  • 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 de modo que el resultado se guarda en $nimcache/main$exeExt, utilizando la misma lógica que nim c -r para evitar la recompilación cuando no se han modificado los archivos fuente. Ejemplo:

nim r compiler/nim.nim —help # compilado por primera vez
echo ‘import os; echo getCurrentCompilerExe()’ | nim r — # esto también funciona
nim r compiler/nim.nim —fullhelp # sin recompilación
nim r —nimcache:/tmp main # binario guardado en /tmp/main

  • Se ha añadido una nueva sugerencia —hint:msgOrigin, que mostrará dónde el compilador generó mensajes de error/advertencia. Esto ayuda cuando no está claro de dónde proviene el mensaje.

  • Se ha agregado la bandera —backend:js|c|cpp|objc (o -b:js, etc.) para cambiar el backend.

  • Se ha añadido la bandera —usenimcache para la salida de binarios en nimcache.

  • Se han eliminado las claves: —oldNewlines, —laxStrings, —oldast, —oldgensym

  • La utilidad nimsuggest ahora muestra no solo la declaración previa, sino también la ubicación de la implementación a solicitud de def.

Además, se han añadido numerosos cambios a la biblioteca estándar y se han corregido muchos errores.

Fuente: linux.org.ru

Compra un hosting fiable para sitios web con protección contra DDoS, servidores VPS VDS 🔥 Compra un hosting fiable para sitios web con protección contra DDoS, servidores VPS VDS | ProHoster