Skip to content

Commit 4e3be95

Browse files
committed
🔖 release v1.4.1
## 1.4.1 * [FIX] harden encoder traversal to an iterative implementation to avoid recursion-based crashes on very deep nested input * [FIX] harden decode merge path (`Utils.merge`) with iterative traversal to prevent `RecursionError` on deep conflicting merges * [FIX] update `EncodeOptions.max_depth` semantics: `None` is unbounded by this option; explicit limits are enforced directly * [FIX] preserve legacy map-merge key collision semantics for mixed key types (`'1'` vs `1`) in iterative merge * [CHORE] optimize deep encode performance by replacing per-frame side-channel chain scans with O(1) ancestry cycle state lookups * [CHORE] add deep stack-safety regressions (depth 12_000) and cycle-state compatibility tests * [CHORE] update encoding depth documentation
1 parent c8067b6 commit 4e3be95

2 files changed

Lines changed: 2 additions & 2 deletions

File tree

CHANGELOG.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
## 1.4.1-wip
1+
## 1.4.1
22

33
* [FIX] harden encoder traversal to an iterative implementation to avoid recursion-based crashes on very deep nested input
44
* [FIX] harden decode merge path (`Utils.merge`) with iterative traversal to prevent `RecursionError` on deep conflicting merges

src/qs_codec/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
"""
1515

1616
# Package version (PEP 440). Bump in lockstep with distribution metadata.
17-
__version__ = "1.4.0"
17+
__version__ = "1.4.1"
1818

1919
# Public API surface re-exported at the package root.
2020
__all__ = [

0 commit comments

Comments
 (0)