Izlazila je nova verzija sistemskog programskog jezika Nim, koji ovog rujna obilježava godinu dana od objave prve stabilne verzije. Po sintaksi jezik nalikuje Pythonu, a po performansama gotovo je poput C++. Prema FAQ jeziku u velikoj mjeri preuzima iz (redoslijed prema težini doprinosa): Modula 3, Delphi, Ada, C++, Python, Lisp, Oberon.
Radi svugdje zahvaljujući mogućnosti kompajliranja u C/C++/Objective-C/JS. Podržavaju se makroi, OOP, generici, iznimke, hot code swapping i još mnogo toga. Licenca — MIT.
Najznačajnije promjene:
-
Pojavio se novi sakupljač smeća ORC, koji koristi algoritam iz ARC, ali posebno obrađuje kružne reference. Aktivira se s opcijom —gc:orc. O razlikama ARC/ORC postoji izvrstan članak.
Dodani su strogi definicijski načini funkcija, pri čemu se aktivira dodatna provjera na mutabilnost objekata. Aktivira se putem pragme {.experimental: "strictFuncs".} ili kroz ključ —experimental:strictFuncs.
Ključna riječ from sada se može koristiti kao operator.
Dodana je pragma .noalias. Ona odgovara ključnoj riječi C restrict, kako bi se povećala učinkovitost koju ta riječ može osigurati.
Specifična upozorenja sada se mogu pretvoriti u greške preko —warningAsError[X]:on|off.
Nova komanda: nim r main.nim [args…], koja kompajlira i pokreće main.nim, uključujući —usenimcache tako da se rezultat sprema u $nimcache/main$exeExt, koristeći istu logiku kao nim c -r za izbjegavanje ponovne kompilacije kada se izvorni kodovi nisu promijenili. Primjer:
nim r compiler/nim.nim —help # prvi put kompilirano
echo ‘import os; echo getCurrentCompilerExe()’ | nim r — # ovo također radi
nim r compiler/nim.nim —fullhelp # bez ponovne kompilacije
nim r —nimcache:/tmp main # binarna datoteka spremljena u /tmp/main
Dodana je nova sugestija —hint:msgOrigin, koja će pokazati gdje je kompajler generirao poruke o greškama/upozorenjima. To pomaže kada nije očito odakle dolazi poruka.
Dodana je zastavica —backend:js|c|cpp|objc (ili -b:js itd.) za promjenu backenda.
Dodana je zastavica —usenimcache za ispis binarnih datoteka u nimcache.
Uklonjeni su ključevi: —oldNewlines, —laxStrings, —oldast, —oldgensym
Alat nimsuggest sada prikazuje ne samo preliminarno deklariranje, već i lokaciju implementacije na zahtjev def.
Osim toga, dodane su mnoge promjene u standardnoj biblioteci i mnoštvo ispravki grešaka.
Izvor: linux.org.ru
