Skip to content

Flecs v3.2.5

Compare
Choose a tag to compare
@SanderMertens SanderMertens released this 04 Aug 02:24
· 878 commits to master since this release
74a7f74

Highlights

  • Manually ran pipelines can now run multithreaded systems!
  • Lots of bugfixes and small improvements :)
  • The entity inspector in the explorer can now show incoming relationship edges:
Screenshot 2023-08-02 at 9 00 24 PM

Release notes

This version includes the following bugfixes:

  • Fix leaking field in AlertInstance component
  • Fix leak in query cache with entity filter (union relationships/bitset components/flattened trees)
  • Fix issue where ecs_count didn't include prefabs and disabled entities
  • Fix issue with using OVERRIDE flag in plecs scripts
  • Fix issue with reporting alert severity in JSON serializer
  • Fix issue with importing flecs.monitor without flecs.meta
  • Fix compilation issues in FreeBSD (thanks @SirLynix!)
  • Fix issue where removed argument was not correctly passed by ecs_commit
  • Fix issue where ecs_commit wouldn't enter deferred mode while executing the operation
  • Fix issue where ecs_iter_t::other_table would get reset for observers after event propagation
  • Fix issue with calling .get() on flecs::table/flecs::range from stage
  • Fix issue where REST API would return malformed JSON on seralization error (thanks @ZeroErrors!)
  • Fix issue where C++ component with the same name as a core entity would be incorrectly registered
  • Fix incorrect ifdef that checked for MSVC instead of POSIX (thanks @MilanDierick!)
  • Fix issue with change detection for queries with static sources
  • Fix issue with change detection and writing to shared terms
  • Fix issue in rule engine where variable writes in OR chains weren't treated as conditional
  • Fix issue where getting the target of a union relationship could return not alive entity handle
  • Fix issue with systems that configure both interval and rate
  • Fix memory corruption issues when using nested iterators (thanks @johnse-hypixel!)
  • Fix incorrect assert when computed alignment mismatched actual alignment
  • Fix issue where world passed to C++ rule iterator wasn't used

This version includes the following improvements:

  • [core] Remove ability to get entity id array as field with index 0 (thanks @ZeroErrors!)
  • [c] Add ecs_singleton_set_ptr (thanks @darkuranium!)
  • [cpp] Add entity_builder::scope method that returns world object scoped to entity
  • [cpp] Add flecs::iter::entities method (thanks @ZeroErrors!)
  • [cpp] Add world::run_pipeline<T> overload (thanks @ZeroErrors!)
  • [cpp] Add world::target method (thanks @ZeroErrors!)
  • [cpp] Add world::get_info, remove redundant functions (thanks @ZeroErrors!)
  • [pipeline] Add support for multithreading to ecs_run_pipeline (thanks @ZeroErrors!)
  • [meta] Add support for member value ranges
  • [json] Serialize alerts from children in entity serializer
  • [json] Add option to serialize incoming relationship edges for entity
  • [alerts] Add retain_period to alert configuration
  • [alerts] Make it possible for alerts to change severity based on a condition
  • [alerts] Add ability to generate alerts for member values that are out of range
  • [alerts] Reduce alert detection interval to 0.5 seconds
  • [monitor] Add WorldSummary component
  • [expr] Implement parent(), name() and doc_name() functions in expression parser
  • [http] Fix unused parameter warning (thanks @MilanDierick!)
  • [doc] Fix quickstart example
  • [doc] Fix filenames in documentation comments (thanks @ZeroErrors!)
  • [doc] Reduce usage of auto in C++ examples
  • [doc] Remove redundant functions from C++ examples
  • [doc] Update C++ examples that used older/more verbose API methods
  • [ci] Use stricter warning settings to compile code warning free
  • [ci] Switch asan build to run on Linux, which includes leakage reporting
  • [ci] Build code on additional compiler versions
  • [cmake] Add FLECS_STRICT flag that enables Werror and stricter warning settings

Benchmark results
https://github.com/SanderMertens/ecs_benchmark/tree/8539a8634bc6cc99a61efd5919ffe8f02c6b3478

Breaking changes

  • Passing 0 to ecs_field no longer returns the entity id array (#466 (comment))
  • The ecs_lookup_symbol function has an additional recursive argument (#466 (comment))
  • The C API convention for naming component id variables has changed (#466 (comment))
  • Redundant methods for obtaining world information have been removed (#466 (comment))

Known issues:
#965
#844
#765
#714
#620
#478
#314

New Contributors

Full Changelog: v3.2.4...v3.2.5