MiniJinja is a powerful but minimal dependency template engine for Rust compatible with Jinja/Jinja2
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/mitsuhiko/minijinja/releases/download/2.0.1/minijinja-cli-installer.sh | sh
powershell -c "irm https://github.com/mitsuhiko/minijinja/releases/download/2.0.1/minijinja-cli-installer.ps1 | iex"
File | Platform | Checksum |
---|---|---|
minijinja-cli-aarch64-apple-darwin.tar.xz | Apple Silicon macOS | checksum |
minijinja-cli-x86_64-apple-darwin.tar.xz | Intel macOS | checksum |
minijinja-cli-x86_64-pc-windows-msvc.zip | x64 Windows | checksum |
minijinja-cli-x86_64-unknown-linux-gnu.tar.xz | x64 Linux | checksum |
minijinja-cli-x86_64-unknown-linux-musl.tar.xz | x64 MUSL Linux | checksum |
This is a major update to MiniJinja that changes a lot of core internals and cleans up some APIs. In particular it resolves somes limitations in the engine in relation to working with dynamic objects, unlocks potentials for future performance improvments and enhancements.
It's very likely that you will need to do changes to your code when upgrading, particular when implementing dynamic objects. In short:
StructObject
and SeqObject
are gone. They have been replaced by improved
APIs directly on Object
. Please refer to the updated documentation to see
how these objects behave now. For the most part code should become quite a bit
clearer during the upgrade.ObjectKind
has been replaced by ObjectRepr
. Rather than holding a reference
to a StructObject
or SeqObject
this now is a simple enum that just indicates
how that object serializes, renders and behaves.Object
no longer uses fmt::Display
for rendering. Instead the new
Object::render
method is used which has a default implementation.Object
trait has been completely transformed and the new type-erased type
DynObject
has been added to work with unknown objects. This trait has an
improved user experience and more flexibility. It's now possible to implement
any non-primitive value type including maps with non string keys which was previously
not possible.ValueKind
is now non exhaustive and got a log of new value types. This resolves
various issues in particular in relationship with iterators. As a result of this
functions will no longer accidentally serialize into empty objects for example.Value::from_iterator
has been replaced by the new Value::make_iterable
,
Value::make_object_iterable
and Value::make_one_shot_iterator
. The direct
replacement is Value::make_one_shot_iterator
but for most uses it's strongly
recommended to use one of the other APIs instead. This results in a much improved
user experience as it's possible to iterate over such values more than once.Syntax
type has been replaced by the SyntaxConfig
type. It uses a builder
pattern to reconfigure the delimiters.For upgrade instructions read the UPDATING guide.
Other Changes:
Environment::templates
method that iterates over loaded templates. #471Value::try_iter
now holds a reference
to the Value
internally via reference counting.DynObject
now replaces Arc<Object>
.iterable
test. #475Value::from_serializable
is now Value::from_serialize
.Value::from
is now implemented for Error
as public API to create invalid values.
Previously this behavior was hidden internally in the serde support. #495UndefinedBehavior::Strict
now acts more delayed. This means that now value.key is defined
--syntax
to reconfigure syntax flags such as delimiters. #504curl --proto '=https' --tlsv1.2 -LsSf https://github.com/mitsuhiko/minijinja/releases/download/2.0.0/minijinja-cli-installer.sh | sh
powershell -c "irm https://github.com/mitsuhiko/minijinja/releases/download/2.0.0/minijinja-cli-installer.ps1 | iex"
File | Platform | Checksum |
---|---|---|
minijinja-cli-aarch64-apple-darwin.tar.xz | Apple Silicon macOS | checksum |
minijinja-cli-x86_64-apple-darwin.tar.xz | Intel macOS | checksum |
minijinja-cli-x86_64-pc-windows-msvc.zip | x64 Windows | checksum |
minijinja-cli-x86_64-unknown-linux-gnu.tar.xz | x64 Linux | checksum |
minijinja-cli-x86_64-unknown-linux-musl.tar.xz | x64 MUSL Linux | checksum |
lstrip_blocks
unintentionally also applied to
variable expression blocks. #502curl --proto '=https' --tlsv1.2 -LsSf https://github.com/mitsuhiko/minijinja/releases/download/1.0.21/minijinja-cli-installer.sh | sh
powershell -c "irm https://github.com/mitsuhiko/minijinja/releases/download/1.0.21/minijinja-cli-installer.ps1 | iex"
File | Platform | Checksum |
---|---|---|
minijinja-cli-aarch64-apple-darwin.tar.xz | Apple Silicon macOS | checksum |
minijinja-cli-x86_64-apple-darwin.tar.xz | Intel macOS | checksum |
minijinja-cli-x86_64-pc-windows-msvc.zip | x64 Windows | checksum |
minijinja-cli-x86_64-unknown-linux-gnu.tar.xz | x64 Linux | checksum |
minijinja-cli-x86_64-unknown-linux-musl.tar.xz | x64 MUSL Linux | checksum |
This is a major update to MiniJinja that changes a lot of core internals and cleans up some APIs. In particular it resolves somes limitations in the engine in relation to working with dynamic objects, unlocks potentials for future performance improvments and enhancements.
It's very likely that you will need to do changes to your code when upgrading, particular when implementing dynamic objects. In short:
StructObject
and SeqObject
are gone. They have been replaced by improved
APIs directly on Object
. Please refer to the updated documentation to see
how these objects behave now. For the most part code should become quite a bit
clearer during the upgrade.ObjectKind
has been replaced by ObjectRepr
. Rather than holding a reference
to a StructObject
or SeqObject
this now is a simple enum that just indicates
how that object serializes, renders and behaves.Object
no longer uses fmt::Display
for rendering. Instead the new
Object::render
method is used which has a default implementation.Object
trait has been completely transformed and the new type-erased type
DynObject
has been added to work with unknown objects. This trait has an
improved user experience and more flexibility. It's now possible to implement
any non-primitive value type including maps with non string keys which was previously
not possible.ValueKind
is now non exhaustive and got a log of new value types. This resolves
various issues in particular in relationship with iterators. As a result of this
functions will no longer accidentally serialize into empty objects for example.Value::from_iterator
has been replaced by the new Value::make_iterable
,
Value::make_object_iterable
and Value::make_one_shot_iterator
. The direct
replacement is Value::make_one_shot_iterator
but for most uses it's strongly
recommended to use one of the other APIs instead. This results in a much improved
user experience as it's possible to iterate over such values more than once.Syntax
type has been replaced by the SyntaxConfig
type. It uses a builder
pattern to reconfigure the delimiters.For upgrade instructions read the UPDATING guide.
Other Changes:
Environment::templates
method that iterates over loaded templates. #471Value::try_iter
now holds a reference
to the Value
internally via reference counting.DynObject
now replaces Arc<Object>
.iterable
test. #475Value::from_serializable
is now Value::from_serialize
.Value::from
is now implemented for Error
as public API to create invalid values.
Previously this behavior was hidden internally in the serde support. #495curl --proto '=https' --tlsv1.2 -LsSf https://github.com/mitsuhiko/minijinja/releases/download/2.0.0-alpha.0/minijinja-cli-installer.sh | sh
powershell -c "irm https://github.com/mitsuhiko/minijinja/releases/download/2.0.0-alpha.0/minijinja-cli-installer.ps1 | iex"
File | Platform | Checksum |
---|---|---|
minijinja-cli-aarch64-apple-darwin.tar.xz | Apple Silicon macOS | checksum |
minijinja-cli-x86_64-apple-darwin.tar.xz | Intel macOS | checksum |
minijinja-cli-x86_64-pc-windows-msvc.zip | x64 Windows | checksum |
minijinja-cli-x86_64-unknown-linux-gnu.tar.xz | x64 Linux | checksum |
minijinja-cli-x86_64-unknown-linux-musl.tar.xz | x64 MUSL Linux | checksum |
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/mitsuhiko/minijinja/releases/download/1.0.20/minijinja-cli-installer.sh | sh
powershell -c "irm https://github.com/mitsuhiko/minijinja/releases/download/1.0.20/minijinja-cli-installer.ps1 | iex"
File | Platform | Checksum |
---|---|---|
minijinja-cli-aarch64-apple-darwin.tar.xz | Apple Silicon macOS | checksum |
minijinja-cli-x86_64-apple-darwin.tar.xz | Intel macOS | checksum |
minijinja-cli-x86_64-pc-windows-msvc.zip | x64 Windows | checksum |
minijinja-cli-x86_64-unknown-linux-gnu.tar.xz | x64 Linux | checksum |
minijinja-cli-x86_64-unknown-linux-musl.tar.xz | x64 MUSL Linux | checksum |
Value::from_iterator
and introduced replacement
Value::make_one_shot_iterator
API which also exists in 2.x. #487curl --proto '=https' --tlsv1.2 -LsSf https://github.com/mitsuhiko/minijinja/releases/download/1.0.19/minijinja-cli-installer.sh | sh
powershell -c "irm https://github.com/mitsuhiko/minijinja/releases/download/1.0.19/minijinja-cli-installer.ps1 | iex"
File | Platform | Checksum |
---|---|---|
minijinja-cli-aarch64-apple-darwin.tar.xz | Apple Silicon macOS | checksum |
minijinja-cli-x86_64-apple-darwin.tar.xz | Intel macOS | checksum |
minijinja-cli-x86_64-pc-windows-msvc.zip | x64 Windows | checksum |
minijinja-cli-x86_64-unknown-linux-gnu.tar.xz | x64 Linux | checksum |
minijinja-cli-x86_64-unknown-linux-musl.tar.xz | x64 MUSL Linux | checksum |
undeclared_variables
. #486curl --proto '=https' --tlsv1.2 -LsSf https://github.com/mitsuhiko/minijinja/releases/download/1.0.18/minijinja-cli-installer.sh | sh
powershell -c "irm https://github.com/mitsuhiko/minijinja/releases/download/1.0.18/minijinja-cli-installer.ps1 | iex"
File | Platform | Checksum |
---|---|---|
minijinja-cli-aarch64-apple-darwin.tar.xz | Apple Silicon macOS | checksum |
minijinja-cli-x86_64-apple-darwin.tar.xz | Intel macOS | checksum |
minijinja-cli-x86_64-pc-windows-msvc.zip | x64 Windows | checksum |
minijinja-cli-x86_64-unknown-linux-gnu.tar.xz | x64 Linux | checksum |
minijinja-cli-x86_64-unknown-linux-musl.tar.xz | x64 MUSL Linux | checksum |
Option<Into<Value>>
as return value from
functions. #452Value::from_serializable
for the improved replacement
method Value::from_serialize
. #482curl --proto '=https' --tlsv1.2 -LsSf https://github.com/mitsuhiko/minijinja/releases/download/1.0.17/minijinja-cli-installer.sh | sh
powershell -c "irm https://github.com/mitsuhiko/minijinja/releases/download/1.0.17/minijinja-cli-installer.ps1 | iex"
File | Platform | Checksum |
---|---|---|
minijinja-cli-aarch64-apple-darwin.tar.xz | Apple Silicon macOS | checksum |
minijinja-cli-x86_64-apple-darwin.tar.xz | Intel macOS | checksum |
minijinja-cli-x86_64-pc-windows-msvc.zip | x64 Windows | checksum |
minijinja-cli-x86_64-unknown-linux-gnu.tar.xz | x64 Linux | checksum |
minijinja-cli-x86_64-unknown-linux-musl.tar.xz | x64 MUSL Linux | checksum |
trim_blocks
and lstrip_blocks
for Jinja2
compatibility. #447unstable_machinery
. The tokenize
function got an
extra argument for the WhitespaceConfig
. It's however recommended
to use the new Tokenizer
struct instead. parse_expr
was added,
the parse
function now takes a SyntaxConfig
and WhitespaceConfig
. #447curl --proto '=https' --tlsv1.2 -LsSf https://github.com/mitsuhiko/minijinja/releases/download/1.0.16/minijinja-cli-installer.sh | sh
powershell -c "irm https://github.com/mitsuhiko/minijinja/releases/download/1.0.16/minijinja-cli-installer.ps1 | iex"
File | Platform | Checksum |
---|---|---|
minijinja-cli-aarch64-apple-darwin.tar.xz | Apple Silicon macOS | checksum |
minijinja-cli-x86_64-apple-darwin.tar.xz | Intel macOS | checksum |
minijinja-cli-x86_64-pc-windows-msvc.zip | x64 Windows | checksum |
minijinja-cli-x86_64-unknown-linux-gnu.tar.xz | x64 Linux | checksum |
minijinja-cli-x86_64-unknown-linux-musl.tar.xz | x64 MUSL Linux | checksum |