Skip to content

Changelog

The full, version-by-version changelog lives in the repository root:

CHANGELOG.md

That file follows Keep a Changelog format and adheres to Semantic Versioning. Each release entry lists Added, Changed, Fixed, and Removed items.


The table below summarizes what each phase of Dwaar’s development delivered. These correspond to the progressive build plan in the issue tracker.

PhaseNameKey Deliverables
0–1FoundationCargo workspace, CI, BSL-1.1 license, Pingora integration, ProxyHttp engine, graceful shutdown
2Route Table & ConfigArcSwap route table, Dwaarfile tokenizer and parser, hot-reload, TLS/header/redirect directives
3TLS & HTTPSSNI cert store, automatic HTTPS redirect, ACME Let’s Encrypt (HTTP-01), certificate watcher
4Request LoggingStructured JSON logs (22 fields), batch writer, log rotation
5Admin APIREST admin service (/routes, /certs, /reload, /metrics), Unix domain socket listener, bearer token auth
6AnalyticsJS beacon injection, HyperLogLog visitor counting, Top-K pages, TDigest Web Vitals, per-domain aggregation
7Bot & Rate LimitingRegexSet bot detection, sliding-window rate limiter, Under Attack mode
8Docker IntegrationDocker label discovery, deploy agent
9GeoIPMaxMind mmdb lookup, country field in request logs
10Compressiongzip / brotli / zstd response compression plugin with automatic content negotiation
11Plugin SystemDwaarPlugin trait, PluginChain with priority sorting, basicauth, security headers plugins
12CLI Polishroutes / certs / reload / upgrade subcommands, PID management
13PerformanceCriterion benchmarks, stress tests, jemalloc allocator, CompactString, sonic-rs JSON
14Caddy Directive Parityhandle, handle_path, route, respond, rewrite, uri, error, abort, method, request_body, try_files, forward_auth, named matchers
15Full Caddyfile RuntimeTemplate engine, VarRegistry, 13 typed directives, parser modularization, multi-worker fork, feature toggles, PGO build
16Remaining GapsTokenizer fixes, handle_errors, per-site log output, block-form reverse_proxy with load balancing and health checks, bind, intercept / copy_response
17Production ViabilityWebSocket proxy, body size limits, IP allowlist/blocklist (CIDR trie), Prometheus metrics, HTTP cache (pingora-cache), gRPC transparent proxy
18Competitive ParityConnection draining, slow-loris timeouts, mTLS upstream, QUIC scaffold, Alt-Svc header
19DifferentiationDNS-01 ACME wildcard certificates (Cloudflare provider), scale-to-zero wake
20–22Kubernetes Ingressdwaar-ingress crate, K8s reflector watchers, Ingress-to-route translator, TLS secrets, leader election, annotations, Helm chart, integration tests
23–24WASM RuntimeWasmtime component model, WIT interface, host functions, resource limits (fuel / memory / timeout), module caching, auto-disable on repeated traps
25HTTP/3 Full Flowh3 request parsing, proxy bridge, connection lifecycle, 0-RTT, flow control
26Observability PipelineW3C traceparent propagation, process metrics, rate/cache Prometheus counters, log socket and file rotation, AnalyticsSink trait, upstream error body capture
27H3 Memory & PerformanceConnection-owned BufferedConn (zero per-request alloc), H2 upstream multiplexing (transport h2), zero-copy body streaming, TCP_NODELAY, jemalloc heap profiling feature, chunked/decompressor buffer caps
27Hot Reload + H3 CompletionStreaming H3 → upstream bridge, upstream connection pool, hot reload for health-check pools, ACME domain coverage, and cache sizing
28v0.2.2 patch releaseDwaarfile glob imports, forward_auth parse-time plaintext rejection, supervisor readiness probe, WASM cache reload invalidation, leader-election 409 re-read, access-log rejected_by/blocked_by, upstream health transition logs, var_defaults clone elision, parking_lot migration, ACME challenge method guard, /admin/reload full parse error body, accepted_format hint on parser errors, Justfile + check-dev-env.sh + Quick Start
29v0.2.3 audit remediation~50 findings from external security and performance audit. Beacon HMAC authentication, OCSP SSRF blocklist + 7-day staleness guard, revoked-cert cache eviction, strict wildcard SNI (RFC 6125), ACME private key zeroization, security_headers.strip_leaky_headers (default on), rate_limit runs before under_attack, IPv4-mapped IPv6 rate-limit normalization, admin API CORS lockdown + DELETE /routes 414 cap, Prometheus label-injection escaping, per-window analytics counter reset (breaking for sum-across-flush dashboards), accurate process_start_time_seconds, upstream error-body PII redaction, Referer query-string redaction, upstream health-log address masking, supervisor SeqCst shutdown flag, GeoLookup ArcSwap hot reload (CLI wiring deferred), Sec-GPC beacon suppression, fetch({ keepalive: true }) unload fallback.

Dwaar follows Semantic Versioning:

  • Patch releases fix bugs without changing configuration semantics.
  • Minor releases add features in a backward-compatible way.
  • Major releases may change the Dwaarfile format or remove deprecated directives. Migration guides are published in docs/src/migration/.