A fast entity component system (ECS) for C & C++
This version includes the following bugfixes:
Not
operator in combination with relationship traversaliter
callsctx
and ctx_free
ecs_ref_t
would do more lookups than necessarymove
hook when moving entity in tableapp::run
OnRemove
observer adds component to deleted entityecs_add_path
when path is rootno_staging
system activated at end of schedule_
in ECS_STRUCT
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
This version includes the following bugfixes:
each
was not automatically instancedterm::read
function that set the wrong inout kindemplace
with types that had no default ctoron_add
hook to be called for emplace
move_ctor
wasn't called when merging deferred emplace
ecs_app_run
NULL
This version includes the following improvements:
ecs_count_id
ecs_float_t
)set_override
where 1st element of pair is a tagecs_new_id
/ ecs_new_low_id
entity::get_mut_second
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
This version includes the following bugfixes:
This version includes the following improvements:
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
This version includes the following bugfixes:
ECS_STRUCT
OVERRIDE
or TOGGLE
This version includes the following improvements:
DontInherit
property is now respected when instantiating prefab childrenThis 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
This version includes the following bugfixes:
set
with a new pair in a multithreaded app could assertThis version includes the following improvements:
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
This is a major release with many new features, improvements, bugfixes and breaking changes. Enjoy!
See the release announcement: https://ajmmertens.medium.com/flecs-3-0-is-out-5ca1ac92e8a4
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.
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
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
This version includes the following bugfixes:
This version includes the following improvements:
flecs::ref
Known issues: https://github.com/SanderMertens/flecs/issues/569 https://github.com/SanderMertens/flecs/issues/701
This version includes the following bugfixes:
Known issues:
Note that this is a v2 release that is behind master! Only use this if you cannot migrate to v3 or need API stability
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: