Linguaxe de programación Nim versión 1.4.0

Lanzouse unha nova versión da linguaxe de programación do sistema Nim, que este mes de setembro cumpriu o seu primeiro aniversario. primeira versión estable. A linguaxe é semellante en sintaxe a Python, e case como C++ no rendemento. Dacordo con FAQ A linguaxe toma prestado en gran medida (por orde de contribución): Modula 3, Delphi, Ada, C++, Python, Lisp, Oberon.


Funciona en todas partes grazas á capacidade de compilar en C/C++/Objective-C/JS. Soporta macros, OOP, xenéricos, excepcións, intercambio de código quente e moito máis. Licenza: MIT.

Os cambios máis significativos:

  • Hai un novo colector de lixo ORC que usa o algoritmo de ARC, pero ao mesmo tempo manexa referencias circulares dun xeito especial. Activado pola opción -gc:orc. Sobre as diferenzas ARC/ORC hai un gran artigo.

  • Engadiuse un modo para definicións de funcións estritas, que permite unha comprobación adicional da mutabilidade dos obxectos. Activado a través do pragma {.experimental: "strictFuncs".} ou mediante a chave --experimental:strictFuncs.

  • Agora pódese usar a palabra clave from como operador.

  • Engadido .noalias pragma. Mapea coa palabra clave C restrinxir para aumentar a eficiencia que pode proporcionar a palabra clave.

  • Agora os avisos específicos pódense converter en erros mediante --warningAsError[X]:on|off.

  • Novo comando: nim r main.nim [args...], que compila e executa main.nim, e inclúe --usenimcache para que o resultado se almacene en $nimcache/main$exeExt, usando a mesma lóxica que nim c - r para desfacerse da recompilación cando as fontes non cambiaron. Exemplo:

nim r compiler/nim.nim --help # compilado por primeira vez
echo 'import os; echo getCurrentCompilerExe()' | nim r - # isto tamén funciona
nim r compiler/nim.nim --fullhelp # sen recompilación
nim r —nimcache:/tmp main # binario gardado en /tmp/main

  • Engadiuse unha nova suxestión -hint:msgOrigin, que mostrará onde o compilador xerou mensaxes de erro/advertencia. Isto axuda cando non é obvio de onde veu a mensaxe.

  • Engadiuse a marca —backend:js|c|cpp|objc (ou -b:js, etc.) para cambiar o backend.

  • Engadiuse a marca --usenimcache para sacar os binarios a nimcache.

  • Claves eliminadas: --oldNewlines, --laxStrings, --oldast, --oldgensym

  • A utilidade nimsuggest agora mostra non só a declaración previa, senón tamén a localización de implementación dunha solicitude def.

Ademais, engadíronse moitos cambios á biblioteca estándar e moitas correccións de erros.

Fonte: linux.org.ru