Release av programmeringsspråket Nim 1.4.0

En ny version av systemprogrammeringsspråket Nim har släppts, som i september firade ettårsjubileum. första stabila versionen. Språket liknar syntaxen Python, och nästan som C++ i prestanda. Enligt FAQ Språket lånar mycket från (i bidragsordning): Modula 3, Delphi, Ada, C++, Python, Lisp, Oberon.


Fungerar överallt tack vare möjligheten att kompilera i C/C++/Objective-C/JS. Det stödjer makron, OOP, generika, undantag, hot code swap och mycket mer. Licens: MIT.

De viktigaste förändringarna:

  • Det finns en ny ORC-sopsamlare som använder algoritmen från ARC, men som samtidigt hanterar cirkulära referenser på ett speciellt sätt. Aktiverad av alternativet -gc:orc. Om ARC/ORC-skillnaderna det finns en bra artikel.

  • Ett läge för strikta funktionsdefinitioner har lagts till, vilket möjliggör en ytterligare kontroll av objektmutabilitet. Aktiveras via pragman {.experimental: "strictFuncs".} eller via --experimental:strictFuncs-nyckeln.

  • Nyckelordet från kan nu användas som operator.

  • Lade till .noalias pragma. Det mappas till nyckelordet C begränsa för att öka effektiviteten som nyckelordet kan ge.

  • Specifika varningar kan nu omvandlas till fel via --warningAsError[X]:on|off.

  • Nytt kommando: nim r main.nim [args...], som kompilerar och kör main.nim, och inkluderar --usenimcache så att resultatet lagras i $nimcache/main$exeExt, med samma logik som nim c - r att bli av med från omkompilering när källorna inte har ändrats. Exempel:

nim r compiler/nim.nim --help # kompilerad för första gången
echo 'import os; echo getCurrentCompilerExe()' | nim r - # det här fungerar också
nim r compiler/nim.nim --fullhelp # utan omkompilering
nim r —nimcache:/tmp main # binärt sparat i /tmp/main

  • Lade till en ny hint -hint:msgOrigin, som visar var kompilatorn genererade fel-/varningsmeddelanden. Detta hjälper när det inte är uppenbart var meddelandet kom ifrån.

  • Lade till flagga —backend:js|c|cpp|objc (eller -b:js, etc.) för att ändra backend.

  • Lade till --usenimcache-flagga för att mata ut binärer till nimcache.

  • Nycklar borttagna: --oldNewlines, --laxStrings, --oldast, --oldgensym

  • Verktyget nimsuggest visar nu inte bara fördeklarationen, utan även implementeringsplatsen för en def-begäran.

Dessutom har många ändringar lagts till i standardbiblioteket och många buggfixar.

Källa: linux.org.ru