这个项目能做什么
Xag 是一种编译型编程语言,其核心设计理念是高性能、有用的错误消息和 Rust 风格的内存管理。所有大小都必须显式声明——没有裸露的 `int` 类型。程序会提前编译为通过 LLVM 生成的原生代码,或由两个 AOT 解释器之一执行。
编译器使用 C++20 编写,基于 LLVM 的原生 C++ API,需要 LLVM 23 或更高版本、CMake 和 Ninja。源文件使用 `.xag` 扩展名。工具链包含用于词法分析、解析、类型检查和 IR 检查的命令。
存在三种执行引擎:一个测试解释器(显然正确,但速度慢)、一个快速解释器(经过扁平代码优化)和一个 AOT 原生后端。所有这三种引擎都调用一个共享运行时,因此它们在运行时行为上保持一致。当引擎之间出现不一致时,项目会识别出哪个引擎存在问题。
十进制算术经过严格验证:其软件实现已针对 Python 的 `decimal` (libmpdec) 进行了 400,000 个案例的交叉检查,并通过 QEMU 仿真针对 POWER 硬件十进制单元进行了额外的 20,000 个案例的检查。
Unicode 支持完全遵循 UAX #29,包括字素簇计数,并基于 Unicode 17.0.0 表。所有 766 个 Unicode 一致性案例都在测试套件中运行。
一个预言机生成器 (`generator/`) 编写随机的 Xag 程序,并在所有引擎上测试它们以发现差异。该生成器使用 Rust 编写,不依赖任何外部库。
许可证:Apache-2.0 WITH LLVM-exception。使用免费;修改编译器或运行时需要根据 Apache 条款进行署名。
注意:这是早期开发中的工作——目前没有任何东西是稳定的。仓库中的大部分代码是在语言设计者的指导下由 AI 生成的。
评论
0 评分人数达到10人后显示
登录后参与讨论。