Возможности Nim включают систему макросов, работающих на AST во время компиляции, поддержку обобщённого программирования с концептами, множественную диспетчеризацию (multiple dispatch), детерминированное управление памятью с поддержкой нескольких стратегий (ARC/ORC, refc, маркировка-и-подметание), встроенную поддержку async/await для асинхронного программирования и FFI для простой интеграции с C/C++/JavaScript. Nim позиционируется как системный язык, подходящий для разработки от встраиваемых систем до веб-серверов, с акцентом на эффективность, безопасность памяти и удобство разработки.
Выпуск 2.2.8 состоялся спустя четыре месяца после версии 2.2.6 и включает 89 коммитов с исправлениями ошибок и улучшениями. Главным улучшением релиза названо значительное повышение стабильности стандартного аллокатора памяти при активном использовании многопоточности. По словам разработчиков, необходимость в обходном решении «-d:useMalloc» для многопоточного кода осталась в прошлом. Пользователей просят оставлять обратную связь.
Среди исправленных ошибок:
- SIGBUS при итерации по константной таблице из-за преждевременного уничтожения временных объектов;
- SIGSEGV с замыкающими итераторами;
- некорректная генерация C-кода при инициализации .global внутри метода;
- ошибка в обработке finally в замыкающем итераторе при наличии try..except;
- некорректное name mangling в стиле C++ при использовании —debuginfo;
- медленная работа setLen при уменьшении размера последовательности из-за излишней зачистки памяти;
- отсутствие setLenUninit для режима «—mm:refc»;
- зависание обработки term rewriting на больших файлах;
- SIGSEGV при использовании distinct-типов с назначением в heap-объекты в режиме refc;
- некорректный доступ к m_type в хуках для обобщённых distinct-типов под ARC/ORC/ATOMICARC;
- сбой компилятора при передаче кортежа с «items» из концепта;
- рекурсивные концепты вызывали segfault компилятора;
- некорректная генерация HTTPS-запросов через HTTP-прокси в httpclient;
- неопределённое поведение при операции shl;
- усечение длинных целочисленных литералов без предупреждения;
- сбои компилятора при ряде некорректных обобщённых инстанциаций;
- добавлен режим —styleCheck:warn.
Источник: http://www.opennet.ru/opennews/art.shtml?num=64858
