From c78465d02e7183e71282341976ae6386894d16b7 Mon Sep 17 00:00:00 2001 From: Lucas Vogel Date: Tue, 29 Sep 2026 00:58:51 -0400 Subject: [PATCH] release: 0.2.4 Dependencies only. Output is byte-identical across the 13-document corpus, so nothing a caller can observe has changed except speed. PhoenixmlDb.Xslt 2.0.0 -> 2.4.1, taken for a measured gain rather than for currency: 26,609 ms -> 21,264 ms on the same document with the pin as the only variable, min of 3, rebuilt between. The release worth pausing over is the one being taken. 2.4.1 is a hotfix for a native stack exhaustion, and its fix introduced a recursion-depth ceiling that phoenixmldb-xslt#199 - filed the same day - says miscounts, halving the effective depth for recursion that both applies a template and constructs an element. docmd's nested-list rebuild is exactly that shape, so it was measured: 9, 50 and 200 levels of list nesting behave identically on both engines, and at 200 both stop at docmd's own serialiser guard rather than the engine's. w:ilvl caps at 8, so real documents never approach it. A defect can be real, open, and in the version you are taking without reaching your workload. That distinction came from testing the shape the bug describes against the constraint the inputs actually have, not from reading the tracker. tests 361 pass, 0 failing output 13 of 13 corpus documents byte-identical locks clean under --locked-mode package icon, readme and documentation project URL intact Co-Authored-By: Claude Opus 5 (1M context) Claude-Session: https://claude.ai/code/session_018wZEgtuzaZPswykiGEBxbz --- CHANGELOG.md | 28 ++++++++++++++++++++++++++++ Directory.Build.props | 2 +- 2 files changed, 29 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 81f4223..1dfcfac 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,6 +9,34 @@ stylesheet writes against is not stable until `1.0`. ## [Unreleased] +## [0.2.4] — 2026-09-29 + +Dependencies. **No behaviour change**: output is byte-identical across the 13-document corpus. + +### Changed + +- **`PhoenixmlDb.Xslt` 2.0.0 → 2.4.1** (bringing `PhoenixmlDb.XQuery` 2.4.1; Core stays at + 2.0.0). Taken for a measured gain rather than for currency: the same document converts **20% + faster**, 26,609 ms to 21,264 ms, with the pin as the only variable. + + It skips 2.1.0 and 2.2.0 deliberately. Verifying a bump costs the same whether it crosses one + release or four — build, tests, perf gate, byte-compare — and what grows with distance is + attribution, not effort. + + 2.4.1 is a hotfix for a native stack exhaustion, and the fix introduced a recursion-depth + ceiling that `phoenixmldb-xslt#199` says miscounts. docmd's nested-list rebuild is exactly the + shape that defect describes, so it was measured rather than reasoned about: synthetic + documents at 9, 50 and 200 levels of list nesting behave identically on both engines, and at + 200 both stop at docmd's own serialiser guard rather than the engine's. `w:ilvl` caps at 8, so + real documents are nowhere near it. + + `phoenixmldb-xslt#12` (a node passed to `SetParameter` is not usable as a node) is fixed in + this engine. `--style-map` can drop its workaround, which is a behaviour-adjacent change and + belongs in its own release. + + Chained predicates remain quadratic — 21.5 s at n=1500 — so the stylesheet's one-predicate + contract is still load-bearing and still accurate. + ## [0.2.3] — 2026-09-16 ### Added diff --git a/Directory.Build.props b/Directory.Build.props index 88e0055..71f7966 100644 --- a/Directory.Build.props +++ b/Directory.Build.props @@ -18,7 +18,7 @@ taken back. It also leaves room to change the md-XML vocabulary, which a custom stylesheet depends on. --> - 0.2.3 + 0.2.4 Endpoint Systems Endpoint Systems docmd