• pesnk
  • ·
  • 3 hours ago
  • ·
  • [ - ]
Congratulations on the project! It works great, until we need to handle the best part of Elixir, that's creating multiple actors.

This Task code, for example doesn't work.

  Enum.map(0..10, fn(_) ->
    Task.async(fn -> IO.puts("new process") end)
  end) |> Task.await_many()
  • mathek
  • ·
  • 31 minutes ago
  • ·
  • [ - ]
Tasks seem not to work indeed, but spawning processes works. Try

  Enum.map(1..10, fn _i ->
    spawn(fn -> IO.puts("new process") end)
  end)
Also, there are two scenarios: compiling code in the browser and running it, and running precompiled code in the browser. In the latter case more things work, for example the 'game of life' example uses GenServers, Supervisors and Registry:

https://popcorn.swmansion.com/game_of_life/

https://github.com/software-mansion/popcorn/tree/main/exampl...

  • Jump3r
  • ·
  • 51 minutes ago
  • ·
  • [ - ]
Hey, Kuba from team working on Popcorn here. I wasn't expecting it to be posted on hn but here we are. Feel free to ask me any question.
I'm honestly surprised at how slow WASM is moving. As a very experienced web dev, when I first learned about WASM I was sure people would be building production UIs in Python and Golang and other traditionally server-side languages.
That’s actually what I feared the most and I’m glad we haven’t seen it happen.

Python and Go are not small languages, making users download entire runtimes to do something that can be done fine without them would be a huge shame. The performance problem with web UI is the DOM, not JavaScript.

You can mitigate some of that with web workers, but it's a shame that multiple websites can't share a python runtime the same way they can on a shared linux box. You have to download a separate one for every website that uses it. But, if you follow that train of thought to the end, you wind up with the browser itself bundling those runtimes, just like it did with Flash back in the day.

I'm not sure any of this would be an improvement over what we have now.

  • chii
  • ·
  • 36 minutes ago
  • ·
  • [ - ]
the only good reason to build these runtimes is to enable existing applications to be recompiled into wasm for use inside the browser - it doesnt make sense to greenfield an application that uses non-web UI libraries, only to then bundle the entire UI runtime with it.
  • eterm
  • ·
  • 2 hours 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.

  • pier25
  • ·
  • 50 minutes ago
  • ·
  • [ - ]
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.

Doesn't Blazor include the entire .net core runtime? Or has that changed?
Wasm doesn help much with UI, its more about moving parts of the server into the client as blacboxes with no access to dom.

The blackbox can of course return the state of UI to be rendered/pathced, but that doesnt unlock much (if any) interesting capabilities for amount of overhead it adds

For anyone else wondering the GitHub repo is here:

https://github.com/software-mansion/popcorn

Couldn’t find any link to it on the article

AtomVM is something like 1m when compiled, isn't it?
  • mathek
  • ·
  • 30 minutes ago
  • ·
  • [ - ]
Compiled to WASM it's ~700K, gzipped only 190K
  • ·
  • 5 hours ago
  • ·
  • [ - ]
Very promising. But still not stable. One to watch.
[dead]