Существует новый выпуск Nim, языка системного программирования, ранее называвшегося Nimrod. Это обновление содержит новый сборщик мусора и новые макросы сахара.
Nim строго типизирован и имеет функции первого класса. Он объектно-ориентирован, но композиция предпочтительнее наследования. Nim компилируется в C по умолчанию, но может использоваться с различными бэкэндами компилятора для создания JavaScript, C++ или Objective-C.
Опции Nim включают в себя сборщик мусора с отложенным подсчетом ссылок, который является быстрым, инкрементным и без паузы; или мягкий сборщик мусора в реальном времени, который позволяет указать его максимальное время паузы. В настоящее время для Nim доступно более 1000 пакетов.
Основным обновлением новой версии является ARC GC (сборщик мусора). Команда Nim описывает его как «один GC, чтобы управлять ими всеми», но говорит, что называть его GC не справедливо, так как это простой старый подсчет ссылок с оптимизацией благодаря семантике перемещения. ARC имеет ряд преимуществ перед другими более классическими алгоритмами GC, поставляемыми с Nim 1.0, начиная с того, что ARC не зависит от размера кучи, и разработчики говорят, что он хорошо работает с крошечными и огромными кучами. Он также не зависит от размера стека, и большие массивы в стеке не вызывают замедления. ARC также предлагает общую кучу и работает с дезинфицирующими средствами адресов valgrind и clang. Он также должен, по мнению команды Nim, лучше работать с перезагрузкой горячего кода и библиотеками DLL, а также с волокнами, сопрограммами или любым другим C++. Наконец, он должен хорошо работать с webassembly и Emscripten.
Другим основным улучшением версии 1.2.0 является введение нескольких новых макросов, которые должны помочь в написании некоторых общих задач. Первое дополнение-Collect, макрос, который помогает при написании seq/set/table. Он заменяет lc (понимание списка), и он одновременно более идиоматичен и более мощен, чем lc.
Второй новый макрос, Dup, превращает функцию на месте в функцию, которая возвращает результат без изменения его входных данных. План состоит в том, что будущие версии Nim будут предлагать только версии функций на месте, поэтому больше не будет сортировки и сортировки, rotateLeft и rotatedLeft и т. Д. Макросы на месте могут быть преобразованы в функции, возвращающие копию через dup.
Последний новый макрос, Capture, может использоваться при создании замыкания в цикле для захвата некоторых локальных переменных цикла по их текущим значениям итерации.
Nim 1.2 теперь доступен на веб-сайте Nim.