Skip to content

Commit e7afa26

Browse files
committed
task: update changelog for v3.61.0
1 parent 85abb76 commit e7afa26

1 file changed

Lines changed: 29 additions & 0 deletions

File tree

CHANGELOG.md

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,34 @@
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

0 commit comments

Comments
 (0)