Sander Mertens/flecs: Release v2.4.0
Name: flecs
Owner: Sander Mertens
Release: Flecs 2.4
Released: 2021-08-13
License: NOASSERTION
Release Assets:
Finally! 🎉
The highlights of the release are:
- The first feature-complete implementation of entity relationships in any ECS framework
- Removal of dependency on STL data structures, improving compile times & reducing API footprint
- New sokol-style creation functions in C API for entities, components, queries, systems and more
- New fluent-style builder classes in C++ for creation of queries, systems and more
- A new and improved query DSL (domain specific language) with full support for custom relationships
- Improved features for responding to events with triggers & observers
- A novel search data structure for archetypes & relations which speeds up things across the board:
- Filters evaluate much faster, even though they can be much more complex than before
- Improved speed of matching tables to queries
- Operations like
ecs_get
,ecs_has
andget_object
are now constant time - Improved performance of scope iterators
- Improved performance of fetching components from base entities & instantiating from base entities
- Improved performance of
ecs_lookup
family of functions
Breaking changes: This release introduces a number of minor breaking changes when compared with the last 2.3.2 release. A non-exhaustive lists of breaking changes is provided here and may be extended later:
- The
EcsName
component is changed to anEcsIdentifier
relation which is instantiated withEcsName
andEcsSymbol
tags - Component destructors are now called on the source component after moving between archetypes
- The
ecs_get_object
function no longer accepts a component to find an object for a relation, but an index to find the nth object for a relation - The
group_by
callback signature have been modified to allow for a context - The system/query APIs have been updated to a fluent-style builder pattern
- The C++ API no longer uses STL data structures, which in practice means that code that relied on functions returning an std::string may have to be updated.
- Most legacy syntax constructs of the query DSL have been removed
- Removal of CHILDOF and INSTANCEOF roles (use the builtin
ChildOf
andIsA
relations instead) include
andexclude
filter fields are no longer supported (use new filter API)entity::each(Func&&)
now expects a function that accepts aflecs::id
instead of aflecs::entity
This was a large release! A few random facts:
- Flecs met its first sponsorship goal! ❤️
- 380 commits since the last release
- Over 2200 commits since the beginning of the project
- The Discord server grew to almost 600 users 🎉
- Close to 400 new stars were added to the project ⭐
- A little more than a year has passed since the first v2.0 release
- Almost a 100 closed PRs and issues in this release alone:
- PRs contributed by @randy408, @aganm, @mason-bially, @ikrima, @SpaceIm, @Hexlord, @shanehyde, @Zalron, @nasso and @Wesxdz
- Issues opened by @SpaceIm, @JonSnowbd, @randy408, @artgreen, @mjjq, @Hexlord, @codylico, @BHolman-LBI, @jtferson, @shanehyde, @cshenton, @Josid88, @jon-turney, @Jarodwr, @HenryFalconerIO, @tedajax, @Zalron, @domdom, @KenthJohan and @zaklaus
- Thanks everyone! 🙏
I'm skipping the full list of features/improvements/bugs for now as it's a lot, may add it later.
For the next 2 - 3 months the master branch will be used to migrate to the v3 APIs. If you need API stability, stay on the last v2 release until the official v3 release. There will be intermediate releases that allow for a more gradual upgrade path to the new v3 APIs.