Flecs v3.2.10
Highlights
- Significant performance improvements of the rule query engine:
- Up to 4x faster when compared with v3.2.9 for simple component queries
- Up to 6x faster when compared with filters for simple component queries
- Many other improvements, like automatic reordering of terms & simplified control flow
- Rules now support
up
traversal!
Release notes
This version includes the following bugfixes:
- Fix memory leak with batched
set
commands for new components - Fix issue in detection of whether a query has no data fields
- Fix missing argument in error trace in meta addon
- Fix issue that would occur when units module is not imported before monitor module
- Fix issue with invalidating observer reachable cache
- Fix issue where
on_set
hook was invoked without deferred mode & could be called twice - Fix issue where structural changes from
on_set
hook could get lost - Fix issue where anonymous rule variables would be stored before regular variables in variable array
- Fix issue where content type wasn't set on reply for cached HTTP request
- Fix segfault when enqueueing custom event
- Fix duplicate matches in rules with or (
||
) expressions - Fix issue where ids of terms without source weren't correctly set in rule iterator
- Fix duplicate matches in rules with
Any
wildcards - Fix issue with any terms with not (
!
) operators in rules - Fix crash in query DSL parser when using
Rel(X, Y, Z)
syntax - Fix assignment within conditional expression error
- Fix issue where cloning an entity with a name would throw an error
This version includes the following improvements:
[rules]
Implementup
traversal for rules[rules]
Simplify control flow instructions of rule engine[rules]
Add new rule instructions for trivial queries which batches evaluation of multiple terms[rules]
Implement automatic filtering of prefab/disabled entities[rules]
Implement rule instruction reordering to limit evaluation of instructions with only unknown variables[rules]
Improve performance of evaluating queries with exclusive wildcard pairs[rules]
Improve performance of setting data fields for trivial and mixed source queries[meta]
Add newid
primitive type for component ids/pairs[meta]
Use%f
in log statements for doubles instead of%d
[json]
Remove overzealous check on whetherit.ptrs
is NULL in iterator serializer[stats]
Remove redundant REST statistics[stats]
Remove less than useful table statistics[stats]
Remove less than useful id statistics[rest]
Reduce log spam from invalid queries from REST API in release mode[meson]
Make compiling hello world example optional (thanks @apache-hb!)[docs]
Fix broken link in REST manual[docs]
Fix C++ module example in manual[docs]
Fix typos in source & documentation (thanks @waywardmonkeys!)[docs]
Doc improvements and formatting (thanks @waywardmonkeys!)[docs]
Remove redundant comment terminators (thanks @waywardmonkeys!)[ci]
Update GitHub actions toactions/checkount@v4
(thanks @waywardmonkeys!)[ci]
Fix new gcc warnings
Benchmark results
https://github.com/SanderMertens/ecs_benchmark/tree/ab33138f58c7a24cf05f662ac790d7cfbcfbe8e0
Known issues:
#844
#765
#714
#620
#478
#314
New Contributors
- @apache-hb made their first contribution in #1074
- @waywardmonkeys made their first contribution in #1089
Full Changelog: v3.2.9...v3.2.10