PyRust
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:
- Perfilado: Ejecuta tu código y detecta las funciones más lentas (hotspots).
- Análisis: Verifica qué funciones son seguras de convertir a Rust (sin efectos secundarios peligrosos).
- Transpilación: Genera código Rust optimizado equivalente a tu Python.
- Compilación: Crea extensiones nativas usando PyO3 y Maturin.
- 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
selfycls.
Í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)
| 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)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| 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.