lukko: File locking

[ concurrency, library, system ] [ Propose Tags ]

This package provides access to platform dependent file locking APIs:

  • Open file descriptor locking on Linux (Lukko.OFD)

  • flock locking on unix platforms (Lukko.FLock)

  • Windows locking LockFileEx (Lukko.Windows)

  • No-op locking, which throws exceptions (Lukko.NoOp)

  • Lukko module exports the best option for the target platform with uniform API.

There are alternative file locking packages:

  • GHC.IO.Handle.Lock in base >= 4.10 is good enough for most use cases. However, uses only Handles so these locks cannot be used for intra-process locking. (You should use e.g. MVar in addition).

  • filelock doesn't support OFD locking.

Lukko means lock in Finnish.

Submodules Lukko.OFD, Lukko.Windows etc are available based on following conditions.

if os(windows)
  cpp-options: -DHAS_WINDOWS_LOCK

elif (os(linux) && flag(ofd-locking))
  cpp-options: -DHAS_OFD_LOCKING
  cpp-options: -DHAS_FLOCK

elif !(os(solaris) || os(aix))
  cpp-options: -DHAS_FLOCK

Lukko.FLock is available on not (Windows or Solaris or AIX). Lukko.NoOp is always available.

Flags

Manual Flags

NameDescriptionDefault
ofd-locking

Enable open file descriptor locking. Available on Linux (kernel 3.15, released Jun 8, 2014).

Enabled

Use -f <flag> to enable a flag, or -f -<flag> to disable that flag. More info

Downloads

Maintainer's Corner

Package maintainers

For package maintainers and hackage trustees

Candidates

Versions [RSS] 0.1, 0.1.1, 0.1.1.1, 0.1.1.2, 0.1.1.3
Change log CHANGELOG.md
Dependencies base (>=4.5 && <4.14) [details]
License GPL-2.0-or-later AND BSD-3-Clause[multiple license files]
Author
Maintainer Oleg Grenrus <oleg.grenrus@iki.fi>
Category System, Concurrency
Source repo head: git clone https://github.com/phadej/lukko/
Uploaded by phadej at 2019-11-16T12:40:30Z
Distributions Arch:0.1.1.3, Fedora:0.1.1.3, LTSHaskell:0.1.1.3, NixOS:0.1.1.3, Stackage:0.1.1.3, openSUSE:0.1.1.3
Reverse Dependencies 5 direct, 12 indirect [details]
Downloads 20805 total (179 in the last 30 days)
Rating (no votes yet) [estimated by Bayesian average]
Your Rating
  • λ
  • λ
  • λ
Status Docs available [build log]
Last success reported on 2019-11-16 [all 1 reports]