Jsonnet

Latest version: v0.20.0

Safety actively analyzes 682387 Python packages for vulnerabilities to keep your Python projects secure.

Scan your dependencies

Page 3 of 7

0.12.0

Stdlib changes:

- Fix `std.parseHex` that rejected certain correct inputs
- Added `std.find` and `std.findSubstr`
- Added `std.parseJson`

Performance:
- C++ implementation desugarer now uses less stack space
- C++ implementation has native (faster) implementations of `std.join`, `std.splitLimit`, `std.substr`, `std.range` `std.strReplace`, `std.asciiLower`, `std.asciiUpper`

Python
- jpathdir in Python bindings

Go
- New -c option will create directories for output files if necessary

0.11.2

Note: v0.11.0 and v0.11.1 are the same as this release, but are botched due to mismatches in golden test files.

Language changes:
- std.native("foo") now returns null if foo doesn't exist, instead of an error. This is useful for falling back on Jsonnet implementations if a faster native one isn't available.

stdlib improvements:
- sort and set functions can now be given a "keyF" function for controlling the ordering
- std.trace for debugging
- std.parseHex
- std.parseOctal

C++ Implementation changes:
- Some performance improvements in garbage collection and static analysis

Go Implementation changes:
- Major (2x-10x) improvements in performance via a substantial refactoring of the interpreter

0.10.0

Major changes

The formatter (`jsonnet fmt`) is now more opinionated, in that more features are enabled by default. This means if you habitually use it to format your Jsonnet code, it may change them significantly after this release (hence the major version bump). We recommend reformatting your code to match these new defaults, but the old behavior is still available via:


jsonnet fmt -n 0 --string-style l --comment-style l --no-sort-imports


Native Go port

After a quiet ramp up, we're announcing the Go port. It is a complete re-implementation in Go, therefore it is more suitable for running untrusted Jsonnet code server-side. It is feature complete and will generate the same JSON and the only differences you might see are with some of the error messages and trace backs. We think it is ready for general use, and many projects are already using it.

You should stop using the cgo wrapper now!

Eventually, we would like to deprecate the C++ version, since the Go version has simpler source code (benefiting from go routines and the native garbage collector). However the formatter is still only available in C++ Jsonnet.

https://github.com/google/go-jsonnet

Minor additions:

- jsonnet -y and -m now respect -o
- JSONNET_PATH environment variable
- `{ [null]: true for x in [3] }` now respects the `null` instead of being an error
- The parser takes much less stack space
- `std.strReplace(str, from, to)`
- `std.isArray(v)`, `std.isBoolean(v)`, `std.isFunction(v)`, `std.isNumber(v)`, `std.isObject(v)`, `std.isString(v)`
- `std.sign(n)`
- `std.asciiUpper(x)`, `std.asciiLower(x)`
- `std.manifestYamlDoc(value)`, `std.manifestYamlStream(value)`
- `std.manifestXmlJsonml(value)` (see jsonml.org)

...and minor bug fixes & performance improvements.

0.9.5

One major change: Import paths now are properly escaped. This was originally an oversight and went unnoticed because people don't usually use backslashes in their paths. On Windows, we recommend using the verbatim string literals to avoid having to escape the path separator, e.g., `import "c:\foo.jsonnet"`.

Remaining changes are minor:

* Allow formatting of multiple files with a single jsonnet fmt invocation
* jsonnet fmt will now sort your imports alphabetically
* The Bazel Python build works again
* jsonnet fmt fixes code with mismatched newlines in { } and similar start/end syntax
* The Python bindings are now compatible with Python 3
* There is a VS2017 solution file
* The default -J paths were broken, now they include a proper "jsonnet" prefix. It's unlikely anyone was using them, since they were never advertised.

0.9.4

Major changes:

There are two new operators `e in e` and `e in super`. They perform the same role as `std.objectHasAll`, i.e. they allow you to discover whether a field exists, except that `std.objectHasAll(super, e)` cannot be expressed since `super` is not allowed in isolation. The semantics of `e in super` are quite interesting because it returns false even if there is no super object.

There is a subtle change to the semantics of `+:` and related field definitions. Previously if the super-object did not have the field `f` then `f +: e` was an error. Now, it succeeds in that case yielding `f: e`. This extends recursively, so `{ } + { f+: { x +: { y: 1 } } }` yields `{ f: { x: { y: 1 } } }`, and in fact the left hand side `{ }` is not even needed. You can evaluate a mixin like `{ f+: { x +: { y: 1 } } }` without even applying it to anything. This is a backwards compatible change because it only affects the behavior of programs that used to fail.

Minor other changes in this release:

- Addition of std.prune
- Fix of uninitialized value (undefined behavior) in desugarer.

0.9.3

Python-only release.

Page 3 of 7

© 2024 Safety CLI Cybersecurity Inc. All Rights Reserved.