Linux
Wrenlift ships as a static binary on Linux — no runtime install, no glibc version dance. AOT compiled programs are real ELF executables you can drop into any container, .deb, or .rpm.
Install
The one-liner works on every distro:
curl -fsSL https://wrenlift.com/install.sh | bash
Drops wlift, hatch, and
wlift-lsp into ~/.local/bin. See
the install page for the
full set of env-var knobs.
Distro packages
Per-distro packages aren't published yet. For now grab the
binaries from the
release page
and bake them into your own .deb / .rpm /
PKGBUILD — the binaries are statically
linked and have no runtime deps.
Runtime dependencies
The wlift and hatch binaries are
statically compiled — no glibc version pin, no dynamic
libraries to track. Programs built with wlift --aot
link the same way.
Build an AOT binary
wlift my_app.wren --aot ./my_app
./my_app
The output is a regular ELF executable. Inspect it with
file:
$ file ./my_app
my_app: ELF 64-bit LSB executable, x86-64, ...
AOT binaries embed the full WrenLift runtime, so the file
is in the 2–5 MiB range for a hello-world. Strip
symbols with strip ./my_app to drop a megabyte
or so on release builds.
Cross-compile from a Linux host
wlift --aot respects the standard Rust
--target triples once the matching
libwren_lift.a staticlib is on disk. The
simplest path is to install Wrenlift on the target machine
directly; cross-compiling from a build host requires the
matching Rust toolchain to be installed:
rustup target add aarch64-unknown-linux-gnu
WLIFT_TARGET=aarch64-unknown-linux-gnu \
wlift my_app.wren --aot ./my_app-arm64
Packaging
For container builds, the static binary needs no base:
FROM scratch
COPY ./my_app /my_app
ENTRYPOINT ["/my_app"]
For Debian / RPM, drop the binary in /usr/local/bin
with no Depends: line. The runtime is fully
self-contained.