We are thrilled to announce Nerves v1.0 is finally out. This has been 4219 commits by 102 contributors since the initial commit on October 29th, 2013! This would not have been possible without our corporate sponsors and individual backers.
Nerves is tooling and core runtime support for creating bulletproof embedded software running on the Erlang VM. The Erlang VM is known for its support for fault-tolerance, concurrency, and low-latency that has been proven out over the past two decades.
Nerves leverages the Elixir programming language and its tooling to bring a dynamic, functional approach to building maintainable embedded applications. Elixir’s Hex package manager extends this reach to a broad and growing selection of Erlang and Elixir libraries that run on embedded systems.
Nerves additionally uses Buildroot to access libraries and applications from the embedded Linux ecosystem for functionality lacking or impractical to move to Elixir or Erlang. Many of these applications can even be integrated into the same fault-tolerance abstractions used natively in Elixir.
Nerves has been ported to a variety of processors and boards. The Nerves v1.0 release includes official support for easily-obtained platforms like the Raspberry Pi, Beaglebone and Lego EV3.
This release is the consolidation of all the work done through the years. With v1.0, we have reached a stable milestone for the growth of software and projects using Nerves.
Nerves v1.0 consists of the following projects:
- nerves - Nerves integration with Elixir’s build tool, Mix.
- nerves_bootstrap - New project generation and bootstrap integration with mix
- nerves_runtime - Small, general-purpose libraries and utilities for all Nerves devices
- erlinit - Replacement for
/sbin/initthat launches an Erlang/OTP Release
- nerves_system_br - Buildroot integration for building embedded Linux components
- nerves_system_* - Official ports to boards and devices
- toolchains - C/C++ cross-toolchains for ARM, MIPS, i586, and x86_64-based devices
Nerves tooling and core runtime libraries will follow semantic versioning.
Nerves hardware ports, called Nerves Systems, follow Buildroot releases. Nerves also provides toolchains for Elixir projects that contain C and C++. Both Nerves Systems and Toolchains aggregate many programs and libraries and therefore don’t follow semantic versioning. We will attempt to flag significant updates in the change notes and link to Buildroot release notes to aid industrial users who track constituent software packages closely.
With v1.0, we are providing a stable platform for the community to leverage and extend, and we are extremely excited with the projects and possibilities that are ahead of us!
We would like to elaborate on the expectations regarding Nerves v1.0. The Nerves Project hosts many projects that are useful in building embedded systems and we have put significant thought into how many of those should be part of the 1.0 release. While pre-1.0 projects have not stopped people from using Nerves and shipping Nerves-based devices over the past few years, we understand that transitioning projects to 1.0 can provide confidence in the stability of API and tooling. The projects chosen for 1.0 are those that have remained stable for a long time and those that we are unlikely to break backwards compatibility going forward.
You can also learn more about Nerves by checking out
We’re really looking forward to hearing from people using Nerves and we want all of you to be successful. If you need help or just want to share something you made, let us know on the Elixir Forum or the elixir-lang Slack.