En ny version af Nim-systemprogrammeringssproget er blevet frigivet, som i september er et år siden udgivelsen. første stabile version. Syntaksen ligner Python, og ydeevnen er næsten som C++. Ifølge FAQ sproget låner meget fra (i rækkefølge efter vægt af bidrag): Modula 3, Delphi, Ada, C++, Python, Lisp, Oberon.
Virker overalt takket være evnen til at kompilere til C/C++/Objective-C/JS. Det understøtter makroer, OOP, generiske, undtagelser, hot code udskiftning og meget mere. Licens - MIT.
De væsentligste ændringer:
-
Der er en ny ORC garbage collector, der bruger ARC-algoritmen, men som håndterer cirkulære referencer på en særlig måde. Aktiveret med --gc:orc-indstillingen. Om ARC/ORC-forskelle der er en fantastisk artikel.
-
En tilstand med strenge funktionsdefinitioner er blevet tilføjet, som inkluderer en ekstra kontrol for objektmutabilitet. Aktiveret via {.experimental: "strictFuncs".}-pragmaen eller via --experimental:strictFuncs-kontakten.
-
Fra nøgleordet kan nu bruges som en operator.
-
Tilføjet .noalias pragma. Det knytter sig til nøgleordet C begrænse for at øge effektiviteten, som dette søgeord kan give.
-
Specifikke advarsler kan nu omdannes til fejl via --warningAsError[X]:on|off.
-
Ny kommando: nim r main.nim [args...], som kompilerer og kører main.nim, og inkluderer --usenimcache, så resultatet gemmes i $nimcache/main$exeExt, ved hjælp af samme logik som nim c - r at slippe af med fra rekompilering, når kildekoden ikke er ændret. Eksempel:
nim r compiler/nim.nim --help # kompileret for første gang
echo 'import os; echo getCurrentCompilerExe()' | nim r - # dette virker også
nim r compiler/nim.nim --fullhelp # uden genkompilering
nim r --nimcache:/tmp main # binært gemt til /tmp/main
-
Tilføjet et nyt tip --hint:msgOrigin som vil vise hvor compileren genererede fejl/advarselsmeddelelser. Dette hjælper, når det ikke er indlysende, hvor beskeden kom fra.
-
Tilføjet --backend:js|c|cpp|objc (eller -b:js, etc.) flag for at ændre backend.
-
Tilføjet --usenimcache flag for at udlæse binære filer til nimcache.
-
Nøgler fjernet: --oldNewlines, --laxStrings, --oldast, --oldgensym
-
Værktøjet nimsuggest viser nu ikke kun den fremadrettede erklæring, men også placeringen af implementeringen, når der anmodes om def.
Derudover er der tilføjet mange ændringer til standardbiblioteket og mange fejlrettelser.
Kilde: linux.org.ru