Вышла новая версия системного языка программирования Nim. В ней имеется частичная несовместимость с версией 1.0, например, из-за более строгого преобразования типов. Но на этот случай есть флаг --useVersion:1.0. Главное нововведение — новый сборщик мусора, включаемый опцией --gc:arc. Автор языка Andreas Rumpf собрается написать подробную статью о преимуществах ARC, а пока предлагает ознакомиться [ с его выступлением на FOSDEM ](
https://www.youtube.com/watch?v=yA32Wxl59wo ) , где показаны результаты бенчмарков. Компилятор теперь поддерживает опцию --asm для более удобного изучения производимого ассемблерного кода. align pragma может быть использована для переменных и полей объекта, это похоже на alignas в C/C++. =sink оператор теперь опционален. Компилятор теперь может использовать комбинацию =destroy и copyMem для эффективного перемещения объектов. Преобразования в unsigned integers не проверяются в рантайме. Подробности в [
https://github.com/nim-lang/RFCs/issues/175 ](
https://github.com/nim-lang/RFCs/issues/175 ) Новый синтаксис для lvalue: var b {.byaddr.} = expr, подключаемый через import std/decls Компилятор поддерживает новый ключ --panics:on, который превращает рантаймовые ошибки такие как IndexError или OverflowError в фатальные ошибки, которые не могут быть пойманы через try. Это может улучшить эффективность рантайма и размер программы. Генерируемый JS-код использует только пробелы вместо мешанины из пробелов и табов. В компилятор добавлена поддержка .localPassc pragma, с помощью которой можно обработать специальные опции C(++) бэкенда для C(++) файла, который генерируется из текущего модуля Nim. Nimpretty теперь не принимает отрицательный аргумент для настройки отступов, так как это ломало файлы. Добавлены новые макросы (collect, dup, capture), подключаемые через import sugar. Помимо этого добавлено множество изменений в стандартную библиотеку и множество исправлений багов.
Ссылка:
https://www.linux.org.ru/news/development/15623647