RustPython
Una implementación basada en Rust del intérprete de Python 3, RustPython, está despertando interés como motor de scripting incrustado en aplicaciones Rust y para compilar Python a WebAssembly y ejecutarlo en navegadores o entornos restringidos. Los comentaristas destacan sus ventajas —seguridad de memoria, integración sencilla con Rust, posible despliegue en WASM— junto con limitaciones importantes actuales, como soporte incompleto de la biblioteca estándar, falta de compatibilidad con las extensiones C de CPython (por lo que no hay NumPy/SciPy) y un rendimiento inferior al de CPython. El debate también pone de relieve frustraciones más amplias con el empaquetado y la gestión de entornos de Python, y contrapone el valor impulsado por el ecosistema de Python con el enfoque de Rust en seguridad del lenguaje y tooling.
Objetivos y estado de RustPython
- Intérprete de Python 3 escrito en Rust; puede incrustarse en aplicaciones Rust y compilarse a WebAssembly.
- El proyecto sigue activo en GitHub a pesar de un blog poco movido; se señalan versiones y commits recientes, aunque algunos ven una desaceleración en las contribuciones.
- Marcado explícitamente como “fase de desarrollo”: no se recomienda para producción; admite aproximadamente la mitad de la biblioteca estándar.
- El impacto en el tamaño del binario es considerable, pero se considera aceptable: un “hello world” con RustPython incrustado es de ~15 MB frente a ~0,4 MB en Rust puro.
Casos de uso de incrustación y scripting
- El principal atractivo: usar Python como lenguaje de scripting incrustado dentro de programas en Rust (u otros nativos).
- La gente lo compara con Lua, Rhai, Starlark, motores JS y lenguajes incrustados en Rust (rhai, dyon, duckscript, rune) para configuración y plugins.
- Experiencia de un producto en C++ que incrustaba CPython: el enlace es fácil, pero en la práctica es difícil (hilos, coste de arranque, fallos al apagar, empaquetado frente a Python del sistema). Algunos temen una complejidad de mantenimiento similar con Rust+Python.
Ecosistema y compatibilidad con extensiones C
- RustPython actualmente no admite la API de extensiones C de CPython; paquetes como NumPy necesitarían puertos personalizados.
- Punto más amplio: los intérpretes alternativos a menudo pierden acceso al enorme ecosistema de extensiones C; esto limita de forma marcada su aplicabilidad.
- Se menciona HPy como una posible C-API/ABI cruzada entre implementaciones que podría ayudar a RustPython y PyPy.
Dolor con el empaquetado y las herramientas de Python
- Queja recurrente fuerte: la gestión de dependencias y entornos (pip/pip3, venv, conda, pyenv, instalaciones del sistema frente a las de usuario, Windows frente a Linux) es confusa y frágil, especialmente para usuarios poco frecuentes.
- Algunos proponen flujos de trabajo mínimos e integrados usando
python -m venvypiplocal, además de herramientas como Rye. - Otros sostienen que la situación sigue teniendo demasiadas “trampas” (por ejemplo, Python de la Windows Store, launchers faltantes), especialmente comparado con las herramientas de cargo, npm o Go.
Preocupaciones de rendimiento y WASM
- Las pruebas con Fibonacci ingenuo muestran que RustPython es ~11× más lento que CPython; un JIT experimental ayuda, pero está incompleto (por ejemplo, funciones recursivas).
- El uso de WebAssembly resulta atractivo (Python en el navegador, ICP, Kybra), pero los tiempos de arranque en frío y los grandes blobs WASM (≈10–22 MB) son preocupantes.
- Algunos dicen que esto es aceptable para muchos scripts de negocio; otros advierten que el arranque puede tardar segundos y ser poco práctico para muchas apps. Se mencionan herramientas como Wizer/evaluación parcial como mitigaciones.
Intérpretes de terceros en la práctica
- Se citan PyPy, Jython, IronPython, Stackless Python, MicroPython y GraalPy, con usos reales (trabajos batch, sistemas de trading, scripting de herramientas, juegos).
- PyPy recibe elogios por estar infrautilizado y por ser muy rápido para Python puro, pero limitado por la compatibilidad con extensiones C y la inercia del ecosistema.
Compromisos del lenguaje: Python vs Rust
- Debate sobre el valor de Python: algunos ven el lenguaje como “pobre” y el ecosistema como el principal activo; otros elogian su ergonomía y su naturaleza de “simplemente hacer cosas”.
- Rust recibe elogios por la seguridad, la expresividad (tipos suma, traits), las herramientas (cargo) y la simplicidad de despliegue; algunos afirman que son más productivos en Rust incluso ignorando el rendimiento.
- Contrapunto: muchas cargas de trabajo no necesitan el rendimiento de Rust; Python sigue dominando en desarrollo rápido y en ML/ciencia.