Skip to content

Flecs v3.2.2

Compare
Choose a tag to compare
@SanderMertens SanderMertens released this 12 May 20:39
· 926 commits to master since this release
3ca10b6

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

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 and ecs_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 compile ECS_FUNC_* marco's for C code (thanks @aganm!)
  • [cpp] Add component::constant overload that works with enum classes
  • [cpp] Remove entity_view::delta_time function
  • [cpp] Change argument of enable_rest to HTTP port
  • [c] Remove unnecessary sep variable initialization in ecs_new_from_path_w_sep (thanks @copygirl!)
  • [c] Add port member to ecs_app_desc_t
  • [http] use non-blocking socket for recv which increases stability for servers with many clients
  • [docs] Add note on pipeline switching performance
  • [docs] Update outdated cascade example in quickstart
  • [docs] Fix incorrect comment for iterable::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 in untyped_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