Hi there! With ARM getting serious about disrupting the cloud market, and major providers like AWS and Packet starting to offer servers with great price/performance ratios, the future for ARM servers look bright - and it seems like Elixir and ARM are a great match.
Has your “Elixir on ARM” dev journey been smooth? What is the state of tooling/deployment? Would love to hear from anyone running or looking to run Elixir apps on ARM servers (whether in production or just experimenting).
The Nerves project targets various ARM boards and it works very well (e.g. RasPi boards), as does GRiSP.
Once the BEAM is installed and running, the tooling is the same. Probably your biggest issues will come from libraries with natively compiled code which is not able to be built on ARM either due to the code itself or the build system employed.
We run both erlang and elixir apps without issues on 32-core aarch64 servers from Ampere (FreeBSD, and have checked linux too. You can test drive these servers at https://packet.com/ and I’m happy to share any further info.
We currently run OTP22 mainly, and all the NIFs we use work just fine.
I’d write a long blog post, but modern UNIXes Just Work. You’ll likely never even know it’s different until you check the uname or number of OTP schedulers.
Another approach is use Yocto Project and meta-erlang to build an image that runs on ARM servers. That would be more work if you are not familiar with YP.
Based in the comments of this thread, is it safe to assume that we will not have any problems developing Elixir Applications on the new ARM Apple Laptop?
It’s pretty safe to say - it’s not going to be an issue. Actually we (Erlang Solutions) are in the midst of packaging Erlang for AWS Gravitron (ARM) architecture. Speaking of which, is anyone running production Erlang on Amazon ARM systems?
For future reference… The gravitron build didn’t happen (lack of resources as business is booming) but docker “official” images built by the mysterious Mr C0B are available from docker hub in arm64v8 architecture. You can refer to the Dockerfile for that project if you need to verify build flags etc.