Nim Достигает Стадии Кандидата На Выпуск


Nim был обновлен тем, что, по словам разработчиков, является кандидатом на выпуск версии 1.0. Nim (ранее называемый Nimrod) – это статически типизированный и скомпилированный язык системного программирования, который фокусируется на производительности, переносимости и выразительности.

Nim строго типизирован и имеет функции первого класса. Он объектно-ориентирован, но композиция предпочтительнее наследования. Nim компилируется в C по умолчанию, но может использоваться с различными бэкэндами компилятора для создания JavaScript, C++ или Objective-C.

Опции Nim включают в себя сборщик мусора с отложенным подсчетом ссылок, который является быстрым, инкрементным и без паузы; или мягкий сборщик мусора в реальном времени, который позволяет указать его максимальное время паузы. Существуют и другие варианты сбора мусора.

Хотя это описывается как массовый выпуск, который отмечает кандидата на выпуск разработчиков для версии 1.0, на самом деле он по-прежнему называется только Nim 0.20. Разработчики объяснили, что вместо того, чтобы просто называть его 1.0 RC, они хотят дать сообществу возможность протестировать 0.20.0 и найти ошибки, которые могут привести к необходимости внесения изменений.

Новый выпуск описывается как переполненный функциями, включая более строгие проверки времени компиляции для целочисленных и плавающих преобразований, а также распаковку кортежей для постоянных и переменных цикла. Оба улучшения предназначены для обнаружения проблем во время компиляции, а не после использования программы.

Хэш-наборы и таблицы теперь инициализируются по умолчанию, а сообщения об ошибках были улучшены для операторов case и ошибок индекса за пределами границ.  Для операторов case вам говорят, какие случаи охвачены и отсутствуют, а для индексов out of bounds вам более четко говорят, что такое неправильное значение индекса и каковы границы.

В язык были добавлены различные элементы, включая поддержку Wm для приведений float32<->int32 и float64<->int64. Существует новый блок прагмы noSideEffect, который работает как блок прагмы gcsafe, пользовательские прагмы теперь разрешены в блоках прагмы, а пользовательские прагмы теперь поддерживаются для символов var и let.

Блоки Pragma больше не удаляются из типизированного дерева AST. Это было сделано для сохранения прагм для дальнейшего анализа с помощью макросов.

Ветви объектов Case теперь можно инициализировать с помощью дискриминатора времени выполнения, если возможные значения дискриминатора ограничены в операторе case.

Новая версия доступна на веб-сайте Nim. 


Добавить комментарий