Skip to content

Changelog

Installers — unified cross-platform release

Section titled “Installers — unified cross-platform release”
  • Shared install library (lib/native-install.sh) — upgrade-safe installs (no manual chmod)
  • Windows installer — GUI wizard (install-gui.ps1) + CLI (install.ps1) for WSL2 / Git Bash
  • Homebrew tapbrew tap vowlang/tap && brew trust vowlang/tap && brew install vow
  • All platformsdarwin-arm64, darwin-amd64, linux-amd64, linux-arm64 tarballs on install.vowlang.dev

JSON — JavaScript-style objects and arrays

Section titled “JSON — JavaScript-style objects and arrays”

Dynamic JSON in Vow now matches JavaScript ergonomics:

Feature Example
Object literals { title: "hi", count: 42 }
Array literals var xs: JsonValue = [{ id: 1 }, { id: 2 }]
Dot / bracket read doc.title, doc["title"], arr[0]
Dot / bracket write obj.title = "x", obj["n"] = 42 (primitives auto-wrap)
Helpers json.get_string(doc, "title", "untitled")

Import json from the stdlib. Full guide: JSON tutorial. Demo app: hello-app.

vow compiler — JsonValue globals, watch mode

Section titled “vow compiler — JsonValue globals, watch mode”
  • Global JsonValue initializersvar items: JsonValue = [...] now works at runtime (array/object literals are initialized before main)
  • vow run --watch — delegates to vds for live reload during development
  • vow run binary isolation — each run uses a unique temp binary so recompiles do not stomp a running server
  • vds loads grants.toml automatically (same as vow run)
  • Restarts wait for the listen port to free before binding
  • Kills the previous process cleanly on file change

vow-web-server 0.3.4 — accept loop fix (definitive)

Section titled “vow-web-server 0.3.4 — accept loop fix (definitive)”

Fixed accept error code 2 — retrying log spam after the first page load. The single-threaded HTTP runtime now always sends Connection: close (no keep-alive reuse on one pending socket), and transient accept/bind failures retry inside C instead of bubbling to the Vow listen loop.

Fixed a bug where idle HTTP keep-alive connections caused accept error code 2 — retrying log spam after the first page load. The runtime now retries transient accept failures internally; hello-app and other servers stay quiet while waiting for the next request.

vow-web-server@0.3.0 ships an Express-aligned registration style while keeping the v0.2 immutable builder for existing projects.

Express vow-web-server v0.3
express() server()
express.Router() router()
app.use(mw) use_middleware(app, mw)
app.use('/api', router) use_middleware(app, "/api", router)
express.json() / logger() / urlencoded() / cors() json() / logger() / urlencoded() / cors(origin)
Custom middleware middleware(fn) + next(req) / halt(resp)
app.get/post/… get(app, path, h) — reassign handle each step
app.listen(port) serve(app, rt, port)
  • vow create my-api --web — scaffolds a packaged API with vow-web-server@0.3.0, /health + /hello, and grants.toml
  • Route and middleware registration returns an updated handle — use var app = vws.server(); app = vws.get(app, …) like Express reassignment patterns
  • Legacy app() / use_log / mount API unchanged — no breaking changes for v0.2 projects

Docs: vow-web-server, HTTP API tutorial.

First native release:

  • C compiler at lang/native/ — zero Python under lang/
  • Curl installer at install.vowlang.dev (native vow + vpm)
  • 30 packages on vpm.vowlang.dev (29 libs + vow-web-server v0.2)
  • Async runtime, channels, mutexes, atomics, non-String map keys
  • VS Code extension vowlang.vow-lang on the Marketplace
  • Bundled lld; static LLVM link for the vow binary

See the compiler CHANGELOG.md for full gate evidence.

  • vpm add vow-serve -g — global install of vow-serve, vs, and vds (vow-dev-server)
  • PM2-like vow-serve list|start|stop|logs with registry at ~/.vow/serve/
  • Per-project vow.serve.toml + Docker/systemd templates via vow-serve init
  • Guide: Deploying vow-web-server
Artifact What it is
/status Site page built from status.json at build time
Compiler STATUS.md Human audit table + security model notes
Compiler status.json Machine-readable feature states and counts
/BENCHMARKS.md Latest measured suite (native compiler)

Re-run the compiler status audit, then npm run sync-metrics in this site, when you publish status updates.