Издание на езика за програмиране Nim 1.4.0

Излезе новата версия на системния език за програмиране Nim, който този септември навършва една година от излизането си на първата стабилна версия. Синтаксисът на езика е подобен на Python, а по производителност е почти като C++. Според Често задавани въпроси езикът до голяма степен заимства от (в реда на значимост на приноса): Modula 3, Delphi, Ada, C++, Python, Lisp, Oberon.


Работи навсякъде благодарение на възможността за компилация в C/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

Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри 🔥 Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри | ProHoster