wasmcloud-otp
wasmcloud-otp copied to clipboard
[EPIC] wasmCloud OTP Platform Support
This issue serves as a larger epic tracking the release artifacts we produce, platforms wasmCloud is compatible with, and some specific dependencies that are necessary to run on specific platforms.
Current Release Artifacts
Release Binary | Operating System | Architecture | Static | Platform Dependencies | CI/CD |
---|---|---|---|---|---|
wasmcloud_host_x86_64_linux_gnu | Linux | x86_64 | ❌ | glibc 2.29+, ca-certificates | ✅ |
wasmcloud_host_x86_64_linux_musl | Linux | x86_64 | ❌ | libgcc | ✅ |
wasmcloud_host_x86_64_darwin | MacOS | x86_64 | ✅ | N/A | ✅ |
wasmcloud_host_x86_64_windows.exe | Windows | x86_64 | ✅ | Windows 11 Home | ✅ |
wasmcloud_host_aarch64_linux_gnu | Linux | aarch64 | ❌ | glibc 2.29+, ca-certificates | ✅ |
wasmcloud_host_aarch64_linux_musl | Linux | aarch64 | ❌ | libgcc | ✅ |
wasmcloud_host_aarch64_darwin | MacOS | aarch64 | ✅ | N/A | ✅ |
Current remaining work in the release artifacts section
- [x] Automatic CI/CD building of the aarch64-macos.tar.gz artifact
- [x] Replace downloads of dynamically linked hosts with static hosts when available to maximize compatibility
Current remaining work in the future release artifacts section
- [x] Static x86_64 MacOS builds to remove openssl dependency
- [x] Static aarch64 MacOS builds to remove openssl dependency
#616 is addressing many of these, just keep an eye out
First, a note: static builds are not supported by Erlang at all. It is not possible to statically-link Erlang OTP, therefore static builds are technically impossible today if we keep using OTP.
Static builds would only be possible if we used an alternative Erlang implementation to compile wasmcloud-otp
, e.g. https://github.com/GetFirefly/firefly , which is experimental and does not have good support for Elixir yet
In https://github.com/wasmCloud/wasmcloud-otp/pull/616#issue-1689293596 we get artifacts with minimum possible amount of dependencies (NOTE, that e.g. Musl self-extracting binary is, indeed, statically-linked, but the actual executables are not, and cannot be, as outlined above), that is:
- MacOS: none
- Ubuntu/Debian:
-
ca-certificates
- self-explanatory
-
- Alpine:
-
libgcc
- that's actually a NIF dependency, which is added by the Rust compiler https://github.com/rust-lang/rust/issues/82521
-
- Windows: none
GNU build is compatible with Ubuntu 20.04 the earliest
All of these builds are produced by CI (including the Erlang distribution). MacOS ERTS are available pre-built at https://github.com/rvolosatovs/otp/releases/tag/OTP-25.3.2, the rest are automatically built if necessary, but in overwhelming majority of cases it should be fetched from cache
For all intents and purposes, I think we have a great set of platforms here. I'm going to add the pinned
label so that it won't get cleaned up by our stale issue bot and leave it as a good piece of information.