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.