Rust está se tornando a linguagem padrão para novas ferramentas de linha de comando

Rust se tornou a escolha padrão para novas ferramentas de linha de comando lançadas em 2026, deslocando silenciosamente Go, Python e C em uma categoria onde Go havia dominado desde meados dos anos 2010. Ripgrep, fd, bat, exa/eza, delta e dezenas de utilitários CLI mais recentes são escritos em Rust — e quando uma equipe inicia um novo projeto CLI hoje, Rust é cada vez mais a primeira linguagem considerada, em vez de uma alternativa de nicho.
Este não é um relato sobre ciclos de hype. É uma história sobre um conjunto específico de compensações — latência de inicialização, segurança de memória e distribuição em binário único — que por acaso importam imensamente para ferramentas de linha de comando e muito menos para os serviços web onde Go ainda domina.
Por que Ferramentas CLI Favorecem Especificamente o Rust
Uma ferramenta CLI é invocada milhares de vezes por dia por um único desenvolvedor, muitas vezes em loops apertados (pense: um linter rodando a cada salvamento de arquivo, ou uma ferramenta de busca encadeada em um script de shell). A latência de inicialização se acumula nessa frequência de uma forma que não ocorre com um servidor web de longa duração. Rust compila para código nativo sem runtime ou coletor de lixo, então uma ferramenta CLI em Rust inicia em milissegundos de um dígito — ferramentas Go também iniciam rápido, mas pagam um pequeno imposto de inicialização de GC e runtime que o Rust não paga.
Segurança de memória sem coleta de lixo é o segundo fator. Ferramentas CLI frequentemente processam entradas não confiáveis — caminhos de arquivos arbitrários, arquivos de configuração malformados, argumentos de linha de comando adversariais. O modelo de ownership do Rust captura classes inteiras de bugs de memória em tempo de compilação, o que importa mais para ferramentas que recebem bytes brutos da internet via pipe (pense: um formatador JSON aceitando respostas de API) do que para, digamos, um microsserviço interno com um formato de entrada conhecido.
Binários Únicos Superam Dependências de Runtime
A história prática de distribuição é sem dúvida mais importante do que a história de desempenho. Uma ferramenta CLI em Rust compila para um único binário estático sem dependências de runtime — sem versão de interpretador Python para combinar, sem Node.js para instalar, sem pip install que quebra em outro sistema operacional. cargo install ou um binário baixado simplesmente funciona. Para ferramentas distribuídas a milhares de desenvolvedores com ambientes heterogêneos, isso elimina uma categoria inteira de chamados de suporte.
Ferramentas Python, por outro lado, frequentemente quebram entre ambientes Python 3.9 e 3.11, conflitos de dependências e confusão com ambientes virtuais — uma fricção que importa imensamente para uma ferramenta que deveria estar a um brew install de dois segundos de distância de funcionar.
A Contrapartida da Curva de Aprendizado
Nada disso significa que Rust é de graça. O borrow checker tem uma curva de aprendizado real, e a velocidade de iteração para um desenvolvedor solo prototipando uma ferramenta rápida é mais lenta em Rust do que em Python ou mesmo Go, pelo menos inicialmente. Equipes relatam que uma ferramenta CLI em Rust leva visivelmente mais tempo para atingir uma primeira versão funcional do que a mesma ferramenta em Go — mas o custo de manutenção se inverte ao longo do tempo, já que Rust captura bugs em tempo de compilação que Go e Python só revelariam em tempo de execução, muitas vezes no terminal do usuário em vez de uma suíte de testes.
O ecossistema também amadureceu o suficiente para que a curva de aprendizado seja menos punitiva do que era há cinco anos. Crates como clap (análise de argumentos), serde (serialização) e anyhow/thiserror (tratamento de erros) agora cobrem o mesmo terreno que exigia boilerplate personalizado em 2020, o que significa que um desenvolvedor Rust competente pode estruturar uma ferramenta CLI completa em uma tarde.
O que Isso Significa para Equipes Escolhendo uma Stack
Se você está construindo uma ferramenta CLI interna que será executada milhares de vezes por dia por outros desenvolvedores, as vantagens de latência de inicialização e binário único do Rust agora são grandes o suficiente para justificar a curva de aprendizado inicial mais íngreme — especialmente porque crates como clap e serde fecharam grande parte da lacuna de produtividade com Python. Se a sua ferramenta é um script pontual executado algumas vezes, ou se sua equipe tem zero experiência em Rust e um prazo apertado, Python ou Go continuam sendo o caminho pragmaticamente mais rápido — não reescreva em Rust só porque está em alta. E se você já está mantendo uma ferramenta CLI em Python que cresceu além do seu caso de uso — inicialização lenta, cadeia de dependências frágil, usuários reclamando de fricção na instalação — esse é o sinal específico que vale tratar como gatilho de reescrita, não preferência geral de linguagem.