V++ frente al mundo
Comparación técnica honesta de V++ contra C, C++, Rust, Python y Go. No inflamos nada: V++ es fuerte en independencia, autohospedaje, velocidad y ya en una biblioteca amplia (783 módulos). Sigue débil —hoy— en genéricos (aún inexistentes) y en la madurez de herramientas (depurador, gestor de paquetes); en concurrencia y modelo de memoria ya tiene piezas parciales (CSP y regiones), no las completas de Rust/Go. Cada afirmación es verificable con el código publicado y los benchmarks reproducibles.
V++ es el único de los seis con independencia total —compilador, criptografía y trazabilidad propias, sin ningún compilador de C— y ya corre en el mismo orden de magnitud que C (1.00×–1.2× más lento que cc -O2, según el patrón). A cambio, todavía le faltan por completar las piezas que los demás sí tienen maduras: genéricos (aún inexistentes, como en C++/Rust/Go), el ownership/borrow-checker completo de Rust (V++ ya tiene regiones), la concurrencia con garantía del compilador (V++ ya tiene CSP), y un depurador y gestor de paquetes pulidos. Es un lenguaje joven que ya cruzó el umbral más difícil, no un lenguaje maduro.
Matriz de comparación Dimensión por dimensión
Once dimensiones, seis lenguajes. Valoración breve y realista en cada celda. La columna de V++ está resaltada; se juzga con la misma vara que a los demás.
| Dimensión | V++ | C | C++ | Rust | Python | Go |
|---|---|---|---|---|---|---|
| Velocidad | 1.00–1.2× CNativo ARM64; asignación de registros, división por constante (multiplicación mágica) y colapso del despacho de +/==. Aritmética y primos ~1.00× (paridad), Euclides ~1.10×; bucle superior con módulo ~1.37× (era 2.57×). | ReferenciaEl patrón de oro en cómputo intensivo. | ≈ CCosto cero real; a la par de C. | ≈ CRendimiento de sistemas, sin GC. | ~22–200× lentoInterpretado; el más lento del grupo. | Cercano a CCompilado con GC; muy bueno, no tope. |
| Seguridad de memoria | Gestionada + regionesSin punteros crudos; regiones (region: … fin) a costo cero con verificador de escape. Falta el ownership/borrow-checker completo de Rust. |
ManualPunteros crudos; fugas y accesos inválidos a mano. | Manual + RAIIMejor que C, pero sigue siendo insegura por defecto. | GarantizadaOwnership/borrow en compilación, sin GC. El referente. | GCSegura vía recolector; costo en pausas. | GCSegura vía recolector afinado de baja latencia. |
| Sistema de tipos | Gradual opcionalTipos graduales; hoy dinámico en la práctica (entero, cadena, lista, mapa). Inferencia parcial. | Estático débilEstático pero permisivo; conversiones peligrosas. | Estático fuerteRico pero complejo; heredado de C. | Estático fuerteTraits + inferencia; de los más expresivos. | DinámicoCómodo; errores hasta ejecución. Hints opcionales. | Estático simpleDeliberadamente minimalista y claro. |
| Genéricos | Por monomorfizaciónHerramienta vppgen: genéricos por monomorfización de fuente (una pila genérica se expande a entero/cadena, como las plantillas de C++). Falta la verificación de tipos en compilación de Rust. |
NoSolo macros y void*. |
PlantillasMetaprogramación potentísima (y compleja). | Genéricos + traitsMonomorfizados, costo cero. | Duck typingGenérico de facto, sin verificación. | GenéricosDesde 1.18; sencillos pero suficientes. |
| Concurrencia | Parcial · CSPModelo CSP con tarea/canal/enviar/recibir, determinista y sin carreras en la práctica; falta la garantía estática del compilador contra carreras (lo de Rust). |
Manualpthreads; potente y peligroso. | std::threadHilos y atómicos; sin red de seguridad. | Sin miedoConcurrencia segura garantizada por el compilador. | GIL / asyncAsync sí; paralelismo real limitado por el GIL. | GoroutinesSu bandera: baratas y con canales. El referente práctico. |
| Manejo de errores | ParcialExiste el tipo Resultado; falta integrarlo de forma ergonómica en toda la sintaxis. |
Códigos/errnoManual y fácil de ignorar. | ExcepcionesPotentes pero con costo y flujo oculto. | Result + ?Errores como valores, ergonómicos. El referente. | ExcepcionesCómodas; se propagan silenciosas. | error explícitoErrores como valores; verboso pero claro. |
| Autohospedaje | Total, sin CCompilador escrito en V++, binario ARM64 nativo; punto fijo verificado, sin ningún compilador de C. | SíCompiladores de C escritos en C. | SíClang/GCC en C++. | Sírustc en Rust (bootstrap vía LLVM/C++). | NoCPython está escrito en C. | SíAutohospedado desde Go 1.5. |
| Ecosistema / librerías | En crecimientoBiblioteca Amoxkalli: 783 módulos de stdlib con 13926 pruebas ejecutables. Propia y verificable por construcción; ya supera en número de módulos a la stdlib de varios lenguajes, aún menor que PyPI/npm en volumen de terceros. | Enorme50 años de librerías de sistemas. | EnormeBoost y todo el legado de C. | Grandecrates.io, joven pero muy activo. | InmensoPyPI; el ecosistema más amplio del mundo. | AmplioStdlib "con pilas" y módulos maduros. |
| Herramientas | En marchaFormateador, linter, REPL y LSP propios; faltan depurador y gestor de paquetes maduros. | Madurasgdb, valgrind, sanitizers. | MadurasTodo el tooling de C + más. | Excelentescargo + rust-analyzer, referencia de DX. | Excelentespip, depuradores, notebooks. | Integradasgo build/test/fmt de fábrica. |
| Curva de aprendizaje | SuaveSintaxis en español, simple y sin ceremonia; accesible para principiantes. | MediaPunteros y memoria manual desde el día uno. | EmpinadaDe los más difíciles de dominar. | EmpinadaOwnership cuesta al principio. | Muy suaveEl más fácil para empezar. | SuavePequeño y deliberadamente simple. |
| Independencia tecnológica | TotalInfraestructura, criptografía (HUUN'AB-512) y trazabilidad (BlockCEOO) propias; español; cada ejecución sellada en cadena. | Estándar abiertoLibre, pero gobernanza y herramientas foráneas. | Comité ISOEstándar internacional, no propio. | FundaciónAbierto, gobernado en el extranjero. | FundaciónAbierto, gobernanza foránea. | CorporativoDirigido por una empresa extranjera. |
Nota de honestidad: la fila de velocidad de V++ está medida (bench/RESULTADOS.md), no estimada. La fila de genéricos refleja que esa pieza todavía no existe en V++. Las de memoria y concurrencia ahora son parciales reales (regiones a costo cero y modelo CSP verificados en código), no maquillaje: falta la garantía en compilación que dan Rust/Go.
Qué le falta a V++ frente a cada lenguaje
Lo concreto que cada lenguaje tiene y V++ aún no. Esto es la lista de trabajo, no una excusa.
vs CBackend optimizador — asignación de registros
El backend nativo ya incorpora asignación de registros (locales de bucles calientes —incluido el de nivel superior— a registros callee-saved) y reducción de fuerza por divisor constante: como cc -O2, reemplaza el módulo por constante con multiplicación mágica (Granlund-Montgomery) en lugar de división de hardware. Con una cadena de optimización propia, escrita en el propio V++, el bucle aritmético alcanza 1.00× de cc -O2 —paridad exacta—, con cero miscompilaciones verificadas en 14 benchmarks (la constante mágica computada coincide byte a byte con la de C).
- Hecho: asignación de registros, división/módulo por constante vía multiplicación mágica, colapso del despacho dinámico de
+/==(inferencia de natividad flow-sensitive) y su coalescing, copy propagation, colapso de la pila de operandos, eliminación del spill de memoria, fusión de ramas y eliminación de código muerto. - Resultado: con copy propagation, casi todo el cómputo queda a paridad con
cc -O2: aritmética y conteo de primos ~1.00×, Euclides ~1.10×. El bucle superior con módulo bajó de 2.57× a 1.37×. - Límite restante, honesto: solo el bucle de nivel superior con módulo por constante pequeña (~1.37×) queda por encima; su gap restante es la magia sin signo + el desenrollado de bucles que hace
cc -O2. Siguiente frontera: análisis de no-negatividad y desenrollado.
vs C++Genéricos / plantillas y ecosistema
C++ ofrece abstracciones de costo cero y medio siglo de librerías. A V++ le falta:
- Genéricos / plantillas: ya existen por monomorfización de fuente (herramienta
vppgen, como plantillas C++/genéricos Go), pero falta la verificación de tipos en compilación para abstracciones de costo cero garantizadas. - Ecosistema y legado: la biblioteca Amoxkalli ya suma 783 módulos con 13926 pruebas, pero frente a Boost y la STL —con medio siglo de legado y bibliotecas de terceros— sigue siendo joven.
vs RustOwnership, traits y concurrencia sin miedo
Rust es el terreno donde V++ está más atrás. Le falta todo el modelo que hace de Rust lo que es:
- Modelo de memoria con ownership / borrow-checker: garantías en compilación sin recolector de basura. V++ ya tiene regiones a costo cero con verificador de escape y un checker de uso-tras-mover (
vppmove), primeros eslabones del análisis de posesión; aún no un borrow-checker completo (préstamos, lifetimes) como el de Rust. - Traits: ya hay un verificador de conformidad estructural (
vpptraits: comprueba que un tipo implemente las funciones requeridas), primer paso hacia contratos genéricos verificados; falta el despacho dinámico y la integración con genéricos. - Concurrencia sin miedo: Rust impide por diseño las carreras de datos. V++ ya tiene un modelo CSP (
tarea/canal) determinista y un analizador estático de carreras (vpprace) que detecta captura de memoria mutable compartida; falta que esa verificación sea obligatoria en compilación como en Rust.
vs PythonLibrerías, REPL de comunidad y masa crítica
V++ ya es mucho más rápido que Python (22×–200×), pero Python gana en todo lo demás del ecosistema humano:
- Librerías: PyPI tiene cientos de miles de paquetes de terceros; V++ tiene 783 módulos propios (Amoxkalli) con 13926 pruebas — una stdlib ya grande, pero sin el universo de terceros de Python.
- REPL, notebooks y depuradores pulidos por años de uso; V++ tiene REPL, pero joven.
- Comunidad y documentación: tutoriales, respuestas y talento abundante. V++ arranca su comunidad desde cero.
vs GoGoroutines, herramientas de fábrica y GC afinado
Go demuestra que un lenguaje simple puede ser productivo a escala. A V++ le falta:
- Goroutines y canales: concurrencia barata y ergonómica de serie. V++ ya tiene canales y tareas (CSP), pero aún sin el planificador de goroutines ni la madurez de Go.
- Herramientas integradas (
build,test,fmt, gestor de paquetes) que funcionan sin configurar. V++ tiene parte del tooling, falta madurez. - Recolector afinado de baja latencia: aunque V++ apunta a un modelo sin GC, hoy no tiene ni una cosa ni la otra resueltas para cargas concurrentes.
Dónde V++ ya gana Hoy, verificable
No todo es déficit. Hay terreno donde V++ no compite: directamente no tiene rival entre los otros cinco.
Independencia total
Es el único de los seis con infraestructura, criptografía (HUUN'AB-512) y gobernanza 100% propias. Los otros cinco, por abiertos que sean, se rigen por comités, fundaciones o empresas extranjeras. Para un Estado o una organización que necesita independencia tecnológica, esto no lo iguala ninguno.
Autohospedaje sin ningún compilador de C
V++ se compila a sí mismo a binario ARM64 nativo por una ruta 100% propia, con punto fijo verificado (gen2 = gen3 = gen4, mismo SHA-256) y sin usar ningún compilador de C. Rust y Go se autohospedan, pero su bootstrap descansa sobre LLVM/C++ o cadenas de C. V++ no depende de nadie: el umbral que el 95% de los lenguajes nunca cruza.
Trazabilidad sellada en cadena
Cada ejecución y cada artefacto puede sellarse de forma inmutable en BlockCEOO. Ninguno de los otros cinco lleva la auditoría criptográfica dentro del propio lenguaje y su cadena de confianza; es una capacidad nativa, no un añadido.
Programar en español
Sintaxis, mensajes de error, herramientas y documentación en español. Baja la barrera de entrada para millones de hispanohablantes y cumple el manifiesto: todo pueblo que no programa en su propia lengua, obedece la lógica de otro. Los otros cinco piensan en inglés.
Datos de velocidad medidos y reproducibles en bench/RESULTADOS.md. Estado de cada frente pendiente en Roadmap. Lo publicado y descargable en Descargas. Sin humo: lo que falta, falta; lo hecho, se verifica en vivo.