Sander Mertens/flecs: Release v3.1.1

Name: flecs

Owner: Sander Mertens

Release: Flecs v3.1.1

Released: 2022-12-01

License: NOASSERTION

Release Assets:

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 using ecs_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 to ecs_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 shorthand with/without methods to filter builder API
  • [c++] Add pair support to emplace
  • [c++] Add pair support for flecs::ref
  • [c++] Ensure set, 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 with self 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] Add ecs_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 use double 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 to ecs_scope_iter
  • [doc] Replace flecs::entity with flecs::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 in flecs_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

Known issues: https://github.com/SanderMertens/flecs/issues/844 https://github.com/SanderMertens/flecs/issues/765 https://github.com/SanderMertens/flecs/issues/714 https://github.com/SanderMertens/flecs/issues/620 https://github.com/SanderMertens/flecs/issues/478 https://github.com/SanderMertens/flecs/issues/314

To top