Опубликован релиз статически типизированного языка программирования 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.