File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change 11# Changelog
22
3+ ## v3.61.0 - 2026-03-19
4+
5+ ### Improved
6+
7+ - On Linux, file locks (` flock ` ) are replaced by abstract unix domain sockets.
8+ The kernel automatically releases the lock when the holding process dies,
9+ eliminating stale locks entirely. The lock holder serves its identity (PID,
10+ lock name, acquisition time) over the socket itself — no lock files needed.
11+
12+ - On other platforms (macOS, Windows), the flock path now detects stale lock
13+ files by checking whether the holder PID is still alive. If the holder is
14+ dead, the lock file is removed so the next retry succeeds immediately.
15+ This handles stale locks on NFS or after unclean shutdowns.
16+
17+ ### Fixes
18+
19+ - Fix file lock retry loop silently swallowing non-contention errors. The
20+ ` flock(LOCK_NB) ` call could return errors other than ` EWOULDBLOCK ` (e.g.
21+ ` EBADF ` , ` ENOLCK ` ), which were previously treated as contention and retried
22+ forever. The retry loop now fails fast on real errors and only retries on
23+ genuine contention.
24+
25+ ### Maintenance
26+
27+ - ` task lint ` and ` task format ` now use ` go run ` to invoke golangci-lint,
28+ removing the need to have it pre-installed. The version is pinned in a
29+ single ` .golangci-lint-version ` file shared between the Taskfile and
30+ GitHub CI.
31+
332## v3.60.0 - 2026-03-14
433
534### Features
You can’t perform that action at this time.
0 commit comments