1{
2 lib,
3 buildDunePackage,
4 fetchurl,
5 domain-local-await,
6 domain-local-timeout,
7 alcotest,
8 multicore-magic,
9 backoff,
10 domain_shims,
11 mdx,
12}:
13
14buildDunePackage rec {
15 pname = "kcas";
16 version = "0.7.0";
17
18 minimalOCamlVersion = "4.13.0";
19
20 src = fetchurl {
21 url = "https://github.com/ocaml-multicore/kcas/releases/download/${version}/kcas-${version}.tbz";
22 hash = "sha256-mo/otnkB79QdyVgLw1sZFfkR/Z/l15cRVfEYPPd6H5E=";
23 };
24
25 propagatedBuildInputs = [
26 domain-local-await
27 domain-local-timeout
28 multicore-magic
29 backoff
30 ];
31
32 doCheck = true;
33 nativeCheckInputs = [ mdx.bin ];
34 checkInputs = [
35 alcotest
36 domain_shims
37 mdx
38 ];
39
40 meta = {
41 homepage = "https://github.com/ocaml-multicore/kcas";
42 description = "STM based on lock-free MCAS";
43 longDescription = ''
44 A software transactional memory (STM) implementation based on an atomic lock-free multi-word compare-and-set (MCAS) algorithm enhanced with read-only compare operations and ability to block awaiting for changes.
45 '';
46 changelog = "https://raw.githubusercontent.com/ocaml-multicore/kcas/refs/tags/${version}/CHANGES.md";
47 license = lib.licenses.isc;
48 maintainers = [ lib.maintainers.vbgl ];
49 };
50}