Releases: SanderMertens/flecs
Flecs v3.2.6
Highlights
- Realtime strategy game Tempest Rising uses Flecs!
- 20% performance increase for
add
/remove
operations when entity already has the component - Experimental new web tool and JavaScript API for working with the Flecs REST API
- Improved support and CI testing for MinGW targets
Release notes
This version includes the following bugfixes:
- Fix issue with queries and recycled component ids
- Fix JSON serializer issue where
serialize_alerts
is enabled but module is not imported - Fix meta bug where member count was ignored if explicit offset was provided (thanks @ZeroErrors!)
- Fix C++ compiler errors when using
ecs_map_t
macro API - Fix assert when serializing entity alerts for alert without message template
- Fix recursive cleanup issue for entities with multiple relationships to parent entity
- Fix C++ component hook registration issue when child type was registered before parent
This version includes the following improvements:
[c]
Fix inconsistencies between column index and type index in table API[c]
Fix naming inconsistencies in table API[cpp]
Fix inconsistencies between column index and type index inflecs::table
API[cpp]
Fix naming inconsistencies inflecs::table
API[cpp]
Addcomponent::member
overload that takes pointer to member (thanks @ZeroErrors!)[cpp]
Addconst
toflecs::string::size
andflecs::string::length
(thanks @yuyoyuppe!)[cpp]
Addworld::scope(const char*)
method (thanks @sasichkamega!)[meta]
Add support for packed structs (thanks @ZeroErrors!)[meta]
Remove unused size/alignment fromEcsMetaType
(thanks @ZeroErrors!)[rest]
Reduce amount of default enabled parameters for REST query endpoint[internals]
Simplify table data structures[internals]
Improve organization and naming of source files[doc]
Add note to FAQ about why (recycled) entity ids can be large[doc]
Add Tempest Rising to README[doc]
Add note on empty entities to cleanup order[ci]
Add msys/mingw builds to CI[ci]
Fix orphaned tests
Benchmark results
https://github.com/SanderMertens/ecs_benchmark/tree/e66a97d07528be158c1875b7193612904d203ef7
Breaking changes
- Table API changes (#466 (comment))
Known issues:
#844
#765
#714
#620
#478
#314
New Contributors
- @yuyoyuppe made their first contribution in #1019
- @sasichkamega made their first contribution in #1027
Full Changelog: v3.2.5...v3.2.6
Flecs v3.2.5
Highlights
- Manually ran pipelines can now run multithreaded systems!
- Lots of bugfixes and small improvements :)
- The entity inspector in the explorer can now show incoming relationship edges:
![Screenshot 2023-08-02 at 9 00 24 PM](https://private-user-images.githubusercontent.com/9919222/258280418-e54d5d17-e6bc-4239-aa76-b41069fcd52f.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjEyNDQyMjAsIm5iZiI6MTcyMTI0MzkyMCwicGF0aCI6Ii85OTE5MjIyLzI1ODI4MDQxOC1lNTRkNWQxNy1lNmJjLTQyMzktYWE3Ni1iNDEwNjlmY2Q1MmYucG5nP1gtQW16LUFsZ29yaXRobT1BV1M0LUhNQUMtU0hBMjU2JlgtQW16LUNyZWRlbnRpYWw9QUtJQVZDT0RZTFNBNTNQUUs0WkElMkYyMDI0MDcxNyUyRnVzLWVhc3QtMSUyRnMzJTJGYXdzNF9yZXF1ZXN0JlgtQW16LURhdGU9MjAyNDA3MTdUMTkxODQwWiZYLUFtei1FeHBpcmVzPTMwMCZYLUFtei1TaWduYXR1cmU9OWZlMTlhMjRiNGNhN2JkNDViMzlhM2IwZjYzZjAyMmRlYTE2YWRkM2VhZTkwMGQ1YWE1YWNlMTU3OWNlODI1ZiZYLUFtei1TaWduZWRIZWFkZXJzPWhvc3QmYWN0b3JfaWQ9MCZrZXlfaWQ9MCZyZXBvX2lkPTAifQ.IzpFz7wMkCu_DdjRzIu8-nefVln3J-XrG-TjHdJmuKs)
Release notes
This version includes the following bugfixes:
- Fix leaking field in AlertInstance component
- Fix leak in query cache with entity filter (union relationships/bitset components/flattened trees)
- Fix issue where
ecs_count
didn't include prefabs and disabled entities - Fix issue with using
OVERRIDE
flag in plecs scripts - Fix issue with reporting alert severity in JSON serializer
- Fix issue with importing
flecs.monitor
withoutflecs.meta
- Fix compilation issues in FreeBSD (thanks @SirLynix!)
- Fix issue where
removed
argument was not correctly passed byecs_commit
- Fix issue where
ecs_commit
wouldn't enter deferred mode while executing the operation - Fix issue where
ecs_iter_t::other_table
would get reset for observers after event propagation - Fix issue with calling
.get()
onflecs::table
/flecs::range
from stage - Fix issue where REST API would return malformed JSON on seralization error (thanks @ZeroErrors!)
- Fix issue where C++ component with the same name as a core entity would be incorrectly registered
- Fix incorrect
ifdef
that checked forMSVC
instead ofPOSIX
(thanks @MilanDierick!) - Fix issue with change detection for queries with static sources
- Fix issue with change detection and writing to shared terms
- Fix issue in rule engine where variable writes in OR chains weren't treated as conditional
- Fix issue where getting the target of a union relationship could return not alive entity handle
- Fix issue with systems that configure both
interval
andrate
- Fix memory corruption issues when using nested iterators (thanks @johnse-hypixel!)
- Fix incorrect assert when computed alignment mismatched actual alignment
- Fix issue where world passed to C++ rule iterator wasn't used
This version includes the following improvements:
[core]
Remove ability to get entity id array as field with index 0 (thanks @ZeroErrors!)[c]
Addecs_singleton_set_ptr
(thanks @darkuranium!)[cpp]
Addentity_builder::scope
method that returns world object scoped to entity[cpp]
Addflecs::iter::entities
method (thanks @ZeroErrors!)[cpp]
Addworld::run_pipeline<T>
overload (thanks @ZeroErrors!)[cpp]
Addworld::target
method (thanks @ZeroErrors!)[cpp]
Addworld::get_info
, remove redundant functions (thanks @ZeroErrors!)[pipeline]
Add support for multithreading toecs_run_pipeline
(thanks @ZeroErrors!)[meta]
Add support for member value ranges[json]
Serialize alerts from children in entity serializer[json]
Add option to serialize incoming relationship edges for entity[alerts]
Addretain_period
to alert configuration[alerts]
Make it possible for alerts to change severity based on a condition[alerts]
Add ability to generate alerts for member values that are out of range[alerts]
Reduce alert detection interval to 0.5 seconds[monitor]
AddWorldSummary
component[expr]
Implementparent()
,name()
anddoc_name()
functions in expression parser[http]
Fix unused parameter warning (thanks @MilanDierick!)[doc]
Fix quickstart example[doc]
Fix filenames in documentation comments (thanks @ZeroErrors!)[doc]
Reduce usage ofauto
in C++ examples[doc]
Remove redundant functions from C++ examples[doc]
Update C++ examples that used older/more verbose API methods[ci]
Use stricter warning settings to compile code warning free[ci]
Switch asan build to run on Linux, which includes leakage reporting[ci]
Build code on additional compiler versions[cmake]
AddFLECS_STRICT
flag that enablesWerror
and stricter warning settings
Benchmark results
https://github.com/SanderMertens/ecs_benchmark/tree/8539a8634bc6cc99a61efd5919ffe8f02c6b3478
Breaking changes
- Passing 0 to
ecs_field
no longer returns the entity id array (#466 (comment)) - The
ecs_lookup_symbol
function has an additionalrecursive
argument (#466 (comment)) - The C API convention for naming component id variables has changed (#466 (comment))
- Redundant methods for obtaining world information have been removed (#466 (comment))
Known issues:
#965
#844
#765
#714
#620
#478
#314
New Contributors
- @SirLynix made their first contribution in #998
- @MilanDierick made their first contribution in #996
- @darkuranium made their first contribution in #1007
- @johnse-hypixel made their first contribution in #1012
Full Changelog: v3.2.4...v3.2.5
Flecs v3.2.4
Highlights
- Performance improvements!
- 25%-80% performance improvement when creating/deleting entity hierarchies
- 70%-90% performance improvement when reparenting/changing entity names
- 40% performance improvement for event forwarding
- 5%-20% performance improvement when iterating cached queries
- A new query feature that allows for nesting terms
- A new alerting addon that monitors graph queries for invalid patterns, with explorer UI:
![Screenshot 2023-06-11 at 6 32 38 PM](https://private-user-images.githubusercontent.com/9919222/245009706-1f0baa36-0d25-4b25-86c4-d63f0f18e38e.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjEyNDQyMjAsIm5iZiI6MTcyMTI0MzkyMCwicGF0aCI6Ii85OTE5MjIyLzI0NTAwOTcwNi0xZjBiYWEzNi0wZDI1LTRiMjUtODZjNC1kNjNmMGYxOGUzOGUucG5nP1gtQW16LUFsZ29yaXRobT1BV1M0LUhNQUMtU0hBMjU2JlgtQW16LUNyZWRlbnRpYWw9QUtJQVZDT0RZTFNBNTNQUUs0WkElMkYyMDI0MDcxNyUyRnVzLWVhc3QtMSUyRnMzJTJGYXdzNF9yZXF1ZXN0JlgtQW16LURhdGU9MjAyNDA3MTdUMTkxODQwWiZYLUFtei1FeHBpcmVzPTMwMCZYLUFtei1TaWduYXR1cmU9MTE3ZDRlMDExYWU1NDc3ZjVjZGNkNDA2ZTdmODA3ODAxY2E1MGFjY2I0NzZlMGU5ZjRmZmEwZTE4YWExOTQ2MCZYLUFtei1TaWduZWRIZWFkZXJzPWhvc3QmYWN0b3JfaWQ9MCZrZXlfaWQ9MCZyZXBvX2lkPTAifQ.zOlFkYVTOEkFP7AmvRWNFZMMc1v8456V8cF6IWinwE4)
Release notes
This version includes the following bugfixes:
- Fix issue with calling
children()
on builtinWildcard
/This
entities - Fix issue in rule engine with anonymous source variables and component terms
This version includes the following improvements:
[alerts]
Implement alert addon[cpp]
Addworld::children
method for iterating root entities[expr]
Addecs_interpolate_string
function[expr]
Add support for evaluation of dotexpressions on variables (e.g.$foo.x
)[rules]
Add support for nested query terms[queries]
Reduce overhead of query cache entry by not inlining infrequently used fields[queries]
Reduce complexity and indirection of query cache data structures[systems]
Allow rate/interval to be modified withecs_system_init
[pipelines]
Add support for integration with external tasks systems (thanks @gsnook!)[docs]
Correct parameter naming offlecs_hashmap_init
(thanks @kagetu!)[docs]
Add section on task systems to system manual[core]
AllowExclusive
property to be removed from (unused) ids[ux]
Improve error messages inflecs_bulk_new
,ecs_rule_iter
[internals]
Improve naming of functions, constants and add more comments[internals]
Don't emit unnecessaryTableFill
/TableEmpty
events[internals]
Don't emit unnecessaryTableCreate
/TableDelete
events[internals]
Revalidate observer cache in more scenarios (reduces cache invalidation events)[internals]
Remove redundant calls todefer_begin
/defer_end
in bootstrap[internals]
Improve performance of id record creation for pairs[internals]
Don't inline infrequently used fields inecs_table_t
[internals]
Remove dead sorting code (thanks @jbarthelmes!)
Benchmark results
https://github.com/SanderMertens/ecs_benchmark/tree/f1a776066fc6d857c9aa1e7c3d7ff59069583750
Known issues:
#969
#965
#844
#765
#714
#620
#478
#314
New Contributors
Full Changelog: v3.2.3...v3.2.4
Flecs v3.2.3
Release notes
This version includes the following bugfixes:
- Fix crash when using change detection with queries that don't have
$this
terms - Fix issue with serializing large floating point values
- Fix issue with creating user space observer for table events
- Fix error message when using
ECS_PRIVATE
inECS_STRUCT
- Add missing emscripten include to app addon source
This version includes the following improvements:
[c]
Changeecs_owns_id
from macro to function[queries]
Reset query match counters after iteration has finished (improves change detection usability in systems)[metrics]
Add support for metrics that count the number of entities with an id[http]
Enable blocking for HTTP send call to improve stability of sending large replies[docs]
Fix broken links in documentation (thanks @MewSoul!)[meson]
Link withws2_32
for Windows builds (thanks @randy408!)
Known issues:
#969
#965
#844
#765
#714
#620
#478
#314
Full Changelog: v3.2.2...v3.2.3
Flecs v3.2.2
Highlights
- New entity index data structure which improves performance of create/delete/add/remove by 10-20%
- Replaced hash implementation with wyhash, improving table creation performance by 15-30%
- Graph visualization of queries in the explorer!
![Screenshot 2023-05-12 at 1 35 13 PM](https://private-user-images.githubusercontent.com/9919222/238074023-c612b560-a85a-4d30-9774-f6b98d5e2ee1.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjEyNDQyMjAsIm5iZiI6MTcyMTI0MzkyMCwicGF0aCI6Ii85OTE5MjIyLzIzODA3NDAyMy1jNjEyYjU2MC1hODVhLTRkMzAtOTc3NC1mNmI5OGQ1ZTJlZTEucG5nP1gtQW16LUFsZ29yaXRobT1BV1M0LUhNQUMtU0hBMjU2JlgtQW16LUNyZWRlbnRpYWw9QUtJQVZDT0RZTFNBNTNQUUs0WkElMkYyMDI0MDcxNyUyRnVzLWVhc3QtMSUyRnMzJTJGYXdzNF9yZXF1ZXN0JlgtQW16LURhdGU9MjAyNDA3MTdUMTkxODQwWiZYLUFtei1FeHBpcmVzPTMwMCZYLUFtei1TaWduYXR1cmU9MDMzMWQwMGRiOTQzNjRkZThhYTcyYTJjMGJiMGEzYzU2ZDJlMGMwZWFlYTcwMWViYzhmNjY2YmQ2OWZkMjE0ZSZYLUFtei1TaWduZWRIZWFkZXJzPWhvc3QmYWN0b3JfaWQ9MCZrZXlfaWQ9MCZyZXBvX2lkPTAifQ.bvTXa1ZXC0LYKPedpnKZMZryZjTki3fsqvxYeEWWUKE)
Release notes
This version includes the following bugfixes:
- Fix issue where assert would trigger during (component) id deletion
- Fix issue with detecting redeclared variables in flecs script
- Fix incorrect value of
EcsTypeKindLast
- Fix issue with creating query on entity that already has an existing query
- Fix potential crash in
ecs_iter_fini
when using chained iterators - Fix issue where observer could cause emplace to return invalid pointer
- Fix issue where
With
pair would assume type of pair target - Fix inconsistencies in enum constant registration between C and C++ APIs
- Fix issues with symmetric relationships and recycled ids
- Add missing
ecs_rule_var_count
,ecs_rule_var_name
andecs_rule_var_is_entity
functions (thanks @copygirl!) - Fix inconsistent naming of desc size constants
- Fix issue where id record could get deleted twice during world cleanup
- Fix incorrect JSON serialization of pair ids
- Fix bug in query creation with recycled relationship id
- Add missing imports to monitor module
- Fix assert when iterating rule with
0
source - Fix possible leak when reassigning system/observer ctx/binding_ctx
- Fix crash in
ecs_pipeline_stats_get
when obtaining stats for pipeline with one task system
This version includes the following improvements:
[cpp]
Don't compileECS_FUNC_*
marco's for C code (thanks @aganm!)[cpp]
Addcomponent::constant
overload that works with enum classes[cpp]
Removeentity_view::delta_time
function[cpp]
Change argument ofenable_rest
to HTTP port[c]
Remove unnecessarysep
variable initialization inecs_new_from_path_w_sep
(thanks @copygirl!)[c]
Addport
member toecs_app_desc_t
[http]
use non-blocking socket forrecv
which increases stability for servers with many clients[docs]
Add note on pipeline switching performance[docs]
Update outdatedcascade
example in quickstart[docs]
Fix incorrect comment foriterable::each
(thanks @ZeroErrors!)[docs]
Fix error in quickstart example[json]
Improve error handling of JSON iterator serializer[rest]
Propagate serialization errors to REST endpoints[rest]
Log errors that happen while replying to REST request to console[metrics]
Improved logic for deriving metric name from enum constant inuntyped_component::metric
[internals]
Implement new entity index data structure[internals]
Replace hash function with wyhash[portability]
Emulate POSIX atomics for systems that do not have GNU builtins (thanks @aganm!)[portability]
Add compiler support for tinycc (thanks @aganm!)[ci]
Add vs2017 job to CI
Benchmark results
https://github.com/SanderMertens/ecs_benchmark/tree/7bb9d7cf672f0b5991b5faff4f5f8cc5afcd94ef
Breaking changes:
- The
entity_view::delta_time
method has been removed (#466 (comment)) - The argument of
app_builder::enable_rest
has changed (#466 (comment))
Known issues:
#969
#965
#844
#765
#714
#620
#478
#314
Full Changelog: v3.2.1...v3.2.2
Flecs v3.2.1
Highlights
- Query iteration improved 20-40% when iterating components
- New addon for recording component values and relationships as metrics
- New
FLECS_LOW_FOOTPRINT
compiler flag that reduces memory usage
Release notes
This version includes the following bugfixes:
- Fix issue where change detection would not clear when using
ecs_query_next_table
- Fix crash where wildcard id record was deleted before matching non-wildcard id record
- Fix issue where during world fini a filter incorrectly decreased the refcount of an id record
- Fix issue with setting This variable to entity for filters
- Fix issue where
OnRemove
observer wasn't invoked after deferred batched clear - Fix issue in flecs script where pair target was not looked up correctly
- Fix issue where filter would compute incorrect size for
(*, T)
pair term
This version includes the following improvements:
[cpp]
Addflecs::world::reset
method deletes/recreates a world[cpp]
Addget
/set
methods toflecs::world
for singleton pairs[cpp]
Add method to get filter fromflecs::rule
(thanks @Thinkofname!)[cpp]
Addflecs::rule::rule_str
method[cpp]
Addflecs::entity_view::path_from
method[cpp]
Allowiterable::set_var
to be called for filters[cpp]
Addflecs::iter::column_index
method[cpp]
Addflecs::table::column_size
method[c]
Addecs_field_column_index
function[c]
Addecs_table_get_column_size
function[queries]
Improve performance of trivial query iteration (addresses performance regression in 3.2.0)[queries]
Implement change detection for flattened tables[filters]
Return data for OR terms if the type of terms in the OR chain is the same[filters]
Reuse samesizes
array for all results of filter (improves cache locality during iteration)[filters]
Improve performance of filter creation[metrics]
Implement metrics addon[docs]
Add scene management example (thanks @benjitrosch!)[docs]
Fix typos/grammar issues in relationships doc (thanks @oznogon!)[docs]
Fix outdated docs for ecs_filter_iter[docs]
Fix outdated docs for ecs_bulk_new_w_id[docs]
Fix link to FAQ in readme[cmake]
Update version number to 3.2 (thanks @podsvirov!)[internals]
Reduce overhead of tables that don't use bitsets/union relationships/flattening[internals]
AddFLECS_LOW_FOOTPRINT
compiler flag for reduced memory utilization
Breaking changes:
- A
when_changed
argument has been added toecs_query_populate
(#466 (comment))
Known issues:
#844
#765
#714
#620
#478
#314
#951
New Contributors
- @podsvirov made their first contribution in #952
- @oznogon made their first contribution in #956
Full Changelog: v3.2.0...v3.2.1
Flecs v3.2.0
Release announcement
Release notes
This version includes the following bugfixes:
- Fix issue with batched set commands and emitting OnSet events
- Fix issue where bitset iteration index could go out of bounds
- Fix issue where
ecs_get_target
would try inheritance for relationship withDontInherit
- Fix error in
custom_phases_no_builtin
C++ example - Fix issue in JSON serializer with large string values
- Fix issue in JSON serializer with entity ids at offset
- Fix potential crash in
ecs_get_target_id_for
- Correctly set
ecs_iter_t::offset
in component hooks - Fix issue with suspending deferred mode
- Fix issue in cursor API with double assignment after
dotmember
- Fix issue in script parser with binary operator followed by component assignment
- Fix issue with vectors in JSON serializer
- Fix issue where comments inside value blocks didn't work correctly in Flecs script
- Fix issue with setting name string that overlaps with existing name in deferred mode
- Add missing implementation of
ecs_rule_get_filter
- Fix issue with command ordering when setting name after reparenting
- Fix compilation issue with new version of emcc
- Fix issue where event for multiple ids triggered for wrong entity
- Fix issue where event for multiple ids triggered multiple times for same observer
- Fix issue where id in table was not updated after calling
ecs_set_entity_generation
- Fix issue that prevents using
ecs_get_target_for_id
from stage - Fix issue with component registration across binaries in multithreaded applications
- Fix memory leak in HTTP server
- Fix issue with importing C module in multiple worlds
- Fix component registration issue with binaries compiled by different compilers
- Fix issue with component registration of
world::vector
- Correct for overshoot value when returning
delta_system_time
for interval systems
This version includes the following improvements:
[c]
Add missingconst
qualifiers to query functions[c]
Add missingconst
qualifier toecs_id_in_use
[c]
Addecs_get_parent
convenience function[cpp]
Addflecs::rule::move
method[cpp]
Don't assert when creating invalid rule, addflecs::rule::is_valid
method[cpp]
Addflecs::entity_builder::set_alias
method[cpp]
Add API for singleton pairs toflecs::world
[cpp]
Ensure world is cleaned up whenapp().run()
returns[rules]
Rule engine refactor[rules]
Improved support forNot
,Optional
,Or
operators[rules]
Added support for fuzzy name matching[rules]
Added support for dependent terms[rules]
Added a query profiler for analyzing term performance[rules]
Many improvements to performance, VM, data structures, runtime[rules]
Add option to auto-match unresolved identifiers at query creation time by name[rules]
Add support for using any (_
) variable as term source[rules]
Add support for queries that start with Not/Optional terms[rules]
Add support for transitive queries with any (_
) target[rules]
Add support for transitive queries withself
modifier for target[rules]
Allow for usage of relationships other thanIsA
for component inheritance[rules]
Add support for parsing variable values from argument string[rules]
Add performance optimization for trivial rule queries[filters]
Default toInOutNone
if the term type is not known beforehand[filters]
Change interface for Or operator to allow for neighboring Or terms[queries]
Improve query sorting performance[queries]
Add assert on invalidorder_by
component id[core]
Implement relationship flattening[core]
Replace all remaining occurrences ofecs_vector_t
withecs_vec_t
[core]
Cache(ChildOf, *)
id record on world for improved performance[core]
Cache(Identifier, Name)
id record on world for improved performance[core]
AddAlwaysOverride
component property[core]
Ensure children of a prefab are also tagged as prefabs[core]
Add stricter check on adding properties to components that are already in use[meta]
Add conversion to cursor API from bool to int[meta]
Throw less confusing error in cursor API when assigning out of bounds element/member[rest]
Add validity checks onoffset
/limit
parameters[rest]
Add functions to call REST API from C[http]
Implement request caching (replaces caching mechanism of REST API)[doc]
Fix conflicting declaration in quickstart example[doc]
Fix outdated code example in systems manual[doc]
Add build instructions to quickstart for cmake and bake[doc]
Fix incorrect link in README to prefab documentation[doc]
Addparent()
,target_for()
to query section of relationship manual[doc]
Expand explorer section of REST manual with query examples[script]
Add experimental support for loading managed scripts[script]
Add experimental support for assemblies[script]
Allow for setting nested members in expression[script]
Add support for deriving variable name from assigned member[script]
Add support for adding variables as components[script]
MakeEXPR
/META
addon mandatory when using script addon[script]
Add support forusing foo.*
syntax[script]
Add support formodule foo
syntax[script]
Add Flecs script tutorial[script]
Add support for assigning singletons with$ :- Component{}
[log]
Addecs_log_get_level
Breaking Changes
- The interface for creating queries with Or operators has changed (#466 (comment))
- The
ecs_vector_t
type has been removed from the source and replaced withecs_vec_t
(#466 (comment))
Known issues
New Contributors
- @SaadiqDaniels made their first contribution in #933
- @icolwell made their first contribution in #937
- @benjitrosch made their first contribution in #944
Full Changelog: v3.1.5...v3.2.0
Flecs v3.1.5
Highlights
- A big upgrade to the reflection framework which can now serialize/deserialize custom (including STL) types!
- New functions to serialize & deserialize a world to & from JSON
- Improved performance of iterating queries with tag fields (+30-50%)
- Improved performance of table creation in apps with lots of cached queries (+70-90%)
- Improved performance of notifying multiple observers for the same event (+20-30%)
Release notes
This version includes the following bugfixes:
- Fix issue where symmetric relationship would be cleaned up before its observer
- Fix issue in debug mode where entity generation check could use wrong index in dense array
- Fix issue where
on_set
hook was not called before observers during command batching - Changed incorrect return type of
ecs_id_is_tag
tobool
- Ensure destructor is called on moved away from value in command queue
- Fix memory leaks when using a global
flecs::world
object - Ensure destructor is called on moved away from column when merging tables
- Fix lambda compilation issue when using Visual Studio 2017
This version includes the following improvements:
[core]
Allow forecs_ensure
to be called from stage[core]
AddTraversable
property to allow for relationships that are acyclic but not traversable[core]
Only applyDontInherit
property toIsA
traversal[meta]
Serialization & deserialization support for opaque types[meta]
Add methods for deserializing values & entities to C++ API[json]
Add option to JSON serializer to serialize all contents of a matched table[json]
Add functions for serializing/deserializing world to/from JSON[observers]
Improve performance of invoking multiple observers for the same event[queries]
Improve detection and handling of query terms without data[cpp]
Remove redundant world argument fromflecs::entity
constructor inid::second()
[cpp]
Addbegin/end
methods toflecs::type
so it can be iterated[cpp]
Addentity::view
method for safe upcast from stagedflecs::entity
object[cpp]
Automatically disable enum reflection for compilers that don't support it[docs]
Improve documentation ofget_mut
[docs]
Rewrite of the FAQ[docs]
Add query example for singletons, add singleton section to quickstart[ux]
Add assert when not using stage when creating iterator in multi threaded world[internals]
Use observers for notifying queries of new tables[internals]
Improve performance ofecs_bulk_init
by using faster function to update entity index[internals]
Implement small utility API for parsing JSON strings
Breaking Changes:
- Inconsistencies in the naming of JSON deserialization functions have been fixed (#466 (comment))
- The behavior of the
Acyclic
property has been split up into anAcyclic
andTraversable
property (#466 (comment))
Known issues:
#844
#765
#714
#620
#478
#314
New Contributors
- @BeanCheeseBurrito made their first contribution in #923
- @Thinkofname made their first contribution in #928
Full Changelog: v3.1.4...v3.1.5
Flecs v3.1.4
Highlights
- Performance improvements for many core ECS operations! 🎉 (see below)
- A new benchmark suite with more than 100 tests: https://github.com/SanderMertens/ecs_benchmark
- Changes made to an existing component with a deferred
get_mut
are now immediately visible to systems & otherget_mut
calls (#466 (comment))
Performance improved in this release for 116 in a total of 120 benchmarks! Here are a few of the most significant improvements between v3.0.0 and v3.1.4 (which also includes improvements from command batching & the observer cache):
Benchmark | v3.0.0 | v3.1.4 | Difference |
---|---|---|---|
has_id | 8.92ns | 4.38ns | +50.90% |
get_id | 7.18ns | 3.69ns | +48.61% |
get_mut_id | 12.22ns | 7.35ns | +39.85% |
set_id | 29.13ns | 11.85ns | +59.32% |
add_remove_1_tag | 20.43ns | 17.63ns | +13.71% |
add_remove_cmd_16_tags | 40.40ns | 17.55ns | +56.56% (command batching) |
get_mut_cmd_16 | 47.17ns | 18.65ns | +60.46% (command batching) |
create_delete_tree_depth_10 | 19.27us | 8.24us | +57.25% |
emit_propagate_depth_10 | 1.52us | 194.33ns | +87.25% (observer cache) |
query_iter_16_tags_4_terms | 56.39ns | 26.15ns | +53.63% |
Release notes
This version includes the following bugfixes:
- Ensure
HAVE_EXECINFO
is defined on all platforms - Fix compilation issue on clang 16 (thanks @gorilux!)
- Add missing
flecs_cpp.c
to the meson build file - Fix issue where non-instanced query with multiple traversal terms did not match entities
- Fix broken links in documentation
- Remove
<strong></strong>
from documentation markdown headers - Fix issue where atomic id generation was used without threading
- Fix issue where
flecs::ref
would store stage instead of world - Fix assert in observer cache after deleting parent with relationship to child
- Fix issue with passing string to
ecs_set_name
that overlaps with current name - Fix compile error when passing existing object to
set<R, T>
- Fix memory corruption when using
ecs_bulk_init
with existing table - Fix command batching issue with adding
ChildOf
pair while removing name
This version includes the following improvements:
[core]
Require entities to be alive for ECS operations[core]
Deferredecs_get_mut_id
now returns reference to actual component if it exists (thanks @dmlary!)[c]
Add matching*_DECLARE
convenience macro's for each*_DEFINE
macro[cpp]
Addworld::get_ref
[docs]
Lots of small improvements to documentation (thanks @copygirl!)[docs]
Move build instructions from README to Quickstart[docs]
Improve build instructions for gcc/clang on Windows[ux]
Add example forentity::emplace
[internals]
Faster map implementation that no longer stores a variable size payload[internals]
Use array vs. sparse set to lookup id records with low ids[internals]
Replace usage ofecs_vector_t
in sparse set with fasterecs_vec_t
[internals]
Add new/faster sparse set operations that assume id is alive[internals]
Cleanup sparse set API[internals]
Replace code ofecs_has_id
with faster implementation[internals]
Remove redundant code from table graph operations[internals]
Improve performance of defer/suspend mechanism[internals]
Improve performance of pipelines queries by addingself
flag toSystem
term
Breaking Changes:
- Entities now must be alive before using with ECS operations (#466 (comment))
- Deferred
get_mut
now returns pointer to existing component (#466 (comment))
Known issues:
#844
#765
#714
#620
#478
#314
New Contributors
- @copygirl made their first contribution in #902
- @gorilux made their first contribution in #906
- @dmlary made their first contribution in #908
Full Changelog: v3.1.3...v3.1.4
Flecs v3.1.3
Highlights
- New documentation website!
- Query rematching performance improvements
Release notes
This version includes the following bugfixes:
- Fix issues with looking up numerical ids from scope (e.g.
foo::bar::100
) - Fix issue where reachable cache invalidation would not iterate all ids
- Fix issue with parsing entity path that can't fit in 32bit int
- Fix issue where filter with
self
term is created before id - Fix issue where id records were incorrectly deleted for
ecs_remove_all
/ecs_delete_with
- Fix issue with adding
ChildOf
pair and deferredecs_entity_init
- Fix issues with updating
EcTableHasObserved
flag (fixes reachable cache asserts) - Fix issue where id record could not get cleaned up correctly (fixes reachable cache asserts)
- Add move hook to
Pipeline
component (fixes segfault when using multiple pipelines)
This version includes the following improvements:
[entities]
Use empty separator string to prevent tokenization of name inecs_entity_init
[cpp]
Add const to query class methods[cpp]
Add const to iterable class methods[cpp]
Addemplace_override
for pairs[queries]
Prevent query rematching from happening more than once per query/frame[pipelines]
Prevent adding empty operation at end of schedule[table]
Support callingecs_table_get
from stage[units]
Add units for hyperlinks, images and files[units]
AddLength::Pixel
unit[docs]
Add doxygen headers to source and include files[docs]
Addedcs_get_depth
,entity_view::depth
,ecs_table_get_depth
,table::depth
functions[docs]
Add doxygen documentation[docs]
Replace old flecs.dev site with doxygen generated one[docs]
Remove dead links to docsforge pages[docs]
Add instructions for how to fix compilation errors related to time/socket functions[ux]
Improved C/C++ APIs for working with tables[ux]
Remove redundant tracing when component is reregistered[ux]
Throw assert when trying to delete entity/component that is still queried for[internals]
Move code out of query iterator in preparation of union/bitset support for filters[internals]
Remove redundant relationship traversal call from table edge creation code