Consultez notre démo en ligne en cours d'exécution sur WebAssembly.
Rustpython nécessite la dernière version stable de Rust (par exemple 1,67.1 au 7 février 2023). Si vous n'avez pas actuellement de rouille installée sur votre système, vous pouvez le faire en suivant les instructions sur rustup.rs.
Pour vérifier la version de Rust que vous utilisez actuellement, utilisez rustc --version
. Si vous souhaitez mettre à jour, rustup update stable
mettra à jour votre installation de rouille vers la version stable la plus récente.
Pour construire rusé localement, cloner d'abord le code source:
git clone https://github.com/RustPython/RustPython
Ensuite, vous pouvez se transformer en répertoire rusé et exécuter la démo (Remarque: --release
est nécessaire pour empêcher le débordement de la pile sur Windows):
$ cd RustPython
$ cargo run --release demo_closures.py
Hello, RustPython !
Ou utilisez la coque interactive:
$ cargo run --release
Welcome to rustpython
>>>>> 2+2
4
Remarque: Pour les utilisateurs de Windows, veuillez définir la variable d'environnement RUSTPYTHONPATH
en tant que chemin Lib
dans le répertoire de projet. (Par exemple, quand le répertoire rusé est C:RustPython
, réglez RUSTPYTHONPATH
comme C:RustPythonLib
)
Vous pouvez également installer et exécuter rusé avec les suivants:
$ cargo install --git https://github.com/RustPython/RustPython
$ rustpython
Welcome to the magnificent Rust Python interpreter
>>>>>
Si vous souhaitez faire des demandes HTTPS, vous pouvez activer la fonctionnalité ssl
, qui vous permet également d'installer le pip
Package Manager. Notez que sur Windows, vous devrez peut-être installer OpenSSL, ou vous pouvez activer la fonctionnalité ssl-vendor
, qui compile OpenSSL mais nécessite un compilateur C, Perl et make
. OpenSSL La version 3 est attendue et testée dans CI. Les versions plus anciennes peuvent ne pas fonctionner.
Une fois que vous avez installé Rustpython avec le support SSL, vous pouvez installer PIP en fonctionnant:
cargo install --git https://github.com/RustPython/RustPython --features ssl
rustpython --install-pip
Vous pouvez également installer Rushpython via le gestionnaire de packages conda
, bien que cela ne soit pas officiellement pris en charge et puisse être obsolète:
conda install rustpython -c conda-forge
rustpython
Vous pouvez compiler Rustpython sur un module Wasi WebAssembly autonome afin qu'il puisse fonctionner n'importe où.
Construire
cargo build --target wasm32-wasi --no-default-features --features freeze-stdlib,stdlib --release
Run par wasmer
wasmer run --dir ` pwd ` -- target/wasm32-wasi/release/rustpython.wasm ` pwd ` /extra_tests/snippets/stdlib_random.py
Géré par WAPM
$ wapm install rustpython
$ wapm run rustpython
>>>>> 2+2
4
Vous pouvez créer le fichier wasi webassembly wasi avec:
cargo build --release --target wasm32-wasi --features= " freeze-stdlib "
Remarque: Nous utilisons le
freeze-stdlib
pour inclure la bibliothèque standard à l'intérieur du binaire. Vous devez également courir une fois querustup target add wasm32-wasi
.
Rustpython a un compilateur JIT très expérimental qui compile les fonctions Python en code natif.
Par défaut, le compilateur JIT n'est pas activé, il est activé avec la fonction de cargaison jit
.
cargo run --features jit
Cela nécessite que AutoConf, Automake, Libtool et Clang soient installés.
Pour compiler une fonction, appelez __jit__()
dessus.
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
Intéressé à exposer les scripts Python dans une application écrite en rouille, peut-être pour permettre une logique de peaufine rapidement où les temps de compilation de Rust seraient inhibitifs? Ensuite, examples/hello_embed.rs
et examples/mini_repl.rs
peuvent être utiles.
Rustpython est en développement, et bien que l'interprète puisse certainement être utilisé dans des cas d'utilisation intéressants comme la diffusion de Python dans WASM et l'intégration dans un projet de rouille, notez que RotpyThon n'est pas totalement prêt pour la production.
La contribution est plus que bienvenue! Voir notre section de contribution pour plus d'informations à ce sujet.
Découvrez ces discussions sur les conférences:
Bien que Rustpython soit un projet assez jeune, quelques personnes l'ont utilisé pour faire des projets sympas:
Actuellement, avec d'autres domaines du projet, la documentation en est encore à une phase précoce.
Vous pouvez lire la documentation en ligne pour la dernière version ou le guide de l'utilisateur.
Vous pouvez également générer de la documentation localement en fonctionnant:
cargo doc # Including documentation for all dependencies
cargo doc --no-deps --all # Excluding all dependencies
Les fichiers HTML de documentation peuvent ensuite être trouvés dans le répertoire target/doc
ou vous pouvez ajouter --open
aux commandes précédentes pour que la documentation s'ouvre automatiquement sur votre navigateur par défaut.
Pour un aperçu de haut niveau des composants, consultez le document d'architecture.
Les contributions sont plus que les bienvenues et, dans de nombreux cas, nous sommes heureux de guider les contributeurs via PRS ou sur Discord. Veuillez également vous référer au guide de développement pour des conseils sur les développements.
Dans cet esprit, veuillez noter que ce projet est maintenu par des bénévoles, certaines des meilleures façons de commencer sont ci-dessous:
La plupart des tâches sont répertoriées dans le tracker du numéro. Vérifiez les problèmes étiquetés avec un bon premier problème si vous souhaitez commencer le codage.
Pour améliorer la compatibilité CPYTHON, essayez d'augmenter la couverture unittest en consultant cet article: Comment contribuer à Rustpython par Cpython unittest
Une autre approche consiste à vérifier le code source: les fonctions intégrées et les méthodes d'objets sont souvent le moyen le plus simple et le plus simple de contribuer.
Vous pouvez également simplement exécuter ./whats_left.py
pour aider à trouver une méthode non implémentée.
Voir ce doc
Discutez avec nous sur Discord.
Notre code de conduite peut être trouvé ici.
Le travail initial était basé sur Windelbouwman / Rspython et Shelingu / Rushpython
Ce sont des liens utiles vers des projets connexes:
Ce projet est autorisé sous la licence du MIT. Veuillez consulter le fichier de licence pour plus de détails.
Le logo du projet est sous licence sous la licence CC-BY-4.0. Veuillez consulter le fichier de licence-logo pour plus de détails.