Skip to content

Commit 23b19fc

Browse files
authored
Update and rename wiki.md to Release-Roadmap.md
Signed-off-by: CØDE N!NJΔ <[email protected]>
1 parent 5022809 commit 23b19fc

File tree

2 files changed

+208
-359
lines changed

2 files changed

+208
-359
lines changed

Release-Roadmap.md

Lines changed: 208 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,208 @@
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

Comments
 (0)