
В середине июля 2026 года состоялся выпуск новой версии статически типизированного языка программирования V 0.5.2 (vlang на Github, также доступен блог проекта, где добавлена локализация на русский язык). Исходный код компилятора, библиотек и сопутствующих инструментов открыт под лицензией MIT. Разработка проекта ведётся более 7 лет.

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

«V — это простой, быстрый, безопасный, компилируемый язык программирования общего назначения для разработки поддерживаемого программного обеспечения. Есть несколько веских причин использовать V, о которых вы можете узнать больше здесь: The V Programming Language. Поскольку V находится в активной разработке, в нём часто будет много ломающих изменений. Поэтому рекомендуется устанавливать V из исходного репозитория на github.com/vlang/v.», — пояснил автор проекта Александр Медведников.

По информации OpenNET, основные изменения и доработки в новой версии V:
-
внедрена начальная версия управления владением памятью (как в 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» на этапе компиляции;
-
стандартная библиотека:
-
появился модуль для работы с изображениями, вдохновлённый модулем image для языка Go;
-
появился модуль для работы с большими числами (math.decimal);
-
появился модуль для работы с tar‑архивами (archive.tar);
-
появился модуль для работы с разметкой markdown (x.markdown);
-
появился модуль для работы с форматом yaml (yaml);
-
в модуль compress добавлен код для работы с форматами bzip2 (compress.bzip2), snappy (compress.snappy) и brotli (compress.brotli);
-
в модуль crypto добавлен алгоритм ML‑DSA (crypto.mldsa) и код для работы hkdf (crypto.hkdf);
-
в модуль crypto.aes добавлена поддержка шифра AES‑GCM (crypto.aes);
-
в модуле os исправлена проблема 2038 года (int => int64);
-
в модуль hash добавлен код для работы с контрольными суммами crc64 (hash.crc64) и adler32 (hash.adler32);
-
в модуль time добавлен метод unix_now() для быстрого получения текущего времени (в секундах, UTC);
-
модули compress.deflate и compress.zlib переписаны на чистом V;
-
в модуле veb добавлена поддержка создания и обслуживания сжатых файлов; промежуточного ПО (middleware) для конкретного пути и комбинации HTTP‑методов; SSL; повторно используемых соединений; параллельного цикла обработки событий (многопоточная обработка соединений);
-
в модуль net.websocket добавлена поддержка совершения запросов через прокси;
-
в модуль net.http добавлена опция для обхода проверки HTTPS‑сертификата;
-
в модуль net.smtp добавлен настраиваемый таймаут при отправке писем и возможность отправки как HTML, так и текстовых писем (multipart/alternative);
-
в модуль net добавлена поддержка многоадресной рассылки по UDP;
-
в модуль http.fetch добавлен S3-совместимый клиент и диспетчер обработчиков схем;
-
в модуль net.ssl добавлена поддержка протокола ALPN для бэкендов mbedtls и OpenSSL;
-
в модуль net.http для HTTP/2 добавлена поддержка сжатия заголовков HPACK (RFC-7541); кодека бинарных кадров (binary framing layer, RFC-7540); синхронных клиентских соединений (H2Conn); [[https://github.com/vlang/v/pull/27362 согласования HTTP/2 в fetch с помощью ALPN. HTTP/2 включён по умолчанию для HTTPS‑запросов.
-
-
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) появилась поддержка пользовательских зеркал для установки пакетов.
Пример того, что сборка V занимает 0,3 секунды, а затем использование полученного бинарного файла для повторной сборки:
Демонстрация автоматического освобождения памяти в редакторе V. Все объекты освобождаются во время компиляции. Запуск редактора Ved на файле размером 8 МБ без утечек памяти:
Источник: habr.com