Download Latest Version Flecs v4.1.0 source code.tar.gz (24.1 MB)
Email in envelope

Get an email when there's a new version of Flecs

Home / v4.1.0
Name Modified Size InfoDownloads / Week
Parent folder
Flecs v4.1.0 source code.tar.gz 2025-06-29 24.1 MB
Flecs v4.1.0 source code.zip 2025-06-29 25.1 MB
README.md 2025-06-29 7.4 kB
Totals: 3 Items   49.2 MB 1

Release announcement

https://ajmmertens.medium.com/flecs-4-1-is-out-fab4f32e36f6

Release notes

This version includes the following bugfixes: - [core] Add missing FLECS_API to ecs_get_path_w_sep_buf - [core] Fix issue with component toggling in multithreaded apps - [core] Fix issue where not having a default ctor would mark copy/move ctor as invalid - [core] Fix issue where component_record::keep_alive refcount was incorrectly updated by observers (thanks @garrett-is-a-swann!) - [core] Fix misaligned addresses in sanitized mode - [queries] Fix issue with change detection after early outing from iterator - [queries] Fix issue where query incorrectly flagged itself as MatchOnlySelf - [observers] Don't assert on invalid observer creation - [observers] Fix uninitialized value in multi-component OnSet observer when overriding - [json] Fix crash when escaping null character in JSON serializer - [script] Fix issue in script template instantiation where children vector was deleted while iterating - [script] Fix script assert when adding component as tag without default ctor - [script] Fix issue where token buffer was incorrectly used for interpolated strings - [script] Fix assert when parsing incorrect syntax for interpolated strings - [http] Fix buffer overflow in ecs_http_server_request function - [rest] Fix serialization of pipeline statistics to JSON - [os] Fix bug where a condition variable was not correctly freed on Windows (thanks @kagetu!)

This version includes the following improvements: - [cpp] Change flecs::entity::parent() to use ecs_get_parent - [cpp] Add size(), entities(), clear_entities(), column_size(), depth(), records(), id(), lock(), unlock(), has_flags() methods to C++ table API - [cpp] Run system queries entirely in C++ to avoid function pointer overhead - [cpp] Change return type of get() to const T& - [cpp] Change return type of get_mut() to T& - [cpp] Add new try_get() with const T* return type - [cpp] Add new try_get_mut() with T* return type - [cpp] Add entity_view::get_constant() for fetching constant from enum relationship - [cpp] Add entity::child() method for spawning a child of an existing entity - [cpp] Remove redundant set functions - [cpp] Implement entity::assign() method - [c] Add ecs_singleton_get_mut, ecs_singleton_ensure - [core] Remove redundant ecs_header_t::magic field - [core] Reduce large initial size of table edge diff builder vectors - [core] Reduce page size of entity index - [core] Shrink world after bootstrap when FLECS_LOW_FOOTPRINT is defined - [core] Allocate stack allocator page on first use, not when initializing the allocator - [core] Bypass ecs_allocator_t when using FLECS_USE_OS_ALLOC - [core] Reclaim memory from stages when calling shrink() - [core] Improve performnace of ecs_ref_get - [core] Implement support for non-fragmenting components - [core] Cleanup sparse set functions - [core] Implement world exclusive access feature - [core] Remove redundant entity count arguments from internal functions - [core] Improve organization and documentation of core code - [core] Implement OrderedChildren storage - [core] Remove redundant fields from ecs_iter_t - [core] Make sure ecs_vec_reclaim frees memory when FLECS_USE_OS_ALLOC is defined - [core] Remove support for creating entity ids in multithreaded mode - [core] Remove support for Union relationships (replaced by DontFragment, Exclusive) - [core] Move core tags out of low id range - [queries] Improve detection of trivial queries - [queries] Don't use large static arrays in query struct - [queries] Reduce size of ecs_query_op_ctx_t - [queries] Default to uncached queries when FLECS_LOW_FOOTPRINT is defined - [queries] Speed up query evaluation with bloom filter - [queries] Remove redundant table_id field from query cache element - [queries] Reduce query cache footprint by removing dependency on ecs_table_cache_t - [queries] Add trivial query cache iterator - [queries] Speed up change detection for trivial queries - [queries] Remove now redundant query notification mechanism - [queries] Use smaller query cache element for trivial queries - [queries] Use array to store query cache elements instead of a linked list - [queries] Cache column pointers on query cache elements - [queries] Allow using trivial query cache for queries with not/optional operators - [queries] Treat !(R, *) terms as cacheable - [queries] Prevent rematching when creating/deleting targets of traversable relationships - [queries] Change argument of ecs_iter_get_group to const ecs_iter_t* (thanks @Indra-db!) - [observers] Support single-term observers without query - [systems] Improve performace of running systems by using more efficient iteration function - [timer] Replace AddTickSource system with With pair - [pipeline] Improve performance of running systems in pipeline - [meta] Implement ordered enum/bitmask constants (thanks @Bonkt!) - [script] Add flecs::entity::lookup() method to script - [build] Add Android support to cmake build (thanks @jiannanya!) - [docs] Fix C# filter example in observer manual - [docs] Add clojure binding to quickstart guide (thanks @pfeodrippe!) - [docs] Remove unmaintained Rust binding from README (thanks @Indra-db!) - [docs] Add new jellycacke videos on observers and singletons - [docs] Add link to ECS survivors to docs - [docs] Update change tracking examples - [docs] Add FEAST game to README - [docs] Remove Hytale game to README - [docs] Remove outdated references to instancing in query manual - [docs] Improve monitor example in observer manual - [docs] Fix incorrect location of lookup variable section in query manual - [docs] Add ECS Survivors, Ascendant to README

Breaking changes: - Change detection now has to be explicitly enabled on queries (https://github.com/SanderMertens/flecs/discussions/466#discussioncomment-13249013) - It is no longer possible to pass 0 to the size argument of ecs_field_w_size (https://github.com/SanderMertens/flecs/discussions/466#discussioncomment-13249030) - It is no longer allowed to create entities in multithreaded systems (https://github.com/SanderMertens/flecs/discussions/466#discussioncomment-13393095) - get/get_mut now return references instead of pointers (https://github.com/SanderMertens/flecs/discussions/466#discussioncomment-13438915) - get no longer returns the enumeration constant when used with enum relationship (https://github.com/SanderMertens/flecs/discussions/466#discussioncomment-13438960) - Union relationships are no longer supported (https://github.com/SanderMertens/flecs/discussions/466#discussioncomment-13578339)

New Contributors

Full Changelog: https://github.com/SanderMertens/flecs/compare/v4.0.5...v4.1.0

Source: README.md, updated 2025-06-29