What's Changed
- ci: download coverage during tool setup by @gaborbernat in #776
- ๐ fix(api): validate timeout and poll_interval bounds by @gaborbernat in #781
- ๐ fix(read-write): accept inf and reject nan timeouts by @darrenhuai in #779
- ๐ fix(soft-rw): ignore non-ASCII generation names by @dxbjavid in #778
- ๐ fix(soft): check start token in is_lock_held_by_us by @lprnmns in #774
- ๐ fix(soft): clean up marker when rollback close fails by @harbinresearcher in #775
- ๐ fix(read-write): clamp waits to threading.TIMEOUT_MAX by @darrenhuai in #780
- ๐ fix(soft): treat truncated markers as malformed by @gaborbernat in #782
- ๐ fix(acquire): keep every acquire wait within the timeout by @feiiiiii5 in #777
- ๐ docs: fix hanging example and platform claims by @gaborbernat in #783
- ๐ fix(unix): keep peer marker on ENOSYS fallback by @gaborbernat in #785
- ๐ fix(async): clear the task hold after a canceled release by @gaborbernat in #789
- โจ feat(api): export lease types and has_fcntl by @gaborbernat in #790
- ๐ fix(strict): age private records by the filesystem clock by @gaborbernat in #792
- ๐ fix(async): surface executor shutdown as an error by @gaborbernat in #793
- ๐ fix(soft): expire leases on the contender's clock by @gaborbernat in #796
- ๐ fix(soft-rw): stop an acquire that close() overtook by @gaborbernat in #798
- ๐ fix(strict): record claims before linking them by @gaborbernat in #787
- ๐ fix(soft): restore a live marker a stale break moved aside by @gaborbernat in #786
- ๐ fix(api): chain errors on 3.10 without exceptiongroup by @gaborbernat in #788
- ๐ fix(soft): release a dropped SoftFileLease by @gaborbernat in #791
- ๐ fix(read-write): keep probe fds until the last connection closes by @gaborbernat in #794
- ๐ฆ build(sdist): ship docs and update SECURITY.md by @gaborbernat in #812
- ๐ fix(soft-rw): survive a removed generation log by @gaborbernat in #795
- ๐ fix(soft): tell PID namespaces apart in the marker host by @gaborbernat in #797
- ๐ fix(async): release from the finalizer and keep I/O off the loop by @gaborbernat in #800
- ๐ fix(strict): name what blocks the lock path by @gaborbernat in #804
- ๐ fix(read-write): reject WAL databases and link beside the db by @gaborbernat in #805
- ๐ fix(read-write): track read depth per thread by @gaborbernat in #806
- ๐ fix(soft): honour mode and tighten marker grammar by @gaborbernat in #807
- ๐งช test: drop timing races from two runner-load flakes by @gaborbernat in #809
- ๐ fix(descriptor): reject poll intervals above TIMEOUT_MAX by @sricharanreddycheruku in #802
- ๐ fix(api): validate lock options up front by @gaborbernat in #803
- ๐ fix(soft-rw): publish the head through gen/HEAD by @gaborbernat in #799
- ๐ fix(api): release thread holds, guard reentry by @gaborbernat in #810
- ๐งช test(lease): give the age-out test a real-time margin by @gaborbernat in #814
- ๐ docs: point canonical and og:url at versioned pages by @gaborbernat in #813
- ๐ fix(read-write): refuse a database moved mid-acquire by @gaborbernat in #808
- ๐ fix: close regressions since 4.0.12 by @gaborbernat in #815
New Contributors
- @darrenhuai made their first contribution in #779
- @harbinresearcher made their first contribution in #775
- @sricharanreddycheruku made their first contribution in #802
Full Changelog: 4.0.12...4.1.0