C# ahora supera a Rust en tamaño en WASM
Una nueva toolchain experimental afirma producir binarios WebAssembly de C# más pequeños que los de Rust para un programa minimalista estilo “hello world”, lo que suscita escrutinio sobre lo justa que es la comparación y cuánto posprocesamiento y recorte del runtime interviene. Los comentaristas señalan que Rust también puede optimizarse mucho para tamaño, y que C# actualmente no puede apoyarse en el GC emergente de WASM, de modo que cualquier ventaja de tamaño depende mucho de la carga de trabajo y de la toolchain, más que de una ventaja general. El hilo se amplía a si WASM merece la complejidad fuera de apps pesadas en el navegador, y a una valoración más amplia de las fortalezas de C#, sus lagunas de ecosistema y su relevancia a largo plazo frente a lenguajes como Rust, Zig y TypeScript.
Validez y equidad del benchmark
- Varios comentaristas consideran engañosa o injusta la formulación de “C# supera a Rust”.
- La salida WASM de C# está muy optimizada en tamaño y luego se posprocesa (por ejemplo, mediante Binaryen), mientras que la base de Rust solo está optimizada de forma moderada.
- Se señala que Rust tiene técnicas de reducción adicionales bien conocidas (recompilar std para tamaño, eliminar datos de formato/ubicación, comportamiento abortivo más agresivo) que no se aplicaron.
- Los benchmarks entre lenguajes se consideran ampliamente intrínsecamente complicados y a menudo clickbait si no se basan en código idiomático y real del mundo real.
C# en WASM frente a Rust/Zig/C
- El resultado mostrado (~46–47 KiB para un pequeño programa en C#) se considera técnicamente impresionante.
- C# actualmente no usa Wasm GC; trae su propio runtime y GC, con algunas funciones como reflexión ausentes.
- Se discuten las características faltantes o problemáticas de WebAssembly GC (weak refs, finalizers, interior pointers) y cómo C# las sortea (por ejemplo,
ref struct/Span<T>). - Los binarios WASM de Rust suelen considerarse “grandes”, pero un comentario afirma que un pequeño hello world en Rust (
40 KiB) es similar a Zig (45 KiB), con C aún mucho más pequeño (~4 KiB).
Valor práctico de WASM
- Algunos desarrolladores ven poco atractivo real en WASM fuera de aplicaciones pesadas de clase escritorio (por ejemplo, CAD, edición de video); prefieren renderizado del lado del servidor más JS.
- Otros enfatizan las fortalezas de WASM: aislamiento en el navegador, portabilidad, mejor contenerización para cómputo embebible y casos “edge”, aunque todavía no se considera central para la mayoría de las aplicaciones.
Toolchain, licencias y Blazor
- La nueva toolchain es independiente del stack oficial de .NET/Blazor y apunta a uso en producción con cargas útiles mucho más pequeñas que el Blazor WASM actual (a menudo >10 MB).
- Algunos desconfían porque la toolchain no es de código abierto; les preocupan futuros costes de licencia y evitan adoptarla por ese motivo.
Visiones sobre C# (y F#) en general
- Muchos elogian C# para trabajo de backend: tooling sólido, características modernas, buen rendimiento y buena ergonomía frente a Java.
- Las críticas incluyen: gran superficie del lenguaje, diseño inconsistente o menos componible frente a Rust, ecosistema numérico más débil que Python y complejidad en torno a async/paralelismo.
- Algunos sugieren que F# ofrece un lenguaje aún más agradable sobre el mismo runtime, aunque recibe comparativamente poca inversión.
- Hay debate sobre la relevancia a largo plazo de C#, incluida la especulación de que las herramientas de IA podrían orientar a nuevos desarrolladores hacia otros stacks salvo que se les indique explícitamente lo contrario.