Обновлён проект статически типизированного языка программирования V (vlang)

В середине июля 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

0 0 голоса
Рейтинг новости
1
0
Подписаться
Уведомить о
0 комментариев