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に移行したい開発者、特にすでに型ヒントを使用している開発者を対象としています。また、Rustのメモリ安全性を維持しながら、速度向上のためにPythonをネイティブ実行ファイルにコンパイルしたいチームにも適しています。このプロジェクトは PAIML Stack の一部であり、標準ライブラリモジュールやアルゴリズムの例を含むいくつかのコーパスで成功を収めています。

ハイライト

  • 単一コマンドコンパイル:depyler compile script.py でネイティブ実行ファイルを生成。
  • セマンティック検証:プロパティベースのテストを統合し、元のPythonと動作が一致することを保証。
  • メモリ安全性分析:所有権と借用のルールを自動的に推論。
  • 27のPython標準ライブラリモジュールを検証済み(jsonからdatetime、osまで)、151のテストを通過。
  • 内部サンプルでのワンショットコンパイル成功率は80% (256/320)、Tier-1標準ライブラリコーパスでは92.7%。
  • transpile_file API を通じてRustライブラリとして使用可能。
  • 明確なアーキテクチャで活発に開発中:Python AST → HIR → 型推論 → Rust AST → コード生成。

関連

  • プロジェクト
  • プロジェクト
  • プロジェクト
  • プロジェクト