Skip to content

v1.4.0

Choose a tag to compare

@HelgeSverre HelgeSverre released this 06 Nov 12:20
· 22 commits to main since this release

Added

  • Full TOON decoder implementation: Complete decoding functionality with strict mode support
    • Parses all TOON formats: inline arrays, list arrays, tabular arrays, nested objects
    • Strict mode validation (enabled by default) for spec compliance
    • Configurable indentation and delimiter support
    • Comprehensive error handling with specific exception types
    • Round-trip encode/decode verified working perfectly
  • Specification compliance documentation: Created comprehensive SPEC-COMPLIANCE.md
    • Encoder conformance: 10/10 requirements verified
    • Decoder conformance: 7/7 requirements verified
    • Strict mode: 11/11 requirements verified
    • Full TOON Specification v1.3 compliance verified
  • Performance benchmarking: Comprehensive PHPBench suite for performance analysis
    • EncodeBench: Measures encoding performance across data sizes (small, medium, large, xlarge) and format types (inline, tabular, list, nested)
    • DecodeBench: Measures decoding/parsing performance with same variations
    • ThroughputBench: Measures sustained operations per second for realistic workloads
    • ScalabilityBench: Measures performance scaling from 10 to 100K items
    • All benchmarks track execution time and memory usage
  • GitHub Actions workflow: Automated performance benchmarking on every PR
    • Runs benchmarks on PHP 8.1, 8.2, 8.3, 8.4
    • Compares PR performance against main branch baseline
    • Comments results directly on pull requests
    • Detects performance regressions (>15% slower)
    • Stores benchmark results as artifacts
  • Justfile commands: New benchmark commands for local development
    • just benchmark-performance - Run PHPBench with default report
    • just benchmark-perf-summary - Run with summary report
    • just benchmark-all - Run both token efficiency and performance benchmarks
    • just benchmark-baseline - Store current performance as baseline
    • just benchmark-compare - Compare against stored baseline
  • Documentation: Comprehensive README for performance benchmarks explaining metrics, usage, and interpretation
  • Baseline benchmarks: Saved performance baselines before and after encoder refactoring for comparison

Changed

  • Architecture refactoring: Converted Encoder from static methods to instance-based pattern
    • Encoder now stores EncodeOptions and LineWriter as readonly properties
    • Eliminated parameter threading through 9 methods (~30+ parameter passes)
    • Matches Decoder's instance-based architecture for consistency
    • Performance impact is negligible (< 3% worst case, often better)
  • Decoder improvements: Completed Parser instance-based refactoring
    • Fixed remaining DecodeOptions parameter bugs
    • Parser now fully instance-based with stored configuration
    • All 539 tests pass, PHPStan Level 9 clean