Sobre el proyecto
V es un lenguaje de programación compilado y tipado estáticamente, diseñado para construir software mantenible. Sus objetivos declarados son la simplicidad, la compilación rápida, un rendimiento comparable al de C y la seguridad. El compilador está escrito en el propio V y puede arrancar en menos de un segundo en hardware típico.
Características clave descritas por el proyecto:
- Simplicidad: el lenguaje está pensado para poder aprenderse en poco tiempo.
- Compilación rápida: el README cita aproximadamente 110k líneas/segundo con un backend de Clang y aproximadamente 500k líneas/segundo con backends nativos y tcc en una máquina de prueba específica.
- Autohospedaje: V se compila a sí mismo rápidamente, y el backend principal emite C legible por humanos.
- Características de seguridad: sin null, sin globales, inmutabilidad por defecto y trabajo para eliminar el comportamiento indefinido.
- Opciones de gestión de memoria: recolección de basura por defecto, además de modos manual (`-gc none`), asignación por arena (`-prealloc`) y autofree (`-autofree`).
- Traducción de C a V, demostrada con un demo de traducción de DOOM.
- Recarga de código en caliente.
- ORM integrado y un framework web integrado (veb).
- Backends de C y JavaScript, además de un REPL.
- Biblioteca de interfaz de usuario multiplataforma y una biblioteca gráfica integrada.
- Compilación cruzada fácil, incluidos binarios estáticos mediante imágenes Docker de Alpine/musl.
La instalación se realiza principalmente desde el código fuente: clona el repositorio y ejecuta `make` (o `makev.bat` en Windows, `gmake` en BSD/Solaris). La compilación descarga un Tiny C Compiler incluido cuando existe una versión compatible. También se proporcionan Docker y Alpine Dockerfiles. `v up` actualiza el compilador y `v symlink` lo añade al PATH.
El soporte para editores e IDE está disponible para Atom, CodeLite, Emacs, JetBrains, Sublime Text, Vim/Neovim, VS Code y Zed, con capacidades de servidor de lenguaje proporcionadas por v-analyzer.
Los ejemplos incluyen un hola mundo, contador de palabras, buscador de noticias, Tetris y 2048. Los ejemplos de GUI y juegos que usan los módulos sokol o gg requieren bibliotecas de desarrollo del sistema adicionales. Los módulos de red (net.http, net.websocket) y `v install` pueden usar Mbed-TLS incluido u OpenSSL del sistema mediante `-d use_openssl`. El módulo sync depende de libatomic.
El README señala que el lenguaje es pre-1.0 y puede cambiar todavía, con cambios de sintaxis manejados en gran parte por vfmt. Después de 1.0, el proyecto planea una congelación de características similar a Go, con solo correcciones de errores y mejoras de rendimiento.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.