20 releases (12 major breaking)

15.0.0 Oct 22, 2024
14.0.0 May 22, 2024
13.1.1 Mar 14, 2024
12.0.1 Dec 30, 2023
3.0.2 Feb 17, 2023

#76 in Concurrency

Download history 109143/week @ 2024-07-18 118646/week @ 2024-07-25 108678/week @ 2024-08-01 112717/week @ 2024-08-08 107462/week @ 2024-08-15 107379/week @ 2024-08-22 107575/week @ 2024-08-29 125939/week @ 2024-09-05 113058/week @ 2024-09-12 106553/week @ 2024-09-19 115804/week @ 2024-09-26 111147/week @ 2024-10-03 112508/week @ 2024-10-10 119118/week @ 2024-10-17 112223/week @ 2024-10-24 112783/week @ 2024-10-31

475,117 downloads per month
Used in 260 crates (4 directly)

MIT/Apache

81KB
1.5K SLoC

Use lock-files in the way git does with auto-cleanup being the most notable feature.

  • writable lock files that can be committed to atomically replace the resource they lock
  • read-only markers that lock a resource without the intend to overwrite it
  • auto-removal of the lockfiles and intermediate directories on drop or on signal

lib.rs:

git-style registered lock files to make altering resources atomic.

In this model, reads are always atomic and can be performed directly while writes are facilitated by the locking mechanism implemented here. Locks are acquired atomically, then written to, to finally atomically overwrite the actual resource.

Lock files are wrapped gix-tempfile-handles and add the following:

  • consistent naming of lock files
  • block the thread (with timeout) or fail immediately if a lock cannot be obtained right away
  • commit lock files to atomically put them into the location of the originally locked file

Limitations

  • All limitations of gix-tempfile apply. A highlight of such a limitation is resource leakage which results in them being permanently locked unless there is user-intervention.
  • As the lock file is separate from the actual resource, locking is merely a convention rather than being enforced.

Dependencies

~3–12MB
~186K SLoC