Microsoft procura desenvolvedores Rust para reescrever código central em C#
O anúncio de vagas da Microsoft para desenvolvedores Rust trabalhando em serviços centrais do Office 365 gerou debate sobre se isso indica uma mudança para longe de C# e .NET. A maioria dos comentaristas conclui que não: a Microsoft continuará usando C# extensivamente, enquanto adota Rust de forma seletiva para componentes ultra-sensíveis a desempenho e críticos em segurança, onde pausas de GC e uso de recursos em hyperscale se tornam caros. A discussão se amplia para uma comparação entre Rust e linguagens com garbage collector, abordando segurança de memória, concorrência, ferramentas e as dificuldades práticas de contratar ou treinar equipes para Rust.
Âmbito da adoção de Rust pela Microsoft
- A discussão gira em torno de uma única vaga para serviços de roteamento/núcleo do Office 365, e não de uma reescrita completa do .NET nem de abandonar C#.
- Vários comentários enfatizam que a Microsoft usa muitas linguagens (C#, C++, Rust, JS/TS, Go, Python, Java, etc.) e continua investindo fortemente em .NET.
- Rust é apresentado como substituto para componentes críticos de desempenho ou de baixo nível que antes talvez fossem escritos em C/C++, e não para lógica de negócios típica.
Desempenho, GC e custo em escala
- Muitos argumentam que o principal motor é o desempenho: em escala de nuvem, até ganhos modestos de CPU/memória podem se traduzir em grandes economias de custo.
- Pausas de GC e ajustes finos são pontos de dor recorrentes para serviços de alto throughput/baixa latência em linguagens com GC (C#, Java, etc.), especialmente ao buscar “mais 9s” de latência ou minimizar gasto de recursos.
- Alguns observam que o .NET melhorou muito e pode ser “rápido o suficiente” para muitos serviços internos grandes, mas “rápido o suficiente” se torna relativo na escala do O365.
Segurança, ownership e lifetimes
- Vários comentários destacam o sistema de ownership/lifetime do Rust como trazendo benefícios além da segurança de memória:
- Limpeza determinística de recursos (RAII) para arquivos, sockets, mutexes, diretórios temporários, etc.
- Ownership claro e não compartilhado reduzindo bugs sutis e data races.
- Contrapontos:
- C# já é seguro em relação à memória, com
IDisposableeusingpara limpeza determinística, mas isso é opcional e fácil de usar incorretamente ou esquecer. - O borrow checker do Rust é descrito como análise estática poderosa, mas não mágica; alguns esclarecem equívocos sobre o que ele faz em tempo de execução.
- C# já é seguro em relação à memória, com
Async, paralelismo e runtimes
- Debate sobre se ARM e workloads modernos aumentam o valor de runtimes com GC em comparação com código nativo.
- O
async/awaitdo .NET, o ThreadPool e os escalonadores work-stealing são defendidos como maduros e escaláveis. - Outro tópico contrasta a concorrência e tolerância a falhas do BEAM/Erlang com .NET/JVM; não há consenso, mas o BEAM é elogiado por concorrência massiva “de verdade”.
Ecossistema Rust, ferramentas e vagas
- As ferramentas e o ecossistema do Rust (cargo, crates) são amplamente elogiados.
- Há reclamações de que no Windows são necessárias toolchains MSVC grandes e, às vezes, privilégios de administrador; GCC/MinGW é uma alternativa mais leve, porém “instável”.
- O mercado de trabalho em Rust é visto como menor e enviesado para blockchain e infra/segurança; contratar desenvolvedores Rust experientes é difícil.
- Alguns aconselham introduzir Rust incrementalmente em stacks existentes; outros alertam para fragmentação do stack e complexidade de build.
Sentimento geral
- Há amplo consenso de que:
- C#/.NET e Rust vão coexistir.
- Rust é uma boa opção para componentes selecionados e ultra-críticos.
- Reescritas precisam ser justificadas por ganhos concretos de desempenho, segurança ou operação, e não apenas por hype.