Skip to content

v0.17.0

Compare
Choose a tag to compare
@sbarzowski sbarzowski released this 22 Nov 14:21

Language

  • Operator < now works on arrays and performs lexicographic comparison.
  • New stdlib functions std.objectValues and std.objectValuesAll for getting an array on field values.
  • Bitshift by negative value is now an error (previously the behavior was inconsistent).

Go implementation

  • New tool available: jsonnet-lint which automatically finds common problems in Jsonnet programs.
  • New tool available: jsonnet-deps which finds all transitive dependencies.
  • Fixed multiple issues with stack traces, which sometimes resulted in missing or confusing stack trace entries.
  • Fixed handling of object locals in object comprehensions.
  • Added missing convenience functions to C and Python bindings. They should be now 100% complete.
  • Python bindings no longer hold GIL during evaluation of Jsonnet code.
  • std.manifestJsonEx is now much faster.
  • Strings are now supported in std.flatMap (in addition to arrays).
  • Improved Go library API: more consitent handling of paths. We no longer treat fake names for ad hoc snippets or extvars as paths. Function family EvaluateSnippet* is now deprecated in favor of EvaluateAnonymousSnippet* or EvaluateFile*.
  • When using bazel, it is possible now to use go_repository rule for go-jsonnet.

C++ implementation

  • Python bindings no longer hold GIL during evaluation of Jsonnet code.

Docs

  • New language reference is available at https://jsonnet.org/ref/language.html.
  • Fixed multiple mistakes in the formal spec.
  • Fixed a mistake in the documentation for std.rstripChars
  • Added documentation for std.slice.

Development and Internals

  • The shared test suite allows specifying an overriding directory for test results (useful for error messages).
  • Added a mechanism to C++ interpreter to call normal Jsonnet functions in the implementation of builtin operations (currently it's used for implementing array comparison).
  • The tests.sh script for go-jsonnet no longer refreshes cpp-jsonnet submodule.
  • Added a separate script for updating cpp-jsonnet, which automatically regenerates stdlib.