Limitations
This page exists so you do not discover these the hard way. Vow is pre-1.0.
Language
Section titled “Language”- No garbage collector, and no manual free() — memory is arenas; the compiler works out when memory is no longer needed. Analysis is intraprocedural and conservative; escaping values live until the root arena is destroyed.
- No FFI — by design for v1 (FFI would punch a hole in the capability model).
- No async runtime — blocking I/O only.
- No SMT contract proving —
requires/ensuresare runtime checks only. - Small surface — no full classes/interfaces as in the long-term SPEC;
needs/withsugar is incomplete beyondCapsfields. printnot in native codegen yet.
Tooling
Section titled “Tooling”- Compiler is Python + llvmlite (not self-hosted).
vow fmtis a simple token formatter — not a full prettier.- Package manager work uses git URLs only — no central registry.
- Valgrind on macOS may be unavailable; arena destroy is the primary leak strategy.
Performance and size
Section titled “Performance and size”See pocs/size_coldstart/ in the repository for measured numbers. Expect losses vs hand-tuned C on some microbenchmarks. The win is safety defaults and small binaries relative to GC languages, not magic.
Security model caveats
Section titled “Security model caveats”- Capabilities protect stdlib effect entry points. A bug in the runtime C shim is still a bug.
- Denial checks assume you did not grant the capability. Granting
fs-read:/is still powerful.
- Roadmap — milestones (stub)
- Contributing — how to help (stub)
- Install — build from source