Den nye versjonen av programmeringsspråket Nim har blitt lansert, og i september feirer den ett år siden den første stabile versjonen ble utgitt. den første stabile versjonen. Språket ligner på Python i syntaks, men ytelsen er nesten som C++. Ifølge FAQ språket låner mye fra (i rekkefølge etter betydning): Modula 3, Delphi, Ada, C++, Python, Lisp, Oberon.
Det fungerer overalt takket være muligheten for kompilerings til C/C++/Objective-C/JS. Det støtter makroer, OOP, generics, unntak, hot code swapping og mye mer. Lisensen er MIT.
De mest betydningsfulle endringene:
-
Det er lagt til en ny søppelsamler (garbage collector) ORC, som bruker en algoritme fra ARC, men behandlingen av sirkulære referanser er spesialtilpasset. Det aktiveres med alternativet —gc:orc. For mer om forskjellene mellom ARC og ORC, finnes det en flott artikkel.
Det er lagt til en streng funksjonsdefinisjonsmodus, som aktiverer en ekstra sjekk på mutabiliteten til objektene. Dette aktiveres via pragma {.experimental: "strictFuncs".} eller ved hjelp av flagget —experimental:strictFuncs.
Nøkkelordet from kan nå brukes som en operator.
Pragman .noalias er lagt til. Dette tilsvarer C-nøkkelordet restrict, for å forbedre effektiviteten som dette ordet kan gi.
Spesifikke advarsler kan nå gjøres om til feil via —warningAsError[X]:on|off.
Ny kommando: nim r main.nim [args…], som kompilere og kjører main.nim, med —usenimcache slik at resultatet lagres i $nimcache/main$exeExt, ved å bruke den samme logikken som nim c -r for å unngå rekombiliasjon når kildefilene ikke har endret seg. Eksempel:
nim r compiler/nim.nim —help # kompileres første gang
echo ‘import os; echo getCurrentCompilerExe()’ | nim r — # dette fungerer også
nim r compiler/nim.nim —fullhelp # uten rekombiliasjon
nim r —nimcache:/tmp main # binæren lagres i /tmp/main
Det er lagt til et nytt hint —hint:msgOrigin, som viser hvor kompilatoren genererte feilmeldinger/advarsler. Dette hjelper når det ikke er åpenbart hvor meldingen kom fra.
Flagget —backend:js|c|cpp|objc (eller -b:js, osv.) er lagt til for å bytte backend.
Flagget —usenimcache er lagt til for å skrive binærer til nimcache.
Nøklene —oldNewlines, —laxStrings, —oldast, —oldgensym er fjernet.
Verktøyet nimsuggest viser nå ikke bare forhåndserklæringer, men også plasseringen av implementeringen på forespørsel def.
I tillegg er det lagt til mange endringer i standardbiblioteket og mange feilrettinger.
Kilde: linux.org.ru
