Releases: SanderMertens/flecs
Flecs v3.1.0
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
Flecs v3.0.4
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 foremplace
- Fixed issue where
move_ctor
wasn't called when merging deferredemplace
- 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
Flecs v3.0.3
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:
- Group iterators (https://github.com/SanderMertens/flecs/tree/master/examples/cpp/queries/group_iter)
Breaking changes:
- Fixed inconsistencies in naming between fields and terms: #466 (comment)
Flecs v3.0.2
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
orTOGGLE
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:
- Added support for prefab slots (see https://github.com/SanderMertens/flecs/tree/master/examples/cpp/prefabs/slots)
Flecs v3.0.1
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
Flecs v.3.0.0
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:
#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
Flecs v3.0.2-beta
This release will be almost functionally equivalent to the initial Flecs v3 release, but is tagged before v3 renaming (see #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: #466
Flecs v.2.4.8
Flecs 2.4.7
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
Flecs v3.0.1-alpha
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