Flecs Versions Save

A fast entity component system (ECS) for C & C++

v3.1.0

1 year ago

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: https://github.com/SanderMertens/flecs/issues/765 https://github.com/SanderMertens/flecs/issues/714 https://github.com/SanderMertens/flecs/issues/620 https://github.com/SanderMertens/flecs/issues/478 https://github.com/SanderMertens/flecs/issues/314

v3.0.4

1 year ago

This version includes the following bugfixes:

  • Fixed issue where system created with each was not automatically instanced
  • Fixed copy/paste error in term::read function that set the wrong inout kind
  • Fixed issue that prevented deferring an emplace with types that had no default ctor
  • Fixed issue that prevented on_add hook to be called for emplace
  • Fixed issue where move_ctor wasn't called when merging deferred emplace
  • Fixed issue where fps or thread count was overwritten when calling ecs_app_run
  • Fixed issue where name prefix wasn't reset after bootstrap
  • Fixed issue where union relationship wasn't properly initialized for prefab child
  • Fixed various issues with using mingw
  • Fixed wrong escaping of pipe symbol in documentation
  • Fixed issues with enum reflection on clang and Windows
  • Fixed issue with instantiating prefab children that are associated with root type
  • Fixed issue where name lookup would fail after resetting name to NULL

This version includes the following improvements:

  • Added constructor to flecs::query for creating named queries
  • Rewrote outdated parts of "designing with flecs"
  • Improved performance of ecs_count_id
  • Improved performance of queries/observers that do relationship traversal
  • Added query section to relationship manual
  • Stats addon types now use customizable float type (ecs_float_t)
  • Improved error message when using union relationship in C++ query signature
  • Added overload for set_override where 1st element of pair is a tag
  • Improved conversion logic of meta cursor API
  • Improved documentation of ecs_new_id / ecs_new_low_id
  • Updated outdated JSON examples
  • Added entity::get_mut_second
  • Improved performance of ecs_set

Known issues: https://github.com/SanderMertens/flecs/issues/765 https://github.com/SanderMertens/flecs/issues/714 https://github.com/SanderMertens/flecs/issues/620 https://github.com/SanderMertens/flecs/issues/478 https://github.com/SanderMertens/flecs/issues/314

v3.0.3

1 year ago

This version includes the following bugfixes:

  • Fixed bug where constructor was not called for explicitly registered component in multi world C++ application
  • Fixed bug with change detection and queries with OR terms

This version includes the following improvements:

  • Fixed broken links and typos in documentation
  • Added links to demos and blogs to README
  • Remove redundant includes
  • Remove redundant assignment in sparse set code
  • New group_by example

This version includes the following new features:

Breaking changes:

Known issues: https://github.com/SanderMertens/flecs/issues/765 https://github.com/SanderMertens/flecs/issues/716 https://github.com/SanderMertens/flecs/issues/714 https://github.com/SanderMertens/flecs/issues/620 https://github.com/SanderMertens/flecs/issues/478 https://github.com/SanderMertens/flecs/issues/314

v3.0.2

1 year ago

This version includes the following bugfixes:

  • Fixed symbol export issues when using reflection convenience macro's like ECS_STRUCT
  • Fixed bug that prevented inheriting from entities with a symbol identifier
  • Fixed issue that could cause crash when creating tables with OVERRIDE or TOGGLE

This version includes the following improvements:

  • Improved error messages when using stage outside of readonly context
  • Several improvements that enable interop between C modules and C++
  • Added more prefab examples
  • DontInherit property is now respected when instantiating prefab children
  • Transfer ownership of world to app framework in C++ so it can be used in webasm builds

This version includes the following new features:

Known issues: https://github.com/SanderMertens/flecs/issues/765 https://github.com/SanderMertens/flecs/issues/716 https://github.com/SanderMertens/flecs/issues/714 https://github.com/SanderMertens/flecs/issues/620 https://github.com/SanderMertens/flecs/issues/478 https://github.com/SanderMertens/flecs/issues/314

v3.0.1

1 year ago

This version includes the following bugfixes:

  • Fixed issue where calling set with a new pair in a multithreaded app could assert
  • Fixed issue where linking Flecs as static library would cause unresolved symbol errors
  • Fixed issues in cmake files for examples

This version includes the following improvements:

  • Union relationships are now serialized as regular relationships by the JSON serializer
  • Added README on how to run examples

Known issues: https://github.com/SanderMertens/flecs/issues/765 https://github.com/SanderMertens/flecs/issues/716 https://github.com/SanderMertens/flecs/issues/714 https://github.com/SanderMertens/flecs/issues/620 https://github.com/SanderMertens/flecs/issues/478 https://github.com/SanderMertens/flecs/issues/314

v3.0.0

1 year ago

Flecs 3 is out! 🎉

This is a major release with many new features, improvements, bugfixes and breaking changes. Enjoy!

Release Notes

See the release announcement: https://ajmmertens.medium.com/flecs-3-0-is-out-5ca1ac92e8a4

Upgrading to v3

If you are upgrading from v2.4.8, see this discussion for a list of breaking changes: https://github.com/SanderMertens/flecs/discussions/466

If you are upgrading from a later version, look for the date of your last commit, and use that as starting point in the discussion.

Known issues

https://github.com/SanderMertens/flecs/issues/776 https://github.com/SanderMertens/flecs/issues/765 https://github.com/SanderMertens/flecs/issues/716 https://github.com/SanderMertens/flecs/issues/714 https://github.com/SanderMertens/flecs/issues/620 https://github.com/SanderMertens/flecs/issues/478 https://github.com/SanderMertens/flecs/issues/314

v3.0.2-beta

1 year ago

This release will be almost functionally equivalent to the initial Flecs v3 release, but is tagged before v3 renaming (see https://github.com/SanderMertens/flecs/discussions/728).

Use this release if you want to use v3 features, but want to hold off on fixing breaking changes as a result of renaming.

If you are upgrading from an older (v2) release, see this discussion for a list of breaking changes when upgrading: https://github.com/SanderMertens/flecs/discussions/466

v2.4.8

2 years ago

This version includes the following bugfixes:

  • Fix index in query table cache when table is unmatched
  • Fixed group_by signature

This version includes the following improvements:

  • Add const variants to flecs::ref

Known issues: https://github.com/SanderMertens/flecs/issues/569 https://github.com/SanderMertens/flecs/issues/701

v2.4.7

2 years ago

This version includes the following bugfixes:

  • fixed issue where OnSet system would trigger for the wrong wildcard pair
  • fixed issue where observer would trigger for the wrong wildcard pair
  • fixed issue where observer would trigger for the wrong entity

Known issues:

  • UnSet systems with wildcards only trigger for one matching component (addressed in v3)

Note that this is a v2 release that is behind master! Only use this if you cannot migrate to v3 or need API stability

v3.0.1-alpha

2 years ago

This is the first v3.0 alpha release. This release gets rid of deprecated features, simplifies the API and code structure, and has a number of internal improvements. For a list of changes, see: https://github.com/SanderMertens/flecs/discussions

This is the first of a number of v3.0 alpha releases that may have breaking API changes. If you need a stable API, use the last stable 2.4 release: https://github.com/SanderMertens/flecs/releases/tag/v2.4.6

Known issues:

  • cmake file for examples needs to be updated