Sobre el proyecto

Xag es un lenguaje de programación compilado construido en torno al alto rendimiento, mensajes de error útiles y gestión de memoria estilo Rust. Cada tamaño debe declararse explícitamente; no existe el tipo básico `int`. Los programas se compilan anticipadamente a código nativo mediante LLVM o se ejecutan mediante uno de dos intérpretes AOT. El compilador está escrito en C++20 contra la API nativa de C++ de LLVM, requiriendo LLVM 23 o superior, CMake y Ninja. Los archivos fuente usan la extensión `.xag`. La cadena de herramientas incluye comandos para análisis léxico, análisis sintáctico, verificación de tipos e inspección de IR. Existen tres motores de ejecución: un intérprete de prueba (obviamente correcto, lento), un intérprete rápido (optimizado para código plano) y un backend nativo AOT. Los tres llaman a un único tiempo de ejecución compartido, por lo que coinciden en el comportamiento en tiempo de ejecución. Cuando los motores discrepan, el proyecto identifica cuál está fuera de paso. La aritmética decimal se valida rigurosamente: la implementación del software se verifica cruzada contra Python `decimal` (libmpdec) en 400,000 casos, y contra unidades decimales de hardware POWER mediante emulación QEMU para otros 20,000 casos. El soporte Unicode sigue completamente UAX #29, incluyendo conteo de clústeres gráficos, basado en tablas Unicode 17.0.0. Todos los 766 casos de conformidad Unicode se ejecutan en la suite de pruebas. Un generador oracular (`generator/`) escribe programas Xag aleatorios y los prueba en todos los motores para encontrar discrepancias. El generador está escrito en Rust sin dependencias externas. Licencia: Apache-2.0 WITH LLVM-exception. El uso es gratuito; modificar el compilador o tiempo de ejecución requiere atribución bajo los términos de Apache. Nota: Este es un trabajo en progreso temprano—todavía nada es estable. La mayoría del código en el repositorio fue generado por IA bajo la dirección del diseñador del lenguaje.