Confira nossa demonstração on -line em execução no WebAssembly.
Rustpython requer versão estável mais recente da Rust (por exemplo, 1.67.1 em 7 de fevereiro de 2023). Se você não tiver o Rust instalado no seu sistema, poderá fazê -lo seguindo as instruções no Rustup.rs.
Para verificar a versão do Rust Você está executando, use rustc --version
. Se você deseja atualizar, rustup update stable
atualizará sua instalação de ferrugem para a versão estável mais recente.
Para construir Rustpython localmente, primeiro, clone o código -fonte:
git clone https://github.com/RustPython/RustPython
Em seguida, você pode mudar para o diretório Rustpython e executar a demonstração (Nota: -É necessário --release
para evitar o excesso de pilha no Windows):
$ cd RustPython
$ cargo run --release demo_closures.py
Hello, RustPython !
Ou use o shell interativo:
$ cargo run --release
Welcome to rustpython
>>>>> 2+2
4
NOTA: Para usuários do Windows, defina a variável de ambiente RUSTPYTHONPATH
como o caminho Lib
no diretório do projeto. (por exemplo, quando o diretório Rustpython é C:RustPython
, defina RUSTPYTHONPATH
como C:RustPythonLib
)
Você também pode instalar e executar o Rustpython com o seguinte:
$ cargo install --git https://github.com/RustPython/RustPython
$ rustpython
Welcome to the magnificent Rust Python interpreter
>>>>>
Se você deseja fazer solicitações HTTPS, pode ativar o recurso ssl
, que também permite instalar o pip
Package Manager. Observe que no Windows, pode ser necessário instalar o OpenSSL ou você pode ativar o recurso ssl-vendor
, que compila o OpenSSL para você, mas requer um compilador C, Perl e make
. O OpenSSL versão 3 é esperado e testado no CI. Versões mais antigas podem não funcionar.
Depois de instalar o Rustpython com suporte SSL, você pode instalar o PIP em execução:
cargo install --git https://github.com/RustPython/RustPython --features ssl
rustpython --install-pip
Você também pode instalar o Rustpython através do gerente de pacotes conda
, embora isso não seja oficialmente suportado e possa estar desatualizado:
conda install rustpython -c conda-forge
rustpython
Você pode compilar o Rustpython com um módulo WASI WEDALONE WEBSOLONE para que ele possa ser executado em qualquer 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
Você pode construir o arquivo wasi WebAssembly com:
cargo build --release --target wasm32-wasi --features= " freeze-stdlib "
Nota: Usamos o
freeze-stdlib
para incluir a biblioteca padrão dentro do binário. Você também precisa executar uma vez querustup target add wasm32-wasi
.
A Rustpython possui um compilador JIT muito experimental que compila funções do Python em código nativo.
Por padrão, o compilador JIT não está ativado, ele é ativado com o recurso de carga jit
.
cargo run --features jit
Isso requer o AutoConf, Autorake, Libtool e Clang a ser instalado.
Para compilar uma função, ligue para __jit__()
nela.
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
Interessado em expor scripts em Python em um aplicativo escrito em ferrugem, talvez para permitir a lógica de ajuste rapidamente, onde os tempos de compilação de Rust seria inibitivo? Em seguida, examples/hello_embed.rs
e examples/mini_repl.rs
podem ser de alguma assistência.
Rustpython está em desenvolvimento e, embora o intérprete certamente possa ser usado em casos de uso interessantes, como a execução do Python na WASM e a incorporação em um projeto de ferrugem, observe que Rustpython não está totalmente pronto para produção.
A contribuição é mais do que bem -vinda! Consulte nossa seção de contribuição para obter mais informações sobre isso.
Confira essas palestras sobre conferências:
Embora Rustpython seja um projeto bastante jovem, algumas pessoas o usaram para fazer projetos legais:
Atualmente, juntamente com outras áreas do projeto, a documentação ainda está em uma fase inicial.
Você pode ler a documentação on -line para a versão mais recente ou o guia do usuário.
Você também pode gerar documentação localmente em execução:
cargo doc # Including documentation for all dependencies
cargo doc --no-deps --all # Excluding all dependencies
Os arquivos HTML de documentação podem ser encontrados no diretório target/doc
ou você pode anexar --open
aos comandos anteriores para que a documentação seja aberta automaticamente no seu navegador padrão.
Para uma visão geral de alto nível dos componentes, consulte o documento de arquitetura.
As contribuições são mais do que bem -vindas e, em muitos casos, estamos felizes em orientar os colaboradores por meio do PRS ou da discórdia. Consulte o Guia de Desenvolvimento também para obter dicas sobre desenvolvimentos.
Com isso em mente, observe que este projeto é mantido por voluntários, algumas das melhores maneiras de começar estão abaixo:
A maioria das tarefas está listada no rastreador de problemas. Verifique os problemas rotulados com um bom primeiro problema, se você deseja começar a codificar.
Para aprimorar a compatibilidade do CPYTHON, tente aumentar a cobertura da UNITEst, verificando este artigo: Como contribuir para Rustpython por Cpython Unittest
Outra abordagem é verificar o código -fonte: funções construídas e métodos de objetos geralmente são a maneira mais simples e fácil de contribuir.
Você também pode simplesmente executar ./whats_left.py
para ajudar a encontrar qualquer método não implementado.
Veja este doc
Converse conosco na discórdia.
Nosso código de conduta pode ser encontrado aqui.
O trabalho inicial foi baseado em windelbouwman/rspython e shuryu/rustpython
Estes são alguns links úteis para projetos relacionados:
Este projeto está licenciado sob a licença do MIT. Consulte o arquivo de licença para obter mais detalhes.
O logotipo do projeto está licenciado sob a licença CC-BY-4.0. Consulte o arquivo License-Logo para obter mais detalhes.