This document provides a comprehensive summary of all JSONPredicate releases, organized by semantic versioning, with detailed information about features, fixes, and improvements in each release.
Release Type: Major Release Date: August 2025 Focus: Core predicate evaluation functionality
Initial release of the JSONPredicate library. Provides core functionality for evaluating string-based predicate expressions against JSON objects using JSONPath syntax. Supports various comparison operators, logical operators (AND/OR), parentheses for precedence, and comprehensive datatype handling.
- Basic predicate evaluation with
eq,in,not,gt,gte,lt,lteoperators - Logical operators: AND, OR with proper precedence handling
- JSONPath-style property navigation (e.g.,
client.address.postcode) - Support for multiple data types (string, numeric, boolean, DateTime, arrays)
- Parentheses support for expression grouping
- Base version for all future compatibility comparisons
- Standard .NET library conventions followed
Release Type: Minor (Backward Compatible) Release Date: October 2025 Focus: Critical fixes, new functionality and performance improvements
Combined release addressing critical issues while adding significant new functionality and performance improvements, all while maintaining 100% backward compatibility. This release focuses on stability improvements, new features, and performance optimization without changing existing functionality.
- Fixed namespace inconsistency across library components
- Implemented thread-safe operator dictionary to prevent race conditions
- Array indexing support in JSONPath (e.g.,
array[0].property) - New comparison operators:
starts_with,ends_with, andcontains
- Direct object navigation replacing JSON serialization for path evaluation
- Optimized expression parsing without regex
- 50%+ faster path evaluation
- Reduced memory allocations
- T1.1: Fix Namespace Inconsistency
- Updated namespace
JsonPathPredicatetoJSONPredicatein JsonPath.cs - Updated namespace
JsonPathPredicatetoJSONPredicatein Values.cs - Updated namespace
JsonPathPredicatetoJSONPredicatein DataTypes.cs - Updated namespace
JsonPathPredicate.OperatorstoJSONPredicate.Operatorsin all operator files - Updated using statements in JSONPredicate.cs as needed
- Updated namespace
- T1.2: Implement Thread-Safe Operators Dictionary
- Replaced Dictionary with ConcurrentDictionary for thread safety
- Implemented safe initialization in static constructor
- Verified thread safety with concurrent access tests
- T2.1: Replace JSON Serialization with Direct Object Navigation
- Replaced JSON serialization with reflection-based property access
- Maintained same path resolution behavior
- Preserved null-handling behavior
- Achieved 50%+ performance improvement
- T2.2: Optimize Expression Parsing (Remove Regex)
- Replaced regex parsing with manual parsing
- Maintained same parsing rules and behavior
- Improved performance and maintainability
- Preserved operator precedence and spacing requirements
- T3.1: Add Array Indexing Support
- Added support for array indexing (e.g.,
array[0].property) - Maintained backward compatibility with existing path formats
- Implemented robust error handling for invalid indices
- Added comprehensive edge case handling
- Added support for array indexing (e.g.,
- T3.2: Add New Comparison Operators
- Added
starts_with,ends_with, andcontainsoperators - Followed existing operator implementation patterns
- Updated expression parser to recognize new operators
- Maintained consistent behavior and error handling
- Added
- Binary compatible with v1.0.0
- Source compatible with v1.0.0
- All existing code continues to work without changes
- All existing unit tests passed
- Thread safety verified with concurrent access tests
- Performance benchmarks validated
- New functionality thoroughly tested
- Array indexing edge cases verified
- New operator functionality validated
- Integration testing with existing features completed
Release Type: Major (Breaking Potential) Release Date: [TBC] Focus: Performance optimization, new features, comprehensive validation
Major feature and performance release with comprehensive validation. This release includes all the improvements from previous releases plus thorough testing and validation. This is a major version bump due to the significant internal changes that may affect some advanced usage patterns.
- Array indexing support in JSONPath (e.g.,
array[0].property) - New comparison operators:
starts_with,ends_with, andcontains - Direct object navigation with 50%+ performance improvement
- Thread-safe operation in multi-threaded environments
- Namespace consistency across all components
- Up to 70% faster path evaluation for complex nested objects
- Reduced memory allocations by 60%+
- Better performance in multi-threaded scenarios
- Improved expression parsing performance through regex removal
- T4.1: Comprehensive Testing and Validation
- Complete test suite validation
- Performance benchmarking
- Thread safety verification
- Memory profiling and optimization verification
- Integration testing of all features together
- T4.2: Documentation and Release Preparation
- Updated README with new features
- Performance metrics documentation
- Upgrade instructions
- NuGet package preparation
- Public API maintains compatibility with v1.0.0 for basic usage
- Binary compatibility maintained
- Some advanced usage may see behavior changes due to implementation improvements
- Major version bump reflects significant internal changes
- All 70+ existing unit tests verified
- Performance benchmarks executed and validated
- Thread safety tested with 100+ concurrent threads
- Memory profiling confirmed 60%+ allocation reduction
- Integration testing of all features combined
- Cross-platform compatibility verified
- Focus: Internal consistency, thread safety, performance optimization and new functionality
- Improvement: Fixed critical namespace inconsistency
- Improvement: Made operator dictionary thread-safe
- Improvement: 50%+ performance improvement through direct object navigation
- Improvement: Expression parsing optimization removing regex dependency
- Addition: Array indexing support (e.g.,
array[0].property) - Addition: New operators (
starts_with,ends_with,contains) - Addition: Comprehensive unit tests for all new features
- Impact: Better stability, reliability and performance with new features, all backward compatible
- Path Evaluation: 50-70% faster through direct object navigation
- Expression Parsing: Faster through manual parsing (no regex)
- Memory Usage: 60%+ reduction in allocations
- Thread Safety: Eliminated race conditions with ConcurrentDictionary
- Array Indexing: Support for
array[0].propertysyntax - New Operators:
starts_with,ends_with,contains - Enhanced Path Navigation: More robust property access
- Better Error Handling: More specific and informative error messages
- Namespace Consistency: Unified
JSONPredicatenamespace - Thread Safety: Safe concurrent access to operators
- Code Maintainability: Manual parsing more maintainable than regex
- Comprehensive Testing: All features validated together
- Drop-in replacement
- No code changes required for existing functionality
- Benefits: Thread safety, performance improvements, and new features available
| Version | Performance Improvement | Memory Improvement | New Features | Backward Compatible |
|---|---|---|---|---|
| v1.2.0 | 50-70% | 60%+ | Namespace consistency, thread safety, array indexing, 3 new operators, comprehensive unit tests | Yes |