1{
2 lib,
3 fetchFromGitHub,
4 buildDunePackage,
5 alcotest,
6 pkg-config,
7 dune-configurator,
8}:
9
10buildDunePackage rec {
11 pname = "bigstringaf";
12 version = "0.10.0";
13
14 minimalOCamlVersion = "4.08";
15
16 src = fetchFromGitHub {
17 owner = "inhabitedtype";
18 repo = pname;
19 tag = version;
20 hash = "sha256-p1hdB3ArOd2UX7S6YvXCFbYjEiXdMDmBaC/lFQgua7Q=";
21 };
22
23 nativeBuildInputs = [ pkg-config ];
24 buildInputs = [ dune-configurator ];
25
26 checkInputs = [ alcotest ];
27 doCheck = true;
28
29 meta = {
30 description = "Bigstring intrinsics and fast blits based on memcpy/memmove";
31 longDescription = ''
32 Bigstring intrinsics and fast blits based on memcpy/memmove
33
34 The OCaml compiler has a bunch of intrinsics for Bigstrings, but they're not
35 widely-known, sometimes misused, and so programs that use Bigstrings are slower
36 than they have to be. And even if a library got that part right and exposed the
37 intrinsics properly, the compiler doesn't have any fast blits between
38 Bigstrings and other string-like types.
39
40 So here they are. Go crazy.
41 '';
42 changelog = "https://github.com/inhabitedtype/bigstringaf/releases/tag/${version}";
43 license = lib.licenses.bsd3;
44 maintainers = [ lib.maintainers.vbgl ];
45 inherit (src.meta) homepage;
46 };
47}