Releases: T3mps/Astra
Releases · T3mps/Astra
Astra 2.0.0
Astra ECS v2.0 - System Scheduling, Parallel Execution & Advanced Architecture
🎉 Major Release Highlights
Astra 2.0 is a massive update introducing system scheduling, parallel execution, command buffers, batch operations, and a complete architectural overhaul for production-ready performance.
New Parallel Performance
- 17x speedup on 20 cores for single component iteration
- ParallelForEach with automatic work distribution across cores
- Thread-safe chunk-based parallelization
🚀 Major New Features
System Scheduling Architecture (NEW)
- SystemScheduler class for organizing and executing ECS systems
- Automatic parallelization based on component access patterns
- Lambda system support with automatic Read/Write detection via const qualifiers
- System traits for declaring component dependencies (Reads/Writes)
- Custom executor interface for job system integration
- Dependency analysis for safe parallel execution
Command Buffer Architecture (NEW)
- Deferred operations for safe modifications during iteration
- Thread-safe command recording from multiple sources
- Batch command execution with minimal overhead
- Entity remapping for cloning and prefab instantiation
- Undo/redo support foundation
Parallel Execution in Views (NEW)
- ParallelForEach method for automatic parallelization
- Chunk-based work distribution for load balancing
- Thread-safe iteration with per-chunk processing
- Configurable executor support
Const Components in Views (NEW)
- Type-safe const components -
View<Position, const Velocity> - Compile-time enforcement preventing accidental modifications
Batch Component Operations (NEW)
- AddComponentBatch for efficient bulk additions
- RemoveComponentBatch for bulk removals
FlatSet Container (NEW)
- Open-addressing hash set with cache-friendly layout
- SIMD-accelerated lookups using metadata bytes
- Swiss table algorithm for efficient probing
📦 Architectural Restructuring
Entity Management Overhaul
- EntityManager with for entity orchestration/lifecycle
- EntityTable for version lookups/state management
- EntityIDStack managing free/recycled IDs
Archetype System Redesign
- ArchetypeManager as central archetype controller
- ArchetypeGraph for efficient archetype transitions
- ArchetypeChunkPool for optimized chunk allocation/reuse
🛠️ Requirements
- C++20 compatible compiler (GCC 11+, Clang 13+, MSVC 2022+)
- Premake5 for project generation
- Optional: GoogleTest, Google Benchmark
📝 License
MIT License - See LICENSE file for details
Full Changelog: v1.0.0...v2.0.0
Astra 1.0.0
Astra ECS v1.0 - High-Performance Entity Component System
🚀 Overview
Astra is a header-only Entity Component System (ECS) library for modern C++20, delivering high performance through archetype-based storage and aggressive optimization techniques.
⚡ Performance Highlights
- ~1.04B entities/second single-component iteration (hot cache)
- ~465M entities/second dual-component iteration
- Sub-nanosecond per-entity overhead in tight loops
- 2x faster batch entity creation vs individual creation
🎯 Key Features
Core Architecture
- Archetype-based storage with automatic entity grouping by component composition
- Structure-of-Arrays (SoA) layout for optimal cache utilization
- 16KB chunk-based allocation aligned to modern CPU cache hierarchies
- O(1) component access via direct ComponentID indexing
Advanced Capabilities
- Relationship graphs - Hierarchical parent-child and bidirectional entity links
- Query system with compile-time iteration optimizations
- Optional components (
Optional<T>) - Exclusion filters (
Not<T>) - Any-of queries (
Any<T...>) - One-of constraints (
OneOf<T...>)
- Optional components (
- Memory defragmentation - Configurable chunk coalescing and archetype cleanup
- Binary serialization with compression support (LZ4/ZSTD)
- Cross-platform SIMD abstractions (SSE2/SSE4.2/AVX2/NEON)
🛠️ Requirements
- C++20 compatible compiler (GCC 11+, Clang 13+, MSVC 2022+)
- Premake5
- Optional: GoogleTest for tests, Google Benchmark for benchmarks
📝 License
MIT License - See LICENSE file for details
Full Changelog: https://github.com/T3mps/Astra/commits/1.0.0