A compiler and runtime for BEAM languages (Erlang/Elixir) that targets WebAssembly and produces standalone executables.
Firefly is a compiler and runtime for BEAM languages like Erlang and Elixir, designed to produce standalone native executables and target WebAssembly. It solves the problem of deploying BEAM applications in environments where the full Erlang VM is impractical, such as web browsers or resource-constrained systems, by offering ahead-of-time compilation and static binaries.
Erlang and Elixir developers who need to deploy applications as self-contained executables, target WebAssembly for frontend or embedded use, or explore an alternative BEAM implementation written in Rust.
Developers choose Firefly for its ability to compile BEAM languages to WebAssembly and native binaries, its modern Rust implementation, and its focus on deployment simplicity—offering a drop-in replacement for OTP applications that don't require dynamic code loading or hot upgrades.
An alternative BEAM implementation, designed for WebAssembly
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Compiles Erlang/OTP applications to self-contained binaries for platforms like x86 and ARM, simplifying deployment without a full VM. The README shows examples producing executables that run like OTP releases.
Enables running BEAM languages on the web and in WASM environments, supporting use cases like frontend development with Elixir. The README cites this as a primary motivator and goal.
Aims for compatibility with mainline OTP and integration with BEAM tooling, allowing drop-in replacement for many applications. The README lists 'feature parity with mainline OTP' as a goal.
Written in Rust to provide memory safety and serve as an educational resource on BEAM internals. The README states it's implemented in Rust 'for safety and as an educational resource'.
Explicitly lists support for hot upgrades and dynamic code loading as non-goals, sacrificing these BEAM features for ahead-of-time optimizations. This limits use in systems requiring live updates.
Requires specific Rust nightly versions, manual LLVM installation, and environment variable configurations, with the README noting installation is a 'placeholder' and building involves 'very experimental' steps.
Lacks dependency management and shims for Rebar/Mix, forcing manual compilation of dependencies. The README admits 'Firefly does not do any dependency management itself' and integration is pending.
Described as 'very experimental' with stability not guaranteed, and some functionality like NIF support is incomplete or on the roadmap. The README warns that 'the current implementation may lack functionality'.