Releases: SanderMertens/flecs
Flecs v.2.4.8
Flecs 2.4.7
This version includes the following bugfixes:
- fixed issue where OnSet system would trigger for the wrong wildcard pair
- fixed issue where observer would trigger for the wrong wildcard pair
- fixed issue where observer would trigger for the wrong entity
Known issues:
- UnSet systems with wildcards only trigger for one matching component (addressed in v3)
Note that this is a v2 release that is behind master! Only use this if you cannot migrate to v3 or need API stability
Flecs v3.0.1-alpha
This is the first v3.0 alpha release. This release gets rid of deprecated features, simplifies the API and code structure, and has a number of internal improvements. For a list of changes, see:
https://github.com/SanderMertens/flecs/discussions
This is the first of a number of v3.0 alpha releases that may have breaking API changes. If you need a stable API, use the last stable 2.4 release:
https://github.com/SanderMertens/flecs/releases/tag/v2.4.6
Known issues:
- cmake file for examples needs to be updated
Flecs 2.4.6
This version includes the following bugfixes:
- Fixed potential memory corruption when using switch columns
Flecs 2.4.5
This version includes the following improvements:
- Added comment to amalgamated file to remove flecs_STATIC when using as DLL
This version includes the following bugfixes:
- Fix issue with moving filters in C++ API
- Fix issue with creating snapshots from stage
- Fixed std::is_empty() typo in C++ iterator code
Flecs 2.4.4
This version includes the following improvements:
- Added overview diagram to quickstart
This version includes the following bugfixes:
- Fix issue with using
term()
afterarg()
in filter builder - Fix memory leak when registering entity twice for the same alias with
ecs_use
Flecs 2.4.3
This version includes the following improvements:
- Include tracing level 1 by default in release builds
- Added function (
ecs_tracing_color_enable
) to disable colors in tracing
This version includes the following bugfixes:
- Fixed issue with queries and large numbers of terms
- Fixed issue with registering namespaced components with explicit ids (
entity::component<T>
) - Fixed issue with emplace on entities with non-trivial component destructors
- Fixed issue that prevented enabling tracing in release mode
Flecs 2.4.2
This version includes the following improvements:
- Enabled filter builder to create filters with any number of terms
This version includes the following bugfixes:
- Fixed issue with creating filters with more than 8 terms
- Fixed issue with creating filter & term iterators from a stage
- Fixed issue with using ecs_get_object (and ecs_get_parent) from stage
Flecs 2.4.1
This version includes the following bugfixes:
- Fixed issue with resolving shared component entity when entity has more than one base
- Fixed issue with getting switch case when in staged mode
Flecs 2.4
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.