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
>>> Подробности












