Changelog ========= All notable changes to OULY will be documented in this file. The format is based on `Keep a Changelog `_, and this project adheres to `Semantic Versioning `_. [Unreleased] ------------ Added ~~~~~ - Comprehensive documentation with Sphinx and Breathe integration - Coalescing arena allocator for reduced fragmentation Changed ~~~~~~~ - Improved error handling in binary serialization - Enhanced type safety in ECS component storage - Optimized memory layout for better cache performance Fixed ~~~~~ - Thread safety issues in shared linear allocator - Memory alignment bugs in pool allocator - Compilation errors with certain compiler configurations [1.0.0] - 2025-01-01 -------------------- Added ~~~~~ **Core Features** - Linear allocator with LIFO deallocation support - Arena allocator with automatic block management - Pool allocator for fixed-size object allocation - Thread-safe allocator variants with lock-free design **Container Library** - ``small_vector`` with stack-based storage optimization - ``dynamic_array`` with custom allocator support - ``sparse_vector`` for memory-efficient sparse storage - ``intrusive_list`` for zero-allocation linked lists - ``soavector`` for Structure of Arrays layout **Entity Component System** - ``registry<>`` for entity lifecycle management - ``components`` with configurable storage strategies - ``collection`` for efficient entity grouping - ``rxregistry<>`` with revision-based thread safety **Task Scheduler** - Work-stealing scheduler with multiple worker threads - Workgroup organization for task dependencies - C++20 coroutine support with ``co_task`` - Manual thread affinity configuration support **Serialization Framework** - Binary serialization with endianness control - YAML serialization for human-readable configuration - Stream-based I/O for memory efficiency - Custom type serialization support **Utility Components** - Memory alignment utilities and helpers - Template-based configuration system - STL allocator wrapper for compatibility - Debugging and statistics collection **Build System** - CMake integration with modern targets - Multiple build presets for different platforms - Comprehensive unit test suite with Catch2 **Documentation** - Getting started guide and tutorials - Complete API reference with Doxygen - Performance optimization guide - Real-world usage examples Platform Support ~~~~~~~~~~~~~~~~~ - Linux (GCC 10+, Clang 12+) - macOS (Apple Clang 13+, Intel/ARM) - Windows (MSVC 2019+) - C++20 standard compliance Performance Characteristics ~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Zero-cost abstractions through template specialization - Lock-free algorithms for multi-threaded performance - Cache-friendly memory layouts and access patterns - SIMD optimization opportunities with SoA containers Changed ~~~~~~~ - Initial stable release - API design finalized for v1.x compatibility Security ~~~~~~~~ - Memory safety through RAII and automatic lifetime management - Bounds checking in debug builds - Thread safety guarantees documented for all components [0.9.0] - 2024-12-01 -------------------- Added ~~~~~ - Beta release with core allocator functionality - Basic container implementations - Initial ECS framework - Preliminary task scheduler [0.5.0] - 2024-09-01 -------------------- Added ~~~~~ - Alpha release with experimental allocators - Proof-of-concept implementations [0.1.0] - 2024-06-01 -------------------- Added ~~~~~ - Project initialization - Basic project structure - Initial CMake configuration - Foundational header-only library design Migration Guide --------------- Upgrading from 0.x to 1.0 ~~~~~~~~~~~~~~~~~~~~~~~~~~ **Breaking Changes** - Allocator interface standardization - ECS component storage configuration changes - Scheduler API refinements **Code Migration** Old (0.x): .. code-block:: cpp // Old allocator interface auto allocator = ouly::make_linear_allocator(1024); void* ptr = allocator->allocate(256); New (1.0): .. code-block:: cpp // New standardized interface ouly::linear_allocator<> allocator(1024); void* ptr = allocator.allocate(256); **ECS Configuration** Old (0.x): .. code-block:: cpp // Old configuration ouly::ecs::components positions; New (1.0): .. code-block:: cpp // New configuration system using SparseConfig = ouly::cfg::use_sparse<>; ouly::ecs::components, SparseConfig> positions; Future Roadmap -------------- **Planned for 1.1.0** - Additional allocator strategies (buddy, slab) - Enhanced SIMD optimization support - Improved debugging and profiling tools - Additional serialization formats (JSON, MessagePack) **Planned for 1.2.0** - GPU memory allocator support - Distributed computing extensions - Advanced ECS queries and filters - Real-time garbage collection options **Planned for 2.0.0** - Modern C++ features adoption (modules, concepts) - Breaking API improvements based on user feedback - Platform-specific optimizations - Enterprise features and support Contributing ------------ We welcome contributions! Please see our `Contributing Guide `_ for details on: - Code style and standards - Pull request process - Testing requirements - Documentation guidelines Support ------- For support and questions: - GitHub Issues: Bug reports and feature requests - GitHub Discussions: General questions and community support - Documentation: Comprehensive guides and API reference License ------- OULY is released under the MIT License. See LICENSE file for details.