All notable changes to this project are documented here. The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
1.0.0 - 2026-09-29
First stable release. The public API (Flockit.lock/2, Flockit.try_lock/2,
Flockit.unlock/1 and Flockit.with_lock/3) now follows semantic versioning.
Tested on Linux and macOS.
Added
- Exclusive and shared advisory file locks via
flock(2), interoperating with otherflock(2)users, in this VM or other OS processes. - Waiting never blocks a BEAM scheduler or thread:
lock/2wakes on the kernel's release notifications (kqueue on macOS, inotify on Linux), with timed retries as a backstop, tunable with:max_poll_interval. lock/2takes a:timeoutand never returns a lock after it expires.- Locks are released by
unlock/1, when the owning process exits, or when the lock is garbage collected. - Errors are POSIX reasons such as
:enoentand:eacces;try_lock/2returns{:error, :eagain}for a busy lock.