v0.8.6
This is a maintenance release bringing mostly bug fixes and internal improvements.
New features are of internal nature. In order to have more control over allocations, the project switched to using allocators for everything (we already had ChunkAllocator for handling allocation of memory for archetype chunks). This way, every allocation can be monitored and if necessary, allocation strategy for any given place in the project can be easily changed. Also, this gives the user the ability to override the default allocation with a custom one if needed.
The project supports allocation tracing via Tracy. This gives us the ability to see where any allocation comes from and how the situation changes over time:
Release notes
Fixed:
- added fallback for setting thread name on Win (e.g. if Win10 is not the target platform) 6de6982
- build with profiler enabled dd6c809
- GAIA_LOG_W/E would not output to stderr entirely 08a0fbe
- possible build errors d55f235
- ::emplace_back would not return a reference 1e1d22a
- ecs::call_ctor would not work with braces initialization 1e1d22a
- incorrect ranges used for indexed view/view_mut dcd9931
- ecs::Core no longer excluded by default on queries 5b05dba
- remapping not applied properly for chunk batching 0b3ef53
- numerical overflow in the app example d2db469
Changed:
- Picobench and Catch2 version bump b53fdb4
- all Gaia-ECS allocations go through internal DefaultAllocator by default 58a17a0
- benchmarks will no longer generate output in profiling mode 5ac6adb
- use 64b hash for entity lookup 1820ff4
- World::has_none -> has_no 5b05dba
Tweaked:
- improved outputs from cachegrind 7367226
- improved chunk utilization bc03d08
- improved Query matching fbab95a
- improved usage of profiler scopes 7112cb9 fc5f7cd
- archetype size optimized afadd4d
- color output for GAIA_LOG_x macros 08a0fbe
Added:
- DefaultAllocator 58a17a0
- StackAllocator fcdb1ea
- support for custom allocator on containers 58a17a0
- support for named allocation (currently exposed for profiling sessions only) 98b92b0
- support for mutex profiling 278e757
- World::set_max_lifespan to change how long an empty archetype stays alive until deleted 506efc5
Full Changelog: v0.8.5...v0.8.6