Skip to content

veloc-rs/veloc

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

29 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Veloc 编译框架

Rust

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     │      │
│  │  (计划中)   │  │   (解释器)    │  │   (计划中)   │      │
│  └──────────────┘  └──────────────┘  └──────────────┘      │
└─────────────────────────────────────────────────────────────┘

✨ 主要特性

1. 强大的 IR 层 (veloc_ir)

  • SSA 形式:静态单赋值形式,简化优化实现
  • 多返回值:原生支持多值返回,简化复杂运算表达
  • 丰富的指令集:算术、逻辑、内存、控制流指令
  • 类型安全:完整的类型系统和验证器

2. 灵活的代码生成

  • 解释器模式:快速执行,适合调试和原型验证
  • JIT 编译:即时编译到机器码,平衡启动速度和执行性能
  • AOT 编译(计划中):提前编译,生成高性能原生代码

3. WebAssembly 支持 (veloc_wasm)

  • 完整的 WebAssembly 运行时支持
  • 通过 WebAssembly Spec Tests 测试套件验证
  • 支持 WASI 标准

4. 开发中特性

  • 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/

使用示例

执行 WebAssembly 文件

# 解释器模式(默认)
cargo r -r -p veloc_wasm ./coremark.wasm

🧪 测试

项目包含全面的测试套件:

WebAssembly Spec 测试

运行官方 WebAssembly 测试套件验证兼容性:

cargo run -p veloc-spec -- crates/veloc_wasm/tests/testsuite/

📜 许可证

本项目采用 MIT 许可证 - 详见 LICENSE 文件

🚧 注意:本项目正在积极开发中,API 可能会发生变化。欢迎试用并提供反馈!

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages