搜索你想找的开源项目

输入名称、用途或关键词,也可粘贴 GitHub 仓库链接

分享到微信

当前解读页的微信分享二维码

用微信扫一扫打开,点击右上角「···」分享给朋友或朋友圈。

手机上可截屏后,在微信扫一扫中从相册识别二维码。

makepad/relax

开发工具

用 Rust 写的实时编译器与 JIT 运行时,直接从源码运行 Cargo 包,并在运行时热更新改动函数。

186
11
Rust
MIT
今天创建

项目介绍

Relax 尝试替换 Rust 传统工具链:它对 Cargo 包做词法、语法、类型与借用检查,然后在每个函数首次被调用时编译它,文件保存后再把改动过的函数热补丁进正在运行的进程。整个流程不需要 rustc、LLVM 或系统链接器,以单个无 crates.io 依赖的 Rust 库形式发布。代码生成支持 x86-64 和 AArch64,适合要求快速编辑—运行—测试循环的场景,包括多个 AI agent 并行开发的流水线。

快速使用

需要稳定的 Rust 工具链。从克隆开始构建 runner,再新建并运行一个包:

git clone https://github.com/makepad/relax
cd relax
cargo build --release --manifest-path Cargo.toml -p relax-runner --bin relax

cd /tmp
cargo new hello
cd hello
/path/to/relax/target/release/relax run --quiet hello
/path/to/relax/target/release/relax test hello
/path/to/relax/target/release/relax check hello

relax 要在包目录内运行,参数是包名而非路径;runner 会从构建它的检出目录读取 Relax 的 std,因此不要移动 relax 文件夹。按维护者的测量,hello 第一次 relax run 在 16 核 x86-64 Linux 上耗时 0.24 秒,在 10 核 arm64 Mac 上 0.97 秒;后续运行分别为 0.01–0.07 秒和 0.03–0.04 秒 (L280-L320)。

使用约束

  • 性能:优化后的 Relax 代码仍慢于面向本机 CPU 的 rustc --release。多项已测负载为 1.14–1.26 倍,稠密数值核因尚未做循环向量化为 2.29 倍 where LLVM still wins。与普通可移植 --release 的对比尚未测量。
  • 平台:代码生成覆盖 x86-64 和 AArch64;维护者测试的构建与测试在 Linux x86-64 和 macOS arm64 上通过,Windows 未测试。
  • 语言覆盖:并非所有代码都能编译,已知缺口列出了暂不支持的情况及复现。
  • 原生代码:必须保持原生的 crate(OS、GPU、音频)通过 #[relax_api] 和 C ABI 与 JIT 代码交互。
  • 网络与缓存:无依赖的包可离线运行;crates.io 依赖会被下载并按索引 SHA-256 校验,除非开启离线模式。编译产物写入包的 target/makepad-run,hello 约 120–190 MB,relax clean 可删除。
  • 许可证:MIT,随附的 std 源码有单独声明 LICENSE。

HotRepo 点评

Relax 的替换范围很大:rustc、LLVM、链接器和相当一部分 Cargo 都由它接管。README 也坦承当前生成的代码在稳态下仍慢于 LLVM,并正在重新测量。2026-11-12 的 Rust 新项目快照记录到 100 星、4 个 fork,但仓库创建于 2026-11-11,这份数据反映的是发布初期的关注,不能据此判断采用情况;该项目也没有全语言日榜名次可对比。更合适的定位是实验性工具链:对缩短编辑—测试循环有价值,但还不是发布构建的替代品。

本文由 AI 根据项目 README 生成,更新于 ,以项目官方文档为准。

相关推荐

  1. rust-lang/cargoRust 官方包管理器,负责下载依赖并编译 Rust 项目。Rust15,680
  2. indexable-inc/ra-jit只把改动的函数写回已构建程序,把 Rust 编辑重建压到毫秒级。Rust267
  3. rust-lang/rustRust 语言的编译器、标准库与文档主源码仓库,适合使用或参与开发 Rust 的开发者。Rust121,159