V++CEOO Tecnologías
Runtime · V++ en producción

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:

// V++ — servidor propio de un sitio público // CEOO Tecnologías · MMXXVI variable PUERTO = 5450 variable DIR = "/.../plantillas/" función responder_home(): retornar red_responder_http( "200 OK", plantilla_ensamblar( archivo_leer(DIR + "base.tpl"), archivo_leer(DIR + "home.tpl"), "V++ sirve este sitio" ) ) función responder_manifiesto(): retornar red_responder_http("200 OK", plantilla_ensamblar( archivo_leer(DIR + "base.tpl"), archivo_leer(DIR + "manifiesto.tpl"), "Manifiesto V++")) función responder_ceoonik(): retornar red_responder_http("200 OK", plantilla_ensamblar( archivo_leer(DIR + "base.tpl"), archivo_leer(DIR + "ceoonik.tpl"), "CEOONIK v3")) función responder_health(): retornar red_responder_http("200 OK", json_codificar(mapa( "ok", verdad, "servicio", "V++", "runtime", "V++ intérprete v0.1", "ts", sistema_ahora())), "application/json; charset=utf-8") función responder_404(): retornar red_responder_http("404 Not Found", plantilla_ensamblar( archivo_leer(DIR + "base.tpl"), archivo_leer(DIR + "404.tpl"), "404")) red_escuchar_rutas(PUERTO, mapa( "/", responder_home, "/manifiesto", responder_manifiesto, "/ceoonik", responder_ceoonik, "/api/health", responder_health ), responder_404)

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:

PrimitivaPara 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:

función responder_login_ok(): retornar red_responder_http( "303 See Other", "ok", "text/html", mapa( "Location", "/admin", "Set-Cookie", "vps_token=..." + "; Path=/; HttpOnly; SameSite=Lax; Max-Age=86400" ) ) función responder_admin(): si (cabecera_cookie(_info_actual, "vps_token") == TOKEN_OK): retornar render_admin() retornar red_responder_http("303 See Other", "redir", "text/html", mapa("Location", "/login"))

Cómo lo desplegaríamos

Un sitio servido 100 % en V++ necesita tres piezas:

  1. El programa V++ (extensión .◬++) con las funciones de cada ruta.
  2. Un LaunchAgent (macOS) o systemd unit (Linux) que mantenga el proceso vivo con KeepAlive=true.
  3. 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.