Release van de programmeertaal Nim 1.4.0

Er is een nieuwe versie van de programmeertaal Nim uitgebracht, die in september zijn éénjarig jubileum vierde. eerste stabiele versie. De taal is qua syntaxis vergelijkbaar met Python, en qua prestaties bijna als C++. Volgens FAQ De taal leent zwaar van (in volgorde van bijdrage): Modula 3, Delphi, Ada, C++, Python, Lisp, Oberon.


Werkt overal dankzij de mogelijkheid om te compileren in C/C++/Objective-C/JS. Het ondersteunt macro's, OOP, Merkloos product, uitzonderingen, hotcode-wissel en nog veel meer. Licentie: MIT.

De belangrijkste veranderingen:

  • Er is een nieuwe ORC-garbagecollector die het algoritme van ARC gebruikt, maar tegelijkertijd op een speciale manier omgaat met kringverwijzingen. Ingeschakeld door de optie -gc:orc. Over de ARC/ORC-verschillen er is een geweldig artikel.

  • Er is een modus voor strikte functiedefinities toegevoegd, die een extra controle op objectmutabiliteit mogelijk maakt. Geactiveerd via het pragma {.experimental: "strictFuncs".} of via de --experimental:strictFuncs sleutel.

  • Het trefwoord from kan nu als operator worden gebruikt.

  • .noalias pragma toegevoegd. Het wordt toegewezen aan het trefwoord C restrict om de efficiëntie die het trefwoord kan bieden te vergroten.

  • Specifieke waarschuwingen kunnen nu in fouten worden omgezet via --warningAsError[X]:on|off.

  • Nieuw commando: nim r main.nim [args...], dat main.nim compileert en uitvoert, en --usenimcache bevat, zodat het resultaat wordt opgeslagen in $nimcache/main$exeExt, met dezelfde logica als nim c - r om zich te ontdoen van hercompilatie als de bronnen niet zijn gewijzigd. Voorbeeld:

nim r compiler/nim.nim --help # voor de eerste keer gecompileerd
echo 'importeer os; echo getCurrentCompilerExe()’ | nim r - # dit werkt ook
nim r compiler/nim.nim --fullhelp # zonder hercompilatie
nim r —nimcache:/tmp main # binair bestand opgeslagen in /tmp/main

  • Een nieuwe hint -hint:msgOrigin toegevoegd, die laat zien waar de compiler fout-/waarschuwingsberichten heeft gegenereerd. Dit helpt als het niet duidelijk is waar het bericht vandaan komt.

  • Vlag —backend:js|c|cpp|objc (of -b:js, enz.) toegevoegd om de backend te wijzigen.

  • Vlag --usenimcache toegevoegd om binaire bestanden naar nimcache uit te voeren.

  • Sleutels verwijderd: --oldNewlines, --laxStrings, --oldast, --oldgensym

  • Het hulpprogramma nimsuggest toont nu niet alleen de pre-declaratie, maar ook de implementatielocatie voor een def-verzoek.

Daarnaast zijn er veel wijzigingen toegevoegd aan de standaardbibliotheek en veel bugfixes.

Bron: linux.org.ru