Byla vydána nová verze programovacího jazyka Nim, který v září oslavil rok od svého oficiálního vydání první stabilní verze. Podobně jako Python má jazyk podobnou syntaxi, ale co se týče výkonu, blíží se C++. Podle Často kladené dotazy jazyka čerpá z různých zdrojů (seřazeno podle významu příspěvku): Modula 3, Delphi, Ada, C++, Python, Lisp, Oberon.
Funguje všude díky možnosti kompilace do C/C++/Objective-C/JS. Podporuje makra, OOP, generiku, výjimky, horkou výměnu kódu a další. Licence - MIT.
Nejdůležitější změny:
-
Byl přidán nový garbage collector ORC, který používá algoritmus z ARC, ale speciálně zpracovává cyklické odkazy. Aktivuje se pomocí volby --gc:orc. O rozdílech mezi ARC/ORC je skvělý článek.
Byl přidán režim přísných definic funkcí, ve kterém se provádí dodatečná kontrola mutability objektů. Aktivuje se přes pragmu {.experimental: "strictFuncs".} nebo pomocí klíče --experimental:strictFuncs.
Klíčové slovo from může nyní být použito jako operátor.
Byla přidána pragma .noalias. Ta se mapuje na klíčové slovo C restrict, aby zvýšila efektivitu, kterou může toto slovo poskytnout.
Konkrétní varování lze nyní převést na chyby pomocí --warningAsError[X]:on|off.
Nový příkaz: nim r main.nim [args…], který kompiluje a spouští main.nim, a zahrnuje --usenimcache, což znamená, že výsledek bude uložen do $nimcache/main$exeExt, využívajíce stejnou logiku jako nim c -r pro odstranění překompilace, když se zdrojové kódy nezměnily. Příklad:
nim r compiler/nim.nim --help # poprvé zkompilováno
echo ‘import os; echo getCurrentCompilerExe()’ | nim r -- # to také funguje
nim r compiler/nim.nim --fullhelp # bez překompilace
nim r --nimcache:/tmp main # binární soubor uložen do /tmp/main
Byla přidána nová nápověda --hint:msgOrigin, která ukáže, kde kompilátor generoval zprávy o chybách/varováních. To pomáhá, když není jasné, odkud zpráva pochází.
Byla přidána vlajka --backend:js|c|cpp|objc (nebo -b:js atd.) pro změnu backendu.
Byla přidána vlajka --usenimcache pro výstup binárních souborů do nimcache.
Byly odstraněny klíče: --oldNewlines, --laxStrings, --oldast, --oldgensym
Nástroj nimsuggest nyní ukazuje nejen předběžné deklarace, ale také umístění implementace na žádost def.
Kromě toho byla přidána řada změn do standardní knihovny a mnoho oprav chyb.
Zdroj: linux.org.ru
