Skip to content

Releases: SanderMertens/flecs

Flecs 2.4.6

27 Aug 16:07
df399a0
Compare
Choose a tag to compare

This version includes the following bugfixes:

  • Fixed potential memory corruption when using switch columns

Flecs 2.4.5

27 Aug 07:18
a5f8df6
Compare
Choose a tag to compare

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

20 Aug 18:16
6bc8bb0
Compare
Choose a tag to compare

This version includes the following improvements:

  • Added overview diagram to quickstart

This version includes the following bugfixes:

  • Fix issue with using term() after arg() in filter builder
  • Fix memory leak when registering entity twice for the same alias with ecs_use

Flecs 2.4.3

18 Aug 03:30
9c845fc
Compare
Choose a tag to compare

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

16 Aug 04:56
5719c63
Compare
Choose a tag to compare

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

15 Aug 03:55
e1e3789
Compare
Choose a tag to compare

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

13 Aug 07:13
8e9997f
Compare
Choose a tag to compare

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 and get_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 an EcsIdentifier relation which is instantiated with EcsName and EcsSymbol 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 and IsA relations instead)
  • include and exclude filter fields are no longer supported (use new filter API)
  • entity::each(Func&&) now expects a function that accepts a flecs::id instead of a flecs::entity

This was a large release! A few random facts:

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.

Flecs 2.3.2

23 Feb 12:38
Compare
Choose a tag to compare

This release introduces a breaking change to fix C++ component registration. The symbol member of the EcsName (or flecs::Name) component now requires an allocation. If you explicitly assign members to the EcsName component (using get_mut, not using set) you will have to update your code.

Another change that was introduced to fix component registration is that the symbol member of the EcsName component for a module now always contains the fully qualified path to the entity. Previously this value contained the C or C++ typename, but this caused issues with module interop between C and C++. If your code relied on looking up modules by their C typename and not the fully qualified name, code will have to be updated.

This release contains the following improvements:

  • replace iostream with initializer_list (C++ API, thanks @ikrima!)
  • ensure entity::m_id is initialized to 0 (C++ API, thanks @ikrima!)
  • use ecs_os_malloc instead of new (C++ API, thanks @ikrima!)
  • remove superfluous copies of lambda functions (C++ API, thanks @ikrima!)
  • add CHANGELOG (thanks @ikrima!)

This release contains the following bugfixes:

  • fix matching for queries with shared componnents when base entity is deleted
  • fix various issues with component registration in C++
  • fix issue with setting target FPS on Apple M1 (thanks @prime31!)
  • fix issues with CMake file (thanks @SpaceIm!)
  • fix crash when creating & deleting queries
  • guarantee that id returned by new_component_id is unused

Flecs 2.3.1

03 Feb 05:49
35971af
Compare
Choose a tag to compare

This version contains the following improvements:

  • Improved lerp example
  • Added OS API example C++ (thanks @mcmlevi!)
  • Upgraded cmake buildfiles (thanks @rawbby!)
  • Clarified text in README describing API/ABI stability

This version contains the following bugfixes:

  • Fix crash when using overlapping UnSet systems
  • Fix issue with passing incorrect row to UnSet systems
  • Added .hpp files to cmake install
  • Fixed issue with using get_mut with traits

Flecs v2.3

18 Jan 06:59
Compare
Choose a tag to compare

Highlights:

  • Big performance improvements & reduced memory usage for applications with lots of tables, such as when using hierarchies
  • Component enabling/disabling allows for quick component mutations without moving entities between archetypes
  • New statistics addon for retrieving metrics from running world (replaces stats module)

Thanks to @randy408, @sh-dave, @kevinresol, @jasonliang-dev and @Alexandre-P-J for submitting PRs! πŸŽ‰

Thanks to @ikrima and @jtferson for writing two awesome testimonials on using Flecs with Unreal Engine 4 πŸ™ :

Thanks to the new Flecs sponsors ❀️ :

Breaking changes:

  • calling ecs_get for a tag will no longer return NULL, but will assert
  • statistics module is removed in favor of easier to use statistics addon
  • unused table_offset member is removed from iterator

Deprecated features:

  • ecs_entity() macro is now deprecated, use ecs_typeid()

This version includes the following features:

  • Direct access addon, which provides fast access to underlying storage
  • Added singleton API to C++ world class
  • Added orphaning for subqueries, which allows an application to check if a parent query still exists
  • Added ecs_get_typeid function to get the component id for traits
  • The type used for time keeping is now customizable
  • New statistics addon for retrieving metrics from running world
  • Added get_parent function that accepts entity/tag
  • Added component enabling/disabling
  • Added support for sorting on shared components

This version includes the following improvements:

  • Improved ecs_delete performance (reduced entity index accesses from 2 to 1)
  • C & C++ code compiles warning-free with more warning flags, for more compiler versions & more platforms
  • Improved error messages when application passes invalid entity id
  • Made include paths relative so source code is easier to integrate with bazel
  • Fixed typos in documentation
  • Improve error message when trying to add 0 as base entity (using ECS_INSTANCEOF)
  • Add check for conflicting source modifier in OR expressions
  • Extended documentation, added new examples and fixed typos
  • Removed dead/redundant code
  • Improved performance of ecs_get
  • Add sanitizer & custom builds to CI, remove Travis CI builds
  • Don't add Name component when provided name for entity is NULL
  • Allow flecs::system instances to be (re)created from entity id
  • Added godbolt "try online" badge to README
  • Improve allocation strategy of vector datastructure
  • Improved performance for checking if entity id is a number
  • Added missing query functions to C++ API for sorting
  • Improved performance of table creation by two orders of magnitude
  • Reduced memory footprint of table graph by a factor 60
  • Added example to demonstrate world merging with direct access API
  • Added more inline documentation for datastructures
  • Added assert when trying to instantiate child as instance
  • Improve errors when invalid operation is invoked on iterator
  • Throw assert when invoking ecs_modified on entity that does not have the component
  • Allow for type lookups in systems, as long as the type already exists
  • Add return types to ecs_defer_begin and ecs_defer_end to obtain defer status of world
  • Remove redundant table_offset member from ecs_iter_t
  • Improved portability of POSIX OS API example

This version includes the following bugfixes:

  • Fixed issues with subqueries and query rematching
  • Corrected wrong return type of ecs_column_size (was ecs_entity_t, is now size_t)
  • Add missing \0 when appending to application buffer with strbuf datastructure
  • Fixed crash when instantiating an empty prefab
  • Fixed issue with shared tags and queries using each() in the C++ API
  • Fixed issue with instantiating empty child table
  • Fixed issue with ecs_bulk_new and traits
  • Fixed issue when using ecs_entity_str with small buffers
  • Fixed bug when adding trait to entity with switch
  • Fixed name conflicts in amalgamated source
  • Fixed path lookup in ecs_import
  • Fixed EXPORT macro's in OS API examples
  • Fixed issue with restoring worlds that have recycled ids
  • Added missing EXPORT macro's to API functions
  • Fixed assert after deleting entities from restored world
  • Removed obsolete assert from ecs_modified
  • Added missing statement to finalize system in C++
  • Fixed issues with removing case values
  • Fixed issues in C++ API with implicit component registration
  • Fixed assert when removing from switch list
  • Fixed bug where obtaining type from entity would generate a new entity id
  • Fixed incorrect description of ecs_delete in manual
  • Fixed issues with custom builds