- Added `SemiStrict` undefined mode that is like strict but allows
to be checked for truthiness. Additionally an if expression without
an else block will always produce a silent undefined object that
never errors for compatibility with Jinja2. 687
- Make the trait bounds of `ViaDeserialize` stricter. Now the type
can only be constructed if the type implements `DeserializeOwned`.
This is not a new requirement for passing the function to
`add_function` but bad code will now error earlier for better
error reporting. 689
- Raise MSRV to 1.70.
- The contrib crate now uses a basic xorrand implementation instead
of depending on all of the `rand` module. 696
- Added temps, a way to stash away temporary state during rendering. 697
- Fixed a bug that caused the random functions in the contrib crate
to not advance the RNG between calls. 698
- Added `Environment.undeclared_variables_in_template` and
`Environnent.undeclared_variables_in_str` to Python binding. 699
- Enable `loop_controls` for Python in-line with the CLI. 704
- Fixed a panic when comparing plain objects. 705
- Added `Object::custom_cmp` to allow objects to influence how they
compare against themselves. This also fixes Python objects in the
Python binding not to compare correctly. 707
- Fixed a bug where `undeclared_variables` would incorrectly handle
variables referenced by macros. 714
- Fixed a deadlock in the Python binding when multiple threads were
rendering from the same environment at once. 717
- The Python bindings handle `__bool__` correctly now for custom
objects in if-conditions and filters. 719
- Fixed a bug where `}}` caused a syntax error in expressions with
open parentheses, braces or brackets. 723
- Added `State::known_variables` to return a list of known variables
and `Environment::globals`. 724
- Fixed an issue with undeclared variables not handling `caller`. 725
- Removed unnecessary `Filters` and `Tests` traits. They remain as
hidden aliases to `Function`. 726
- Fixed a bug that caused implicit string concatenation to not correctly
handle escapes. 728
- Implemented constant folding in the code generator. 731
- Improved error reporting for bad loop recursion calls. 734
- The engine now uses smaller integers to represent columns, line numbers
and addresses. This cuts down on the memory usage needed for debug
information. 735
- Added `load_from_path` to python. 736
- Added JavaScript bindings. 737