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


