paiml/depyler
Compiles Python to Rust, helping transition off of Python to Energy Efficient and Safe Rust Code
解决的问题
Depyler 弥合了 Python 快速开发与 Rust 性能及安全保证之间的鸿沟。它将带有类型注解的 Python 代码转换为地道的 Rust 代码,在保留原始程序语义的同时增加了编译时安全检查。这使开发者无需手动用 Rust 重写代码,并使基于 Python 的项目能够在不放弃 Python 生态系统的情况下生成原生二进制文件。
工作原理
Depyler 将 Python 源代码解析为抽象语法树 (AST),然后通过高级中间表示 (HIR) 进行转换。在此过程中,它执行类型推断(由 Python 注解引导)和内存安全分析,以确定所有权和借用模式。最后阶段使用 syn/quote 库生成 Rust 代码。用户既可以将 Python 转译为 Rust 文件 (depyler transpile),也可以直接编译为独立二进制文件 (depyler compile)。可选的 --verify 标志会运行基于属性的测试,以确认生成的 Rust 代码行为与原始 Python 代码完全一致。
适用人群
Depyler 旨在帮助那些希望将 Python 代码库迁移到 Rust 的开发者,特别是那些已经使用类型提示的项目。它也吸引了那些希望将 Python 编译为原生可执行文件以提高速度,同时保持 Rust 内存安全性的团队。该项目是 PAIML Stack 的一部分,并在多个语料库中取得了成功,包括标准库模块和算法示例。
亮点
- 单命令编译:
depyler compile script.py可生成原生可执行文件。 - 语义验证集成了基于属性的测试,确保行为与原始 Python 一致。
- 内存安全分析自动推断所有权和借用规则。
- 已验证 27 个 Python 标准库模块(从 json 到 datetime 再到 os),通过了 151 项测试。
- 在内部示例上的单次编译成功率为 80% (256/320),在 Tier-1 标准库语料库上的成功率为 92.7%。
- 可通过
transpile_fileAPI 作为 Rust 库使用。 - 处于活跃开发状态,架构清晰:Python AST → HIR → 类型推断 → Rust AST → 代码生成。
相关
- 项目
- 项目
- 项目
- 项目