C# agora supera Rust em tamanho no WASM
Uma nova toolchain experimental afirma produzir binários WebAssembly em C# menores do que os de Rust para um programa mínimo no estilo “hello world”, o que levou a questionamentos sobre quão justa é a comparação e quanto de pós-processamento e redução do runtime está envolvido. Comentadores observam que Rust também pode ser fortemente otimizado para tamanho, e que C# atualmente não pode contar com o WASM garbage collector emergente, de modo que qualquer ganho de tamanho depende muito da carga de trabalho e da toolchain, não sendo uma vantagem geral. A discussão se amplia para saber se o WASM vale a complexidade fora de apps pesados no navegador, e para uma avaliação mais ampla dos pontos fortes de C#, lacunas do ecossistema e relevância de longo prazo em comparação com linguagens como Rust, Zig e TypeScript.
Validade e justiça do benchmark
- Vários comentaristas consideram enganosa ou injusta a formulação “C# supera Rust”.
- A saída WASM de C# é altamente otimizada para tamanho e depois pós-processada (por exemplo, via Binaryen), enquanto a linha de base de Rust é apenas modestamente otimizada.
- As pessoas observam que Rust tem técnicas adicionais bem conhecidas para reduzir tamanho (recompilar std para tamanho, remover dados de formatação/localização, comportamento abort mais agressivo) que não foram aplicadas.
- Benchmarks entre linguagens são amplamente vistos como inerentemente difíceis e frequentemente como clickbait se não se basearem em código idiomático e do mundo real.
C# em WASM vs Rust/Zig/C
- O resultado mostrado (~46–47 KiB para um pequeno programa em C#) é visto como tecnicamente impressionante.
- C# atualmente não usa Wasm GC; ele traz seu próprio runtime e GC, com alguns recursos como reflection ausentes.
- Há discussão sobre recursos ausentes ou problemáticos do garbage collector do WebAssembly (weak refs, finalizers, ponteiros internos) e sobre como C# contorna isso (por exemplo,
ref struct/Span<T>). - Binários Rust WASM são frequentemente considerados “grandes”, mas um comentário afirma que um pequeno hello world em Rust (
40 KiB) é semelhante ao Zig (45 KiB), com C ainda bem menor (~4 KiB).
Valor prático do WASM
- Alguns desenvolvedores veem pouco apelo real para WASM fora de apps pesados, de nível desktop (por exemplo, CAD, edição de vídeo); eles preferem renderização no servidor mais JS.
- Outros enfatizam os pontos fortes do WASM: isolamento no navegador, portabilidade, melhor conteinerização para computação incorporável e casos de “edge”, embora ainda não seja visto como central para a maioria dos apps.
Toolchain, licenciamento e Blazor
- A nova toolchain é separada da stack oficial .NET/Blazor e mira uso em produção com payloads muito menores do que o Blazor WASM atual (frequentemente >10 MB).
- Alguns ficam receosos porque a toolchain não é open source; eles se preocupam com futuros custos de licenciamento e evitam adotá-la por esse motivo.
Visões sobre C# (e F#) de forma mais ampla
- Muitos elogiam C# para trabalho de backend: tooling forte, recursos modernos, bom desempenho e boa ergonomia em comparação com Java.
- As críticas incluem: superfície da linguagem muito grande, design inconsistente/menos composicional em comparação com Rust, ecossistema numérico mais fraco em comparação com Python, e complexidade em torno de async/paralelismo.
- Alguns sugerem que F# oferece uma linguagem ainda melhor no mesmo runtime, embora receba comparativamente pouco investimento.
- Há debate sobre a relevância de longo prazo de C#, incluindo especulação de que ferramentas de IA podem levar novos desenvolvedores a outras stacks por padrão, a menos que sejam direcionados explicitamente.