difftreelog
ci update jsonnet impls
in: master
6 files changed
crates/jrsonnet-ir-parser/src/lib.rsdiffbeforeafterboth304 None304 None305 };305 };306 let step = if p.try_eat(T![:]) {306 let step = if p.try_eat(T![:]) {307 if !p.at(T![']']) {307 if p.at(T![']']) {308 Some(spanned(p, expr)?)309 } else {310 None308 None309 } else {310 Some(spanned(p, expr)?)311 }311 }312 } else {312 } else {nix/benchmarks.nixdiffbeforeafterboth15}:15}:16with lib; let16with lib;17let17 jsonnetBench = fetchFromGitHub {18 inherit (cpp-jsonnet) jsonnetBench;18 rev = "v0.19.1";19 owner = "google";20 repo = "jsonnet";21 hash = "sha256-q1MNdbyrx4vvN5woe0o90pPqaNtsZjI5RQ7KJt7rOpU=";22 };23 goJsonnetBench =24 (fetchFromGitHub {19 inherit (go-jsonnet) goJsonnetBench;25 owner = "google";26 repo = "go-jsonnet";27 rev = "v0.19.1";28 hash = "sha256-FgQYnas0qkIedRAA8ApZXLzEylg6PS6+8zzl7j+yOeI=";29 })30 + "/builtin-benchmarks";31 graalvmBench = fetchFromGitHub {20 graalvmBench = fetchFromGitHub {32 owner = "oracle";21 owner = "oracle";33 repo = "graal";22 repo = "graal";48 outputHashMode = "recursive";38 outputHashMode = "recursive";49 buildInputs = [cacert];39 buildInputs = [ cacert ];50 }40 }51 ''41 ''52 mkdir -p $out42 mkdir -p $out53 cp -r ${src}/* $out/43 cp -r ${src}/* $out/54 cd $out44 cd $out55 chmod u+w jsonnetfile.lock.json45 chmod u+w jsonnetfile.lock.json56 mkdir vendor46 mkdir vendor57 ${jsonnet-bundler}/bin/jb install47 ${jsonnet-bundler}/bin/jb install58 '';48 '';594960 # Removes outsiders from the output50 # Removes outsiders from the output61 # Useful when comparing performance of different jrsonnet releases51 # Useful when comparing performance of different jrsonnet releases89 skipCpp ? "",78 skipCpp ? "",90 skipGo ? "",79 skipGo ? "",91 vendor ? "",80 vendor ? "",92 }: ''81 }:82 ''93 echo >> $out83 echo >> $out94 echo "### ${name}" >> $out84 echo "### ${name}" >> $out95 echo >> $out85 echo >> $out96 ${optionalString (skipRustAlternative != "") ''86 ${optionalString (skipRustAlternative != "") ''97 echo "> Note: No results for Rust (alternative), ${skipRustAlternative}" >> $out87 echo "> Note: No results for Rust (alternative), ${skipRustAlternative}" >> $out98 echo >> $out88 echo >> $out99 ''}89 ''}100 ${optionalString (skipGo != "") ''90 ${optionalString (skipGo != "") ''101 echo "> Note: No results for Go, ${skipGo}" >> $out91 echo "> Note: No results for Go, ${skipGo}" >> $out102 echo >> $out92 echo >> $out103 ''}93 ''}104 ${optionalString (skipScala != "") ''94 ${optionalString (skipScala != "") ''105 echo "> Note: No results for Scala, ${skipScala}" >> $out95 echo "> Note: No results for Scala/Scala (native)/Scala (GraalVM), ${skipScala}" >> $out106 echo >> $out96 echo >> $out107 ''}97 ''}108 ${optionalString (skipCpp != "") ''98 ${optionalString (skipCpp != "") ''109 echo "> Note: No results for C++, ${skipCpp}" >> $out99 echo "> Note: No results for C++, ${skipCpp}" >> $out110 echo >> $out100 echo >> $out111 ''}101 ''}112 ${optionalString (!quick && !omitSource) ''102 ${optionalString (!quick && !omitSource) ''113 echo "<details>" >> $out103 echo "<details>" >> $out114 echo "<summary>Source</summary>" >> $out104 echo "<summary>Source</summary>" >> $out115 echo >> $out105 echo >> $out116 echo "\`\`\`jsonnet" >> $out106 echo "\`\`\`jsonnet" >> $out117 ${optionalString pathIsGenerator "echo \"// Generator source\" >> $out"}107 ${optionalString pathIsGenerator "echo \"// Generator source\" >> $out"}118 cat ${path} >> $out108 cat ${path} >> $out119 echo >> $out109 echo >> $out120 echo "\`\`\`" >> $out110 echo "\`\`\`" >> $out121 echo "</details>" >> $out111 echo "</details>" >> $out122 echo >> $out112 echo >> $out123 ''}113 ''}124 path=${path}114 path=${path}125 ${optionalString pathIsGenerator ''115 ${optionalString pathIsGenerator ''126 go-jsonnet $path > generated.jsonnet116 go-jsonnet $path > generated.jsonnet127 path=generated.jsonnet117 path=generated.jsonnet128 ''}118 ''}129 hyperfine -N -w4 -m20 --output=pipe --style=basic --export-asciidoc result.adoc \119 hyperfine -N -w4 -m20 --output=pipe --style=basic --export-asciidoc result.adoc \130 ${concatStringsSep " " (forEach jrsonnetVariants (120 ${121 concatStringsSep " " (122 forEach jrsonnetVariants (131 variant: "\"${variant.drv}/bin/jrsonnet $path${optionalString (vendor != "") " -J${vendor}"}\" -n \"Rust${123 variant:124 "\"${variant.drv}/bin/jrsonnet $path${optionalString (vendor != "") " -J${vendor}"}\" -n \"Rust${132 if variant.name != ""125 if variant.name != "" then " (${variant.name})" else ""133 then " (${variant.name})"126 }\""134 else ""127 )135 }\""128 )136 ))} \129 } \137 ${optionalString (skipRustAlternative == "") "\"rsjsonnet $path${optionalString (vendor != "") " -J ${vendor}"}\" -n \"Rust (alternative, rsjsonnet)\""} \130 ${131 optionalString (skipRustAlternative == "")132 "\"rsjsonnet $path${133 optionalString (vendor != "") " -J ${vendor}"134 }\" -n \"Rust (alternative, rsjsonnet)\""135 } \138 ${optionalString (skipGo == "") "\"go-jsonnet $path${optionalString (vendor != "") " -J ${vendor}"}\" -n \"Go\""} \136 ${137 optionalString (skipGo == "")138 "\"go-jsonnet $path${optionalString (vendor != "") " -J ${vendor}"}\" -n \"Go\""139 } \139 ${optionalString (skipScala == "") "\"sjsonnet $path${optionalString (vendor != "") " -J ${vendor}"}\" -n \"Scala\""} \140 ${141 optionalString (skipScala == "")142 "\"sjsonnet $path${optionalString (vendor != "") " -J ${vendor}"}\" -n \"Scala\""143 } \140 ${optionalString (skipCpp == "") "\"jsonnet $path${optionalString (vendor != "") " -J ${vendor}"}\" -n \"C++\""}144 ${145 optionalString (skipScala == "")146 "\"sjsonnet-native $path${optionalString (vendor != "") " -J ${vendor}"}\" -n \"Scala (native)\""147 } \148 ${149 optionalString (skipScala == "")150 "\"sjsonnet-graalvm $path${optionalString (vendor != "") " -J ${vendor}"}\" -n \"Scala (GraalVM)\""151 } \152 ${optionalString (skipCpp == "")153 "\"jsonnet $path${optionalString (vendor != "") " -J ${vendor}"}\" -n \"C++\""154 }141 cat result.adoc >> $out155 cat result.adoc >> $out142 '';156 '';143 in ''157 in158 ''144 set -oux159 set -oux145160146 temp=$(mktemp -d)161 temp=$(mktemp -d)147 cd $temp162 cd $temp148163149 touch $out164 touch $out150 ${optionalString (!quick) ''165 ${optionalString (!quick) ''151 cat ${./benchmarks.md} >> $out166 cat ${./benchmarks.md} >> $out152 echo >> $out167 echo >> $out153168154 echo "<details>" >> $out169 echo "<details>" >> $out155 echo "<summary>Tested versions</summary>" >> $out170 echo "<summary>Tested versions</summary>" >> $out156 echo >> $out171 echo >> $out157 echo Go: $(go-jsonnet --version) >> $out172 echo Go: $(go-jsonnet --version) >> $out158 echo >> $out173 echo >> $out159 echo "\`\`\`" >> $out174 echo "\`\`\`" >> $out160 go-jsonnet --help >> $out175 go-jsonnet --help >> $out161 echo "\`\`\`" >> $out176 echo "\`\`\`" >> $out162 echo >> $out177 echo >> $out163 echo C++: $(jsonnet --version) >> $out178 echo C++: $(jsonnet --version) >> $out164 echo >> $out179 echo >> $out165 echo "\`\`\`" >> $out180 echo "\`\`\`" >> $out166 jsonnet --help >> $out181 jsonnet --help >> $out167 echo "\`\`\`" >> $out182 echo "\`\`\`" >> $out168 echo >> $out183 echo >> $out169 echo Scala: >> $out184 echo Scala: >> $out170 echo >> $out185 echo >> $out171 echo "\`\`\`" >> $out186 echo "\`\`\`" >> $out172 sjsonnet 2>> $out || true187 sjsonnet 2>> $out || true173 echo "\`\`\`" >> $out188 echo "\`\`\`" >> $out174 echo >> $out189 echo >> $out175 echo "Rust (alternative):" >> $out190 echo "Scala (native):" >> $out191 echo >> $out192 echo "\`\`\`" >> $out193 sjsonnet-native 2>> $out || true194 echo "\`\`\`" >> $out195 echo >> $out196 echo "Scala (GraalVM):" >> $out197 echo >> $out198 echo "\`\`\`" >> $out199 sjsonnet-graalvm 2>> $out || true200 echo "\`\`\`" >> $out201 echo >> $out202 echo "Rust (alternative):" >> $out176 echo >> $out203 echo >> $out177 echo "\`\`\`" >> $out204 echo "\`\`\`" >> $out178 rsjsonnet --help 2>> $out || true205 rsjsonnet --help 2>> $out || true179 echo "\`\`\`" >> $out206 echo "\`\`\`" >> $out180 echo >> $out207 echo >> $out181 echo "</details>" >> $out208 echo "</details>" >> $out182 echo >> $out209 echo >> $out183210184 echo >> $out211 echo >> $out185 ''}212 ''}186 echo "## Real world" >> $out213 echo "## Real world" >> $out187 ${mkBench {214 ${mkBench {188 name = "Graalvm CI";215 name = "Graalvm CI";189 path = "${graalvmBench}/ci.jsonnet";216 path = "${graalvmBench}/ci.jsonnet";190 skipCpp = "takes longer than a hour";217 omitSource = true;218 skipCpp = "takes longer than a hour";191 skipGo = skipSlow;219 skipGo = skipSlow;192 skipScala = skipSlow;220 skipScala = skipSlow;193 }}221 }}194 ${mkBench {222 ${mkBench {195 name = "Kube-prometheus manifests";223 name = "Kube-prometheus manifests";196 vendor = "${kubePrometheusBench}/vendor";224 vendor = "${kubePrometheusBench}/vendor";197 path = "${kubePrometheusBench}/example.jsonnet";225 path = "${kubePrometheusBench}/example.jsonnet";198 skipCpp = skipSlow;226 omitSource = true;227 skipCpp = "too slow, takes hours, skews results";199 skipGo = skipSlow;228 skipGo = skipSlow;200 skipScala = skipSlow;229 skipScala = skipSlow;201 }}230 }}202231203 echo >> $out232 echo >> $out204 echo "## Benchmarks from C++ jsonnet (/perf_tests)" >> $out233 echo "## Benchmarks from C++ jsonnet (/perf_tests)" >> $out205 ${mkBench {234 ${mkBench {206 name = "Large string join";235 name = "Large string join";207 path = "${jsonnetBench}/perf_tests/large_string_join.jsonnet";236 path = "${jsonnetBench}/perf_tests/large_string_join.jsonnet";208 skipScala = skipSlow;237 skipScala = skipSlow;209 }}238 }}210 ${mkBench {239 ${mkBench {211 name = "Large string template";240 name = "Large string template";212 omitSource = true;241 omitSource = true;213 path = "${jsonnetBench}/perf_tests/large_string_template.jsonnet";242 path = "${jsonnetBench}/perf_tests/large_string_template.jsonnet";214 skipGo = "fails with os stack size exhausion";243 skipGo = "fails with os stack size exhausion";215 skipCpp = skipSlow;244 skipCpp = "too slow, takes hours, skews results";216 skipScala = skipSlow;245 skipScala = skipSlow;217 }}246 }}218 ${mkBench {247 ${mkBench {219 name = "Realistic 1";248 name = "Realistic 1";220 path = "${jsonnetBench}/perf_tests/realistic1.jsonnet";249 path = "${jsonnetBench}/perf_tests/realistic1.jsonnet";221 skipGo = skipSlow;250 skipGo = skipSlow;222 skipCpp = skipSlow;251 skipCpp = "too slow, takes hours, skews results";223 skipScala = skipSlow;252 skipScala = skipSlow;224 }}253 }}225 ${mkBench {254 ${mkBench {226 name = "Realistic 2";255 name = "Realistic 2";227 path = "${jsonnetBench}/perf_tests/realistic2.jsonnet";256 path = "${jsonnetBench}/perf_tests/realistic2.jsonnet";228 skipGo = skipSlow;257 skipGo = skipSlow;229 skipCpp = skipSlow;258 skipCpp = "too slow, takes hours, skews results";230 skipScala = skipSlow;259 skipScala = skipSlow;231 }}260 }}232261233 echo >> $out262 echo >> $out234 echo "## Benchmarks from C++ jsonnet (/benchmarks)" >> $out263 echo "## Benchmarks from C++ jsonnet (/benchmarks)" >> $out235 ${mkBench {264 ${mkBench {236 name = "Tail call";265 name = "Tail call";237 path = "${jsonnetBench}/benchmarks/bench.01.jsonnet";266 path = "${jsonnetBench}/benchmarks/bench.01.jsonnet";238 skipScala = skipSlow;267 skipScala = skipSlow;239 }}268 }}240 ${mkBench {269 ${mkBench {241 name = "Inheritance recursion";270 name = "Inheritance recursion";242 path = "${jsonnetBench}/benchmarks/bench.02.jsonnet";271 path = "${jsonnetBench}/benchmarks/bench.02.jsonnet";243 skipCpp = skipSlow;272 skipCpp = skipSlow;244 skipGo = skipSlow;273 skipGo = skipSlow;245 }}274 }}246 ${mkBench {275 ${mkBench {247 name = "Simple recursive call";276 name = "Simple recursive call";248 path = "${jsonnetBench}/benchmarks/bench.03.jsonnet";277 path = "${jsonnetBench}/benchmarks/bench.03.jsonnet";249 skipScala = skipSlow;278 skipScala = skipSlow;250 skipGo = skipSlow;279 skipGo = skipSlow;251 }}280 }}252 ${mkBench {281 ${mkBench {253 name = "Foldl string concat";282 name = "Foldl string concat";254 path = "${jsonnetBench}/benchmarks/bench.04.jsonnet";283 path = "${jsonnetBench}/benchmarks/bench.04.jsonnet";255 skipCpp = skipSlow;284 skipCpp = skipSlow;256 skipScala = skipSlow;285 skipScala = skipSlow;257 }}286 }}258 ${mkBench {287 ${mkBench {259 name = "Array sorts";288 name = "Array sorts";260 path = "${jsonnetBench}/benchmarks/bench.06.jsonnet";289 path = "${jsonnetBench}/benchmarks/bench.06.jsonnet";261 skipCpp = skipSlow;290 skipCpp = skipSlow;262 # std.assertEqual(reverse(std.range(1, 1000)), sort(std.range(1, 1000), keyF=function(x) -x))291 }}263 skipScala = "sjsonnet doesn't support keyF in std.sort: https://github.com/databricks/sjsonnet/issues/204";264 }}292 ${mkBench {265 ${mkBench {293 name = "Lazy array";266 name = "Lazy array";294 path = "${jsonnetBench}/benchmarks/bench.07.jsonnet";267 path = "${jsonnetBench}/benchmarks/bench.07.jsonnet";295 skipGo = skipSlow;268 skipGo = skipSlow;296 skipScala = skipSlow;269 skipScala = skipSlow;297 }}270 }}298 ${mkBench {271 ${mkBench {299 name = "Inheritance function recursion";272 name = "Inheritance function recursion";300 path = "${jsonnetBench}/benchmarks/bench.08.jsonnet";273 path = "${jsonnetBench}/benchmarks/bench.08.jsonnet";301 skipCpp = skipSlow;274 skipCpp = skipSlow;302 skipScala = skipSlow;275 skipScala = skipSlow;303 }}276 }}304 ${mkBench {277 ${mkBench {305 name = "String strips";278 name = "String strips";306 path = "${jsonnetBench}/benchmarks/bench.09.jsonnet";279 path = "${jsonnetBench}/benchmarks/bench.09.jsonnet";307 skipCpp = "too slow, takes hours, skews results";280 skipCpp = skipSlow;308 skipScala = skipSlow;281 skipScala = skipSlow;309 }}282 }}310 ${mkBench {283 ${mkBench {311 name = "Big object";284 name = "Big object";312 path = "${jsonnetBench}/benchmarks/gen_big_object.jsonnet";285 path = "${jsonnetBench}/benchmarks/gen_big_object.jsonnet";313 pathIsGenerator = true;286 pathIsGenerator = true;314 skipScala = skipSlow;287 skipScala = skipSlow;315 }}288 }}316289317 echo >> $out290 echo >> $out318 echo "## Benchmarks from Go jsonnet (builtins)" >> $out291 echo "## Benchmarks from Go jsonnet (builtins)" >> $out319 ${mkBench {292 ${mkBench {320 name = "std.base64";293 name = "std.base64";321 path = "${goJsonnetBench}/base64.jsonnet";294 path = "${goJsonnetBench}/base64.jsonnet";322 skipRustAlternative = skipSlow;295 skipRustAlternative = skipSlow;323 skipCpp = "too slow, takes hours, skews results";296 skipCpp = skipSlow;324 skipScala = skipSlow;297 skipScala = skipSlow;325 }}298 }}326 ${mkBench {299 ${mkBench {327 name = "std.base64Decode";300 name = "std.base64Decode";328 path = "${goJsonnetBench}/base64Decode.jsonnet";301 path = "${goJsonnetBench}/base64Decode.jsonnet";329 skipRustAlternative = skipSlow;302 skipRustAlternative = skipSlow;330 skipCpp = skipSlow;303 skipCpp = skipSlow;331 skipScala = skipSlow;304 skipScala = skipSlow;332 }}305 }}333 ${mkBench {306 ${mkBench {334 name = "std.base64DecodeBytes";307 name = "std.base64DecodeBytes";335 path = "${goJsonnetBench}/base64DecodeBytes.jsonnet";308 path = "${goJsonnetBench}/base64DecodeBytes.jsonnet";336 skipRustAlternative = skipSlow;309 skipRustAlternative = skipSlow;337 skipCpp = skipSlow;310 skipCpp = skipSlow;338 skipGo = skipSlow;311 skipGo = skipSlow;339 skipScala = skipSlow;312 skipScala = skipSlow;340 }}313 }}341 ${mkBench {314 ${mkBench {342 name = "std.base64 (byte array)";315 name = "std.base64 (byte array)";343 path = "${goJsonnetBench}/base64_byte_array.jsonnet";316 path = "${goJsonnetBench}/base64_byte_array.jsonnet";344 skipRustAlternative = skipSlow;317 skipRustAlternative = skipSlow;345 skipCpp = skipSlow;318 skipCpp = skipSlow;346 skipGo = skipSlow;319 skipGo = skipSlow;347 skipScala = skipSlow;320 skipScala = skipSlow;348 }}321 }}349 ${mkBench {322 ${mkBench {350 name = "std.foldl";323 name = "std.foldl";351 path = "${goJsonnetBench}/foldl.jsonnet";324 path = "${goJsonnetBench}/foldl.jsonnet";352 skipScala = skipSlow;325 skipScala = skipSlow;353 }}326 }}354 ${mkBench {327 ${mkBench {355 name = "std.manifestJsonEx";328 name = "std.manifestJsonEx";356 path = "${goJsonnetBench}/manifestJsonEx.jsonnet";329 path = "${goJsonnetBench}/manifestJsonEx.jsonnet";357 skipScala = skipSlow;330 skipScala = skipSlow;358 skipCpp = skipSlow;331 skipCpp = skipSlow;359 }}332 }}360 ${mkBench {333 ${mkBench {361 name = "std.manifestTomlEx";334 name = "std.manifestTomlEx";362 path = "${goJsonnetBench}/manifestTomlEx.jsonnet";335 path = "${goJsonnetBench}/manifestTomlEx.jsonnet";363 skipCpp = skipSlow;336 skipScala = "std.manifestTomlEx is not implemented: https://github.com/databricks/sjsonnet/issues/111";337 skipCpp = skipSlow;364 }}338 }}365 ${mkBench {339 ${mkBench {366 name = "std.parseInt";340 name = "std.parseInt";367 path = "${goJsonnetBench}/parseInt.jsonnet";341 path = "${goJsonnetBench}/parseInt.jsonnet";368 skipScala = skipSlow;342 skipScala = skipSlow;369 skipCpp = skipSlow;343 skipCpp = skipSlow;370 }}344 }}371 ${mkBench {345 ${mkBench {372 name = "std.reverse";346 name = "std.reverse";373 path = "${goJsonnetBench}/reverse.jsonnet";347 path = "${goJsonnetBench}/reverse.jsonnet";374 skipCpp = skipSlow;348 skipCpp = skipSlow;375 skipGo = skipSlow;349 skipGo = skipSlow;376 }}350 }}377 ${mkBench {351 ${mkBench {378 name = "std.substr";352 name = "std.substr";379 path = "${goJsonnetBench}/substr.jsonnet";353 path = "${goJsonnetBench}/substr.jsonnet";380 skipScala = skipSlow;354 skipScala = skipSlow;381 }}355 }}382 ${mkBench {356 ${mkBench {383 name = "Comparsion for array";357 name = "Comparsion for array";384 path = "${goJsonnetBench}/comparison.jsonnet";358 path = "${goJsonnetBench}/comparison.jsonnet";385 skipCpp = "too slow, takes hours, skews results";359 skipScala = "array comparsion is not implemented";360 skipCpp = skipSlow;386 }}361 }}387 ${mkBench {362 ${mkBench {388 name = "Comparsion for primitives";363 name = "Comparsion for primitives";389 path = "${goJsonnetBench}/comparison2.jsonnet";364 path = "${goJsonnetBench}/comparison2.jsonnet";390 skipRustAlternative = skipSlow;365 skipRustAlternative = skipSlow;391 skipCpp = "can't run: uses up to 192GB of RAM";366 skipCpp = "can't run: uses up to 192GB of RAM";392 skipGo = skipSlow;367 skipGo = skipSlow;393 skipScala = skipSlow;368 skipScala = skipSlow;394 }}369 }}395 '';370 '';371 }396}372397nix/cpp-jsonnet.nixdiffbeforeafterboth5}:5}:6let6let7 pname = "cpp-jsonnet";7 pname = "cpp-jsonnet";8 version = "0.21.0";8 version = "2026-03-23";9 src = fetchFromGitHub {9 src = fetchFromGitHub {10 rev = "v${version}";10 rev = "d33798d495d50df427dac0dc6934220e366976fb";11 owner = "google";11 owner = "google";12 repo = "jsonnet";12 repo = "jsonnet";13 hash = "sha256-QHp0DOu/pqcgN7di219cHzfFb7fWtdGGE6J1ZXgbOGQ=";13 hash = "sha256-fpXaYK6WKpXQ0/VbHHsE8ZR/0VpJHmFul/3a6HzBa5o=";14 };14 };15in15in16stdenv.mkDerivation {16stdenv.mkDerivation {303031 passthru = { inherit src; };31 passthru = {32 inherit src;33 jsonnetBench = src;34 };32}35}3336nix/go-jsonnet.nixdiffbeforeafterboth5}:5}:6let6let7 pname = "go-jsonnet";7 pname = "go-jsonnet";8 version = "0.21.0";8 version = "2026-03-23";9 src = fetchFromGitHub {9 src = fetchFromGitHub {10 owner = "google";10 owner = "google";11 repo = pname;11 repo = pname;12 rev = "v${version}";12 rev = "b5ef4cd9c4e24f2f14a68ef3bda0ca3079e11e78";13 hash = "sha256-J92xNDpCidbiSsN6NveS6BX6Tx+qDQqkgm6pjk1wBTQ=";13 hash = "sha256-htC8671r74E26J42eubcFL4lPOURIdSK0P7GjZOWhao=";14 };14 };15in15in16buildGoModule {16buildGoModule {17 inherit pname version src;17 inherit pname version src;181819 vendorHash = "sha256-Uh2rAXdye9QmmZuEqx1qeokE9Z9domyHsSFlU7YZsZw=";19 vendorHash = "sha256-uFCvMmiZVaRYhaORI92W0pkDjDZNiWIcop70FssJiZo=";202021 buildInputs = [ makeWrapper ];21 buildInputs = [ makeWrapper ];2222272728 passthru = { inherit src; };28 passthru = {29 inherit src;30 goJsonnetBench = src + "/builtin-benchmarks";31 };293230 doCheck = false;33 doCheck = false;nix/rsjsonnet.nixdiffbeforeafterboth5}:5}:6rustPlatform.buildRustPackage rec {6rustPlatform.buildRustPackage rec {7 pname = "rsjsonnet";7 pname = "rsjsonnet";8 version = "0.4.0";8 version = "2026-03-23";9910 src = fetchFromGitHub {10 src = fetchFromGitHub {11 owner = "eduardosm";11 owner = "eduardosm";12 repo = pname;12 repo = pname;13 rev = "v${version}";13 rev = "27be31532180c611383ceb2b7f03193ab1253487";14 hash = "sha256-Oas/fll5YerHAMI91fTEQqe6praYh4Ro8idsdvzldpA=";14 hash = "sha256-0VM6v1VfQOGUXuYOuh90ta1GaLf1YA+Apm3SkH8CDN4=";15 };15 };161617 cargoHash = "sha256-jH2BOvD0Iss34hODhLFHKx5pGMVtkZir7E1bYwjSa8E=";17 cargoHash = "sha256-0IDAxm4J2rEqfUGNYoQTP0RPrEZe4YPe2E6TT7A4THo=";181819 nativeBuildInputs = [makeWrapper];19 nativeBuildInputs = [makeWrapper];2020nix/sjsonnet.nixdiffbeforeafterboth4# TODO: Somehow build client-server version of sjsonnet, and use it in benchmarks4# TODO: Somehow build client-server version of sjsonnet, and use it in benchmarks5{5{6 stdenv,6 stdenv,7 lib,7 fetchurl,8 fetchurl,8 jdk25_headless,9 jdk25_headless,9 makeWrapper,10 makeWrapper,11 autoPatchelfHook,12 zlib,13 openssl,10 java ? jdk25_headless,14 java ? jdk25_headless,11}:15}:16let17 version = "0.6.2";18 baseUrl = "https://github.com/databricks/sjsonnet/releases/download/${version}";1920 nativePlatform = {21 x86_64-linux = "linux-x86_64";22 aarch64-linux = "linux-arm64";23 aarch64-darwin = "darwin-arm64";24 # Nobody cares about darwin on intel25 }.${stdenv.hostPlatform.system} or (throw "unsupported system: ${stdenv.hostPlatform.system}");2627 nativeSrc = fetchurl {28 url = "${baseUrl}/sjsonnet-${version}-${nativePlatform}";29 hash = {30 x86_64-linux = "sha256-r79Q6SovcPIomDDUYTGIP35/y5t9Xo5Z3ohP7pxsF8I=";31 aarch64-linux = "sha256-LxWR94u1Oncau57Kmtzj2UFEofWGT4+laDTbRDkwv08=";32 aarch64-darwin = "sha256-gNZ6XekMm+ebeD7UFeRfoapXw/90gHk8MoeGD86dzKk=";33 }.${stdenv.hostPlatform.system};34 };3536 graalvmSrc = fetchurl {37 url = "${baseUrl}/sjsonnet-graalvm-${version}-${nativePlatform}";38 hash = {39 x86_64-linux = "sha256-XNJCnQlwVFySrUevn1nLN/DY8UBGgvCFAitkedLB+yM=";40 aarch64-linux = "sha256-J+C3pmiBEmo8M00IDHp9jznonibXmHVRlhsvQ4apVWw=";41 aarch64-darwin = "sha256-TXNL52sS4NE3GjbOFtgf6aCP268qGKMFaoTwAfJfgGc=";42 }.${stdenv.hostPlatform.system};43 };44in12stdenv.mkDerivation rec {45stdenv.mkDerivation {13 pname = "sjsonnet";46 pname = "sjsonnet";14 version = "0.6.0";47 inherit version;154816 src = fetchurl {49 src = fetchurl {17 url = "https://github.com/databricks/${pname}/releases/download/${version}/${pname}-${version}.jar";50 url = "${baseUrl}/sjsonnet-${version}.jar";18 hash = "sha256-HQovfF/hX664apg9Pl9SdrK03b8rmZ9IjHpf7uNY8FM=";51 hash = "sha256-jvkrxY48d/UdMGRoB9SxCJU2JJirfhZNyNMSkMrrQ7w=";19 };52 };205321 unpackPhase = "true";54 unpackPhase = "true";55 nativeBuildInputs = [ makeWrapper ]56 ++ lib.optionals stdenv.hostPlatform.isLinux [ autoPatchelfHook ];22 buildInputs = [java makeWrapper];57 buildInputs = [ java ]58 ++ lib.optionals stdenv.hostPlatform.isLinux [ zlib openssl stdenv.cc.cc.lib ];235924 installPhase = ''60 installPhase = ''25 mkdir -p $out/bin $out/lib61 mkdir -p $out/bin $out/lib26 cp $src $out/lib/sjsonnet.jar62 cp $src $out/lib/sjsonnet.jar27 makeWrapper ${java}/bin/java $out/bin/sjsonnet --add-flags "-Xss100m -XX:+UseStringDeduplication -jar $out/lib/sjsonnet.jar"63 makeWrapper ${java}/bin/java $out/bin/sjsonnet --add-flags "-Xss100m -XX:+UseStringDeduplication -jar $out/lib/sjsonnet.jar"6465 cp ${nativeSrc} $out/bin/sjsonnet-native66 chmod +x $out/bin/sjsonnet-native67 wrapProgram $out/bin/sjsonnet-native --add-flags "--max-stack 200000"6869 cp ${graalvmSrc} $out/bin/sjsonnet-graalvm70 chmod +x $out/bin/sjsonnet-graalvm71 wrapProgram $out/bin/sjsonnet-graalvm --add-flags "--max-stack 200000"28 '';72 '';29 separateDebugInfo = false;73 separateDebugInfo = false;30}74}3175