Releases: WasmVM/theater
Release list
Theater 0.1.0
A browser engine that runs WebAssembly instead of JavaScript. Write your
interface in HTML and CSS, write your logic in C compiled to wasm, and ship it
as an app.
This is a first release of a young engine: the scope it implements is
deliberate and narrow. Read Known limitations below before reaching for a
CSS property — anything outside the implemented set is ignored silently.
Which download
theater-0.1.0-… |
the runtime alone — for opening an app someone else made. About a quarter of the size. |
theater-sdk-0.1.0-… |
the runtime plus the thsdk tools, a bundled C-to-wasm compiler and its sysroot, the guest headers and working examples. No other compiler or SDK is required. |
Both install to the same prefix, so an SDK can be unpacked over a runtime later.
macOS is Apple Silicon only; Linux is x86_64.
The macOS .pkg is signed with a Developer ID and notarised, so it opens
normally — no "unidentified developer" prompt.
Verify a download against SHA256SUMS:
shasum -a 256 -c SHA256SUMS # macOS
sha256sum -c SHA256SUMS # LinuxThe runtime — theater
- HTML and CSS subsets, block, inline and flex layout, and a Skia CPU
rasteriser. - WebAssembly guests on a worker thread, with a
mem[2]bridge, a generational
handle table and capture/bubble event dispatch — clicking a button runs guest
C that mutates the DOM. - Four capabilities, granted by an app's manifest:
"dom","console",
"storage"(a sandboxed path space) and"net"(asynchronous, event
delivered). http(s)://documents and their subresources behind a resource cache; an app
is a directory of loose files described by atheater.json.- Host-managed
<input>editing, including IME composition on macOS. - No developer features, by design. Everything a developer touches is in
the SDK.
The SDK — thsdk
- A git-style multi-tool:
thsdk compile,dump,pack,renderandwatch,
each individually runnable. thsdk compilebuilds a guest from one or more.cfiles with a bundled
wvmcc, so an app author never types a compiler flag.thsdk packturns an app directory into one portable.thdomcarrying the
document, the manifest, the guest and every asset — and no native code, so
the same bytes open on every platform Theater runs on.- A CMake package —
find_package(Theater)andtheater_add_wasm()— for
building a guest from a project's own build system.
Known limitations
These are the deliberate edges of an MVP, not defects:
- Layout is block, inline and flex only. Not implemented: float, CSS grid,
tables,position: fixed/sticky, transforms and animations,z-index, and
bidi or complex scripts. A property outside the implemented set is ignored
silently. - Scrolling is viewport-only: no
overflowscrolling and no scrollbars. - One guest module per document.
- Apple Silicon only on macOS; no Intel build.
Licence
Theater is Apache-2.0. Every third-party component is permissive — Skia,
WasmVM and wvmcc are BSD-3-Clause, GLFW is zlib/libpng — so nothing here carries
a copyleft obligation. LICENSE, NOTICE and THIRD-PARTY-NOTICES travel
inside every package at share/theater/.
This repository holds releases only; Theater's source is private. The
"Source code (zip/tar.gz)" links GitHub attaches below contain the README and
licence files, not Theater's source.