El coste real de PyO3 no está en Rust, sino en la conversión a Python

Libraries Run Rust Inside Python (With PyO3)

El coste real de PyO3 no está en Rust, sino en la conversión a Python

Pydantic v2 valida datos con pydantic-core, un núcleo escrito en Rust y expuesto con PyO3. Este artículo construye ese mismo puente con un parser JSON en Rust que se importa como cualquier paquete de Python. La lección clave: convertir el árbol de Rust a objetos Python puede costar más que el propio parseo, así que conviene perfilar la frontera, no solo el algoritmo.

Un documento con 100.000 valores implica crear del orden de 100.000 objetos Python en la frontera, todo después de que el parseo haya terminado por completo.
  1. simonw

    Estaba un poco nervioso por esta tendencia cuando empezó a ganar popularidad porque me importa Pyodide (Python ejecutándose vía WebAssembly) y las librerías que usan PyO3 podrían no funcionar en Pyodide.

    Afortunadamente eso ya está mayormente resuelto - ahora puedes compilar y publicar builds WASM de extensiones de Rust o C en PyPI y luego un Pyodide puede usarlas.

    Aquí está el build WASM del paquete Pydantic-core que incluye Rust, por ejemplo: https://pypi.org/project/pydantic_core/#pydantic_core-2.49.0...

  2. the__alchemist

    ¡Es un buen truco de fiesta! Lo uso para proporcionar una instalación sencilla de software escrito en Rust, pero que es usado principalmente por usuarios de Python. (por ejemplo: herramientas de biología) Pueden hacer `pip install <nombre>`, ya que algunas personas prefieren esto a descargar ejecutables/instaladores. Bonus: Maturin/PyO3 puede construir binarios "manylinux" automáticamente, lo que ayuda con la diáspora de ABI de Linux.

  3. skeledrew

    Pero ¿funciona en todos los lugares donde funciona Python? Mi principal problema con este movimiento hacia Rust siempre ha sido la compatibilidad. Python puede integrarse y ejecutarse en muchísimos lugares. ¿Cuál es la historia cuando las librerías de las que quiero depender están realmente implementadas en Rust y mi objetivo no maneja/no puede manejar la cadena de herramientas y no hay un objetivo de compilación?

  4. roywiggins

    > recurrir a, una extensión de Rust hace el trabajo

    ai; dr, lo siento

  5. startup_zombie_

    ¿Cuánto del ecosistema existente de PyPI crees que podría funcionar de esta manera de forma realista sin que los autores de paquetes hagan algo específicamente para WASM?

Más de este día

2026-09-13