Inja Versions Save

A Template Engine for Modern C++

v3.4.0

1 year ago

⚑ Improvements

  • With this release, inja switched to C++17 and makes extensive use of string_view without providing a polyfill for older compilers.
  • Added an include callback to make finding templates via include more flexible.
  • Added options to Meson build system, e.g. for disabling building tests (#216, thanks to @bbastin and @tristan957).
  • Added a check in the template parsing for too few arguments.

πŸ› Bug Fixes

  • Fixed parsing of expression enclosed by paranthesis (#247, thanks to @kubo).
  • Fixed integer overflow by using the underlying json data types.
  • Fixed the parsing of numbers with whitespaces in between (#219).
  • Fixed searching for included templates in the input directory (thanks to @davidchall).
  • Fixed warnings in MSVC 2019 (#230, thanks to @stanmihai4).

v3.3.0

2 years ago

:zap: Improvements

  • Added template inheritance features like extends and blocks.
  • Added short circuit evaluation for logical expressions.
  • Added join function (#204).

:bug: Bug Fixes

  • Fixed the round function with precision 0 (#207).
  • Fixed a bug when compiling with INJA_NOEXCEPTION.

:hammer: Further Changes

  • Added instructions for conda-forge (#187).
  • Fixed several compiler warnings (e.g. #197).

v3.2.0

3 years ago

:bug: Bug Fixes

  • Do not install nlohmann json if an external version is used (#177, thanks @matusnovak).
  • Fixed issues with variable names starting with $ or @ (#185).

:zap: Improvements

  • Added the INJA_NOEXCEPTION macro that disables throwing exceptions throughout inja (#181).

:hammer: Further Changes

  • Improve Readme examples and vectorize logo.
  • Fixed compiler warnings for unused size variable (#183).

v3.1.0

3 years ago

First and foremost, this update improves the performance of template rendering, in particular of loops and variable printing.

:zap: Improvements

  • Added assignment statements to set a variable within a template.
  • Added whitespace control for expressions (#162, thanks to @tindy2013).
  • Added void callbacks without return values, e.g. for debugging purposes.

:bug: Bug Fixes

  • Fixed an issue of parsing nested functions (#159, thanks to @DeiRex75).
  • Fixed use of parenthesis in combination with logic operators (#155, thanks to @DeiRex75).
  • Fixed an issue with loop data in the render_to function (#165, thanks to @fishjump)

:hammer: Further Changes

  • Integrated Codacity into CI and fixed several static analyzer issues.
  • Fixed several compiler warnings (#169, thanks to @tindy2013).

v3.0.0

3 years ago

Time for a new major version of inja! πŸŽ‰

⚑️ Improvements

  • A new core parser and renderer based on an abstract syntax tree (fixing #149), allowing for:
    • Complex expressions of functions, logic expressions and statements.
    • Mathematical functions in templates.
    • Variadic callbacks with unknown number of arguments.
  • Show parsing and render error positions in template (#134, thanks to @sabelka).
  • Performance improvements, in particular for large json data (#146, thanks to @craigpepper) and large template files.
  • Update nlohmann/json to version 3.8.0 (#144, also thanks to @craigpepper).
  • Support for GCC 4.8 (#150, thanks to @rafadesu)

πŸ”¨ Further Changes

  • Move all CI to GitHub Actions.
  • Switching from Catch to Doctest as our testing framework with much better build times.

πŸ”₯ Breaking Changes

  • We've removed the json pointer style for variables in templates.
  • We now require nlohmann/json with a minimum version of 3.8.0.

v2.2.0

4 years ago

We've got a round of fixes and cool improvements for this release.

⚑️ Improvements

  • Add whitespace control (#116, thanks to @jpcima).
  • Added new functions: select element at position, string length.
  • Throw exception if file cannot be opened (#117, thanks to @thomastrapp).
  • Bump to newer nlohmann/json (#107, thanks to @JehandadKhan).

πŸ› Bug Fixes

  • Fixed scope when including templates (#118, thanks to @thomastrapp).
  • Fixed Visual Studio compiler warnings (#119, thanks to @Dodzey).

πŸ”¨ Further Changes

  • Much improved CI (#124), in particular for Visual Studio (#125, #128, thanks to @kzeslaf).
  • Move doxygen generation to GitHub CI.

v2.1.0

5 years ago

✨ Further Improvements

There are a couple of great improvements for inja in this release:

  • We've added a first API documentation.
  • Thanks to @gracicot and @mhhollomon, we improved cmake and meson target exports (#83, #86).
  • I've added a string_view polyfill for C++11 to C++14.
  • You can now use cget for installing inja (#88). Thanks @pfultz2!
  • Warnings in appveyor has been cleaned.

πŸ”₯ And a small breaking change in the development pipeline: The CMake option for disabling tests has been renamed from BUILD_TEST to BUILD_TESTING.

v2.0.1

5 years ago

This release fixes a memory bug when including templates (#78, #68). Additionally, you can now use render_to without creating an environment and render to general ostreams (#76).

v2.0.0

5 years ago

Finally, this is the next major version of Inja. After reworking most of its internals, Inja is now up to two orders of magnitude faster than v1! (#67)

✨Further Improvements

  • We've added type checks as builtin functions (#64).
  • Loop variables are now supported in inja templates (#52).
  • Include in-memory templates (#47).
  • Inja is now easier to integrate either with the vcpkg (#45) or conan (#43) package manager.

πŸ”₯ Breaking Changes

Inja now requires string_view from C++17.

v1.0.0

6 years ago

This is the first stable release of inja! πŸŽ‰

Major improvements over the last released version are:

  • Added callbacks (#5, #15)
  • New functions: min, max, sort, first, last, conversion to string and number (#22)
  • Added loops over std::map / json objects
  • Fixed lots of errors and warnings (#18)
  • Better error messages
  • More tests and compilers with CI, additional testing with meson
  • Updated dependencies to JSON 3.1 and Catch 2.1