Для Nim 3.0 развивается новый компиляторный бэкенд на основе формата NIF

Новости мира unix. Хотите узнать секрет вечного счастья? Откройте страницу 246.
Ответить
acolyte
Аватара пользователя
Сообщения: 4139
Зарегистрирован: 20.08.2022

#

Для Nim 3.0 развивается новый компиляторный бэкенд на основе формата NIF
Дата публикации:Sun, 06 Apr 2025 18:29:32 +0300




В процессе разработки версии 3.0 языка программирования Nim ведётся работа над обновлённым компилятором, использующим промежуточный формат NIF (Nim Intermediate Format). В новом компиляторе будет решено несколько технических задач, среди которых улучшение инкрементальной компиляции и упрощение управления зависимостями между модулями. Дата релиза Nim 3.0 пока не определена.





Согласно спецификации NIF, опубликованной в репозитории проекта, новый формат позволяет хранить код в виде абстрактного синтаксического дерева (AST), разделяя пространства имён для встроенных конструкций и пользовательских имён. Это обеспечивает гибкость при добавлении новых ключевых слов и упрощает интеграцию с инструментами разработки.


Компилятор Nim 3.0 будет разделён на несколько этапов:
  • Nifler - преобразование исходного кода Nim в NIF с учётом конфигурационных файлов.
    Nimony - семантический анализ, включая проверку типов и разрешение макросов.
    Hexer - оптимизация кода, включая инлайнинг итераторов и поддержку управления памятью (ARC/ORC).
    NIFC - генерация кода для C/C++ с учётом особенностей целевой платформы.

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


В спецификации также отмечается, что NIF сохраняет информацию о позициях элементов кода (номера строк и столбцов), что упрощает отладку и интеграцию с IDE.




Язык Nim ориентирован на решение задач системного программирования, использует статическую типизацию и создан с оглядкой на такие языки, как Python, Ada и Modula. Исходный код на языке Nim компилируется в представление на C, C++, Objective-C или JavaScript. В дальнейшем полученный C/C++ код компилируется в исполняемый файл при помощи любого доступного компилятора (clang, gcc, icc, Visual C++), что позволяет добиться производительности близкой к Си, если не учитывать затраты на выполнение сборщика мусора. По аналогии с Python в Nim в качестве разделителей блоков применяются отступы. Поддерживаются средства метапрограммирования и возможности для создания предметно-ориентированных языков (DSL). Код проекта поставляется под лицензией MIT.



Новость позаимствована с opennet.ru
Ссылка на оригинал: https://www.opennet.ru/opennews/art.shtml?num=63031

Жизнь за Нер'зула!

Ответить