-- install/view.wo — the VIEW for /install. Static copy: no fields, so -- the component has none. It is still a component, and still renders -- through the same interface as every other page. use view pub class InstallPage { fn render() -> Text { let head = `
Two native binaries — woc,
the compiler, and wovm, the runtime VM. Both depend only on
the system C library. There is no package manager to install, no
language runtime to install on the machines you deploy to, and no
build toolchain beyond these two files.
One tarball, two binaries. Take it from the GitHub release, or from this site as a mirror — they are the same bytes, and the checksum below proves it:
Download 0.1.0 (linux-amd64) Mirror
Verify it before you extract it. The expected digest is served beside the archive at .sha256:
`, code_block("curl -O https://writeonce.de/dl/writeonce-0.1.0-linux-amd64.tar.gz\ncurl -O https://writeonce.de/dl/writeonce-0.1.0-linux-amd64.tar.gz.sha256\nsha256sum -c writeonce-0.1.0-linux-amd64.tar.gz.sha256")); let s2 = section("2. Extract it", `Extract into /usr/local,
replacing any previous install. Run this as root, or through
sudo:
Add one line to your
$HOME/.profile (or /etc/profile for every user
on the box), then restart your shell:
Both should print the same version.
woc finds wovm beside itself, so a tarball
install needs no further configuration.
A project is a directory with a
wo.toml manifest and one or more .wo files.
Nothing else — no lockfile to create by hand, no scaffolding step.
woc <dir> emits ONE
standalone binary at target/<name>. Copy that file to a
server and run it — the VM is inside it, and so is the database.
Dependencies are git repositories pinned
by revision. The [deps] KEY is the module name your code
uses. woc writes a wo.lock with the
exact revision, and a locked build works offline. See
Packages for what is available.
The tarball installs to
/usr/local/writeonce: bin/woc,
bin/wovm, and a VERSION file. To point
woc at a different VM, set $WO_RUNTIME or add a
[build] runtime = "..." key to wo.toml. A
manifest may also require a minimum toolchain with
[runtime] wo = ">= 0.1"; woc refuses to build
a project that needs a newer toolchain than itself.
woc imports symbols up to GLIBC_2.35 and wovm up to GLIBC_2.34, read off the published v0.1.0 release. That covers Ubuntu 22.04+, Debian 12+ and Fedora 36+. On RHEL 9 (2.34) the runtime works but the compiler does not — build elsewhere and copy the binary over, which is the point of a self-contained executable.Check yours with
ldd --version. If it is older than 2.35, build from source
until a wider-compatibility release exists. The floor is set by the
machine that BUILT the release, not by the language — the CI runner is
pinned to Ubuntu 22.04 to keep it this low.