Adding support for Elixir 1.17 / OTP 27 in Nerves

I started investigating using the new versions with Nerves. I have found a few pieces that need a little more vetting and investigation. Follow along here and test yourself if able :wink:

There are various PR’s open that would be needed to support this:

Elixir 1.17

  • nerves_ssh#154

    • Required to start the IEx shell when SSH-ing to device
  • The vm.args.eex needs to adjust to use -run elixir start_cli

    • nerves_bootstrap#316 fixes the mix nerves.new
    • I’m unsure :elixir.start_cli is the right entry point. May need more investigation

OTP 27


Current problems

  • OTP 27 does not boot. The only logs I have right now (via UART) are ¬
size_object: matchstate term not allowed
[nbtty: terminating]
[    8.035300] watchdog: watchdog0: watchdog did not stop!
[    9.107671] reboot: Restarting system
4 Likes

I just wanted to update this thread that the issue posted here was fixed. The size_object: matchstate term not allowed error can happen when you run Elixir 1.17 compiled with OTP 27 on OTP 26. The assumption is that this somehow happened here.

Support for Elixir 1.17 and OTP 27 is getting really close to being released with Nerves. It seems to be working well and we hope to release soon.

14 Likes

Hi! Here is scenario how we triggered this error:

  1. asdf .tool-versions was on otp-27 and elixir-1.17
  2. we have github actions ci that was run, cache was created
  3. in .tool-versions we downgraded to elixir 1.16 and otp-26
  4. mix test triggered locally this error
  5. we deleted deps and _build localy
  6. github actions job failed, because of cache
  7. we bumped cache folder name to something different, _v1, github actions passed.
3 Likes