Flecs v3.2.12
Highlights
- This release marks the last commit before the v4 release, which is happening in the next few days!
- This is by far the most stable v3 release, and recommended for anyone staying on v3
- All of the changes below are already part of the v4 branch!
Release notes
This version includes the following bugfixes:
- Fix issue where anonymous entity would be deserialized into named entity with same id
- Fix query DSL issue where incorrect entity could get resolved for OneOf terms
- Fix issue where module symbol lookup could interfere with name lookups
- Fix typo in named query REST endpoint
- Don't serialize entity ids as floats in JSON
- Fix issues with assigning path names with deleted parent in deferred mode
- Fix compiler error when application defines
free
macro - Fix integer conversion assert in JSON serializer
- Fix issue where compiling JSON addon without REST didn't work
- Fix issue with any pair terms in observers
- Fix world deserialization issue with entities that have relationship cycles
- Fix issue with sorting shared components
- Fix potential divide by zero in JSON profiler code
- Fix enum reflection issue on VS2019
- Fix assert for invalid query with uninitialized dependent variable
- Fix infinite loop in
progress
when using integer time type - Fix issues with
yield_existing
and observers with entity source - Fix offset on
nullptr
in JSON serializer code - Fix out of bounds write when bulk overriding components (thanks @Indra-db!)
- Fix assert when moving component without ctor to existing table (thanks @Thinkofname!)
- Remove declaration to non-existent
ecs_meta_set_component
(thanks @pfeodrippe!) - Fix potential buffer overflow with large compilers strings (thanks @apache-hb!)
- Fix duplicate definition errors when using unity builds (thanks @apache-hb!)
- Fix issue with sorting non-trivial components
- Fix issue with OR/wildcard queries
- Fix issue with overcounting nodata terms in query with OR terms
This version includes the following improvements:
[cpp]
Don't rely on automatic registration of builtin components[cpp]
Improve robustness and flexibility of enum reflection (thanks @garrett-is-a-swann!)[cpp]
Add additional overloads that make use of enum reflection (thanks @RoyAwesome!)[cpp]
Additer::field_at
method, disallow usage ofiter::field
ineach
[cpp]
Change entity constructor to takeentity_t
instead ofid_t
[cpp]
Add pair overload toget_ref
(thanks @TBlauwe!)[cpp]
Add missingget_mut
singleton methods (thanks @Indra-db!)[cpp]
Improve performance ofentity::children
[cpp]
Removestatic
for improved compatibility with C++20 modules (thanks @alexv-ds!)[cpp]
Alow for creating ownedflecs::world
from custom C world[cpp]
Addterm_index
toflecs::iter
(thanks @jpeletier!)[cpp]
Mark overridden methods withoverride
(thanks @jpeletier!)[queries]
Add support for parsing special characters in entity names[queries]
Add support for matching empty tables for cached queries[queries]
Fix issue with query traversal that could cause duplicate results[rules]
Fix incorrectly initialized context in query engine[observers]
Add support for disabling observers[observers]
Add missing event propagation code paths[pipelines]
Addmulti_threaded
argument toreadonly_begin
[core]
Improve error messages for constraint violations[core]
Allow for setting component name throughtype_info_t::name
[core]
Automatically addModule
tag to parents of components (thanks @garrett-is-a-swann!)[core]
Rename ofget_mut
,ensure
toensure
,make_alive
[core]
Add newget_mut
that doesn't add component[core]
Add ability to include user-defined header with compile-time settings[core]
Don't create intermediate tables when instantiating prefab children[core]
Fix uninitialized value in cleanup logic[core]
Add table type order check in sanitized mode[core]
Addecs_get_build_info
[core]
ImplementRelationship
,Target
,Trait
constraint traits[core]
Use destructive move semantics when move & move_ctor is not set (thanks @Indra-db!)[core]
Improve performance ofecs_children
[core]
Add world-global parameter for specifying default query flags[json]
serialize prefabs when serializing world[json]
improve robustness when deserializing into world with missing reflection data[json]
Don't asert on invalid entity identifier in JSON deserializer[json]
Add query info JSON serializer[json]
Add query profiler[json]
Always serialize full path forparent
fields[rest]
Add support for inspecting observers with REST API[rest]
Implement endpoint for capturing commands of a single frame[doc]
MergeCOREDOC
addon with doc addon[monitor]
Addframe_count
toWorldSummary
[monitor]
Add build info toWorldSummary
[doc]
Fix incorrect comments insimple_module
examples[doc]
Add code tabs and C# snippets to relationship manual (thanks @BeanCheeseBurrito!)[doc]
Fix inconsistent order_by docs[doc]
Fix headers and language example tabs in relationship manual[doc]
Fix issue with observer example in quickstart (thanks @lenis0012!)[ci]
Add deprecated CI platforms (thanks @waywardmonkeys!)[ci]
Fix warnings when usingFLECS_USE_OS_ALLOC
(thanks @waywardmonkeys!)[ci]
Fix issues with windows/clang64[ci]
Add test to make sure amalgamated files are updated[ci]
Fix asan issue with casting function pointers (thanks @darkuranium!)[windows]
Ensure windows version macro is set correctly forinet_pton
(thanks @benjitrosch!)[misc]
Makectx
argument ofworld::atfini
optional[misc]
Usefseek
instead ofrewind
(thanks @waywardmonkeys!)[misc]
Add missing#ifndef
which could cause macro redefinitions (thanks @Indra-db!)
Benchmark results
https://github.com/SanderMertens/ecs_benchmark/tree/4681e8606aa9204b97f6316d3611e9f0d2572852
Breaking changes
- Renaming of
get_mut
,ensure
(#466 (comment)) - The
COREDOC
addon was removed (#466 (comment)) ecs_readonly_begin
has a newmulti_threaded
argument (#466 (comment))- Changes to
flecs::iter::field
(#466 (comment))
Known issues:
#844
#765
#714
#620
#478
#314
New Contributors
- @RoyAwesome made their first contribution in #1160
- @TBlauwe made their first contribution in #1190
- @jpeletier made their first contribution in #1219
- @lenis0012 made their first contribution in #1228
Full Changelog: v3.2.11...v3.2.12