Veloc 是一个用 Rust 编写的现代化编译器基础设施,它提供了一套完整、灵活且高性能的工具链,用于构建从源码到机器码的全流程编译解决方案。
我们的目标是打造一个模块化、可扩展、高性能的编译框架:
- 🧩 模块化架构:清晰分离的前端、中端(IR)、后端设计
- 🔧 易于扩展:简洁的 API 设计,方便添加新的语言前端和目标后端
- 🌐 多目标支持:内置 WebAssembly 支持,可扩展至更多架构
- 📦 开箱即用:内置解释器和 JIT 编译器,支持快速原型验证
Veloc 采用经典的编译器三段式设计:
┌─────────────────────────────────────────────────────────────┐
│ 前端 (Frontends) │
│ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │
│ │ WebAssembly │ │ C │ │ 更多... │ │
│ │ (veloc_wasm)│ │ (veloc_c) │ │ │ │
│ └──────┬──────┘ └──────┬──────┘ └──────┬──────┘ │
└─────────┼────────────────┼────────────────┼────────────────┘
│ │ │
▼ ▼ ▼
┌─────────────────────────────────────────────────────────────┐
│ 中间表示 (IR) - veloc_ir │
│ • SSA 形式的指令集 │
│ • 类型系统(整数、浮点、指针、向量) │
│ • 控制流图(CFG) │
│ • 多返回值支持 │
└─────────────────────┬───────────────────────────────────────┘
│
┌───────────┴───────────┐
▼ ▼
┌──────────────────┐ ┌──────────────────┐
│ 分析器 │ │ 优化器 │
│ (analyzer) │ │ (optimizer) │
│ • 活跃变量分析 │ │ • 常量传播 │
│ • 数据流分析 │ │ • 死代码消除 │
└──────────────────┘ └──────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────┐
│ 后端 (Backends) │
│ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │
│ │ x86_64 │ │ Interpreter │ │ ARM64 │ │
│ │ (计划中) │ │ (解释器) │ │ (计划中) │ │
│ └──────────────┘ └──────────────┘ └──────────────┘ │
└─────────────────────────────────────────────────────────────┘
- SSA 形式:静态单赋值形式,简化优化实现
- 多返回值:原生支持多值返回,简化复杂运算表达
- 丰富的指令集:算术、逻辑、内存、控制流指令
- 类型安全:完整的类型系统和验证器
- 解释器模式:快速执行,适合调试和原型验证
- JIT 编译:即时编译到机器码,平衡启动速度和执行性能
- AOT 编译(计划中):提前编译,生成高性能原生代码
- 完整的 WebAssembly 运行时支持
- 通过 WebAssembly Spec Tests 测试套件验证
- 支持 WASI 标准
- x86_64 原生代码生成
- 更多优化通道(循环优化、向量化)
- 更多目标架构(ARM64、RISC-V)
- C/C++ 前端完善
# 克隆仓库
git clone https://github.com/veloc-rs/veloc
cd veloc
# 构建整个项目
cargo build --release
# 运行测试
cargo test
# 运行 WebAssembly Spec 测试
cargo run -p veloc-spec -- crates/veloc_wasm/tests/testsuite/# 解释器模式(默认)
cargo r -r -p veloc_wasm ./coremark.wasm项目包含全面的测试套件:
运行官方 WebAssembly 测试套件验证兼容性:
cargo run -p veloc-spec -- crates/veloc_wasm/tests/testsuite/本项目采用 MIT 许可证 - 详见 LICENSE 文件
🚧 注意:本项目正在积极开发中,API 可能会发生变化。欢迎试用并提供反馈!