V++ sirve sitios web reales.
Un servidor web es la prueba más exigente para un lenguaje: requiere sockets, parseo de protocolos, plantillas, sesiones, cookies, manejo de errores en tiempo real. V++ ya lo hace. Sin Express. Sin Flask. Sin Apache. Sin Nginx. Solo el intérprete propio y las primitivas que el propio lenguaje expone.
El programa central
Este sitio que estás leyendo (vpp.ceoo.world) ya se sirve así: con un servidor escrito en V++ (servidor.vpp). Lee, parsea HTTP, decide ruta, sirve la página o delega al backend. Toda la lógica de servir vive en V++; el intérprete propio y portable que lo ejecuta —en transición al compilador nativo ARM64 que ya existe— no toma ninguna decisión de producto:
Las primitivas que lo hacen posible
El intérprete V++ expone primitivas propias que el código del servidor invoca como funciones normales. Ninguna depende de un framework externo:
| Primitiva | Para qué |
|---|---|
red_escuchar_rutas(puerto, rutas, default_handler) | Abre socket TCP, parsea cada petición HTTP, invoca el handler de V++ correspondiente |
red_responder_http(estado, cuerpo, tipo, cabeceras) | Construye respuesta HTTP completa con cabeceras de seguridad incluidas |
red_analizar_peticion(bytes) | Parsea método, ruta, cabeceras, body de una petición HTTP cruda |
archivo_leer(ruta) | Lee archivo UTF-8 del filesystem local (deshabilitada en VPP_SAFE=1) |
plantilla_ensamblar(base, contenido, titulo) | Renderiza una plantilla con sustitución de tokens |
plantilla_aplicar(tpl, clave, valor, …) | Sustituye placeholders {{CLAVE}} con valores |
formdata_extraer(peticion, campo) | Lee un campo de un body application/x-www-form-urlencoded |
cabecera_cookie(peticion, nombre) | Devuelve el valor de una cookie por nombre |
json_codificar(valor) | Serializa cualquier mapa/lista V++ a JSON |
mapa(clave, valor, …) | Construye un diccionario sobre la marcha |
sistema_ahora() | Timestamp ISO-8601 del momento |
Qué prueba esto
V++ ya está en producción.
vpp.ceoo.world se sirve hoy con servidor.vpp (servidor escrito en V++) como puerta de entrada. El runtime que lo ejecuta es portable e interpretado; su substrato actual se reemplaza por el compilador AOT a binario nativo ARM64 / x86_64 / WASM — que ya existe. Mientras tanto el intérprete cubre la carga sin necesidad de bajarlo a nativo, y todas las defensas de /seguridad siguen activas.
La cadena completa — desde el socket hasta el HTML — es código V++. No hay frameworks importados. No hay dependencias extranjeras. Cada decisión sobre cómo responder es una decisión tomada por el intérprete V++ ejecutando código V++.
Sesiones y autenticación, también en V++
El mismo programa servidor maneja cookies, login, sesiones y rutas privadas. Sin express-session, sin passport. Una cookie HttpOnly y comparación de tokens:
Cómo lo desplegaríamos
Un sitio servido 100 % en V++ necesita tres piezas:
- El programa V++ (extensión
.◬++) con las funciones de cada ruta. - Un LaunchAgent (macOS) o systemd unit (Linux) que mantenga el proceso vivo con
KeepAlive=true. - Un túnel (cloudflared o WireGuard) que exponga el puerto local al mundo. TLS lo termina la capa edge — el servidor V++ habla HTTP plano dentro del host.
Eso es todo. La pila completa V++ + tunnel encaja en una Mac Mini o un Raspberry Pi sin sudores.
Sigue
Para entender qué tan blindado va el runtime, lee /seguridad. Para ver la sintaxis completa: /spec. Para probarlo tú: /playground.