Parse throughput
5.96M l/s
271× target
First public release was v0.1.0 (2026-04-24). Latest is v0.1.1 (2026-05-21). Each entry lists scope, behavior change, and the commit. Benchmark deltas where the change touched a hot path.
Patch release. Two correctness fixes for behavior the v0.1.0 schema documented but the daemon didn't actually deliver. Drop-in binary replacement — state file v1 auto-migrates to v2 on first checkpoint, no data loss.
maxretry · findtime ·
bantime · bantime_increment are now
actually applied. In v0.1.0 they were parsed and accepted but silently
ignored — every jail received [defaults]. Per-jail
StateTracker instances now route matches through the right
thresholds. State file format bumped to v2; v1 files migrate on first
checkpoint. 7f4b486 bantime_increment_multiplier and
bantime_increment_factor. Both fields are
f64 in the schema, but the parser was reading them as
integers — factor = 1.5 for a softer escalation
curve now works. 2c5ca20 First public release. A single static musl binary replaces fail2ban's Python runtime, regex engine, and shell-out action chain. Hardened across eleven Phase-7 security issues and eight real-system SYS bugs before tagging. AGPL-3.0-or-later.
FailingAllocator ec31dee --import-config /etc/fail2ban pipeline ·
translates filter.d regexes · maps action.d backends · emits validated TOML 3af15fd fail2zig-client — status / ban / unban / list / jails / reload ·
table, JSON, plain output · bash / zsh / fish completions 2130f37 /metrics (Prometheus), /api/bans (JSON), /events (WebSocket, RFC 6455) 2130f37 scripts/install.sh one-shot installer 1340cae umask(0o117) around bind() closes
the socket-permissions race window 8bfc74f FailingAllocator to surface unbounded allocation
as OutOfMemory 8bfc74f CAP_NET_ADMIN + CAP_DAC_READ_SEARCH only · ProtectSystem=strict · NoNewPrivileges · seccomp filter · systemd-analyze security 2.4 7df630f ws.dispatchFrame on close /
binary frames b101619 bantime_increment now wired from [defaults] to the state tracker (was silently ignored) 3d866c7 type / ts / payload envelope; dashboard counters now tick in real time 4d75186 /run/fail2zig/fail2zig.sock 2130f37 @bitCast size mismatch (i128 → u64) resolved via
@truncate 2130f37