Releases: avmnu-sng/quill-template-engine
Releases · avmnu-sng/quill-template-engine
Release list
Quill v1.0.0
Changelog
Other changes
- ac5d449 bench: add committed benchstat baseline for bench:compare
- c26dd0b bench: add jet and quicktemplate peers with 8-engine fairness
- 69b417c bench: add measurement rigor, size scaling, and full-output fairness
- f4f246b bench: add offline Phase 2a scenarios (filter/nested/cond/autoescape/stream)
- 1e012f7 bench: add thirdparty peer legs for the filter and conditional scenarios
- 77be13c bench: regenerate baseline.txt with a full count=10 run (#19)
- 73df4cb build(bench): add benchmark task targets
- cd3bbb2 ci(bench): add manual-dispatch benchmark workflow
- 1ec18d7 docs(performance): document bench methodology, engines, and task targets
- 4e8f62b lex: enforce single-fault contract; add lexer/parser fuzzing (#17)
- d5b6665 v1.0.0: freeze the exported API (#20)
Quill v0.3.0
Quill v0.2.0
Changelog
Features
- a93bcc6 feat: expose quill.Version and validate the release tag against it
Bug fixes
- 9d983ab fix(diagnostics): add error columns and locate unterminated openers
- 92f13a2 fix(interp): clamp @tab level to the platform int range
- 7465a93 fix(parse): make parenIsArrow O(1) and cap parser recursion depth
Other changes
- ba16264 ci(codeql): filter example regex false positives by query id (#7)
- 7bdeeac ci(codeql): re-arm integer-conversion check via a guarded IntCount helper
- 7e84ed4 docs,examples: switch the recommended template extension to .quill
- d19c3eb editors: add VS Code Quill grammar and .quill Linguist mapping
- dae7967 refactor: nest internal engine packages under core/
Quill v0.1.0
Changelog
Features
- 50b9b24 feat(check): add the gradual type checker as a front-end pass
- 04ebaae feat(compile): compile @apply, matching execApply's spread args
- 89bc108 feat(compile): compile @cache backed by a public RenderCache interface
- bb7681f feat(compile): compile deferred slots @provide/@yield/slot()
- 1da3083 feat(compile): compile static @embed by flattening the target
- be695f3 feat(compile): compile-to-Go backend core
- 87f87e2 feat(compile): inline slot-using partials into the caller render
- c04c3f0 feat(composition): add @use traits, @cache region, and map destructuring
- fef7827 feat(composition): add slots, call blocks, and recursive for
- 69a2b36 feat(cover): add branch-aware template coverage core
- a62dcf5 feat(cover): add quill cover CLI, API docs, and example
- f860f5c feat(env): add WithCompiled dispatch, fingerprint gate, shadow verify
- 2538c30 feat(escape): apply all six strategies in the @escape region
- 9fcc9ff feat(ext): first-class extensions, composition, and typed helpers
- 309711e feat(interp): stream RenderTo(io.Writer) behind a static slot-freedom gate
- 5be9b9e feat(loader): add composable chain, prefix, fs, and func loaders
- b964f26 feat(loop): add loop.prev/next/changed and fused @for..if filtering
- a51facc feat(macro): add kwargs tail and inline registry tests
- 113fcc5 feat(runtime): add native Go value passing via FromGo
- e4a7927 feat(sandbox): enforce SecurityPolicy, @sandbox region, sandboxed include
- d22f784 feat(set): add optional and elided destructuring slots
- 0778b78 feat(stdlib): add attribute projection, named-test filters, grouping
- f0a9c61 feat(stdlib): add columns, entries, sort_map, selectattr truthiness form
- ad774a9 feat(stdlib): add scalar-kind tests, separator/cell, text shaping
- d514a4e feat: add AST and Pratt parser for the core language
- fb5db82 feat: add conformance suite, CLI, examples, matches and trims
- b2a8af4 feat: add indentation functions, @tab region, and @log statement
- e3c73a3 feat: add runtime value substrate, errors, and source packages
- 73d9e7d feat: add tree-walking renderer, stdlib subset, loaders, and facade
- 9cf92f8 feat: add two-mode TEXT/CODE lexer for the @-sigil default
- 70117a1 feat: complete the spec-03 stdlib and evaluate arrow functions
Bug fixes
- a419809 fix(compile): cut loop.changed memory at the @include boundary
- 891964e fix(compile): discard the with-map temp so a no-read include/embed compiles
- 3523d84 fix(compile): materialize enclosing loops across @include boundaries
- e128781 fix(cover): do not seed macro-home top-level body
- 033f548 fix(interp): keep fused loops out of the pool-safe classification
- 4fd0da3 fix(interp): render slot-touching @cache regions fresh instead of memoizing
- 6e354b0 fix(sandbox): gate string coercion at concat/filter sites and @apply arrows
- e267e0a fix(stdlib): correct sort_map docstring to match stable-sort behavior
- 06636b5 fix: align checker absence-suppression and ordering with runtime
- 38eb962 fix: align random() with spec max param and add stdlib conformance
- 87f5182 fix: clamp negative level in tab filter string form
- 79408be fix: correct comment keep modifier and lone-@} line handling in lexer
- aa3747d fix: correct typed-helper godoc and Merge enum-copy test
- a5384ce fix: document coverage seeding template granularity boundary
- 0b8ed7e fix: enforce int64 overflow, Int floor-div, named macro args, loop scope
- 70466b3 fix: enforce sequence destructuring arity, tail, and nesting
- d8761ec fix: feed slots across sub-renders and honor recursive @for filter
- 8bb61d5 fix: forbid non-trailing optional destructuring slots
- d13b581 fix: group_by keys by typed equality like unique
- 8eed8f9 fix: guard nil *Array attribute access and pin runtime edges
- bf4d986 fix: indent @tab first body line on mid-line entry
- e3f7f90 fix: pass concrete Quill types through FromGo and order int map keys
- 142fe37 fix: reject kwargs param on arrow parameter lists
- 70a810f fix: resolve loop.changed inside fused filter against own frame
- 4298027 fix: rewrite narrative docs and comments in current-state voice
- c72312e fix: stop apply double-escaping and guard code-point escapers
- 945d6cd fix: tighten level-10 non-assoc, string typing, arg ordering
- d777d8e fix: validate literal regex patterns at compile time, fix jsonval key comment
Other changes
- ce736ff bench: add compile-to-Go proof-of-concept ceiling for the loop
- 06e6ee5 chore(taskfile): describe targets by what they do; wire cover:templates
- 89f452a perf(compile): add Unit, multi-template compile with static flattening
- 8b86794 perf(compile): inline KArray dotted-read fast path in exprAttr
- 0b95597 perf(compile): inline loop metadata and iterate arrays without copying
- 8751154 perf(compile): specialize typed emission, elide tab-free writer
- fcf2747 perf(ext): add arity-known Fn1 fast call for zero-argument filter pipes
- ad48729 perf(interp): allocate render scaffolding lazily on first use
- 1b2356c perf(interp): compute loop.* metadata instead of a per-iteration map
- d24c45c perf(interp): memoize static composition on the prepared Template
- f3c16e1 perf(interp): pool loop snapshot buffers behind an escape gate
- 2957dca perf(interp): reuse one loop object per pool-safe @for
- bde5380 perf(interp): size output builder from remembered output length
- bf2356e perf(runtime): copy-on-write arrays instead of eager deep-copy at scope entry
- 4faedf1 perf(runtime): drop the redundant ints map and intern small int keys
- c0f74f6 perf(runtime): gate int-key canonicalization to avoid discarded NumError
- fa331ea perf(runtime): parent-linked scope frames replace per-entry context clone
- c956493 perf(runtime): shrink loopInfo to the 64-byte size class
- 3de0a30 perf(runtime): store scope frames in ordered slices with map spill
- 487a85c perf(runtime): type-gate FromGo probe, cache struct plans
- 7144df9 perf: memoize prepared templates in Environment.LoadTemplate
- f8712c2 refactor(runtime): move the computed loop.* value from interp to runtime
- 6924b23 style: clear all golangci-lint findings
- 2c06c4a test(bench): add offline Quill-vs-stdlib render benchmark suite
- e7090d9 test(bench): benchmark the real compiled loop render backend
- aeead6a test(cover): pin coverage report formats with golden files