Skip to content

Releases: software-mansion/popcorn

v0.2.2

19 Mar 10:02
c5d8f18

Choose a tag to compare

What's Changed

Full Changelog: v0.2.1...v0.2.2

v0.2.1

17 Mar 14:03
1051c46

Choose a tag to compare

What's Changed

  • Update AtomVM version

Full Changelog: v0.2.0...v0.2.1

v0.2.0

12 Mar 15:26
6923939

Choose a tag to compare

Hello! It's been a while since the last release and we have a lot to show for it. We've been mostly working on AtomVM stability, improving communication between JS and Elixir runtimes, and running some experiments.
Experiments in question:

Local LiveView

Phoenix has support for not only serving static HTML templates but also components that can be interactive. It's known as a Phoenix LiveView.
LiveView works by adding JS handlers that react to clicks, typing, and other user interactions.
If a handler is triggered, it sends event data via WebSocket to your server, which can then update its state and send a patched HTML snippet back to the browser.

The technology is very stable and helps developers build features with a relatively small amount of code. The main drawback is that users need to have a good internet connection for it to work.

We are building a library that can run Elixir code locally in the browser so we thought – hey, this is a perfect fit. That's how this small experiment was born.
The proof of concept and further development were done by Franciszek Kubis and Mateusz Front. Local LiveView is still in active development. Please check out demos on our website!

Elixir language tour

This is another experiment that evolved into a full-fledged website, crafted by Marceli Mietla. We've created a tutorial for Elixir newcomers to learn the language with interactive examples – you can run little snippets of Elixir code, edit them, crash the VM – the possibilities are endless. Big thanks to Mateusz Front and Bartosz Błaszków for writing the tutorials.

You can take a look here: Elixir language tour

JS package

When a library bridges three languages (Elixir, Wasm, and JS), deciding where things belong gets tricky. Previously, we had a slightly annoying setup where you needed to copy .js files yourself to use JS API. This is no longer the case.
We're still migrating, but the plan is to have the VM (compiled to Wasm) living in the JS package, with JS bindings. The Hex package will host Elixir API and tools to create your app bundles. This makes it much easier to try Popcorn in your projects, especially in Phoenix apps 😉

If you want to read more about our struggles to package Wasm into npm library, here's an article for you.

AtomVM

We won't list every contribution, but here are some shoutouts:

We're also working on improving ets – supporting more table types, functions, and trying to eradicate aborts on OOM, which required redesigning some data structures). Mateusz Furga (not to be confused with the other Mateusz) has been dedicating his time to this effort.

The future

We've automated a bit of release process so improvements should land more frequently. We're planning to run some more experiments (BEAM on Wasm? More local LiveView? langtour as a tool?). We'll share how they go. Stay tuned.

v0.1.0

17 Jul 12:39
391a2d2

Choose a tag to compare

The first release of Popcorn 🚀

Hex: https://hex.pm/packages/popcorn
Website: https://popcorn.swmansion.com