La versió 1.4.0 del llenguatge de programació Nim

S'ha llançat una nova versió del llenguatge de programació del sistema Nim, que aquest setembre ha celebrat el seu primer any d'aniversari. primera versió estable. El llenguatge és similar en sintaxi a Python i gairebé com C++ en rendiment. D'acord amb FAQ El llenguatge manlleva molt (per ordre de contribució): Modula 3, Delphi, Ada, C++, Python, Lisp, Oberon.


Funciona a tot arreu gràcies a la capacitat de compilar en C/C++/Objective-C/JS. Dóna suport macros, OOP, genèrics, excepcions, intercanvi de codi calent i molt més. Llicència: MIT.

Els canvis més significatius:

  • Hi ha un nou col·lector d'escombraries ORC que utilitza l'algoritme d'ARC, però al mateix temps gestiona les referències circulars d'una manera especial. Habilitat per l'opció -gc:orc. Sobre les diferències ARC/ORC hi ha un gran article.

  • S'ha afegit un mode per a definicions de funcions estrictes, que permet una comprovació addicional de la mutabilitat dels objectes. S'activa mitjançant el pragma {.experimental: "strictFuncs".} o mitjançant la clau --experimental:strictFuncs.

  • La paraula clau from ara es pot utilitzar com a operador.

  • S'ha afegit .noalias pragma. S'assigna a la paraula clau de restricció C per augmentar l'eficiència que pot proporcionar la paraula clau.

  • Els avisos específics ara es poden convertir en errors mitjançant --warningAsError[X]:on|off.

  • Nova comanda: nim r main.nim [args...], que compila i executa main.nim, i inclou --usenimcache perquè el resultat s'emmagatzemi a $nimcache/main$exeExt, utilitzant la mateixa lògica que nim c - r per desfer-se de la recompilació quan les fonts no han canviat. Exemple:

nim r compiler/nim.nim --help # compilat per primera vegada
echo 'import OS; echo getCurrentCompilerExe()' | nim r - # això també funciona
nim r compiler/nim.nim --fullhelp # sense recompilació
nim r —nimcache:/tmp main # binari desat a /tmp/main

  • S'ha afegit una nova pista -hint:msgOrigin, que mostrarà on el compilador ha generat missatges d'error/advertència. Això ajuda quan no és obvi d'on prové el missatge.

  • S'ha afegit el senyalador —backend:js|c|cpp|objc (o -b:js, etc.) per canviar el backend.

  • S'ha afegit el senyalador --usenimcache per sortir binaris a nimcache.

  • S'han eliminat les claus: --oldNewlines, --laxStrings, --oldast, --oldgensym

  • La utilitat nimsuggest ara mostra no només la declaració prèvia, sinó també la ubicació d'implementació d'una sol·licitud def.

A més, s'han afegit molts canvis a la biblioteca estàndard i moltes correccions d'errors.

Font: linux.org.ru