El compilador demuestra lo que cuesta
Una función declara su huella (pura, sin excepciones, cero reservas, O(n)) y el compilador la verifica o rechaza compilar.
Todo lo que puede escribirse en el propio lenguaje está escrito en él.
Vesta es un lenguaje de sistemas diseñado junto a su compilador, su máquina virtual y sus herramientas, para que buena parte de la infraestructura que normalmente queda oculta pueda escribirse en el propio lenguaje.
En términos prácticos: tipado estático con inferencia local y sintaxis de la familia de C. Multiparadigma (imperativo, orientado a objetos y funcional ligero), sin obligar a envolver nada en una clase. Un mismo fuente se ejecuta de tres formas: como bytecode sobre su máquina virtual, con JIT cuando el código se calienta, o compilado por adelantado a un ejecutable nativo autónomo. La memoria es determinista por defecto (RAII, punteros inteligentes y comprobador de préstamos); el recolector solo aparece si lo pides.
En casi todos los lenguajes hay una frontera donde el lenguaje termina y empieza otra cosa: componentes escritos en C, primitivas especiales del compilador, scripts de enlazado con su propia sintaxis. Por debajo de esa línea ya no puedes leer, ni entender, ni cambiar nada.
Vesta intenta mover esa frontera. Los enteros de 512 bits, los tipos atómicos, las llamadas al sistema, la disposición de secciones o el propio script de enlace no son magia del compilador: son bibliotecas escritas en Vesta que puedes abrir.
Y eso tiene una consecuencia práctica. Si puedes leer cómo está implementado un atómico, también puedes adaptarlo a tu caso. El compilador deja de ser una caja negra y pasa a formar parte del mismo ecosistema que el resto de tu código.
Vesta no nace para sustituir a C, C++ o Rust. Las tecnologías conviven durante décadas y cada una encuentra su ámbito, así que está diseñado para interoperar con lo que ya existe, no para pedirte que lo abandones.
El principio que lo guía es proporcionar mecanismos en lugar de políticas: el lenguaje da la herramienta y la decisión es de cada proyecto.
El mismo fuente, sin cambiar una línea, corre en la máquina virtual, se compila con JIT o se convierte en un ejecutable nativo autónomo.
i32 main() {
println("Hello from Vesta ${1 + 1}!");
return 0;
}
Una función declara su huella (pura, sin excepciones, cero reservas, O(n)) y el compilador la verifica o rechaza compilar.
Funciones que se ejecutan durante la compilación con el lenguaje completo: ensamblador nativo, llamadas a la API del sistema y generación de código.
Si tu punto de entrada es puro, el compilador lo ejecuta al compilar e inyecta el resultado como constante. Activo por defecto.
Los enteros de 512 bits, los atómicos y las syscalls están escritos en Vesta, no en C ni en primitivas del compilador.
El script de enlace es un fichero .vx con una función, no un lenguaje aparte con su propia sintaxis.
Ejecutables autónomos con memoria determinista. El recolector se enlaza solo si usas gc<T>, y queda dentro del binario.
Describe una cabecera PE, un registro MMIO o un paquete de red una vez, y accede por nombre de campo en lugar de por desplazamiento.
Llama a bibliotecas de C, a DLL del sistema y a syscalls crudas sin salir del lenguaje ni pasar por libc.
Del mismo fuente, cambiando solo la orden de compilación:
.velb para la máquina virtual.so.a.o / .objld, gcc ni ar. Enlazador y archivador incluidos en el compilador.Aprende está escrito para leerse en orden, desde la instalación hasta el primer programa de verdad. Documentación es la referencia del lenguaje, pensada para buscar. Arquitectura documenta el compilador: el SSA, el optimizador, el JIT, la compilación nativa, el enlazador y la caché incremental.
La Biblioteca estándar tiene sección propia, porque está escrita en Vesta y eso es un argumento sobre el lenguaje, no un catálogo de funciones.
Vesta está en alfa: utilizable y con pruebas, y con partes en desarrollo activo. Esas partes se señalan como tales allí donde aparecen.