Об этом проекте
V — это статически типизированный компилируемый язык программирования, предназначенный для создания поддерживаемого программного обеспечения. Его заявленные цели — простота, быстрая компиляция, производительность, сопоставимая с C, и безопасность. Компилятор написан на самом языке V и может загрузить себя менее чем за секунду на типичном оборудовании.
Ключевые характеристики, описанные проектом:
- Простота: язык рассчитан на быстрое освоение.
- Быстрая компиляция: в README упоминается примерно 110 000 строк в секунду при использовании бэкэнда Clang и примерно 500 000 строк в секунду при использовании нативного бэкэнда и бэкэнда tcc на конкретной тестовой машине.
- Самохостинг: V быстро компилирует себя, а основной бэкэнд генерирует читаемый на языке C код.
- Функции безопасности: отсутствие null, отсутствие глобальных переменных, неизменяемость по умолчанию и стремление к устранению неопределенного поведения.
- Варианты управления памятью: сборка мусора по умолчанию, а также режимы ручного управления (`-gc none`), аллокации по арене (`-prealloc`) и автоматического освобождения памяти (`-autofree`).
- Перевод кода с C на V, продемонстрированный на примере перевода игры DOOM.
- Горячая перезагрузка кода.
- Встроенная ORM и встроенный веб-фреймворк (veb).
- Бэкэнды для C и JavaScript, а также REPL.
- Кроссплатформенная библиотека пользовательского интерфейса и встроенная графическая библиотека.
- Простая кросс-компиляция, включая создание статических бинарных файлов через образы Docker Alpine/musl.
Установка выполняется преимущественно из исходного кода: клонируйте репозиторий и запустите `make` (или `makev.bat` в Windows, `gmake` в BSD/Solaris). При сборке загружается встроенный компилятор Tiny C Compiler, если существует совместимая версия. Также предоставляются Dockerfile для Docker и Alpine. Команда `v up` обновляет компилятор, а `v symlink` добавляет его в PATH.
Поддержка редакторов и IDE доступна для Atom, CodeLite, Emacs, JetBrains, Sublime Text, Vim/Neovim, VS Code и Zed, при этом возможности языкового сервера обеспечиваются инструментом v-analyzer.
Примеры включают hello world, счетчик слов, загрузчик новостей, Tetris и 2048. Примеры GUI и игр, использующие модули sokol или gg, требуют дополнительных системных библиотек разработки. Сетевые модули (net.http, net.websocket) и команда `v install` могут использовать встроенную библиотеку Mbed-TLS или системную OpenSSL через флаг `-d use_openssl`. Модуль sync зависит от libatomic.
В README отмечается, что язык находится в стадии до версии 1.0 и может еще измениться, при этом изменения синтаксиса в основном обрабатываются инструментом vfmt. После выхода версии 1.0 проект планирует заморозку функциональности по аналогии с Go, оставляя только исправления ошибок и улучшения производительности.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.