Nerves.Runtime v0.12.0 release

We just released a major update to the Nerves.Runtime library. Nerves.Runtime runs on all Nerves devices and provides basic system functionality that don’t obviously belong elsewhere.

This has been a long time coming and will become the default for new Nerves projects when we release the next update to the Nerves tooling. You can upgrade now if you’d like. I realize not everyone is plugged into the behind the scenes with Nerves, so I wanted to give everyone a heads up. There has been a lot of activity on the Nerves project, and I’m super happy with what’s been happening. Many changes are internal and with any luck, they won’t affect your projects at all. However, they make maintaining Nerves so much more enjoyable, and should make Nerves more robust long term.

See the release notes and upgrade instructions.

The summary is:

  1. Upgrade to Elixir 1.11 or later. We dropped support for Elixir 1.10, but mostly as a consequence of dependent libraries also dropping support for it.
  2. There’s no more SystemRegistry. SystemRegistry has a long history, but it didn’t work out as we liked. Most likely you’re not using SystemRegistry, but if you were, it was probably to receive hotplug events. Check out nerves_uevent for similar functionality, better performance and hopefully an easier API. Long term, we may make it easier to go 100% eudev since we know some users are forced to use it. They co-exist fine, but there’s some duplicate processing at runtime.
  3. We added utility functions for getting Nerves Heart status. Nerves Heart (a replacement for Erlang’s Heart process) is the ultimate supervisor that reboots the device when it’s unresponsive. It’s turned out to be such a life saver that we’d like it to be more discoverable to Nerves users.

You may have noticed that Nerves tooling and libraries are mostly 1.0 and Nerves Runtime is not. That doesn’t mean we’re not committed to it as much as other Nerves libraries. In general, we’ve been wanting to update and move functionality out of Nerves.Runtime for easier maintenance, but that was a challenge given how critical Nerves.Runtime is to production Nerves devices and not introducing subtle breaking changes. I think we’re on a good trajectory now with the 0.12.0 release.


1000 thanks to the Nerves core team and the rest of the community for their tireless work and good spirits - it is such a pleasant and exciting thing to be a part of :heart::star2::rainbow: