Skip to content

Roadmap

Shipped and stable for loopback APIs, middleware kinds, routing, static files, and vpm packaging.

Area v0.2 behavior
Concurrency Blocking single-threaded accept/handle
listen_concurrent Deprecated — aliases listen until v0.3 worker pool
listen_async Stub — aliases listen until v0.3 event loop
Middleware Built-in enum kinds only — no custom fn arrays
HTTP HTTP/1.1, keep-alive when client sends HTTP/1.1
Large bodies Chunked encoding for bodies ≥ 1MB (runtime)
TLS Not supported — terminate at reverse proxy
WebSockets Not supported

Workarounds today:

  • Run multiple processes behind a load balancer
  • Offload static assets and TLS to nginx/Caddy
  • Compose handler logic instead of custom middleware functions
Feature Goal
async fn handlers Non-blocking request handlers
await on I/O HTTP read/write without blocking the runtime
Event-driven loop epoll/kqueue accept loop
Real listen_async Integrated with v0.3 runtime
Worker pool Real listen_concurrent(workers)
Function middleware Arbitrary fn middleware chains like Express

Track language/runtime async work on the main Project roadmap.

Express vow-web-server v0.2.1 v0.3 target
express() app() same
app.get/post/put/delete/patch/all get, post, …, all same
app.use(mw) use_mw(a, kind) — built-in kinds custom fn middleware
app.use('/api', mw) use_at(a, prefix, kind) custom fn + prefix
app.use(logger) use_log(a) same
express.json() use_json(a) same + streaming
app.listen(port) listen(a, cap, port) listen_async
res.send(body) response.send(body) same
res.json(obj) response.json(string) same
res.redirect(url) response.redirect(url) same
res.status(n) send(n, body) / json(n, body) same
Static express.static staticfiles.files_handler same
Error middleware handler returns error responses planned
Router .param() request.param same
Sub-app mount app.mount(a, prefix, sub) same
Express vow-web-server Notes
req.body object context_value(req) string JSON stored as raw string; parse in handler or use vow-body-parser
req.params object param(req, key) per key
next(err) halt via middleware kind custom error propagation in v0.3
Cluster module multi-process external no in-process cluster yet