adblock check

Доступен выпуск Nim 2.2.8 — языка системного программирования

Версия 2.2.8 включает 89 исправлений и изменений, среди которых повышенная стабильность стандартного аллокатора памяти в многопоточных сценариях.
Обложка: Freepik

Nim — статически типизированный компилируемый язык программирования. Его синтаксис вдохновлён Python, а возможности метапрограммирования — Lisp. Язык транслируется в C, C++ и JavaScript, сочетая производительность C с выразительностью высокоуровневых языков. Распространяется под лицензией MIT.

Ключевые возможности:

  • макросы на уровне AST (во время компиляции);
  • обобщённое программирование с концептами;
  • множественная диспетчеризация (multiple dispatch);
  • детерминированное управление памятью (стратегии ARC/ORC, refc, сборка мусора);
  • встроенная поддержка async/await;
  • FFI для интеграции с C/C++/JavaScript.

Главное улучшение версии 2.2.8 — повышенная стабильность стандартного аллокатора памяти в многопоточных сценариях. Разработчики отмечают, что необходимость в использовании флага -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.

Список всех изменений доступен на GitHub странице проекта.

Источник

Limows
@Limows
Автор
Линуксоид, техно-ретро-блоггер со стажем
Консольщик
Комментариев пока нет
Оставьте комментарий...
Оставьте комментарий...