Выйшла новая версія сістэмнай мовы праграмавання Nim, якой у гэтым верасні споўніўся год з моманту выхаду першай стабільнай версіі. Па сінтаксісе мова падобная да Python, а па прадукцыйнасці амаль як C++. Згодна Часта задаваныя пытанні мова шмат у чым запазычае з (у парадку важкасці ўкладу): Modula 3, Delphi, Ada, C++, Python, Lisp, Oberon.
Працуе ўсюды дзякуючы магчымасці кампіляцыі ў З/C++/Objective-C/JS. У ім падтрымліваюцца макрасы, ААП, джынэрыкі, выключэння, гарачая замена кода і многае іншае. Ліцэнзія - MIT.
Найбольш значныя змены:
-
З'явіўся новы зборшчык смецця ORC, які выкарыстоўвае алгарытм з ARC, але пры гэтым адмысловай выявай які апрацоўвае цыклічныя спасылкі. Уключаецца опцыяй -gc:orc. Аб адрозненнях ARC/ORC ёсць выдатны артыкул.
-
Дададзены рэжым строгіх вызначэнняў функцый, пры якім уключаецца дадатковая праверка на мутабельнасць аб'ектаў. Актывуецца праз прагму {.experimental: "strictFuncs".} або праз ключ -experimental:strictFuncs.
-
Ключавое слова from зараз можа быць скарыстана як аператар.
-
Дададзена прагма .noalias. Яна супастаўляецца з ключавым словам C restrict, каб павысіць эфектыўнасць, якую можа забяспечыць гэтае слова.
-
Канкрэтныя папярэджанні зараз можна ператварыць у памылкі праз -warningAsError[X]:on|off.
-
Новая каманда: nim r main.nim [args…], якая кампілюе і запускае main.nim, і ўключае -usenimcache так, што вынік захоўваецца ў $nimcache/main$exeExt, выкарыстоўваючы тую ж логіку што і nim c -r для збавення ад перакампіляцыі, калі зыходнікі не змяніліся. Прыклад:
nim r compiler/nim.nim —help # скампіляваны ў першы раз
echo 'import os; echo getCurrentCompilerExe()' | nim r — # гэта таксама працуе
nim r compiler/nim.nim — fullhelp # без перакампіляцыі
nim r —nimcache:/tmp main # бінарнік захаваны ў /tmp/main
-
Дададзена новая падказка -hint:msgOrigin, якая пакажа дзе кампілятар згенераваў паведамленні пра памылкі / папярэджанні. Гэта дапамагае, калі невідавочна адкуль прыйшло паведамленне.
-
Дададзены сцяг -backend: js | c | cpp | objc (або -b: js і г.д.) для змены бэкенда.
-
Дададзены сцяг — usenimcache для вываду бінарнікаў у nimcache.
-
Выдалены ключы: -oldNewlines, -laxStrings, -oldast, -oldgensym
-
Утыліта nimsuggest зараз паказвае не толькі папярэднюю аб'яву, але і размяшчэнне рэалізацыі па запыце def.
Апроч гэтага дададзена мноства змен у стандартную бібліятэку і мноства выпраўленняў багаў.
Крыніца: linux.org.ru