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

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

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

  • Добавлены анонимные структуры.




  • Удалена старая функциональность, ранее объявленная устаревшей (до этого 6 месяцев при компиляции проекта выводилось предупреждение о таком коде).
  • Множество улучшений в парсере и верификаторе (checker) языка.
  • Изменения, нарушающие совместимость:
    • Старый синтаксис “[attr]” теперь приводит к выводу ошибки, следует использовать “@[attr]”.
    • string.index_after() теперь возвращает Option (как и string.index()), для старого поведения следует использовать string.index_after_().
    • vweb объявлен устаревшим в пользу более быстрого, стабильного и простого в использовании veb.
  • В стандартной библиотеке помимо множества оптимизаций и пополнения документации можно выделить:
    • Добавлен встроенный метод string.split_by_space()
    • В модуль os добавлены вспомогательные методы File.write_u8/1 и File.read_u8/0.
    • В модуль os добавлена функция disk_usage, показывающая доступное место для файлового пути.
    • В модуль time добавлена функция week_of_year().
    • В x.json2 добавлен Any.as_map_of_strings/0.
  • Среди web-изменений:
    • Удалён модуль x.vweb (теперь это модуль veb).
    • В veb.request_id добавлена новая прослойка (middleware) для отслеживания ID запросов.
    • Обновлено руководство по veb.
  • Базы данных:
    • В модуле orm исправлен генератор кода для опции fk.
    • В db.sqlite добавлена трассировка для большего количества вызовов при использовании “-d trace_sqlite”, а не только для ORM.
    • В db.pg добавлена поддержка операторов – db.prepare/3 и db.exec_prepared/2.
    • В db.mysql добавлена поддержка SSL и вынесена во флаг подключения.
  • Примеры:
    • Добавлен пример HTTP-сервера vanilla_http_server – быстрого, многопоточного, неблокируемого, повторно использующего порты и хосты, потокобезопасного, использующего epoll.
    • Добавлен пример “1 Billion Row Challenge” для демонстрации возможностей производительности языка.
    • Добавлен пример игры “Сапер” (examples/gg/minesweeper.v).
    • Добавлен пример головоломке Sokoban с уровнями.
    • Добавлен пример игры про астероиды (сейчас она содержит < 400 строк кода и использует gg).
    • Добавлен пример небольшой игры, поддерживающую клавиатуру и сенсорное управление.
  • В утилиту “v” добавлен флаг “-show-depgraph”, который генерирует изображение с ModGraph:

  • Проектом развивается новая ОС Vinix со своим ядром, написанная с нуля на языке V. Vinix теперь может работать с GTK3:

Release. Ссылка here.