Documentación de Vaca
Vaca es un lenguaje de programación en español, con llaves y pensado para
servidores. Su motor está escrito en Rust: usa la biblioteca estándar y
rustls para TLS, sin frameworks: el
binario, la biblioteca estándar y el servidor HTTP viajan juntos.
Esta documentación cubre el lenguaje, la biblioteca estándar, el modelo de concurrencia, los ejemplos de uso, las herramientas y una referencia rápida.
Ficha técnica
| Aspecto | Detalle |
|---|---|
| Sintaxis | Español, llaves { }, ; opcional |
| Tipado | Dinámico con anotaciones opcionales informativas |
| Paradigma | Imperativo, funcional y orientado a objetos |
| Motor | Compilador a bytecode y VM de pila en Rust |
| Concurrencia | Hilos del sistema, async/esperar, contadores atómicos |
| Biblioteca | JSON, matemáticas, tiempo, sistema, archivos, texto, CSV/DataFrames, HTTP y concurrencia |
| Dependencias | Rust estándar + rustls (TLS) |
| Licencia | MIT |
Instalación
Necesitas Rust estable para compilar el motor. Después del build no hace falta Node, npm ni ningún runtime adicional.
git clone https://github.com/ulf-frostypaw/vaca.git
cd vaca
cargo build --release
El binario queda en target/release/vaca. También puedes instalarlo como
comando global:
cargo install --path .
Comprueba la instalación:
vaca --version
Tu primer programa
Crea hola.vaca:
nombre = "Mundo"
imprimir(a"Hola, {nombre}!")
Ejecútalo:
vaca hola.vaca
Salida:
Hola, Mundo!
Un programa algo más completo:
# Variables y anotaciones opcionales
contador: Entero = 0
para i = 1 hasta 5 {
contador = contador + i
}
imprimir(a"Suma del 1 al 5: {contador}")
# Listas y diccionarios
frutas = ["pera", "uva", "higo"]
frutas.agregar("melón")
frutas.ordenar()
persona = {"nombre": "Ada", "lenguaje": "Vaca"}
imprimir(frutas)
imprimir(persona.obtener("nombre"))
Salida:
Suma del 1 al 5: 15
["higo", "melón", "pera", "uva"]
Ada
Cómo leer esta documentación
- El lenguaje: variables, tipos, operadores, control de flujo, funciones, colecciones, POO, errores e importaciones.
- Módulos nativos: la biblioteca estándar completa, con firmas y ejemplos.
- HTTP y concurrencia: servidor, cliente, hilos, límites de conexión y despliegue.
- Ejemplos de uso: programas completos con su salida.
- Módulos y paquetes:
vaca.mod, entradainiciar.vaca, versiones, git, lockfile y bundles de producción. - Herramientas: CLI, REPL, editor, empaquetado, pruebas y diagnóstico de errores.
- Referencia rápida: palabras clave, operadores, builtins, métodos y tabla de errores.
Convenciones
- Los bloques
vacacontienen código del lenguaje. - Los bloques
bashcontienen comandos de shell. - Los bloques
textcontienen la salida esperada. #,//y/* ... */son comentarios en Vaca.- Las constantes se declaran con
constantey su nombre debe ir en MAYÚSCULAS. - El punto y coma
;nunca es obligatorio.
Nota: Vaca comprueba antes de ejecutar que no haya variables locales declaradas y sin usar. Si un ejemplo no arranca, revisa esa regla en Herramientas.
Estado del proyecto
Vaca está en la versión 0.1.0. El lenguaje, la biblioteca estándar, la
concurrencia real y el servidor HTTP están implementados. Las funciones se
compilan a bytecode y se ejecutan en una VM de pila, con el intérprete de árbol
como respaldo para intentar, cierres anidados e importar. También hay
módulos (vaca.mod + iniciar.vaca), gestor de paquetes, bundles de
producción verificados y conexiones SQLite. Todavía no hay
comprobación estática de tipos, recolector de basura ni formateador.
Consulta la referencia rápida para ver la lista completa de límites antes de llevar Vaca a producción.