Sander Mertens/flecs: Release v3.1.0
Name: flecs
Owner: Sander Mertens
Release: Flecs v3.1.0
Released: 2022-10-15
License: NOASSERTION
Release Assets:
Release announcement
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
andctx_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
_
inECS_STRUCT
- Fixed issues with parsing pointer types in
ECS_STRUCT
This version includes the following improvements:
[c]
Addedecs_children
/ecs_children_next
functions for iterating an entity's children[c++]
Addedentity_view::parent
function (shorthand fortarget(flecs::ChildOf)
[c++]
Made callingworld::module
in module constructor optional[c++]
Addedeach
/iter
overloads that accept a stage[c++]
Allow module entity to be retrieved usingworld::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 ofFilter
in combination with queries[queries]
Addedecs_query_next_table
for fast iteration where only tables are needed[queries]
Improved performance/cleanup technical debt of query change detection[queries]
Addedecs_query_get_group_info
function[observers]
AddedEcsFilter
/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 afterno_staging
system to ensure schedule consistency[stats]
AddedFLECS_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]
SetSO_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 useecs_bulk_init
on stage[internals]
Reduced number of heap allocations with internals now mostly using custom allocators[internals]
Allow for overriding ofECS_HI_COMPONENT_ID
macro[internals]
Allow for overriding ofECS_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]
Improvedstrbuf
API so it relies less onstrlen
[internals]
Improved performance offlecs_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