Releases: SanderMertens/flecs
Flecs v3.2.9
Highlights
- Query DSL extension that makes it easier to traverse multiple edges of the same relationship:
ChildOf($pilot, $cockpit), ChildOf($cockpit, $plane)
can now be rewritten asChildOf($pilot, $cockpit, $plane)
- New rule feature that makes it possible to lookup entities by name relative to a query variable:
- Example:
Turret($this), Health($this.cannon)
- Example:
- A new API for emitting and observing simple events on entities (c, cpp)
- Example:
window.emit<Resized>({800, 600})
- Example:
- A new API for enqueueing events into the command queue for deferred handling (c, cpp)
- Example:
window.enqueue<Resized>({800, 600})
- Example:
- Performance improvements:
- Faster command batching in apps with lots of entities/commands enqueued from observers (~25x faster with 50k entities)
- Query iteration improvements due to removal of complexity in table storage (~7%-17%)
- Hierarchy creation/destruction improvements (~4%-7%)
Release notes
This version includes the following bugfixes:
- Fix assert when journaling
remove_all
/delete_with
functions - Fix world cleanup issue when using
app_run
- Fix assert when using a rule that assigns to an entity variable
- Fix issue where batched commands could invoke multi-component
OnSet
observer with uninitialized values - Fix issue with creating C++ systems/observers with names relative to root
- Fix issue with instantiating a prefab hierarchy with a recycled prefab id
- Fix issue with deserializing large
int64_t
values (TODO: correctly handle largeuint64_t
values) - Fix macro redefined warning when defining both
FLECS_DEBUG
andFLECS_SANITIZE
- Fix issue with evaluating filters with static sources that are no longer alive
- Fix issue in
cursor
API with deserializing into top-level array types - Add missing
flecs::Override
to C++ API (thanks @BeanCheeseBurrito!) - Fix issue with parsing comments in value scopes in flecs script
- Fix issue with setting pair components that have a recycled relationship id
This version includes the following improvements:
[cpp]
Default toInOutNone
when using.with()
in query builder API[cpp]
Enable optional pairs in the C++ query builder (thanks @Thinkofname!)[cpp]
Addarray
method toflecs::component
for registering components as array type[cpp]
Add default constructor toflecs::ref
[cpp]
Addflecs::ref::try_ref
method[query-dsl]
Add feature that expandsR(A, B, C)
intoR(A, B), R(B, C)
[queries]
Add ability to usecascade
in descending order[rules]
Add support for by name lookups relative to query variables ($var.child_name
)[rules]
Don't throw error when comparing variable to*
or_
wildcards[observers]
Add support for entity events[observers]
Add support for enqueueing custom events into command queue[json]
Serialize large integers as strings in JSON serializer[log]
Improve assert performance (thanks @jbarthelmes!)[log]
Enable colors for logging in emcc builds[metrics]
Add ability to track member metrics on pair components[docs]
Fix broken link to meta_c in quickstart[docs]
Fix typo in quickstart[docs]
Fix crash in C++ hooks example[docs]
Fix issue with instancing code example in query manual[docs]
AddSTACK_SIZE
parameter to list of emcc parameters in quickstart[docs]
Addgame_mechanics/factory
example[docs]
Add more content to FAQ[internals]
Removerecord_ptrs
member from table[internals]
Renameflecs::_::invoker*
toflecs::_::delegate*
[internals]
Rename command constants fromEcsOp*
toEcsCmd*
[internals]
Reduce complexity of command batching code[ci]
Fix warnings when compiling with-std=gnu2x
[ci]
Fix missing field initializer warning on g++
Benchmark results
https://github.com/SanderMertens/ecs_benchmark/tree/466a28be07c4ecbc94fa8cccb9dc4a5ba4dabf96
Known issues:
#844
#765
#714
#620
#478
#314
Full Changelog: v3.2.8...v3.2.9
Flecs v3.2.8
Highlights
- A new
iterable::find
method that makes it easier to find entities using filters, rules and queries:
flecs::query<Position> q = ecs.query<Position>();
flecs::entity result = q.find([](Position& p) {
return p.x == 20;
});
- A new Flecs Godot example by @paulfigiel!
- Lots of improvements in the Flecs.NET C# binding by @BeanCheeseBurrito!
Release notes
This version includes the following bugfixes:
- Fix crash in
ecs_pipeline_init
when passing invalid parameter - Fix incorrect
INVALID_PARAMETER
assert inecs_entity_init
when providing empty separator - Fix incorrect return type of
flecs::iter::id
- Fix potential double free in C++ when using
each_term
- Fix issue with parsing bitmask expressions with spaces
- Fix issue with deleting & recycling the same id in command buffer
- Fix flecs script crash when trying to assign an entity that's not a component in
with
statement - Fix flecs script issue with assignment after scope statement
- Fix custom build issue when specifying
FLECS_MONITOR
andFLECS_REST
- Fix world cleanup issue where regular entities could get cleaned up after components
- Fix issue where observers/hooks were not executed in deferred mode if deferring was suspended
- Fix issue where event could be propagated along incorrect relationship edge
- Fix incorrect return type of
world::id
(thanks @Indra-db!) - Fix C++ issue that prevented using a release build of flecs with debug build app & vice versa
- Fix issue where passing
nullptr
as name toworld::use
didn't work correctly (thanks @Indra-db!) - Remove incorrect template parameter from
world::from_json
- Fix issue where passing
NULL
as doc string would not remove doc component - Fix crash in
ecs_iter_str
- Fix issue on VS2019 where enum constant registration did not work correctly
This version includes the following improvements:
[cpp]
Addtable::get
method for enum types (thanks @Indra-db!)[cpp]
Additerable::find
method[cpp]
Add parameter toworld::lookup
/entity::lookup
to disable/enable recursive searching[cpp]
Remove unnecessary return inentity::modified
(thanks @Indra-db!)[cpp]
Remove redundant component registration fromentity::ref
methods (thanks @Indra-db!)[cpp]
Addentity_builder::set_json
[cpp]
Add backworld::delta_time
method[meta]
Allow for creating reflection data in deferred, suspended deferred and readonly modes[script]
Add ability to self-reference assembly instance through$this
variable[metrics]
Add ability to create metrics for nested members[alerts]
Add summary counts toAlertsActive
component[cmake]
Add support for building & running tests with cmake (thanks @Naios!)[cmake]
Increase cmake version (thanks @Sororfortuna!)[doc]
Fix typos in examples/documentation (thanks @Rageking8!)[doc]
Documentation corrections (thanks @999pingGG!)[doc]
Improve comments offwd_declare_component
example[doc]
Add missing argument topair
function in relationship manual example[doc]
Show how to calltarget()
in relationship basics example[doc]
Fix incorrect documentation comments in C++ API
Benchmark results
https://github.com/SanderMertens/ecs_benchmark/tree/f0c12a99219706c120fd49fe9862749f32f740b5
Known issues:
#1042
#844
#765
#714
#620
#478
#314
New Contributors
- @Rageking8 made their first contribution in #1037
- @Indra-db made their first contribution in #1046
- @999pingGG made their first contribution in #1048
- @Sororfortuna made their first contribution in #1053
Full Changelog: v3.2.7...v3.2.8
Flecs v3.2.7
Highlights
- A new Flecs.NET C# binding by @BeanCheeseBurrito with a similar design as the C++ API!
- Deferred
set
operations are now almost twice as fast in the C++ API ๐จ - New functions in the experimental JavaScript API for client-side replication of entities:
// Connect to flecs application
flecs.connect("http://localhost:27750")
// World that stores the joined result of two queries
let w = flecs.world()
.query("SpaceShip, (Dockedto, *)")
.query("Planet, Habitable")
.on_update(() => {
// Access replicated entities
for (let s in w.entities["fleet"]) {
const planet = w.entities[s.pairs.DockedTo];
// Is spaceship docked to a planet?
if (planet.tags.include("Planet") {
// Is planet habitable?
const habitable = planet.tags.include("Habitable") ? "habitable" : "inhabitable";
console.log("SpaceShip " + s.name + " is docked to a " + habitable + " planet!");
}
}
});
- The explorer can now show sync point statistics and which queries/systems an entity matches with:
Release notes
This version includes the following bugfixes:
- Fix issue where
ecs_table_get_column_size
was interpreting column as type index - Fix regression with using
get
with wildcard id - Replace invalid cast in Windows OS API with
TEXT()
- Fix crash in JSON serializer when trying to serialize variables for query iterators
- Fix issue with JSON type serializer and nested structs
- Fix issue where operations in
yield_existing
observers weren't always deferred - Fix issue where overriding exclusive relationships could cause an entity to have multiple instances
- Fix module registration issue across DLLs that could cause an
INVALID_COMPONENT_SIZE
assert
This version includes the following improvements:
[c]
Fix inconsistency in naming of get_ctx/set_ctx functions[c]
Addbinding_ctx
andctx_free
/binding_ctx_free
to world[c]
Addctx
/binding_ctx
to query objects[c]
AddPrivate
trait to more internal components[c++]
Assert when attempting to create a nested pair id[c++]
Improve performance of deferred C++set
operations[c++]
Fix issue in filter builder API with pair singletons[timer]
Allow for timer randomization to reduce spikes in pipeline schedule[queries]
Add support for setting$this
variable on query iterators[meta]
Shorten enum constant names by removing name prefix/enum type name prefix[json]
Addecs_entity_to_json_desc_t::serialize_ids
option[json]
Addecs_iter_to_json_desc_t::serialize_term_labels
option[json]
Addecs_iter_to_json_desc_t::serialize_id_labels
option[json]
Removeserialize_meta_ids
option[json]
Add option to serializer to return all queries an entity matches with[json]
Supportserialize_id_labels
andserialize_variable_labels
in combination withserialize_table
[json]
Allow for toggling private components in combination withserialize_table
[stats]
Add statistics for sync points[doc]
Fix typo in OS API header[doc]
Fix example in query manual (thanks @jbarthelmes!)[doc]
Fix outdated documentation in query manual and manual[doc]
Fix typo in query manual (thanks @pfeodrippe!)[doc]
Fix documentation forecs_new_w_pair
in manual[doc]
Fix links in flecs script tutorial[doc]
Fix & improve documentation in main header (thanks @copygirl!)[doc]
Add new C# binding by @BeanCheeseBurrito to README[doc]
Add questions to FAQ on how to debug issues with the explorer[doc]
Remove redundantgroup_by
callback fromgroup_iter
example[ci]
Suppress new clang warning
Benchmark results
https://github.com/SanderMertens/ecs_benchmark/tree/563b5476cf13afdeff70fe120ad9d4308da9350b
Breaking changes
- Fix inconsistencies in get/set ctx APIs (#466 (comment))
Known issues:
#844
#765
#714
#620
#478
#314
New Contributors
- @pfeodrippe made their first contribution in #1030
Full Changelog: v3.2.6...v.3.2.7
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:
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:
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!
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