Saltar al contenido
Vacav0.1.0GitHub

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, entrada iniciar.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 vaca contienen código del lenguaje.
  • Los bloques bash contienen comandos de shell.
  • Los bloques text contienen la salida esperada.
  • #, // y /* ... */ son comentarios en Vaca.
  • Las constantes se declaran con constante y 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.