Skip to main content

PyRust

PyPI version PyPI status License: MIT

Acelera tu código Python automáticamente con Rust.

PyRust es una herramienta que identifica los cuellos de botella de tu proyecto y los "rustifica" automáticamente, generando extensiones nativas seguras y eficientes sin que tengas que escribir una sola línea de Rust.

📚 Documentación: https://pyrust-dev.github.io/pyrust/ 🗒️ Notas de publicación: https://github.com/pyrust-dev/pyrust/releases

🚀 Aceleración Automática (pyrust auto)

La joya de la corona de PyRust es el comando auto. Con una sola ejecución, PyRust orquesta todo el proceso de optimización:

  1. Perfilado: Ejecuta tu código y detecta las funciones más lentas (hotspots).
  2. Análisis: Verifica qué funciones son seguras de convertir a Rust (sin efectos secundarios peligrosos).
  3. Transpilación: Genera código Rust optimizado equivalente a tu Python.
  4. Compilación: Crea extensiones nativas usando PyO3 y Maturin.
  5. Inyección Segura: Modifica tu código para usar la versión rápida, manteniendo la original como respaldo.

Uso básico

Simplemente ve a la raíz de tu proyecto y ejecuta:

pyrust auto .

¿Qué ocurre con mi código?

PyRust es extremadamente cuidadoso con tu código fuente:

  • Backups automáticos: Antes de tocar nada, crea copias de seguridad (.py.bak).
  • Inyección Híbrida: No borra tu código Python. Inyecta un mecanismo de carga inteligente:
# Ejemplo de lo que PyRust inyecta en tu archivo:
try:
    # Intenta importar la versión acelerada en Rust
    from pyrust_extensions.mi_modulo_rust import funcion_lenta as funcion_lenta
except ImportError:
    # Si falla algo (ej. en otra máquina sin compilar), usa la original
    funcion_lenta = _py_funcion_lenta

# Tu función original se renombra y se mantiene segura
def _py_funcion_lenta(...):
    ...
  • Soporte Avanzado: Funciona con funciones globales, métodos de clase y métodos estáticos, preservando la semántica de self y cls.

Índice

Instalación

pip install pyrust

Requisitos:

  • Python 3.10+
  • (Opcional) Rust 1.70+ si deseas compilar desde el código fuente.

Otras Herramientas

Si prefieres tener control manual sobre el proceso, PyRust expone cada paso como una herramienta independiente.

Perfilado Manual

Localiza los puntos lentos de tu código sin modificarlo.

pyrust-profile mi_proyecto --limit 5

Análisis de Compatibilidad

Descubre qué partes de tu código son candidatas a ser rustificadas. PyRust analiza el AST y te dice qué funciones son FULL (totalmente convertibles), PARTIAL o NO (requieren cambios).

pyrust-analyze mi_proyecto --limit 3

API de Runtime

Para usuarios avanzados que desean cargar extensiones dinámicamente o hacer hot-swap en tiempo de ejecución sin reiniciar el proceso.

from pyrust.runtime import reload_extension

# Carga y compila una extensión al vuelo
result = reload_extension("mi_extension", source="ruta/al/archivo.py")
print(result.loaded.module.mi_funcion_rapida(10))

Seguridad y Robustez

PyRust está diseñado para ser seguro por defecto:

  • Límites de Recursos: El compilador rechaza archivos excesivamente grandes (DoS protection).
  • Transpilación Segura: El generador Rust valida tipos estrictamente y evita inyecciones.
  • Protección contra Carreras: Sistema de caché con bloqueos de archivo (filelock) para entornos concurrentes.
  • Validación de Integridad: Verificación de firmas SHA256 en los binarios cargados.

Compatibilidad

Componente Versión Soportada
Python 3.10+
Rust 1.70+ (Edición 2021)
Plataformas Linux (x86_64/aarch64), Windows (x86_64), macOS (x86_64/arm64)

Desarrollo

Para contribuir a PyRust:

# Crear entorno virtual
python -m venv .venv
source .venv/bin/activate  # o .venv\Scripts\activate en Windows

# Instalar dependencias de desarrollo
pip install -e ".[dev]"

# Ejecutar tests
pytest

Metadata

Release files for pyrust-native 0.0.5

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for pyrust-native 0.0.5
File Size Uploaded Provenance Actions
pyrust_native-0.0.5.tar.gz 1.4 MB Without provenance Details for pyrust_native-0.0.5.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for pyrust-native 0.0.5
File Interpreter ABI Platform Actions
pyrust_native-0.0.5-cp311-cp311-win_amd64.whl CPython 3.11 CPython 3.11 Windows x86-64 Details for pyrust_native-0.0.5-cp311-cp311-win_amd64.whl

Total release size: 3.0 MB

Release files / pyrust_native-0.0.5.tar.gz

Download URL pyrust_native-0.0.5.tar.gz
Size 1.4 MB
Tags Source
SHA-256 checksum
How to use checksums
cafbc9c62d51c61b062eea69dd6652e4247bf1bd99659cd214eb0dcadfc245b8
BLAKE2b-256 checksum
How to use checksums
1d55884baea636f2be988dffbabd55d0e2ec84d99fad85f69052351294140227
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.11.9

Release files / pyrust_native-0.0.5-cp311-cp311-win_amd64.whl

Download URL pyrust_native-0.0.5-cp311-cp311-win_amd64.whl
Size 1.6 MB
Tags CPython 3.11 Windows x86-64
SHA-256 checksum
How to use checksums
56b403402ffe440d8df18ceb145b535eee8e55f8894b7cbc682d05213bdf7c38
BLAKE2b-256 checksum
How to use checksums
0e01d59873e945618755102314d3c4bffffd853c5a488e811d40beb8946ff971
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.11.9

Security for pyrust-native 0.0.5

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page