Language
- Operator
<
now works on arrays and performs lexicographic comparison. - New stdlib functions
std.objectValues
andstd.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 ofEvaluateAnonymousSnippet*
orEvaluateFile*
. - 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.