Релиз языка программирования V 0.5.2

Состоялся релиз статически типизированного языка программирования V 0.5.2 (vlang). Основными целями при создании V были простота изучения и использования, высокая читаемость, быстрая компиляция, повышенная безопасность, эффективная разработка, кроссплатформенное использование, улучшенное взаимодействие с языком C, лучшая обработка ошибок, отключаемый сборщик мусора (GC), современные возможности и более удобное сопровождение программ. Проект также развивает свою графическую библиотеку и пакетный менеджер. Код компилятора, библиотек и сопутствующих инструментов открыт под лицензией MIT.

Среди изменений в новой версии:

  • Внедрена начальная версия управления владением памятью (как в Rust) с использованием флага -ownership. Вся логика реализована во время компиляции (comptime), поэтому не оказывает влияния на скорость или размер обычного V-кода.
  • Добавлен VGC, параллельный сборщик мусора (tri-color mark-and-sweep), перенесённый из Go.
  • Реализованы модули для iOS и macOS, позволяющие писать код без использования Objective-C.
  • Включена поддержка нового бэкенда компилятора V2 («v -v2 file.v»).
  • Разрешено использование отрицательного индексирования массивов, например, «arr#[-1]».
  • Добавлен оператор возведения в степень «**».
  • Добавлен новый стандартный модуль mcp для взаимодействия V-приложений с AI-моделями, инструментами и сервисами, используя протокол MCP (Model Context Protocol).
  • Добавлена возможность перегрузки оператора «[]».
  • Полностью удалён устаревший фреймворк vweb, заменённый на фреймворк veb некоторое время назад.
  • Добавлена возможность использовать «$if bsd» на этапе компиляции.
  • Стандартная библиотека:
  • ORM: Добавлена поддержка продвинутых типов PostgreSQL (например geometry), базы данных H2,
    метода SQL для операций UPSERT, оператора «OR» в динамических блоках WHERE.

  • В модуль db.sqlite добавлены методы tables, columns, schema, db_size
  • В модуле db.pg теперь потокобезопасный пул для DB, Tx и Conn с API в стиле Go
  • В модуле db.mysql обеспечена поддержка многооператорных запросов.
  • В C бекенд добавлена поддержка архитектуры sparc64 и реализована возможность отладки кода с помощью GDB или LLDB.
  • Появилась возможность писать функции, вычисляемые во время компиляции (помечаются атрибутом @[comptime]).
  • В утилиту командной строки добавлена команда для генерации C-проекта, флаг «-generate-c-project path».
  • Реализован менеджер версий V, предоставляющий возможность собирать проект с указанной версией V в файле .vvmrc.
  • В пакетном менеджере (vpm) появилась поддержка ользовательских зеркал для установки пакетов.

Связанные с проектом новости:

  • Появилась открытая реализация сервера Minecraft (Bedrock Edition), написанная на V.
  • Опубликован Mustela, сверхбыстрый (9000 страниц в секунду) генератор статических сайтов, написанный на V.
  • Встроенный драйвер PostgreSQL в V, который также используется в V ORM, теперь является потокобезопасным, как и в Go. Больше не нужно использовать пулы соединений. Драйверы для MySQL, sqlite и MSSQL скоро также получат эту возможность.
  • Veb (веб-фреймворк V) теперь многопоточный. Старый однопоточный цикл событий picoev заменён на совершенно новый бэкенд fasthttp (по одной рабочему потоку на каждое ядро процессора; epoll в Linux, kqueue в macOS/BSD; отсутствие конфликтов блокировок; передача статических файлов без копирования через sendfile()).
  • Модернизированы трассировки стека (включаются опцией «-g»), которые при аварийном завершении теперь показывают полные пути к файлам с номерами строк и именами методов, что позволяет сразу перейти от сообщения об ошибке к точному коду, который её вызвал.
  • Экспериментальный модуль x.json2, написанный полностью на V, теперь стабилен и заменил старый модуль json, основанный на cJSON.

Источник: http://www.opennet.ru/opennews/art.shtml?num=65929