Nim (ранее Nimrod) — статически типизированный, императивный язык программирования.
В этом релизе произошла смена названия языка с Nimrod на Nim.
Эта версия ломает обратную совместимость с прошлыми версиями, для поиска и обновления проекта предоставлена специальная утилита — nimfix.
Одна из целей Nim это реализация эффективного компилятора: на последних сравнениях скорости, можно увидеть, что код на Nim такой же быстрый как код на C или C++.
Последние введения, как asyncdispatch модуль, позволяет написать эффективные веб-приложения используя неблокирующий код. Также Nim имеет встроенные пул тредов для легковесных потоков с использованием `spawn`.
Удалены непопулярные префиксы для типов — «T» и «P».
Обновлены форум, сайт, и генератор документации.
Важные изменения, которые ломают обратную совместимость
- комментарии больше не часть AST.
- рекурсивные кортежи запрещены, вместо этого предлагается использовать object
- новые ключевые слова —
defer
,func
- using нужно включать явно с помощью прагмы
{.experimental.}
- ключевые слова
except
,finally
объявлены устаревшими. Вместо них нужно использоватьdefer
иtry
. - поля в кортежах сейчас игнорируются для сравнения.
Некоторые изменения в языке
- новая конкурентная модель (lock секции, lock уровни и guards поля)
-
parallel
оператор -
deepCopy
- встроенный
procCall
может использоваться для вызова методов родителя - прагма
{.experimental.}
которая добавляет нововведения для модуля, или можно включить это глобально с передачей аргумента--experimental
В компиляторе
- поддержка смешанного Objective C / C++ / C генерации, модули которые используют
importCpp
илиimportObjc
компилируются в Objective C или C++, остальные модули компилируются в C. -
parallel
оператор, для fork/join модели выполнения -
lock
иguard
прагмы для безопасной конкурентной работы - больше методов, которые доступны во время компиляции
В библиотеках
-
fenv
модуль для контроля выполнения операций с чисел с плавающей точкой и контроля за исключениями — переполнение, деление на ноль -
asyncnet
добавлена поддержка SSL - добавлена
osproc.kill
>>> Подробности