Вышла новая версия системного языка программирования Nim. В ней имеется частичная несовместимость с версией 1.0, например, из-за более строгого преобразования типов. Но на этот случай есть флаг --useVersion:1.0
.
Главное нововведение — новый сборщик мусора, включаемый опцией --gc:arc
. Автор языка Andreas Rumpf собрается написать подробную статью о преимуществах ARC, а пока предлагает ознакомиться с его выступлением на FOSDEM, где показаны результаты бенчмарков.
- Компилятор теперь поддерживает опцию
--asm
для более удобного изучения производимого ассемблерного кода. align
pragma может быть использована для переменных и полей объекта, это похоже на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-код использует только пробелы вместо мешанины из пробелов и табов.
- В компилятор добавлена поддержка
.localPassc
pragma, с помощью которой можно обработать специальные опции C(++) бэкенда для C(++) файла, который генерируется из текущего модуля Nim. - Nimpretty теперь не принимает отрицательный аргумент для настройки отступов, так как это ломало файлы.
- Добавлены новые макросы (collect, dup, capture), подключаемые через
import sugar
.
Помимо этого добавлено множество изменений в стандартную библиотеку и множество исправлений багов.
>>> Подробности