diff --git a/pkgs/development/ocaml-modules/reperf/default.nix b/pkgs/development/ocaml-modules/reperf/default.nix new file mode 100644 index 000000000000..bcae9dc695cf --- /dev/null +++ b/pkgs/development/ocaml-modules/reperf/default.nix @@ -0,0 +1,41 @@ +{ buildDunePackage, fetchFromGitHub, lib, printbox-text, reason }: + +buildDunePackage rec { + pname = "reperf"; + version = "1.5.1"; + + src = fetchFromGitHub { + owner = "bryphe"; + repo = "reperf"; + rev = "68ef2f96899c09e6ac7d929b0375f7a806aee067"; + sha256 = "sha256-ASujTsH4eDAYLNalB9Xt1p3C8x+FI0kMldZBYaXMCWc="; + }; + + postPatch = '' + substituteInPlace src/dune --replace "printbox" "printbox-text" + ''; + + nativeBuildInputs = [ reason ]; + + buildInputs = [ + printbox-text + ]; + + meta = with lib; { + description = "Native Reason + JSOO cross-platform performance benchmarking tools"; + longDescription = '' + Inspired by the core_bench tools from Janestreet. + + reperf helps with: + * Timing: time spent in a code block + * Call count: frequency of code-path calls + * Allocations: code-block impact to garbage collector + + Supports benchmarks, which are test cases that exercise performance scenarios. + Outputs a JSON performance report, and compare it with previous iterations - and fail if a regression is detected. + ''; + homepage = "https://github.com/bryphe/reperf"; + maintainers = with maintainers; [ superherointj ]; + license = licenses.mit; + }; +} diff --git a/pkgs/top-level/ocaml-packages.nix b/pkgs/top-level/ocaml-packages.nix index 4601739d4fef..138cf3ca8578 100644 --- a/pkgs/top-level/ocaml-packages.nix +++ b/pkgs/top-level/ocaml-packages.nix @@ -1268,6 +1268,8 @@ let rebez = callPackage ../development/ocaml-modules/rebez { }; + reperf = callPackage ../development/ocaml-modules/reperf { }; + rfc7748 = callPackage ../development/ocaml-modules/rfc7748 { }; ezresto = callPackage ../development/ocaml-modules/resto/ezresto.nix { };