Revision history for Text::Stencil 0.04 2026-10-16 - Bound streaming memory and preserve callback exceptions. - Fix encoding option overrides and EOF section markers. - from_file now rejects malformed UTF-8 instead of substituting U+FFFD. 0.03 2026-08-05 - Correctness and robustness fixes across compilation, rendering, transforms, encoding and I/O - INCOMPATIBLE: templates that were accepted but rendered wrong now fail to compile; a field selector of the wrong kind for the template is an error; a hole in the rows array renders as an empty row rather than being skipped 0.02 2026-06-01 - Fix render-buffer use-after-free on croak - Free buffers when a callback dies or render aborts - Fix int_comma buffer overflow (values >= 1e15) - Reject count/coalesce as non-first transform - Fix plural sign for negatives 0.01 2026-04-03 - Initial release - 36 transform types: html, html_br, url, json, hex, base64, base64url, raw, int, int_comma, float, sprintf, trim, uc, lc, pad, rpad, trunc, substr, replace, mask, length, default, bool, if, unless, map, wrap, count, coalesce, date, plural, number_si, bytes_si, elapsed, ago - Transform chaining with | (pipe) - Arrayref and hashref row modes (auto-detected) - Methods: new, from_file, render, render_one, render_sorted, render_to_fh, render_cb, clone, columns, row_count - Custom delimiter via escape_char option - Shorthand new($row_template) - UTF-8 transparent - About 2x faster than Text::Xslate for table rendering