Limitations
This page exists so you do not discover these the hard way. vow 0.1.0 is the first native release.
Language
- No garbage collector, and no manual free() — arenas and
region { }scopes; the compiler works out when memory is no longer needed. Analysis is intraprocedural and conservative. - Async runtime ships in 0.1.0 — scheduler, channels, mutexes, atomics, and async I/O. HTTP handlers in vow-web-server v0.2 remain blocking by default.
- No FFI — by design for v1 (FFI would punch a hole in capability-oriented API confinement).
- No SMT contract proving —
requires/ensuresare runtime checks only. - print / eprint are ambient — stdout/stderr via libc with no Caps grant (deliberate debug/DX).
- Map keys — non-String keys supported in 0.1.0 (
map_new<int, String>()etc.). - No inotify yet —
file_mtimeis poll-based. - 29 libraries + vow-web-server on vpm.vowlang.dev.
Tooling
- Native C compiler at
lang/native/— zero Python underlang/. Install viacurl -fsSL https://install.vowlang.dev | sh. vow fmt,vow lsp,vow profile, curl installer, and bundled lld ship in 0.1.0.- vpm native CLI — default registry
vpm.vowlang.dev. See ecosystem. - VS Code extension
vowlang.vow-langon the Marketplace. - HTTP apps: vow-web-server v0.2 (Express-like; blocking accept by default).
Security model caveats
Capabilities are API confinement, not an OS sandbox. Vow does not stop CPU or memory exhaustion, side channels, or bugs in the C runtime shim.
- Granting a wide path (for example
fs-read:/) is still powerful — attenuation is your responsibility. - Empty
net:means any host. Prefer an explicit host or DNS-suffix grant.
More detail: docs limitations, /status, and CHANGELOG.md.