Consulte nuestra demostración en línea que se ejecuta en WebAssembly.
Rustpython requiere la última versión estable de Rust (por ejemplo, 1.67.1 al 7 de febrero de 2023). Si actualmente no tiene roya instalada en su sistema, puede hacerlo siguiendo las instrucciones en Rustup.RS.
Para verificar la versión de Rust que está ejecutando actualmente, use rustc --version
. Si desea actualizar, rustup update stable
actualizará su instalación de Rust a la versión estable más reciente.
Para construir Rustpython localmente, primero, clona el código fuente:
git clone https://github.com/RustPython/RustPython
Luego puede cambiar en el directorio de Rustpython y ejecutar la demostración (nota: --release
es necesaria para evitar el desbordamiento de la pila en las ventanas):
$ cd RustPython
$ cargo run --release demo_closures.py
Hello, RustPython !
O use la carcasa interactiva:
$ cargo run --release
Welcome to rustpython
>>>>> 2+2
4
Nota: Para los usuarios de Windows, configure la variable de entorno RUSTPYTHONPATH
como ruta Lib
en el directorio de proyectos. (Por ejemplo, cuando el directorio de Rustpython es C:RustPython
, configure RUSTPYTHONPATH
como C:RustPythonLib
)
También puede instalar y ejecutar RustyPython con lo siguiente:
$ cargo install --git https://github.com/RustPython/RustPython
$ rustpython
Welcome to the magnificent Rust Python interpreter
>>>>>
Si desea realizar solicitudes HTTPS, puede habilitar la función ssl
, que también le permite instalar el pip
Package Manager. Tenga en cuenta que en Windows, es posible que deba instalar OpenSSL, o puede habilitar la función ssl-vendor
, que compila OpenSSL para usted, pero requiere un compilador C, Perl y make
. OpenSSL versión 3 se espera y se prueba en CI. Las versiones más antiguas pueden no funcionar.
Una vez que haya instalado RustPython con soporte SSL, puede instalar PIP ejecutando:
cargo install --git https://github.com/RustPython/RustPython --features ssl
rustpython --install-pip
También puede instalar RustyPython a través del Administrador de paquetes conda
, aunque esto no es compatible oficialmente y puede estar desactualizado:
conda install rustpython -c conda-forge
rustpython
Puede compilar Rustpython en un módulo WASI independiente WASI para que pueda ejecutarse en cualquier lugar.
Construir
cargo build --target wasm32-wasi --no-default-features --features freeze-stdlib,stdlib --release
Dirigido por Wasmer
wasmer run --dir ` pwd ` -- target/wasm32-wasi/release/rustpython.wasm ` pwd ` /extra_tests/snippets/stdlib_random.py
Dirigido por WAPM
$ wapm install rustpython
$ wapm run rustpython
>>>>> 2+2
4
Puede crear el archivo WASI WebAssembly con:
cargo build --release --target wasm32-wasi --features= " freeze-stdlib "
Nota: Usamos el
freeze-stdlib
para incluir la biblioteca estándar dentro del binario. También debe ejecutar una vez querustup target add wasm32-wasi
.
Rustpython tiene un compilador JIT muy experimental que compila las funciones de Python en el código nativo.
Por defecto, el compilador JIT no está habilitado, está habilitado con la función jit
Cargo.
cargo run --features jit
Esto requiere que se instalaran autoconf, automake, libbtool y clang.
Para compilar una función, llame __jit__()
en ella.
def foo ():
a = 5
return 10 + a
foo . __jit__ () # this will compile foo to native code and subsequent calls will execute that native code
assert foo () == 15
Interesado en exponer las secuencias de comandos de Python en una aplicación escrita en Rust, tal vez para permitir ajustar rápidamente la lógica donde los tiempos de compilación de Rust serían inhibitivos. Luego, examples/hello_embed.rs
y examples/mini_repl.rs
pueden ser de alguna ayuda.
Rustpython está en desarrollo, y aunque el intérprete ciertamente puede usarse en casos de uso interesantes como ejecutar Python en WASM e incrustarse en un proyecto de óxido, tenga en cuenta que Rustpython no está totalmente listo para la producción.
¡La contribución es más que bienvenida! Consulte nuestra sección de contribución para obtener más información sobre esto.
Vea esas conversaciones sobre conferencias:
Aunque Rustpython es un proyecto bastante joven, algunas personas lo han usado para hacer proyectos geniales:
Actualmente, junto con otras áreas del proyecto, la documentación todavía está en una fase temprana.
Puede leer la documentación en línea para la última versión o la guía del usuario.
También puede generar documentación localmente ejecutando:
cargo doc # Including documentation for all dependencies
cargo doc --no-deps --all # Excluding all dependencies
Los archivos HTML de documentación se pueden encontrar en el directorio target/doc
o puede agregar --open
a los comandos anteriores para que la documentación esté abierta automáticamente en su navegador predeterminado.
Para una descripción general de alto nivel de los componentes, consulte el documento de arquitectura.
Las contribuciones son más que bienvenidas, y en muchos casos nos complace guiar a los contribuyentes a través de PR o en Discord. Consulte la Guía de desarrollo también para obtener consejos sobre desarrollos.
Con eso en mente, tenga en cuenta que este proyecto es mantenido por voluntarios, algunas de las mejores formas de comenzar están a continuación:
La mayoría de las tareas se enumeran en el rastreador de problemas. Verifique los problemas etiquetados con un buen primer problema si desea comenzar a codificar.
Para mejorar la compatibilidad de Cpython, trate de aumentar la cobertura unitest al verificar este artículo: Cómo contribuir a Rustpython por CPython Unittest
Otro enfoque es revisar el código fuente: las funciones integradas y los métodos de objetos son a menudo la forma más simple y fácil de contribuir.
También puede simplemente ejecutar ./whats_left.py
para ayudar a encontrar cualquier método no implementado.
Ver este doctor
Chatea con nosotros en Discord.
Nuestro código de conducta se puede encontrar aquí.
El trabajo inicial se basó en Windelbouwman/Rspython y Shinglyu/Rustpython
Estos son algunos enlaces útiles a proyectos relacionados:
Este proyecto tiene licencia bajo la licencia MIT. Consulte el archivo de licencia para obtener más detalles.
El logotipo del proyecto tiene licencia bajo la licencia CC-by-4.0. Consulte el archivo License-Logo para obtener más detalles.