Skip to content

Releases: CertainLach/jrsonnet

v0.5.0-pre96-test

07 Apr 15:54
v0.5.0-pre96-test
0e1ae58
Compare
Choose a tag to compare
v0.5.0-pre96-test Pre-release
Pre-release

I'm running out of semver-compatible numbers, so v0.5.0 release is inevitable

What's Changed

New Contributors

Full Changelog: v0.5.0-pre9-test...v0.5.0-pre96-test

v0.5.0-pre9-test

15 May 14:41
eedc543
Compare
Choose a tag to compare
v0.5.0-pre9-test Pre-release
Pre-release

What's Changed

  • fix: .so build instructions out of date by @julienduchesne in #109
  • fix: std.format freezes with '%g' % 0
  • feat: make std.map accept strings
  • feat: make std.sort/std.set/std.uniq work on arrays of arrays
  • fix: do not write trailing newline in --multi for -S
  • fix: restore --version argument

New Contributors

Full Changelog: v0.5.0-pre8-test...v0.5.0-pre9-test

v0.5.0-pre8-test

28 Apr 10:59
ea82da9
Compare
Choose a tag to compare
v0.5.0-pre8-test Pre-release
Pre-release

What's Changed

New Contributors

Full Changelog: v0.5.0-pre5-test...v0.5.0-pre8-test

v0.5.0-pre5-test

05 Jun 14:44
a0a8eb4
Compare
Choose a tag to compare
v0.5.0-pre5-test Pre-release
Pre-release

Features

  • Prettier empty strings display in errors

Release preparations

  • Remove serde-yaml git dependency (replaced with forked and rebranded package), now jrsonnet can be published to crates.io

v0.5.0-pre4-test: build: switch to released gcmodule fork

05 Jun 13:03
bde2637
Compare
Choose a tag to compare

Destructure improvements

  • Support destructuring of function arguments:
local myFn({field}) = field;

myFn({field: 3}) == 3
  • Object destructuring defaults
local {
  a,
  b = 20,
  c = 30, 
} = { a: 1, b: 2 };

a == 1 && b == 2 && c == 30

Release preparations

  • Remove gcmodule git dependency (replaced with forked and rebranded package)

v0.5.0-pre3-test

26 May 19:56
c35e2bd
Compare
Choose a tag to compare
v0.5.0-pre3-test Pre-release
Pre-release
  • MacOS aarch64 build (Fixes #80)
  • Throw infinite recursion error on imports, which finishes support for infinite recursion handling, as those errors are already handled in locals and objects
  • Implement better object field ordering (exp-preserve-order feature)

v0.5.0-pre2-test

30 Apr 16:11
2d0d919
Compare
Choose a tag to compare
v0.5.0-pre2-test Pre-release
Pre-release

Destructuring support

When jrsonnet-evaluator is built with exp-destruct (And in this pre-release - it is), syntax proposed here is supported (see last comment):
google/jsonnet#307

It was implemented as part of large optimization implementation, now locals in objects are cached not per field, but globally. I.e

{
  local a = std.trace("get a", 1),
  b: a,
  c: a, 
}

Earlier, manifestification of this object would print get a 2 times, but now it will be printed only once

v0.5.0-pre1-test

23 Apr 16:06
Compare
Choose a tag to compare
v0.5.0-pre1-test Pre-release
Pre-release

Ported new jsonnet standard library methods

std.get, std.manifestJsonMinified, others

importbin statement

Allows to import binary files as byte arrays
importbin 'some.bin' == [1, 2, 3, 4]

Object field order preservation

This feature was requested multiple times, both in this repo, and in other jsonnet implementations:
#76 #52
google/jsonnet#407
google/jsonnet#903
google/go-jsonnet#222

This feature is even implemented in scala jsonnet implementation, but doing this in same way will break backwards compatibility (Scala implementation has global flag for doing so)
databricks/sjsonnet#53

Implementation in jrsonnet is opt-in, both at compile level (this feature is not built by default, as it is experimental, it is built in this prerelease though), and runtime level:

To configure CLI manifestification for this feature, you should pass --exp-preserve-order flag:

jrsonnet --exp-preserve-order -e '{a: 1, b: 2, c: 3} + { d: 4, e: 5, a: 6 }'

For language usage there is optional argument added to manifestification functions:

std.manifestJsonEx({a: 1, b: 2, c: 3} + { d: 4, e: 5, a: 6 }, '   ', preserve_order = true)

And there is also new arguments on Rust api side to some functions

Both code snippets will yield

{ "b": 2, "c": 3, "d": 4, "e": 5, "a": 6 }

a is last, because it was overriden later

Rust API improvements

Tons of interop api was implemented, i.e fancier builtin building stuff (this is already used for standard built-ins)
https://github.com/CertainLach/jrsonnet/blob/gcmodule/crates/jrsonnet-evaluator/src/builtin/mod.rs

And automatic generators for Rust<->Jsonnet structure translation
https://github.com/CertainLach/jrsonnet/blob/gcmodule/crates/jrsonnet-evaluator/tests/typed_obj.rs

Full Changelog: v0.5.0-gcmodule-test...v0.5.0-pre1-test

v0.5.0-gcmodule-test

27 Nov 01:41
cff8f6a
Compare
Choose a tag to compare
v0.5.0-gcmodule-test Pre-release
Pre-release

Replaced rust-gc with gcmodule
This prerelease isn't uploaded to crates.io, as it depends on git dependency (Fork of gcmodule with needed features)

v0.4.2

12 Jul 18:23
b6223e5
Compare
Choose a tag to compare

Implemented all missing builtins, implemented some stdlib functions in native