I understand the latest official release doesn’t support ARM devices. So, it doesn’t work on most Android devices.
I just verified @lydell/elm working fine against a simple Elm example on a prooted ubuntu 22.04 on my android phone. As per @nidi 's advice, I wget the binary into /usr/local/bin.
For info, I used the ubunto port at the link below.
Re Android, it’s too unclear to me how well npm works there, and if the Linux x86 and ARM binaries are guaranteed to work there or not. I don’t have any Android devices to test on myself. So I’m leaving that out for now.
I think I’m going to take another stab at Yarn 2+ support after all, so elm-format and elm-json can copy the approach without losing any compatibility. Note that using Yarn 2+ would be an anti-pattern for elm and elm-format if used on save in an editor (since every invocation takes much longer). elm-json is not used that way, so a bit slower execution shouldn’t matter that much.
Give then the Linux binaries are statically compiled, I think all that matters it that the chipset architecture matches, and the binary should work.
The “install npm to install Elm” path that the npm package implicitly ends up encouraging is rather unfortunate IMO.
Given https://unpkg.com/@lydell/elm_linux_arm64/elm looks pretty standardised as a URL, and I’m assuming it pulls the latest version of the binary, then perhaps providing manual install instructions with those URLs for non-npm usage gives us a 2 for 1 solution?
Me and Evan talked on Slack, and decided this is not happening after all. Not at this time. Evan wanted to spend time on paternal leave and compiler exploration, rather than reviewing and tweaking npm package and build stuff.
However, I’ve rebranded the @lydell/elm package as an “unofficial elm package” (instead of an “experiment”) and that package will continue to exist, so feel free to use that!
Released a new version of @lydell/elm, v0.19.1-12.
It contains new macOS and Linux ARM 64 binaries. The ones in this release are compiled from the same commit as the official x86_64 binaries. The ones in previous versions of @lydell/elm were compiled from a later commit.
The previous binaries still work, but can result in surprises. There are some unreleased Elm compiler commits that result in ever so slightly different compiled JavaScript. Many build systems hash outputs for cache busting. If you run a binary compiled from a later commit locally but an official one on a build server, you might be confused why you get different hashes locally and on the build server for example. There’s also a risk that something compiles on your local computer, but not on the build server, or someone else’s computer (who doesn’t use ARM 64).
Thanks to @supermario as always for compiling the binaries!