Hacker News new | ask | show | jobs
by eterm 403 days ago
Well there's blazor, which does that rather well, but it's treated with the same suspicion that most MS frameworks are. The fear that it'll be killed for poor adoption, leading to poor adoption.

The blazor adoption probably isn't even that bad, but it's hard for MS to shake this stigma since so many people got burned on Silverlight and don't ever want to make the same mistake.

2 comments

Blazor wasm is just too heavy for most use cases.

In terms of speed, it's not even close to anything else in JS:

https://krausest.github.io/js-framework-benchmark/current.ht...

I thought blazor failed because people didn't like websites that take minutes to load up all the websites assets. I'm not sure why, it could be:

- Technical issue with blazor performance or blazor makes perf regressions hard to fix

- blazor technical framework encourages programming style that is bad for perf

- blazor or blazor ecosystem attracts programmers that can't deal with perf issues

As I understand it, blazor really needs WasmGC in order to have good performance and small bundle sizes. Otherwise, blazor is forced to ship a GC inside the wasm bundle - and that adds a lot of weight. And it also makes it more complex to share C# objects with javascript.

WasmGC is supported in all browsers + nodejs now, but its still pretty new. Safari only started shipping it in December last year. I'm not sure if wasmgc is the default build for blazor, or what the status is on it.

Blazor should be able to be good, small and fast. (Maybe even smaller than rust web frameworks.) But I don't know if we're there yet.

.NET doesn't use WasmGC because Microsoft found it too different from how .NET's GC works. Which is quite unfortunate
Oh what a pity. Anywhere I can read more about that?
I can't find the actual decision, but there was some discussion here: https://github.com/WebAssembly/gc/issues/77 Microsoft later in 2023 said that that discussion "is the current state we are in. We will keep eye on wasm GC in the future."

edit: found a more concrete statement https://github.com/dotnet/runtime/issues/94420

Doesn't Blazor include the entire .net core runtime? Or has that changed?
Then explanations 2&3?