git.delta.rocks / jrsonnet / refs/commits / 30b370ee222a

difftreelog

fix off-by-one in std.range

Yaroslav Bolyukin2022-11-20parent: #f7dfa48.patch.diff
in: master

7 files changed

modifiedcrates/jrsonnet-evaluator/src/val.rsdiffbeforeafterboth
--- a/crates/jrsonnet-evaluator/src/val.rs
+++ b/crates/jrsonnet-evaluator/src/val.rs
@@ -347,7 +347,7 @@
 			}
 			Self::Range(a, b) => {
 				let mut out = Vec::with_capacity(self.len());
-				for i in *a..*b {
+				for i in *a..=*b {
 					out.push(Val::Num(f64::from(i)));
 				}
 				Cc::new(out)
modifiedflake.nixdiffbeforeafterboth
before · flake.nix
1{2  description = "Jrsonnet";3  inputs = {4    nixpkgs.url = "github:nixos/nixpkgs";5    flake-utils.url = "github:numtide/flake-utils";6    rust-overlay.url = "github:oxalica/rust-overlay";7  };8  outputs = { nixpkgs, flake-utils, rust-overlay, ... }:9    flake-utils.lib.eachDefaultSystem (system:10      let11        pkgs = import nixpkgs {12          inherit system;13          overlays = [ rust-overlay.overlays.default ];14        };15        rust = ((pkgs.rustChannelOf { date = "2022-11-10"; channel = "nightly"; }).default.override {16          extensions = [ "rust-src" "miri" ];17        });18      in19      rec {20        devShell = pkgs.mkShell {21          nativeBuildInputs = with pkgs;[22            rust23            cargo-edit24            lld25            hyperfine26            go-jsonnet27            valgrind28          ];29        };30      }31    );32}
after · flake.nix
1{2  description = "Jrsonnet";3  inputs = {4    nixpkgs.url = "github:nixos/nixpkgs";5    flake-utils.url = "github:numtide/flake-utils";6    rust-overlay.url = "github:oxalica/rust-overlay";7  };8  outputs = { nixpkgs, flake-utils, rust-overlay, ... }:9    flake-utils.lib.eachDefaultSystem (system:10      let11        pkgs = import nixpkgs {12          inherit system;13          overlays = [ rust-overlay.overlays.default ];14        };15        rust = ((pkgs.rustChannelOf { date = "2022-11-10"; channel = "nightly"; }).default.override {16          extensions = [ "rust-src" "miri" ];17        });18      in19      rec {20        packages = rec {21          go-jsonnet = pkgs.callPackage ./nix/go-jsonnet.nix { };22          sjsonnet = pkgs.callPackage ./nix/sjsonnet.nix { };23          jsonnet = pkgs.callPackage ./nix/jsonnet.nix { };24          # I didn't managed to build it, and nixpkgs version is marked as broken25          # haskell-jsonnet = pkgs.callPackage ./nix/haskell-jsonnet.nix { };26          jrsonnet = pkgs.callPackage ./nix/jrsonnet.nix {27            rustPlatform = pkgs.makeRustPlatform {28              rustc = rust;29              cargo = rust;30            };31          };3233          benchmarks = pkgs.callPackage ./nix/benchmarks.nix {34            inherit go-jsonnet sjsonnet jsonnet jrsonnet;35          };36        };37        devShell = pkgs.mkShell {38          nativeBuildInputs = with pkgs;[39            rust40            cargo-edit41            lld42            hyperfine43            valgrind44          ];45        };46      }47    );48}
addednix/benchmarks.nixdiffbeforeafterboth
--- /dev/null
+++ b/nix/benchmarks.nix
@@ -0,0 +1,9 @@
+{ stdenv, jrsonnet, go-jsonnet, sjsonnet, jsonnet, hyperfine }:
+
+stdenv.mkDerivation {
+  name = "benchmarks";
+  __impure = true;
+  unpackPhase = "true";
+
+  installPhase = "touch $out";
+}
addednix/go-jsonnet.nixdiffbeforeafterboth
--- /dev/null
+++ b/nix/go-jsonnet.nix
@@ -0,0 +1,24 @@
+{ lib, buildGo119Module, fetchFromGitHub }:
+
+buildGo119Module rec {
+  pname = "go-jsonnet";
+  # Latest release is broken: https://github.com/google/go-jsonnet/issues/653
+  version = "b4633b66f85e069b105b1ff076d178e4354941bc";
+
+  src = fetchFromGitHub {
+    owner = "google";
+    repo = "go-jsonnet";
+    rev = "${version}";
+    hash = "sha256-J+bGdbYo2Ch3ORYD57yJA4jiPiS8IYASZ6kJHhyaqeU=";
+  };
+
+  vendorHash = "sha256-j1fTOUpLx34TgzW94A/BctLrg9XoTtb3cBizhVJoEEI=";
+
+  postInstall = ''
+    mv $out/bin/jsonnet $out/bin/go-jsonnet
+  '';
+
+  doCheck = false;
+
+  subPackages = [ "cmd/jsonnet" ];
+}
addednix/jrsonnet.nixdiffbeforeafterboth
--- /dev/null
+++ b/nix/jrsonnet.nix
@@ -0,0 +1,24 @@
+{ lib, fetchFromGitHub, rustPlatform }:
+
+let
+  jsonnet = fetchFromGitHub {
+    rev = "v${version}";
+    owner = "google";
+    repo = "jsonnet";
+    hash = "sha256-q1MNdbyrx4vvN5woe0o90pPqaNtsZjI5RQ7KJt7rOpU=";
+  };
+in
+
+rustPlatform.buildRustPackage rec {
+  pname = "jrsonnet";
+  version = "git";
+
+  src = ./..;
+
+  cargoTestFlags = [ "--package=jrsonnet" ];
+  cargoBuildFlags = [ "--package=jrsonnet" ];
+
+  cargoLock = {
+    lockFile = ../Cargo.lock;
+  };
+}
addednix/jsonnet.nixdiffbeforeafterboth
--- /dev/null
+++ b/nix/jsonnet.nix
@@ -0,0 +1,22 @@
+{ stdenv, lib, jekyll, fetchFromGitHub }:
+
+stdenv.mkDerivation rec {
+  pname = "jsonnet";
+  version = "0.19.1";
+
+  src = fetchFromGitHub {
+    rev = "v${version}";
+    owner = "google";
+    repo = "jsonnet";
+    hash = "sha256-q1MNdbyrx4vvN5woe0o90pPqaNtsZjI5RQ7KJt7rOpU=";
+  };
+
+  makeFlags = [
+    "jsonnet"
+  ];
+
+  installPhase = ''
+    mkdir -p $out/bin
+    cp jsonnet $out/bin/jsonnet
+  '';
+}
addednix/sjsonnet.nixdiffbeforeafterboth
--- /dev/null
+++ b/nix/sjsonnet.nix
@@ -0,0 +1,30 @@
+# This derivation uses released sjsonnet binary, which most users will use
+
+# However, recommended way of using sjsonnet - is using a client-server model,
+# for which there is no released binaries: https://github.com/databricks/sjsonnet/issues/51
+
+# TODO: Somehow build client-server version of sjsonnet, and use it in benchmarks
+
+{ stdenv, lib, fetchurl, jdk17, makeWrapper }:
+
+stdenv.mkDerivation {
+  pname = "sjsonnet";
+  version = "0.4.3";
+
+  src = fetchurl {
+    url =
+      "https://github.com/databricks/sjsonnet/releases/download/0.4.3/sjsonnet.jar";
+    hash = "sha256-XDJAAAlFu1DfQ2YlGEO8OpWpwxzG83tHlCQIDiqfRGY=";
+  };
+
+  unpackPhase = "true";
+  buildInputs =
+    [ jdk17 makeWrapper ];
+
+  installPhase = ''
+    mkdir -p $out/bin $out/lib
+    cp $src $out/lib/sjsonnet.jar
+    makeWrapper ${jdk17}/bin/java $out/bin/sjsonnet --add-flags "-Xss100m -XX:+UseStringDeduplication -jar $out/lib/sjsonnet.jar"
+  '';
+  separateDebugInfo = false;
+}