|
| 1 | +# Roadmap - Planned Releases |
| 2 | + |
| 3 | +## Overview |
| 4 | +This document outlines the consolidated release plan for TurboMapper enhancements, grouping features from versions 1.1.0 to 2.1.0 into three major releases with enhanced custom conversion feature support in mapping modules. Each release contains a collection of related features and improvements with details on compatibility and impact. |
| 5 | + |
| 6 | +## Release 1: Enhanced Core & Mapping Features (v1.2.0) |
| 7 | + |
| 8 | +### Version: 1.2.0 (Minor Release) |
| 9 | +**Release Date**: TBA |
| 10 | +**Type**: Minor Release (backward compatible new features and improvements) |
| 11 | + |
| 12 | +### Included Tasks: |
| 13 | +- Task 1.1: Refactor Duplicated GetMemberPath Methods |
| 14 | +- Task 1.2: Implement Caching for Reflection Metadata |
| 15 | +- Task 1.3: Optimize Object Creation |
| 16 | +- Task 1.4: Simplify Complex Methods |
| 17 | +- Task 2.1: Implement Compiled Expression Trees |
| 18 | +- Task 2.2: Add Configuration Caching |
| 19 | +- Task 3.1: Collection Mapping Support |
| 20 | +- Task 3.4: Ignored Properties Option |
| 21 | +- Task 5.1: Custom Type Converters Registration System |
| 22 | +- Task 5.2: Improved Nullable Type Handling |
| 23 | +- Task 6.1: Improved Error Messages for Mapping Failures |
| 24 | +- Task 3.2: Conditional Mapping |
| 25 | +- Task 3.3: Mapping with Transformation Functions (Enhanced with custom conversion support in MappingModule) |
| 26 | +- Task 5.4: Comprehensive Built-in Type Conversions |
| 27 | +- Task 6.2: Configuration Validation |
| 28 | + |
| 29 | +### Enhanced Custom Conversion Feature in Mapping Module: |
| 30 | +- **New Functionality**: Support for custom property conversion functions directly in MappingModule configuration |
| 31 | +- **API Enhancement**: Added `ConvertProperty` method to mapping expressions allowing inline conversion functions |
| 32 | +- **Module Integration**: MappingModule now supports conversion function registration for properties |
| 33 | +- **Usage Example**: `mapping.ConvertProperty(x => x.Property, value => ConvertToDesiredType(value))` |
| 34 | + |
| 35 | +### Release Notes: |
| 36 | +- **Performance Improvements**: Significant performance enhancements through compiled expression trees and metadata caching, with expected 2x+ improvement in mapping speed |
| 37 | +- **Code Quality**: Consolidated duplicate code in GetMemberPath methods and simplified complex mapping methods |
| 38 | +- **Internal Optimizations**: Replaced Activator.CreateInstance with optimized factory delegates and added configuration caching for faster lookup |
| 39 | +- **New Feature**: Collection mapping support for IEnumerable, IList, and arrays |
| 40 | +- **New Feature**: Ability to ignore properties during mapping using the Ignore() method |
| 41 | +- **New Feature**: Custom type converter registration system for handling complex type conversions |
| 42 | +- **Enhancement**: Enhanced nullable type handling with configurable behavior |
| 43 | +- **Improvement**: Much more descriptive error messages for debugging mapping issues |
| 44 | +- **New Feature**: Conditional mapping allowing properties to be mapped based on conditions using When() method |
| 45 | +- **Enhanced Feature**: Transformation functions during mapping using MapWith() method with integrated custom conversion in MappingModule |
| 46 | +- **Improvement**: More comprehensive built-in type conversions including DateTime, TimeSpan, and decimal/float conversions |
| 47 | +- **Improvement**: Configuration validation at registration time to catch potential mapping issues early |
| 48 | + |
| 49 | +### Backward Compatibility: |
| 50 | +- ✅ Fully backward compatible |
| 51 | +- No breaking changes to public APIs |
| 52 | +- All existing mapping configurations will continue to work |
| 53 | +- Performance improvements are transparent to users |
| 54 | +- New features are opt-in |
| 55 | + |
| 56 | +### Impact: |
| 57 | +- **Performance**: Significant improvement in mapping speed |
| 58 | +- **Memory**: More efficient memory usage through caching |
| 59 | +- **Functionality**: Added support for mapping collections and complex type conversions |
| 60 | +- **Debuggability**: Much better error messages help identify mapping issues quickly |
| 61 | +- **Flexibility**: More control over mapping process with ignore, custom converters, conditions and transformations |
| 62 | +- **Reliability**: Early detection of configuration issues |
| 63 | +- **Coverage**: Better handling of various data types |
| 64 | + |
| 65 | +--- |
| 66 | + |
| 67 | +## Release 2: Advanced Mapping & Type Features (v1.4.0) |
| 68 | + |
| 69 | +### Version: 1.4.0 (Minor Release) |
| 70 | +**Release Date**: TBA |
| 71 | +**Type**: Minor Release (backward compatible new features) |
| 72 | + |
| 73 | +### Prerequisites: |
| 74 | +- Completion of Release 1.2.0 |
| 75 | + |
| 76 | +### Included Tasks: |
| 77 | +- Task 4.1: Support for Complex Nested Mapping Scenarios |
| 78 | +- Task 4.2: Circular Reference Handling |
| 79 | +- Task 4.4: Better Handling of Null Nested Objects |
| 80 | +- Task 6.3: Performance Diagnostics and Profiling |
| 81 | +- Task 8.1: Generic Collection Interface Support |
| 82 | +- Task 4.3: Improved Collection Element Mapping |
| 83 | +- Task 5.3: Interface-to-Concrete Type Mapping |
| 84 | +- Task 8.2: Dictionary Mapping Capabilities |
| 85 | +- Task 10.1: .NET Standard Compatibility |
| 86 | + |
| 87 | +### Enhanced Custom Conversion Feature in Mapping Module: |
| 88 | +- **Advanced Functionality**: Support for complex type conversions including nested objects and collections |
| 89 | +- **Module Integration**: Enhanced MappingModule with conversion chain support for complex scenarios |
| 90 | +- **Type Safety**: Improved type safety for custom conversions with compile-time validation |
| 91 | +- **Performance**: Optimized conversion execution pathways |
| 92 | + |
| 93 | +### Release Notes: |
| 94 | +- **Improvement**: Enhanced support for complex nested mapping scenarios with performance optimization |
| 95 | +- **New Feature**: Detection and handling of circular references in objects to prevent infinite recursion |
| 96 | +- **Improvement**: Better configurable null handling for nested objects |
| 97 | +- **New Feature**: Optional performance diagnostics and profiling capabilities |
| 98 | +- **Improvement**: Comprehensive support for generic collection interfaces (IEnumerable, IList, IReadOnlyList, etc.) |
| 99 | +- **Improvement**: Enhanced mapping for collections with different element types |
| 100 | +- **New Feature**: Support for mapping from interface to concrete implementation |
| 101 | +- **New Feature**: Comprehensive mapping support for dictionary types with key and value transformation |
| 102 | +- **Improvement**: Better .NET Standard compatibility across target frameworks |
| 103 | +- **Enhanced Custom Conversion**: Advanced type conversion features including complex nested conversions in MappingModule |
| 104 | + |
| 105 | +### Backward Compatibility: |
| 106 | +- ✅ Fully backward compatible |
| 107 | +- New circular reference handling is optional/configurable |
| 108 | +- Performance diagnostics are opt-in |
| 109 | +- Collection interface support enhances existing functionality |
| 110 | +- Enhanced conversions are additional capabilities |
| 111 | + |
| 112 | +### Impact: |
| 113 | +- **Robustness**: Better handling of complex object graphs |
| 114 | +- **Safety**: Prevention of infinite recursion with circular references |
| 115 | +- **Observability**: Performance diagnostics for optimization |
| 116 | +- **Compatibility**: Better support for various collection types |
| 117 | +- **Flexibility**: More options for mapping complex collection structures |
| 118 | +- **Type Support**: Better handling of interface implementations |
| 119 | +- **Data Structures**: Full support for dictionary mappings |
| 120 | +- **Compatibility**: Improved cross-platform support |
| 121 | +- **Conversion**: Advanced type conversion capabilities in MappingModule |
| 122 | + |
| 123 | +--- |
| 124 | + |
| 125 | +## Release 3: Next-Gen Features & Breaking Changes (v2.1.0) |
| 126 | + |
| 127 | +### Version: 2.1.0 (Major/Minor Release) |
| 128 | +**Release Date**: TBA |
| 129 | +**Type**: Major Release (includes breaking changes) |
| 130 | + |
| 131 | +### Prerequisites: |
| 132 | +- Completion of Release 1.4.0 |
| 133 | + |
| 134 | +### Included Tasks: |
| 135 | +- Task 2.3: Implement Pre-compilation of Mappings |
| 136 | +- Task 3.5: Reverse Mapping Capabilities |
| 137 | +- Task 6.4: Detailed Mapping Execution Tracing |
| 138 | +- Task 9.1: Asynchronous Transformation Support |
| 139 | +- Task 9.2: Async Collection Processing |
| 140 | +- Task 7.1: LINQ Expression Support |
| 141 | +- Task 7.2: Projection Support |
| 142 | + |
| 143 | +### Enhanced Custom Conversion Feature in Mapping Module: |
| 144 | +- **Async Conversion Support**: Asynchronous custom conversion functions for I/O bound transformations |
| 145 | +- **LINQ Integration**: Custom conversions now work within LINQ expressions for database projections |
| 146 | +- **Performance Optimization**: Pre-compiled custom conversions for better runtime performance |
| 147 | +- **Module Enhancement**: Advanced configuration options for conversion behavior in MappingModule |
| 148 | + |
| 149 | +### Release Notes: |
| 150 | +- **New Feature**: Pre-compilation of mappings for better runtime performance with compile-time validation |
| 151 | +- **New Feature**: Reverse mapping capabilities from TTarget to TSource |
| 152 | +- **New Feature**: Detailed optional mapping execution tracing for debugging |
| 153 | +- **New Feature**: Asynchronous transformation functions and async collection processing |
| 154 | +- **New Feature**: Support for mapping in LINQ expressions with expression tree transformation |
| 155 | +- **New Feature**: Projection support for efficient database queries compatible with Entity Framework and similar ORMs |
| 156 | +- **Breaking Change**: New async mapping methods added to IMapper interface |
| 157 | +- **Improvement**: Enhanced performance with pre-compiled mappings |
| 158 | +- **Integration**: Enhanced compatibility with data access technologies |
| 159 | +- **Enhanced Custom Conversion**: Full async support and LINQ integration for custom conversions in MappingModule |
| 160 | + |
| 161 | +### Backward Compatibility: |
| 162 | +- ❌ Contains breaking changes |
| 163 | +- New async methods added to IMapper interface (requires implementation) |
| 164 | +- Reverse mapping configuration might affect existing mapping behaviors |
| 165 | +- Pre-compilation introduces new configuration patterns |
| 166 | +- Custom conversions maintain compatibility but add new async capabilities |
| 167 | + |
| 168 | +### Impact: |
| 169 | +- **Performance**: Significant improvement with pre-compiled mappings |
| 170 | +- **Functionality**: Bidirectional mapping capabilities |
| 171 | +- **Async Support**: Full async/await patterns for complex operations |
| 172 | +- **Debugging**: Detailed tracing for complex debugging scenarios |
| 173 | +- **Data Access**: Better integration with ORMs and database queries |
| 174 | +- **Performance**: Efficient projection for database operations |
| 175 | +- **Capability**: Expression tree transformation for complex scenarios |
| 176 | +- **Conversion**: Advanced async and LINQ-enabled custom conversions in MappingModule |
| 177 | + |
| 178 | +### Migration Guide: |
| 179 | +- Update IMapper implementations to include new async methods |
| 180 | +- Review mapping configurations for compatibility with reverse mapping |
| 181 | +- Consider adopting pre-compilation for performance benefits |
| 182 | +- Update custom conversion functions to support async operations if needed |
| 183 | + |
| 184 | +--- |
| 185 | + |
| 186 | +## Summary of Consolidated Release Strategy |
| 187 | + |
| 188 | +### Version Progression: |
| 189 | +1. **1.2.0**: Enhanced Core & Mapping Features (no breaking changes) - Performance, collections, custom conversions, transformations, and validation |
| 190 | +2. **1.4.0**: Advanced Mapping & Type Features (no breaking changes) - Nested mapping, circular references, interface mapping, and enhanced conversions |
| 191 | +3. **2.1.0**: Next-Gen Features & Breaking Changes (includes breaking changes) - Async operations, LINQ integration, and advanced custom conversions |
| 192 | + |
| 193 | +### Compatibility Summary: |
| 194 | +- Version 1.2.0 is fully backward compatible |
| 195 | +- Version 1.4.0 maintains backward compatibility |
| 196 | +- Version 2.1.0 introduces breaking changes (interface modifications including async methods) |
| 197 | + |
| 198 | +### Enhanced Custom Conversion Feature Summary: |
| 199 | +- **Release 1.2.0**: Basic custom conversion with integrated MappingModule support |
| 200 | +- **Release 1.4.0**: Advanced conversion for complex scenarios in MappingModule |
| 201 | +- **Release 2.1.0**: Async and LINQ-enabled custom conversions in MappingModule |
| 202 | + |
| 203 | +### Priority Features by Release: |
| 204 | +- **1.2.0**: Performance improvements, custom conversions in MappingModule, and essential mapping features |
| 205 | +- **1.4.0**: Advanced mapping capabilities and enhanced type conversions |
| 206 | +- **2.1.0**: Modern async patterns and data access integration with enhanced conversions |
| 207 | + |
| 208 | +This consolidated release strategy groups related features into cohesive releases while maintaining logical progression. |
0 commit comments