Вышла новая версия системного языка программирования 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.


Помимо этого добавлено множество изменений в стандартную библиотеку и множество исправлений багов.









 , ,






URL записи