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 → 코드 생성.

관련

  • 프로젝트
  • 프로젝트
  • 프로젝트
  • 프로젝트