Repository navigation
v0.95.0
Fixed
-
RWLock Write-to-Read Reentrancy (ARCH-RWLOCK-DEAD-004):
- Previous: Thread holding write lock deadlocked when acquiring read lock
- Issue:
_acquire_read()checked for reentrant read locks but not write-to-read transitions - Fix: Added write-owner bypass in
_acquire_read()with_writer_read_counttracking - Location:
runtime/rwlock.py_acquire_read(),_release_read() - Impact: Write lock holders can now acquire nested read locks without blocking
-
CURRENCY Returns FluentNumber (API-CURR-TYPE-003):
- Previous:
currency_format()returnedstr, preventing use as plural selector - Issue: Inconsistency with
number_format()which returnsFluentNumber - Fix:
currency_format()now returnsFluentNumberwith value, formatted string, and ISO 4217 precision - Location:
runtime/functions.pycurrency_format(),runtime/function_bridge.pyFluentNumber - Impact:
CURRENCY()results can now be used in select/plural expressions
- Previous:
-
AST Span Coverage (FTL-B-001):
- Previous:
IdentifierandAttributeAST nodes hadspan=Noneafter parsing - Issue: Parser constructed these nodes without capturing start/end positions
- Fix: All
Identifier()andAttribute()constructions in the parser now populatespan - Location:
syntax/parser/rules.py(14 Identifier sites, 1 Attribute site) - Impact: Complete source location tracking for all AST nodes
- Previous:
-
Function Arguments Accept Message Attributes (FTL-D-001):
- Previous:
NUMBER(msg.attr)rejected by argument parser - Issue:
parse_argument_expressiondid not handle dot-notation attribute access - Fix: Added message attribute parsing via
_parse_message_attributedelegation - Location:
syntax/parser/rules.pyparse_argument_expression() - Impact: Full inline expression support in function call arguments
- Previous:
-
Plural Rule Precision (DEBT-PLURAL-ROUND-005):
- Previous:
Decimal.quantize()called without explicit rounding mode - Issue: Relied on mutable
decimal.getcontext().roundingwhich can be modified by application code - Fix: Added explicit
rounding=ROUND_HALF_EVENparameter - Location:
runtime/plural_rules.pyselect_plural_category() - Impact: Deterministic banker's rounding regardless of ambient Decimal context
- Previous:
-
StringLiteral.guard() (FTL-C-001):
- Previous:
StringLiterallackedguard()static method present on all other AST literal types - Fix: Added
guard()returningTypeIs[StringLiteral]for type narrowing - Location:
syntax/ast.pyStringLiteral - Impact: API consistency with
NumberLiteral.guard()and other AST node guards
- Previous:
-
IntegrityCache Docstring (DOCS-CACHE-WEIGHT-006):
- Previous: Docstring described weight formula as
len(formatted_str) + (len(errors) * 200) - Fix: Updated to describe content-based weight calculation via
_estimate_error_weight() - Location:
runtime/cache.pyIntegrityCache.__init__
- Previous: Docstring described weight formula as
-
Pyproject.toml Self-Containment (FTL-A-001):
- Previous: Comment referenced undocumented "Task 4"
- Fix: Replaced with self-contained architectural rationale
- Location:
pyproject.tomlpylint too-many-lines suppression
Added
FluentNumber.__contains__()andFluentNumber.__len__()methods for string-like protocol support