Release van de programmeertaal Nim 1.4.0

Er is een nieuwe versie van de programmeertaal Nim uitgebracht, die deze september zijn eerste verjaardag viert sinds de lancering. van de eerste stabiele versie.Wat de syntaxis betreft, lijkt de taal op Python, en wat de prestaties betreft, is het bijna alsof het C++ is. Volgens FAQ leent de taal in grote lijnen van (in volgorde van impact): Modula 3, Delphi, Ada, C++, Python, Lisp, Oberon.


Het werkt overal dankzij de mogelijkheid om te compileren naar C/C++/Objective-C/JS. Het ondersteunt macro's., OOP., generics., uitzonderingen., hot code swapping. en nog veel meer. Licentie — MIT.

De meest significante wijzigingen:

  • Er is een nieuwe garbage collector ORC toegevoegd, die een algoritme uit ARC gebruikt maar op een speciale manier omgaat met cyclische referenties. Het wordt ingeschakeld met de optie —gc:orc. Voor de verschillen tussen ARC/ORC is er een uitstekend artikel..

  • Er is een modus voor strikte functie-definities toegevoegd, waarbij extra controle op de mutabiliteit van objecten wordt ingeschakeld. Dit wordt geactiveerd via de pragma {.experimental: "strictFuncs".} of via de sleutel —experimental:strictFuncs.

  • Het sleutelwoord from kan nu als operator worden gebruikt.

  • Een pragma .noalias is toegevoegd. Dit komt overeen met het C sleutelwoord restrict om de efficiëntie te verhogen die dit woord kan bieden.

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

  • Een nieuwe opdracht: nim r main.nim [args…], die main.nim compileert en uitvoert, en —usenimcache omvat zodat het resultaat wordt opgeslagen in $nimcache/main$exeExt, met dezelfde logica als nim c -r om hercompilatie te vermijden wanneer de bronbestanden niet zijn gewijzigd. Voorbeeld:

nim r compiler/nim.nim —help # voor het eerst gecompileerd.
echo ‘import os; echo getCurrentCompilerExe()’ | nim r — # dit werkt ook.
nim r compiler/nim.nim —fullhelp # zonder hercompilatie.
nim r —nimcache:/tmp main # het binaire bestand is opgeslagen in /tmp/main.

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

  • Er is een vlag —backend:js|c|cpp|objc (of -b:js enz.) toegevoegd voor het wijzigen van de backend.

  • Een vlag —usenimcache is toegevoegd voor de output van binaries naar nimcache.

  • De sleutels: —oldNewlines, —laxStrings, —oldast, —oldgensym zijn verwijderd.

  • De utility nimsuggest toont nu niet alleen de voorlopige declaratie, maar ook de locatie van de implementatie op verzoek def.

Bovendien zijn er veel wijzigingen aangebracht in de standaardbibliotheek en talloze bugfixes.

Bron: linux.org.ru

Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers 🔥 Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers | ProHoster