difftreelog
fix off-by-one in std.range
in: master
7 files changed
crates/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)
flake.nixdiffbeforeafterboth17 });17 });18 in18 in19 rec {19 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 };20 devShell = pkgs.mkShell {37 devShell = pkgs.mkShell {21 nativeBuildInputs = with pkgs;[38 nativeBuildInputs = with pkgs;[22 rust39 rust23 cargo-edit40 cargo-edit24 lld41 lld25 hyperfine42 hyperfine26 go-jsonnet27 valgrind43 valgrind28 ];44 ];29 };45 };nix/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";
+}
nix/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" ];
+}
nix/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;
+ };
+}
nix/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
+ '';
+}
nix/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;
+}