git.delta.rocks / jrsonnet / refs/commits / a5cec24e9cdc

difftreelog

doc: feed readme.md with useful links/badges

Yaroslav Bolyukin2021-07-09parent: #6d0cadc.patch.diff
in: master

1 file changed

modifiedREADME.mddiffbeforeafterboth
before · README.md
1# jrsonnet23![Crates.io](https://img.shields.io/crates/v/jrsonnet-evaluator)45## What is it67[Jsonnet](https://jsonnet.org/) is a data templating language89This Rust crate implements both jsonnet library and an alternative `jsonnet` executable based on it. For more information see [bindings](#Bindings).1011## Why?1213There already are multiple implementations of this standard implemented in different languages: [C++](https://github.com/google/jsonnet), [Go](https://github.com/google/go-jsonnet/), [Scala](https://github.com/databricks/sjsonnet).1415This implementation shows performance better than all existing implementations. For more information see [benchmarks](#Benchmarks).1617In the end, it's always fun to implement something in Rust.1819## Compliance with the [specification](https://jsonnet.org/ref/spec.html)2021- Passes all the original `examples` tests2223- Passes all the original `test_suite` tests except for those which require stacktraces identical to the default implementation (while also being available, vanilla-like stacktraces are not 100% identical):2425  ```jsonnet26  ## Explaining format27  ​```28  RuntimeError("3")29   --> /home/lach/jsonnet-rs/a.jsonnet:1:2530    |31  1 | local a = "%0 10.20d" % error "3";32    |                         ^^^^^^^^^ error statement33    |34   --> /home/lach/jsonnet-rs/a.jsonnet:1:1135    |36  1 | local a = "%0 10.20d" % error "3";37    |           ^^^^^^^^^^^^^^^^^^^^^^^ function <mod> call38    |39   --> /home/lach/jsonnet-rs/a.jsonnet:6:640    |41  6 |   a: a,42    |      ^ variable <a>43    |44   --> /home/lach/jsonnet-rs/a.jsonnet:3:645    |46  3 |   b: self.a,47    |      ^^^^^^ field access48    |49   --> /home/lach/jsonnet-rs/a.jsonnet:9:150    |51  9 | e.b52    | ^^^ field access53    |54  ​```5556  ## Compact format (default)57  ​```58  RuntimeError("3")59      /home/lach/jsonnet-rs/a.jsonnet:1:25-35: error statement60      /home/lach/jsonnet-rs/a.jsonnet:6:6-8  : variable <a>61      /home/lach/jsonnet-rs/a.jsonnet:3:6-13 : field access62      /home/lach/jsonnet-rs/a.jsonnet:9:1-5  : field access63  ​```6465  ## Vanilla format66  ​```67  RUNTIME ERROR: 368          a.jsonnet:1:25-34       thunk <a> from <$>69          <std>:237:21-22 thunk from <function <anonymous>>70          <std>:754:20-24 thunk from <function <anonymous>>71          <std>:32:25-26  thunk from <function <anonymous>>72          <std>:32:16-27  function <anonymous>73          <std>:754:8-25  function <anonymous>74          <std>:237:7-23  function <anonymous>7576          a.jsonnet:6:6-7 object <d>77          a.jsonnet:3:6-12        object <c>78          a.jsonnet:9:1-4 $79          During evaluation80  ​```81  ```8283## Bindings8485Jrsonnet provides a standard `libjsonnet.so` shared library and should work as drop-in replacement for it8687WASM bingings are also available, Java bindings (Both JNI and WASM compiled to .class) are in progress8889See [bindings](./bindings/) for more information.9091## Benchmarks9293This is the fastest implementation of jsonnet both according to official benchmarks and real-life cluster configuration templating speed.9495Official benchmark results are available [in this gist](https://gist.github.com/CertainLach/5770d7ad4836066f8e0bd91e823e451b) which may get updated sometimes. It shows tests against Golang, C++ and Scala implementations showing the best performance in all cases.9697You can generate this report via provided nix flake9899## TO-DO list100101- [ ] Create docker container for easier benchmarking and/or benchmark in CI102- [ ] Implement and utilize mutable strings, arrays and objects instead of COWing when possible
after · README.md
1# jrsonnet23[![release](https://img.shields.io/github/v/tag/CertainLach/jrsonnet?color=%23fb4934&label=latest%20release&style=for-the-badge)](https://github.com/CertainLach/jrsonnet/releases)4[![license](https://img.shields.io/github/license/CertainLach/jrsonnet?color=%2383a598&label=license&style=for-the-badge)](/LICENSE)5[![opencollective](https://img.shields.io/opencollective/all/jrsonnet?color=%238ec07c&style=for-the-badge)](https://opencollective.com/jrsonnet)67## What is it89[Jsonnet](https://jsonnet.org/) is a data templating language1011This Rust crate implements both jsonnet library and an alternative `jsonnet` executable based on it. For more information see [bindings](#Bindings).1213## Install1415### NixOS1617jrsonnet is packaged in nixpkgs and maintained by @CertainLach1819```sh20nix-env -iA nixpkgs.jrsonnet21```2223### MacOS2425jrsonnet is packaged to brew and maintained by @messense2627```sh28brew install jrsonnet29```3031### Windows/other linux distributions3233You can get latest build of jrsonnet in [releases](https://github.com/CertainLach/jrsonnet/releases)3435### Build from sources3637jrsonnet should build on latest stable Rust version (probally on olders, but there is no MSRV policy provided)3839Debug build will work too, but it is much slower than release4041```42cargo build --release43```4445## Why?4647There already are multiple implementations of this standard implemented in different languages: [C++](https://github.com/google/jsonnet), [Go](https://github.com/google/go-jsonnet/), [Scala](https://github.com/databricks/sjsonnet).4849This implementation shows performance better than all existing implementations. For more information see [benchmarks](#Benchmarks).5051In the end, it's always fun to implement something in Rust.5253## Bindings5455### Rust5657[![crates.io](https://img.shields.io/crates/v/jrsonnet-evaluator)](https://crates.io/crates/jrsonnet-evaluator)58[![docs.rs](https://docs.rs/jrsonnet-evaluator/badge.svg)](https://docs.rs/jrsonnet-evaluator)5960Jrsonnet is written in rust itself, so just add it as dependency6162### Python6364[![crates.io](https://img.shields.io/pypi/v/rjsonnet)](https://pypi.org/project/rjsonnet/)6566Bindings are created and maintained by @messense6768### C/C++6970Jrsonnet provides a standard `libjsonnet.so` shared library and should work as drop-in replacement for it7172### Other7374WASM bingings are also available, Java bindings (Both JNI and WASM compiled to .class) are in progress7576See [bindings](./bindings/) for more information.7778## Benchmarks7980This is the fastest implementation of jsonnet both according to official benchmarks and real-life cluster configuration templating speed.8182Official benchmark results are available [in this gist](https://gist.github.com/CertainLach/5770d7ad4836066f8e0bd91e823e451b) which may get updated sometimes. It shows tests against Golang, C++ and Scala implementations showing the best performance in all cases.8384You can generate this report via provided nix flake