Sobre o projeto

V é uma linguagem de programação compilada e estaticamente tipada, projetada para construir software mantível. Seus objetivos declarados são simplicidade, compilação rápida, desempenho comparável ao C e segurança. O compilador é escrito em V e pode fazer bootstrap em menos de um segundo em hardware típico. Principais características descritas pelo projeto: - Simplicidade: a linguagem é destinada a ser aprendida em pouco tempo. - Compilação rápida: o README cita aproximadamente 110 mil linhas/segundo com um backend Clang e aproximadamente 500 mil linhas/segundo com backends nativos e tcc em uma máquina de teste específica. - Auto-hospedagem: V compila a si mesmo rapidamente, e o backend principal emite C legível por humanos. - Recursos de segurança: sem null, sem globais, imutabilidade por padrão e trabalho para eliminar comportamento indefinido. - Opções de gerenciamento de memória: coleta de lixo por padrão, além de modos manual (`-gc none`), alocação de arena (`-prealloc`) e autofree (`-autofree`). - Tradução de C para V, demonstrada com uma demo de tradução de DOOM. - Recarga de código a quente. - ORM integrado e um framework web integrado (veb). - Backends para C e JavaScript, além de um REPL. - Biblioteca de UI multiplataforma e uma biblioteca gráfica integrada. - Fácil compilação cruzada, incluindo binários estáticos via imagens Docker Alpine/musl. A instalação é feita principalmente a partir do código-fonte: clone o repositório e execute `make` (ou `makev.bat` no Windows, `gmake` em BSD/Solaris). A compilação baixa um Tiny C Compiler incluído quando uma versão compatível existe. Dockerfiles para Docker e Alpine também são fornecidos. `v up` atualiza o compilador, e `v symlink` adiciona-o ao PATH. O suporte a editores e IDEs está disponível para Atom, CodeLite, Emacs, JetBrains, Sublime Text, Vim/Neovim, VS Code e Zed, com recursos de servidor de linguagem fornecidos pelo v-analyzer. Os exemplos incluem um hello world, contador de palavras, buscador de notícias, Tetris e 2048. Exemplos de GUI e jogos usando os módulos sokol ou gg exigem bibliotecas de desenvolvimento adicionais do sistema. Os módulos de rede (net.http, net.websocket) e `v install` podem usar Mbed-TLS incluído ou OpenSSL do sistema via `-d use_openssl`. O módulo sync depende de libatomic. O README observa que a linguagem é pré-1.0 e pode ainda mudar, com alterações de sintaxe amplamente tratadas pelo vfmt. Após a versão 1.0, o projeto planeja um congelamento de recursos semelhante ao Go, com apenas correções de bugs e melhorias de desempenho.