You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Template Rendering: ~25% faster, ~54% less memory, ~27% fewer allocations in template rendering benchmarks.
Cache compiled scanner regex instead of recompiling per Scan() call
Reuse forloop variable map across loop iterations instead of allocating a new map per iteration
Add fast paths for string, int, float64, and bool in writeObject, avoiding fmt.Sprint and reflection
Reuse expression evaluation context across {{ }} expressions instead of allocating per expression
Use stack-allocated array for filter arguments, avoiding heap allocation for filters with ≤4 args
Use maps.Copy with pre-sized maps for bindings copies
Fixed
String-to-Number Conversion in Arithmetic Filters: Fixed regression where string values from bindings were not converted to numbers in plus, minus, times, and divided_by filters. For example, {{ str_var | plus: 1 }} where str_var = "10" now correctly returns 11 instead of 1. This was introduced in v1.8.0 when filter signatures changed from float64 to any (#124).
Changed
Replace custom intMin/intMax helpers with Go 1.21+ min/max builtins.
Tests
Expanded test coverage across render, parser, values, filters, and engine packages.