OULY Documentation
OULY (Optimized Utility Library) is a modern C++20 high-performance utility library providing memory allocators, containers, ECS (Entity Component System), task scheduler, and serialization components for performance-critical applications.
Contents:
Quick Start
Installation
OULY is a header-only library that can be easily integrated into your project:
# Using CMake FetchContent
include(FetchContent)
FetchContent_Declare(
ouly
GIT_REPOSITORY https://github.com/obhi-d/ouly.git
GIT_TAG main
)
FetchContent_MakeAvailable(ouly)
# Link to your target
target_link_libraries(your_target PRIVATE ouly::ouly)
Basic Usage
#include <ouly/ouly.hpp>
int main() {
// Memory allocators
ouly::linear_arena_allocator<> allocator(1024 * 1024);
void* data = allocator.allocate(1024);
// Containers
ouly::small_vector<int, 16> vec = {1, 2, 3, 4};
vec.push_back(5);
// ECS
ouly::ecs::registry<> registry;
auto entity = registry.emplace();
// Task scheduler
ouly::scheduler scheduler(4);
auto workgroup = scheduler.create_workgroup();
scheduler.begin_execution();
scheduler.submit(workgroup, []() {
return 42;
}).wait();
scheduler.end_execution();
scheduler.shutdown();
return 0;
}
Key Features
- 🧠 Memory Management
Efficient memory allocators for different use cases including linear, arena, pool, and thread-safe variants.
- 📦 Containers
Modern containers with STL-like interfaces but improved performance including small_vector, dynamic_array, and more.
- 🎮 Entity Component System
High-performance ECS framework for game development and simulation applications.
- ⚡ Task Scheduler
Work-stealing task scheduler with coroutine support for parallel processing.
- 💾 Serialization
Flexible serialization framework supporting binary and YAML formats.
- 🔧 Utilities
Various utility components including reflection, DSL helpers, and more.
Requirements
C++20 compatible compiler (GCC 10+, Clang 12+, MSVC 2019+)
CMake 3.20 or later
Optional: Doxygen for documentation generation