Hacker News new | past | comments | ask | show | jobs | submit login

I may be wrong but, “designed for WebAssembly” might be the key selling point here.

I imagine we would be able to write elixir on the frontend with this.




If I were to try to do a straight shot at getting elixir on the frontend I'd just send bytecode up to the frontend and interpret it, either in js or wasm. Erlang bytecode is fairly straightforward, and especially if you stay single threaded you can make a reasonable approximation of the compute model[0]. The hardest parts I imagine would be coming up with an abstraction that lets you manipulate the DOM and test it while staying in the elixir test environment, which is insanely good. I don't see how firefly makes that particular challenge any easier.

I feel like the dockyard folks just got rust crazy and decided to do this -- for reasons[1], rust is honestly not the best language to do a BEAM implementation in, which is I think why they pivoted to a compiler

[0] except for the fact that a lot of libraries unnecessarily spawn processes.

[1] https://www.erlang.org/doc/man/erts_alloc.html


> except for the fact that a lot of libraries unnecessarily spawn processes.

Well yeah, that's kinda the whole point of Erlang in the first place :)


> If I were to try to do a straight shot at getting elixir on the frontend I'd

... use LiveView :)


Like this proposes eventually obviating the need for things like LiveView.JS, LiveView hooks, etc.


Phoenix+LiveView already seems to do this really well—what's the niche for an Elixir SPA?


You can build an app that runs entirely in the browser eliminating the need to have a server and reducing latency. Of course it doesn't make sense for all use cases but for some apps it might make a lot of sense. For example that is how Liveview Desktop works.


I'm a big fan of LiveView, but when you get to a very high degree of interactivity or anything that needs to work well offline or with bad signal quality then LiveView is not the right choice.


For very high degree of interactivity I've been working on LiveSvelte which might solve that issue for you. Your other points still stand though.

https://github.com/woutdp/live_svelte


Pretty much exactly that, yeah. From the README:

> The primary motivator for Firefly's development was the ability to compile Elixir applications that could target WebAssembly, enabling use of Elixir as a language for frontend development




Join us for AI Startup School this June 16-17 in San Francisco!

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: