Releases: SanderMertens/flecs
Flecs v3.1.2
Highlights
- The Flecs explorer can now edit component values!
- Systems can now be registered with an
OnStart
phase which is ran only in the first frame
Release notes
This version includes the following bugfixes:
- Fix issue with C++ bitmask binding (type must now inherit from
flecs::bitmask
) - Fix issue where
use_low_id
was not set byECS_COMPONENT
- Fix issues with invoking ctor/move/dtor when merging tables
- Fix issue where observer could be invoked for wrong table
- Fix invalid read in multithreaded app after pipeline rebuild
- Fix race condition between pipeline worker and
no_readonly
system - Fix issue where term with wildcard pair &
self
flag would not iterate all permutations - Fix issue where
get_mut<First, Second>
would always returnFirst*
This version includes the following improvements:
[cpp]
Add missingconst
toflecs::world
methods[cpp]
Add missingconst
toflecs::entity_view
methods[cpp]
Change argument type ofrun_pipeline
toflecs::entity_t
[cpp]
Addobserver::query
method[pipeline]
Refactor of pipeline code[pipeline]
AddOnStart
phase for systems that are ran only at startup[rest]
Addset
endpoint for remotely setting component values[rest]
Adddelete
endpoint for remotely deleting an entity[internals]
Add debugging instrumentation to allocator[internals]
Remove redundant code[internals]
Add missing tests forget
pair operations[internals]
Split off entity filter code (union relationships/bitsets) from query iterator code
Flecs v3.1.1
Highlights
- Observer refactor with new hierarchy cache that can improve event propagation performance up to 200x
- Systems are now excluded from a schedule when their module or phase is disabled
- Single threaded systems are now guaranteed to run on main thread
- New journaling addon
Release notes
This version includes the following bugfixes:
- Fixed issue with page/worker iterators and
InOutNone
- Fixed issue with invoking
on_add
hooks when usingecs_bulk_init
- Fixed issue with searching for union relationships
- Fixed C++ enum relationships on Apple Clang 14
- Fixed issue with batched deferred emplace and remove
- Fixed issue where ctx/binding_ctx was not set for multithreaded systems
- Fixed race condition with
no_readonly
systems in multithreaded apps - Fixed issue where pipeline would resume at incorrect point in schedule after merge
- Fixed issue with batched clear commands
- Fixed issue where auto-overriding components would write to wrong component
- Fixed issue with parsing template name in module
- Fixed assert during deferred component registration in multithreaded app
- Fixed leak in pipeline cleanup
- Fixed issues with sending valid preflight response in HTTP server
- Prevent sending response to invalid socket
- Don't call send on socket when reply has no data
- Fixed issue with setting symbol on entity with
IsA
relationship - Fixed issue with observer that has multiple fixed sources
- Fixed escaping issue in doc strings in JSON serializer
- Fixed issue where serialized path of core entity was not relative to root
- Fixed HTTP socket leak, add timeout to connection socket
- Replaced incorrect cast to
float
toecs_ftime_t
in system addon - Fixed issue with
flecs::filter
move assignment
This version includes the following improvements:
[c++]
Add support for run callback to C++ observers[c++]
Add typed method for getting iterator ctx in C++ API[c++]
Add support for run callback to C++ systems[c++]
Add.term<R>(string)
and.term(R, string)
overloads to filter builder[c++]
Add shorthandwith
/without
methods to filter builder API[c++]
Add pair support toemplace
[c++]
Add pair support forflecs::ref
[c++]
Ensureset
,set_override
use move for pairs where possible[journal]
Implement journaling addin[queries]
Improve performance of query rematching[filters]
Allow for creation of named filters/rules[filters]
Cache id record on filter terms for faster matching[rules]
Enable overriding transitive behavior withself
flag[observers]
Refactor observer code for improved event propagation performance[observers]
Implement reachable id cache to improve event performance of adding relationships[pipeline]
Add doc name to pipeline schedule tracing[pipeline]
Exclude systems from pipeline with disabled phase/disabled module[pipeline]
Run single threaded systems on main thread[iterator]
Addecs_iter_first
function[query DSL]
Add query DSL support for specifying flags for(r, t)
notation[commands]
Reduce lookups during command batching (performance improvement)[storage]
Reduce overhead of table graph edges, improve table creation speed[stats]
Always usedouble
for metric types to avoid precision issues[stats]
Add REST and HTTP statistics[units]
Add frequency units[rest]
Add endpoint for requesting results of existing query[rest]
Add endpoint for enabling/disabling entities[rest]
Add caching for named query requests[rest]
Start/stop HTTP servers when enabling/disabling REST module[http]
Send HTTP headers in send thread[http]
Improve response times and handling of HTTP preflight requests[http]
Always use double precision for time values in HTTP server[doc]
Add system examples[doc]
Update C++ examples with simplified query variable syntax[doc]
Add example to show how to forward declare component/tag variables[doc]
Fix typos in manuals[doc]
Add custom phase example that does not use builtin phases[doc]
Remove outdated reference toecs_scope_iter
[doc]
Replaceflecs::entity
withflecs::entity_t
in C++order_by
example[doc]
Improve pipeline section of manual[doc]
Add observer examples for C/C++[ux]
Improve error message for conflicting symbols during implicit component registration[build]
Improve directory structure of cmake build to match visual studio[build]
Improve bazel build to support .inl files[internals]
Don't free chunks inflecs_sparse_clear
(performance improvement)[internals]
Use faster sparse set function in table event batching admin[internals]
Replace map with faster sparse set in generic allocator[internals]
Use faster storage for id records in low id range[internals]
Inline type_info sparse set
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