The Nerves core team is proud to announce the Nerves v1.8.0 release.
Nerves provides the core tooling for creating self-contained, BEAM-powered firmware images for a variety of embedded devices.
This is one of our larger releases in terms of amount of code changed. We expect it to be a straightforward upgrade for most Nerves users since we focused on documentation and code cleanup. This new release does require Elixir 1.11 or later. We are continuing to make Nerves v1.7 patch releases for users who can’t update. The latest right now is v1.7.17.
The Nerves Project is more than just the Nerves library and includes many companion libraries and device ports maintained by the Nerves core team. To help users find these, we now have a list at github.com/nerves-project/nerves. This list includes what we have decided to maintain as a core team. The Nerves community has contributed many additional libraries, and we highly encourage checking the Elixir Circuits list and searching hex.pm for additional device support or functionality.
Since we as a team spend most of our time working on code outside of the core library, I’d like to highlight other updates we’ve made over the past couple months:
- Upgrade crosscompilers to GCC 11.3 for C and C++ code. Nerves includes OpenMP support and the option to use Fortran for numerical workloads. See toolchains v1.6.0 release
- Official support for the GRiSP 2
- 64-bit RISC-V support. See the v1.6.0 toolchains and nerves_system_mangopi_mq_pro for use on RISC-V hardware.
- Raspberry Pi boards are now all using Linux 5.15. Support is available for new variants like the Pi Zero 2 and new compute modules. See nerves_system_rpi4’s 1.20.0 release
- Improved support for compiling NIFs and ports so that processor-specific optimizations and security hardening is applied consistently. This is handled transparently unless you’re porting to a new device. See the TARGET_GCC_FLAGS docs
- Replaced all remaining use of SystemRegistry with PropertyTable. This probably only affects code reacting to Linux UEvents and not using
udevd. See NervesUEvent.
- Improve visibility of hardware watchdog and Erlang heart information. See Nerves.Runtime.Heart
- Improve support for Nerves configurations that don’t have data partitions or use U-Boot environment blocks
- Support more flexibility in OTP release script application start ordering. The start order is now deterministic among libraries with no dependency relationship (alphabetically is the final tie breaker). Libraries can be marked to favor them to be started earlier or later.
If you want to try the Nerves updates out quickly, the following all use Nerves 1.8 now:
Thanks to our sponsors and all of our users. We’ve had so much support from people in the community this year that it’s made working on Nerves a joy. Please continue doing all of the cool things that you do with Nerves that push the boundaries of what we support!