RustPython
Uma implementação do interpretador Python 3 baseada em Rust, o RustPython, está atraindo interesse para uso como mecanismo de scripting incorporado em aplicações Rust e para compilar Python para WebAssembly, para rodar em navegadores ou em ambientes restritos. Os comentadores destacam seus benefícios — segurança de memória, integração fácil com Rust e potencial de implantação em WASM — junto com limitações significativas no estado atual, incluindo suporte incompleto à biblioteca padrão, falta de compatibilidade com extensões C do CPython (portanto, sem NumPy/SciPy) e desempenho inferior ao CPython. O debate também traz à tona frustrações mais amplas com o empacotamento e o gerenciamento de ambientes do Python, e contrapõe o valor orientado ao ecossistema do Python ao foco do Rust em segurança de linguagem e ferramentas.
Objetivos e status do RustPython
- Interpretador Python 3 escrito em Rust; pode ser incorporado em aplicativos Rust e compilado para WebAssembly.
- O projeto continua ativo no GitHub apesar de um blog discreto; releases e commits recentes foram observados, embora alguns vejam uma desaceleração nas contribuições.
- Está explicitamente marcado como “fase de desenvolvimento”: não é რეკommendado para produção; suporta cerca de metade da biblioteca padrão.
- O impacto no tamanho do binário é substancial, mas visto como aceitável: um “hello world” com RustPython incorporado fica em ~15 MB versus ~0,4 MB em Rust puro.
Casos de uso de incorporação e scripting
- O principal atrativo: usar Python como linguagem de scripting incorporada dentro de programas Rust (ou outros nativos).
- As pessoas o comparam com Lua, Rhai, Starlark, motores JS e linguagens incorporadas em Rust (rhai, dyon, duckscript, rune) para configuração e plugins.
- A experiência de um produto em C++ que incorporava CPython: ligação fácil, mas difícil na prática (threading, custo de inicialização, travamentos no encerramento, empacotamento versus Python do sistema). Alguns temem complexidade de manutenção semelhante em Rust+Python.
Ecossistema e compatibilidade com extensões C
- O RustPython atualmente não suporta a API de extensões C do CPython; pacotes como NumPy precisariam de ports personalizados.
- Ponto mais amplo: interpretadores alternativos frequentemente perdem acesso ao enorme ecossistema de extensões C; isso limita fortemente a aplicabilidade.
- HPy é mencionado como uma potencial C-API/ABI multiplataforma que poderia ajudar RustPython e PyPy.
Dores de cabeça com empacotamento e ferramentas do Python
- Reclamação recorrente forte: gerenciamento de dependências e ambientes (pip/pip3, venv, conda, pyenv, instalações do sistema versus do usuário, Windows versus Linux) é confuso e frágil, especialmente para usuários pouco frequentes.
- Alguns propõem fluxos mínimos e integrados usando
python -m venvepiplocal, além de ferramentas como Rye. - Outros argumentam que a situação ainda tem armadilhas demais (por exemplo, Python da Windows Store, launchers ausentes), especialmente em comparação com ferramentas do cargo, npm ou Go.
Desempenho e preocupações com WASM
- Benchmarks com Fibonacci ingênuo mostram RustPython ~11× mais lento que CPython; um JIT experimental ajuda, mas é incompleto (por exemplo, funções recursivas).
- O uso em WebAssembly é atraente (Python no navegador, ICP, Kybra), mas tempos de cold-start e blobs WASM grandes (≈10–22 MB) são preocupações.
- Alguns dizem que isso é aceitável para muitos scripts de negócios; outros alertam que a inicialização pode levar segundos e ser impraticável para muitas aplicações. Ferramentas como Wizer/evaluação parcial são mencionadas como mitigação.
Interpretadores de terceiros na prática
- PyPy, Jython, IronPython, Stackless Python, MicroPython e GraalPy são citados, com usos reais (jobs em lote, sistemas de trading, scripting de ferramentas, jogos).
- PyPy é elogiado por ser subutilizado e muito rápido para Python puro, mas limitado pela compatibilidade com extensões C e pela inércia do ecossistema.
Trade-offs da linguagem: Python vs Rust
- Debate sobre o valor do Python: alguns veem a linguagem como “fraca” e o ecossistema como o principal ativo; outros elogiam sua ergonomia e a natureza de “simplesmente fazer as coisas acontecerem”.
- Rust é elogiado por segurança, expressividade (somas, traits), ferramentas (cargo) e simplicidade de implantação; alguns afirmam ser mais produtivos em Rust mesmo ignorando desempenho.
- Contraponto: muitas cargas de trabalho não precisam do desempenho do Rust; Python continua dominante para desenvolvimento rápido e ML/ciência.