Skip to content

Flecs v3.2.10

Compare
Choose a tag to compare
@SanderMertens SanderMertens released this 17 Dec 22:15
· 557 commits to master since this release
1653495

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!

⚠️ The next release will merge the filter, rule and query implementations into a single query API, expect breaking changes! ⚠️

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] Implement up 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 new id primitive type for component ids/pairs
  • [meta] Use %f in log statements for doubles instead of %d
  • [json] Remove overzealous check on whether it.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 to actions/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

Full Changelog: v3.2.9...v3.2.10