Skip to content

Flecs v3.2.0

Compare
Choose a tag to compare
@SanderMertens SanderMertens released this 27 Mar 06:28
· 1015 commits to master since this release
1c36f18

Release announcement

Flecs 3.2 is out!

Release notes

This version includes the following bugfixes:

  • Fix issue with batched set commands and emitting OnSet events
  • Fix issue where bitset iteration index could go out of bounds
  • Fix issue where ecs_get_target would try inheritance for relationship with DontInherit
  • Fix error in custom_phases_no_builtin C++ example
  • Fix issue in JSON serializer with large string values
  • Fix issue in JSON serializer with entity ids at offset
  • Fix potential crash in ecs_get_target_id_for
  • Correctly set ecs_iter_t::offset in component hooks
  • Fix issue with suspending deferred mode
  • Fix issue in cursor API with double assignment after dotmember
  • Fix issue in script parser with binary operator followed by component assignment
  • Fix issue with vectors in JSON serializer
  • Fix issue where comments inside value blocks didn't work correctly in Flecs script
  • Fix issue with setting name string that overlaps with existing name in deferred mode
  • Add missing implementation of ecs_rule_get_filter
  • Fix issue with command ordering when setting name after reparenting
  • Fix compilation issue with new version of emcc
  • Fix issue where event for multiple ids triggered for wrong entity
  • Fix issue where event for multiple ids triggered multiple times for same observer
  • Fix issue where id in table was not updated after calling ecs_set_entity_generation
  • Fix issue that prevents using ecs_get_target_for_id from stage
  • Fix issue with component registration across binaries in multithreaded applications
  • Fix memory leak in HTTP server
  • Fix issue with importing C module in multiple worlds
  • Fix component registration issue with binaries compiled by different compilers
  • Fix issue with component registration of world::vector
  • Correct for overshoot value when returning delta_system_time for interval systems

This version includes the following improvements:

  • [c] Add missing const qualifiers to query functions
  • [c] Add missing const qualifier to ecs_id_in_use
  • [c] Add ecs_get_parent convenience function
  • [cpp] Add flecs::rule::move method
  • [cpp] Don't assert when creating invalid rule, add flecs::rule::is_valid method
  • [cpp] Add flecs::entity_builder::set_alias method
  • [cpp] Add API for singleton pairs to flecs::world
  • [cpp] Ensure world is cleaned up when app().run() returns
  • [rules] Rule engine refactor
  • [rules] Improved support for Not, Optional, Or operators
  • [rules] Added support for fuzzy name matching
  • [rules] Added support for dependent terms
  • [rules] Added a query profiler for analyzing term performance
  • [rules] Many improvements to performance, VM, data structures, runtime
  • [rules] Add option to auto-match unresolved identifiers at query creation time by name
  • [rules] Add support for using any (_) variable as term source
  • [rules] Add support for queries that start with Not/Optional terms
  • [rules] Add support for transitive queries with any (_) target
  • [rules] Add support for transitive queries with self modifier for target
  • [rules] Allow for usage of relationships other than IsA for component inheritance
  • [rules] Add support for parsing variable values from argument string
  • [rules] Add performance optimization for trivial rule queries
  • [filters] Default to InOutNone if the term type is not known beforehand
  • [filters] Change interface for Or operator to allow for neighboring Or terms
  • [queries] Improve query sorting performance
  • [queries] Add assert on invalid order_by component id
  • [core] Implement relationship flattening
  • [core] Replace all remaining occurrences of ecs_vector_t with ecs_vec_t
  • [core] Cache (ChildOf, *) id record on world for improved performance
  • [core] Cache (Identifier, Name) id record on world for improved performance
  • [core] Add AlwaysOverride component property
  • [core] Ensure children of a prefab are also tagged as prefabs
  • [core] Add stricter check on adding properties to components that are already in use
  • [meta] Add conversion to cursor API from bool to int
  • [meta] Throw less confusing error in cursor API when assigning out of bounds element/member
  • [rest] Add validity checks on offset/limit parameters
  • [rest] Add functions to call REST API from C
  • [http] Implement request caching (replaces caching mechanism of REST API)
  • [doc] Fix conflicting declaration in quickstart example
  • [doc] Fix outdated code example in systems manual
  • [doc] Add build instructions to quickstart for cmake and bake
  • [doc] Fix incorrect link in README to prefab documentation
  • [doc] Add parent(), target_for() to query section of relationship manual
  • [doc] Expand explorer section of REST manual with query examples
  • [script] Add experimental support for loading managed scripts
  • [script] Add experimental support for assemblies
  • [script] Allow for setting nested members in expression
  • [script] Add support for deriving variable name from assigned member
  • [script] Add support for adding variables as components
  • [script] Make EXPR/META addon mandatory when using script addon
  • [script] Add support for using foo.* syntax
  • [script] Add support for module foo syntax
  • [script] Add Flecs script tutorial
  • [script] Add support for assigning singletons with $ :- Component{}
  • [log] Add ecs_log_get_level

Breaking Changes

  • The interface for creating queries with Or operators has changed (#466 (comment))
  • The ecs_vector_t type has been removed from the source and replaced with ecs_vec_t (#466 (comment))

Known issues

#844
#765
#714
#620
#478
#314

New Contributors

Full Changelog: v3.1.5...v3.2.0