Skip to content

Flecs v3.1.0

Compare
Choose a tag to compare
@SanderMertens SanderMertens released this 15 Oct 21:56
· 1203 commits to master since this release
3745586

Release announcement

Flecs 3.1 is out!

Release notes

This version includes the following bugfixes:

  • Fixed issue with terms that had Not operator in combination with relationship traversal
  • Fixed issues in C++ API where component hooks could get reregistered across DLLs
  • Fixed issue in queries with shared components and change detection
  • Fixed issue in queries with fixed source terms and change detection
  • Fixed issue in sparse set with bulk id generation and recycling
  • Fixed issues with using emplace and commands
  • Fixed issue in group_by example so it always returns alive entity identifier
  • Fixed issue in pipeline with no_staging system after inactive system
  • Fixed issue with instanced queries and nested iter calls
  • Fixed issue where using observer with multiple components would crash when setting ctx and ctx_free
  • Fixed issue where ecs_ref_t would do more lookups than necessary
  • Fixed C++ issue with overriding a prefab child that was associated with a type
  • Fixed missing call to move hook when moving entity in table
  • Fixed double free for moved-away from component
  • Fixed leak where world was not destroyed when using app::run
  • Fixed table lock assert when adding component in observer during merge
  • Fixed crash when OnRemove observer adds component to deleted entity
  • Fixed issue with using ecs_add_path when path is root
  • Fixed issue with assigning the same name to an entity after reparenting
  • Fixed JSON crash on union pair with invalid target
  • Fixed crash where no_staging system activated at end of schedule
  • Fixed leak when multithreaded pipeline rebuilt after running the last system
  • Fixed issue where HTTP server would write to memory of purged connection
  • Fixed issue where observer would not restore iterator state for next observer
  • Fixed issues with redefining addon macro's
  • Fixed issues with parsing identifiers that start with _ in ECS_STRUCT
  • Fixed issues with parsing pointer types in ECS_STRUCT

This version includes the following improvements:

  • [c] Added ecs_children / ecs_children_next functions for iterating an entity's children
  • [c++] Added entity_view::parent function (shorthand for target(flecs::ChildOf)
  • [c++] Made calling world::module in module constructor optional
  • [c++] Added each/iter overloads that accept a stage
  • [c++] Allow module entity to be retrieved using world::entity / world::component
  • [threading] Allowed using the world (vs. stage) in single threaded system running in multi threaded apps
  • [commands] Command batching, which reduces archetype moves for entities when doing deferred operations
  • [entity DSL] Improved syntax
  • [entity DSL] Added entity DSL examples
  • [entity DSL] Added support for multiline strings
  • [entity DSL] Added support for anonymous entities
  • [entity DSL] Added variable support (reusable values)
  • [entity DSL] Added support for using simple arithmetic expressions
  • [entity DSL] Implemented a vscode extension for DSL syntax highlighting
  • [os api] Added function to get OS API struct (for easier support in language bindings)
  • [queries] Added ability to add user-defined context to query groups
  • [queries] Added assert on invalid usage of Filter in combination with queries
  • [queries] Added ecs_query_next_table for fast iteration where only tables are needed
  • [queries] Improved performance/cleanup technical debt of query change detection
  • [queries] Added ecs_query_get_group_info function
  • [observers] Added EcsFilter/flecs::Filter term flag for terms only for filtering, not receiving events
  • [observers] Added level 3 trace that shows which observers are invoked
  • [pipeline] Improved detection of sync points, correctly handle wildcard queries
  • [pipeline] Always insert sync point after no_staging system to ensure schedule consistency
  • [stats] Added FLECS_ACCURATE_COUNTERS for tracking allocation counters in multithreaded apps
  • [stats] Added new statistics for allocators, events and performance tracking
  • [stats] Organized statistics into categories
  • [stats] Improved system time measurement so it no longer includes merge time
  • [stats] Fixed issue where measuring system time for last part of schedule could be skipped
  • [stats] Use 64bit counters to reduce occurrences of stat overflows
  • [stats] Ensure counter metrics are monotonically increasing in case of overflow
  • [rest] Added brief descriptions to stats endpoints for improved visualization in explorer
  • [http] Don't enqueue requests for connections that are no longer alive
  • [http] Don't keep HTTP connection open longer than timeout
  • [http] Set timeout on connection receive socket
  • [http] Set SO_KEEPALIVE on connection socket so server is notified when client drops connection
  • [http] Implement send queue to prevent blocking on main thread when sending reply
  • [http] Fixed issue with sending replies without payload
  • [ux] Throw assert when component id overlaps with reserved bits for id flags
  • [ux] Added typename to invalid ctor/dtor error messages
  • [ux] Added assert when attempting to use ecs_bulk_init on stage
  • [internals] Reduced number of heap allocations with internals now mostly using custom allocators
  • [internals] Allow for overriding of ECS_HI_COMPONENT_ID macro
  • [internals] Allow for overriding of ECS_ID_CACHE_SIZE macro
  • [internals] Reduced bits reserved for id flags from 8 to 4
  • [internals] Improved detection of platforms where execinfo/backtrace is not available
  • [internals] Improved strbuf API so it relies less on strlen
  • [internals] Improved performance of flecs_sparse_clear

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