Skip to content

Limitations

This page exists so you do not discover these the hard way. Vow is pre-1.0.

  • 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 provingrequires / ensures are runtime checks only.
  • Small surface — no full classes/interfaces as in the long-term SPEC; needs / with sugar is incomplete beyond Caps fields.
  • print not in native codegen yet.
  • Compiler is Python + llvmlite (not self-hosted).
  • vow fmt is 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.

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.

  • 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.