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 venv e pip local, 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.