Packages

Run WebAssembly from Elixir. Load WASM modules in Rust, Go, C β€” call them like native functions.

Current section

Files

Jump to
firebird lib mix tasks firebird.ex
Raw

lib/mix/tasks/firebird.ex

defmodule Mix.Tasks.Firebird do
@moduledoc """
Lists all available Firebird mix tasks.
## Usage
mix firebird
"""
use Mix.Task
@shortdoc "List all Firebird tasks"
@impl Mix.Task
def run(_args) do
Mix.shell().info("""
πŸ”₯ Firebird β€” Elixir WebAssembly Integration
Setup & Diagnostics:
mix firebird.doctor Check your Firebird installation
mix firebird.new Create a new project with Firebird
mix firebird.init Initialize Firebird in an existing project
Code Generation:
mix firebird.gen Generate Elixir wrapper from a .wasm file
mix firebird.inspect Inspect a .wasm file (exports, types, size)
Building & Testing:
mix firebird.build Build WASM fixtures from source (Rust, Go, WAT)
mix firebird.test Run WASM-related tests
mix firebird.bench Run WASM benchmarks
Elixir β†’ WASM Compilation:
mix firebird.compile Compile Elixir modules to WASM
mix firebird.analyze Analyze Elixir modules for WASM compatibility
mix firebird.target Build Elixir β†’ WASM target
mix firebird.target.compile Compile with full pipeline options
mix firebird.target.new Generate a new WASM-ready Elixir module
mix firebird.target.watch Watch for changes and recompile
mix firebird.target.check Check WASM compilability
mix firebird.target.bench Benchmark WASM vs BEAM
mix firebird.target.verify Verify compiled WASM modules
mix firebird.target.inspect Inspect WASM compilation pipeline stages
mix firebird.target.profile Profile the WASM compilation pipeline
mix firebird.target.report Generate compilation report
mix firebird.target.status Show WASM target compilation status
mix firebird.target.link Link modules into single WASM
mix firebird.target.clean Clean WASM compilation artifacts
Phoenix Integration:
mix firebird.phoenix Phoenix WASM tools (build, bench, info)
mix firebird.phoenix.gen Generate a Phoenix WASM application
Quick start (30 seconds):
# 1. Add {:firebird, "~> 1.0"} to mix.exs
# 2. Run: mix deps.get
# 3. Verify: mix firebird.doctor
# 4. Demo: iex -S mix β†’ Firebird.demo()
# Or call WASM directly:
iex> {:ok, [8]} = Firebird.run("math.wasm", :add, [5, 3])
# Generate a typed wrapper:
$ mix firebird.gen priv/wasm/math.wasm --module MyApp.Math
See CHEATSHEET.md for a complete quick reference.
""")
end
end