diff --git a/benchmarks/benchmark.ml b/benchmarks/benchmark.ml index 039c561..b75e4c2 100644 --- a/benchmarks/benchmark.ml +++ b/benchmarks/benchmark.ml @@ -166,5 +166,6 @@ let () = Printf.printf "- %s\n" name); exit 1) in + Memtrace.trace_if_requested (); Command_unix.run (Bench.make_command benchmarks) ;; diff --git a/benchmarks/dune b/benchmarks/dune index ab16c7b..50d43fe 100644 --- a/benchmarks/dune +++ b/benchmarks/dune @@ -4,5 +4,13 @@ (:standard -w -58)))) (executables - (libraries re core base stdio threads core_bench core_unix.command_unix) + (libraries + re + core + base + stdio + threads + core_bench + core_unix.command_unix + memtrace) (names benchmark)) diff --git a/benchmarks/memory.ml b/benchmarks/memory.ml index 0676e39..3adc6ca 100644 --- a/benchmarks/memory.ml +++ b/benchmarks/memory.ml @@ -29,3 +29,5 @@ let benchmarks = let len = Int.min (String.length str) len in ignore (Re.execp ~pos:0 ~len re str)))) ;; + +let () = Command_unix.run (Bench.make_command benchmarks) diff --git a/flake.nix b/flake.nix index 3b15bdd..a3a05fd 100644 --- a/flake.nix +++ b/flake.nix @@ -7,23 +7,26 @@ outputs = { self, nixpkgs, flake-utils }: flake-utils.lib.eachDefaultSystem (system: let - pkgs = nixpkgs.legacyPackages."${system}"; - extraBuildInputs = [ pkgs.ocamlPackages.core_bench ]; - checkInputs = with pkgs.ocamlPackages; [ - ounit - js_of_ocaml - ppx_expect - pkgs.nodejs-slim - ]; - devInputs = with pkgs.ocamlPackages; [ - ocaml-lsp - pkgs.ocamlformat_0_26_2 - ]; - inherit (pkgs.ocamlPackages) buildDunePackage; - in rec { - packages = rec { + extraBuildInputs = pkgs: + with pkgs.ocamlPackages; [ + core_bench + memtrace + ]; + checkInputs = pkgs: + with pkgs.ocamlPackages; [ + ounit + js_of_ocaml + ppx_expect + pkgs.nodejs-slim + ]; + devInputs = pkgs: + with pkgs.ocamlPackages; [ + ocaml-lsp + pkgs.ocamlformat_0_26_2 + ]; + makePackages = pkgs: rec { default = re; - re = buildDunePackage { + re = pkgs.ocamlPackages.buildDunePackage { pname = "re"; version = "n/a"; src = ./.; @@ -34,13 +37,33 @@ doCheck = true; }; }; - devShells.test = pkgs.mkShell { + ocamlVersionOverlay = + (ocaml: self: super: { ocamlPackages = ocaml super.ocaml-ng; }); + makeNixpkgs = ocaml: + nixpkgs.legacyPackages.${system}.appendOverlays [ (ocamlVersionOverlay ocaml) ]; + in rec { + # packages = makePackages pkgs; + devShells.test = let + pkgs = makeNixpkgs (ocaml: ocaml.ocamlPackages_5_2); + packages = makePackages pkgs; + in pkgs.mkShell { + inputsFrom = pkgs.lib.attrValues packages; + buildInputs = extraBuildInputs pkgs ++ checkInputs pkgs; + }; + devShells.default = let + pkgs = makeNixpkgs (ocaml: ocaml.ocamlPackages_5_2); + packages = makePackages pkgs; + in pkgs.mkShell { inputsFrom = pkgs.lib.attrValues packages; - buildInputs = extraBuildInputs ++ checkInputs; + buildInputs = extraBuildInputs pkgs ++ devInputs pkgs; }; - devShells.default = pkgs.mkShell { + devShells.memtrace = let + pkgs = makeNixpkgs (ocaml: ocaml.ocamlPackages_4_14); + packages = makePackages pkgs; + in pkgs.mkShell { inputsFrom = pkgs.lib.attrValues packages; - buildInputs = extraBuildInputs ++ devInputs; + buildInputs = extraBuildInputs pkgs + ++ [ pkgs.ocamlPackages.memtrace_viewer ]; }; }); }