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