wasmCloud / wasmcloud-otp

wasmCloud host runtime that leverages Elixir/OTP and Rust to provide simple, secure, distributed application development using the actor model
Apache License 2.0
227 stars 49 forks source link

[EPIC] wasmCloud OTP Platform Support #608

Open brooksmtownsend opened 1 year ago

brooksmtownsend commented 1 year ago

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

Current remaining work in the future release artifacts section

brooksmtownsend commented 1 year ago

616 is addressing many of these, just keep an eye out

rvolosatovs commented 1 year ago

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:

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

brooksmtownsend commented 1 year ago

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.