flecs

A fast entity component system (ECS) for C & C++

MIT License

Stars
5.5K

Bot releases are visible (Hide)

flecs - Flecs 2.1.2

Published by SanderMertens about 4 years ago

This version includes the following features:

  • No new features

This version includes the following improvements:

  • Queries can now select for components to which a trait has been applied (TRAIT | MyTrait > *)
  • Add unsafe_column to C++ API for accessing component data of unknown type at compile time
  • Add [] operator to flecs::vector
  • Add more functions to C++ iterator to access underlying fields
  • Add fast paths to table functions (improves performance)
  • Add support for global component/tag/entity handles in C
  • Add flecs::type_id<T>() for getting the identifier of a type

This version includes the following bugfixes:

  • OnSet systems registered themselves with components in expression vs. matched components
  • Fix issues related to component lifecycle actions & traits
  • Invoke move when moving entity between tables
  • Invoke move when reallocating table columns
  • Invoke move when deleting an entity (move last entity into deleted index)
  • Component actions were not registered for implicitly registered components
  • Fix bug with redefining namespaced components in a different world
flecs - Flecs 2.1.1

Published by SanderMertens about 4 years ago

This version includes the following bugfixes:

  • Fixed a bug in typename resolution for const types on MSVC
flecs - Flecs 2.1.0

Published by SanderMertens about 4 years ago

Highlights:

  • Big usability improvements to the C++ API
  • Improved performance when compared to 2.0 (~18%)
  • Switchable tags which allow for easy implementation of state machines
  • Subqueries

Breaking changes
This release introduces a breaking change to the ecs_bulk_new* APIs which was necessary to fix a memory leak. The new API now returns a pointer to an array of entity ids, vs. the entity id of the first created entity.

This version includes the following features:

  • Implicit component registration in C++ API
  • Switchable tags (allows for building fast state machines)
  • Subqueries (queries that are matched against the tables of their parent queries)

This version includes the following improvements:

  • Add type agnostic get/get_mut/modified/has functions to C++ API
  • Add trait functions to C++ API
  • Allow for specifying the signature in the flesc::query constructor
  • Increased addressing space for type roles
  • Add convenience functions to flecs::entity class for working with roles
  • Allow querying for individual traits
  • Add has_childof and has_instanceof to C++ API
  • Moved private classes in C++ API to separate namespace
  • Removed all bake code from flecs core
  • Added OS API examples
  • Added support for triggers to C++ API
  • Moved change tracking from systems to queries
  • Add ecs_query_next_w_filter
  • Added a FAQ (https://github.com/SanderMertens/flecs/blob/master/docs/FAQ.md)
  • New sparse set implementation
  • Add fast path to table operations, improving performance
  • Fixed name clashes with other libraries in OS API struct
  • Added more sections and diagram to the manual
  • Added support for AND & OR type flags in signatures
  • Improved exporting types from a module
  • Improved C++ API where world can be used as factory

This version includes the following bugfixes:

  • Fixed issue with get_mut in C++ API
  • Fixed issue with correctly registering components when using pointer types in queries
  • Fixed issue where a cached pointer in a reference could become invalid
  • Fixed uninitialized value in query sorting function
  • Fixed issue where record_ptrs array would not be allocated with correct size in writer API
  • Fixed uninitialized value during cleanup
  • Fixed numerous memory leaks
  • Fixed duplicate entries in stage
  • Fixed issue where query would not detect a change in the data
  • Fixed issue with optional components in C++ API
  • Fixed C++ snapshot examples
  • Fix issue where system name would not be copied in C++ API
  • Fixed namespacing issue with nested modules in C++
  • Fix issue with ECS_ALIGN macro and signed integers
  • Fix issue with registering components across multiple worlds in C++
  • Fixed issue where repeated bulk operation could cause out of memory errors
flecs - Flecs 2.0

Published by SanderMertens about 4 years ago

This is the first Flecs v2.0 release. This release contains many new features, performance improvements and bug fixes. For a full overview of the changes, see the migration guide:
https://github.com/SanderMertens/flecs/blob/master/docs/MigrationGuide.md

To get up to speed on the v2.0 features, see the quickstart:
https://github.com/SanderMertens/flecs/blob/master/docs/Quickstart.md

For a more in-depth description of the features, see the manual:
https://github.com/SanderMertens/flecs/blob/master/docs/Manual.md

flecs - Flecs 2.0.4 beta

Published by SanderMertens over 4 years ago

This is a pre-release of v2.0. Do not use this release for production code. Bugs are to be expected. The purpose of this release is to help existing users migrate from v1.0 to v2.0.

This is a beta release, indicating that the public API for v2.0 is stable, unless indicated otherwise. Any headers under include/flecs/private are not part of the public API, and may be changed by patch & minor releases. Behavior changes may still occur as bugs are fixed and features are completed.

This release has the following new features:

  • Add ability to iterate scope with filter
  • Add ecs_get_child_count function
  • Allow for creating filtered snapshots & blobs by providing an iterator
  • Add ecs_set_time_scale function

This release implements the following improvements:

  • Allow parsing type expressions without asserting on error
  • Rename query sorting functions to sort_by and group_by
  • Improve test coverage
  • Remove inconsistencies in signatures between os API malloc, calloc and alloca
  • Remove variable masking warnings
  • Cleanup unused system declarations
  • Reorganize headers and source files to make it clearer which parts of the code are required, optional and part of the public API
  • improve file organization
  • fix cmake build

This release addresses the following issues:

  • Fix issue that could cause crash in map implementation
  • Fix issue where OnSet system could trigger on columns that are not owned
  • Remove references to UT_ macro's from bake.util
  • Replace TRUE and FALSE with true and false
  • Fix issue where new_from_path would add CHILDOF | 0 for entity in root

For a list of changes between v1 and v2 see the migration guide

Known issues:

  • OnSet systems are not invoked for tables created while staged
  • OnSet systems are not invoked when an overridden component is removed
flecs - Flecs 1.3

Published by SanderMertens over 4 years ago

This is the last v1 release. New applications should start with Flecs v2.

This version includes the following features:

  • Port several functions from C to C++ API
  • Add overloads for world::add & world::remove
  • Add function to count inactive systems

This version includes the following improvements:

  • Add periodic system example for C API
  • Enforce that 'action' is last method called when constructing system in C++
  • Enable staging when invoking ecs_run
  • Store table_count in ecs_rows_t
  • Added task examples
  • Added target_include_directories to cmake file

This version includes the following bugfixes:

  • Fix duplicate type definitions
  • Fix bug where column count of 0 caused out of memory
  • Fix sources list for meson build file
  • Fix mismatching return types for get/set_target_fps
  • Fix alignment issue with ecs_vector_t
  • Fix bug with passing CONTAINER column into reactive system
  • Remove invalid assert from ecs_import_from_library
  • Fix issue with using OWNED / SHARED in a reactive system
  • Fix issue where a disabled system could become enabled again
  • Fix dangling pointer to world in entity::type()
  • Fix issue where merge could happen twice
  • Don't merge manual system when auto_merge is false
  • Fix crash when deleting parent
  • Fix issue where ecs_run would use filter where it shouldn't
flecs - Flecs 2.0.3 alpha

Published by SanderMertens over 4 years ago

This is a pre-release of v2.0. Do not use this release for production code. Bugs are to be expected. The purpose of this release is to help existing users migrate from v1.0 to v2.0.

This code has not been as rigorously tested as a normal release, and documentation is not up to date.

This release addresses the following issues, amongst others:

  • Implement namespacing
  • Split core up into separate modules and utilities
  • Add header documentation
  • Fix issue with ecs_deactivate_systems
  • Fix issues with multithreading

For a list of changes between v1 and v2 see the migration guide

For a list of changes between v1 and v2 see the migration guide

Known issues:

  • OnSet systems are not invoked for tables created while staged
  • OnSet systems are not invoked when an overridden component is removed
flecs - Flecs 1.2

Published by SanderMertens almost 5 years ago

This version includes the following features:

This version includes the following improvements:

  • Improved error messages when system signature parsing fails (#90)
  • Many new examples (#55)
  • Cleanup of flecs header, moved supporting functions to api_support.h (#116)
  • Work with older versions of CMake (#87)

This version includes the following bugfixes:

  • Fix issue with using singleton as parent entity (#81)
  • Fix issue where manual systems are not correctly activated (#86)
  • Fix issue with NOT operator in combination with FromEntity columns (#89)
  • Fixed memory leak in ecs_chunked_t datastructure (#95)
  • Fix issue where ECS_MODULE would take address of temporary variable (#98)
  • Fix issue when get_parent is called while iterating (#97)
  • Fix leak in on demand administration (#104)
  • Fix leaking system signatures (#103)
  • Add strdup to OS API, remove uses of strdup in code (#106)
  • World time now starts counting when application starts vs. 0

This version adds the following functions:

  • ecs_add_entity
  • ecs_remove_entity
  • ecs_has_entity_owned
  • ecs_count_w_filter
  • ecs_is_readonly
  • ecs_table_type
  • ecs_table_column
  • ecs_filter_iter
  • ecs_snapshot_filter_iter
  • ecs_filter_next
  • ecs_set_system_status_action
  • ecs_snapshot_take
  • ecs_snapshot_restore
  • ecs_snapshot_copy
  • ecs_snapshot_free
  • ecs_reader_init
  • ecs_snapshot_reader_init
  • ecs_reader_read
  • ecs_writer_init
  • ecs_writer_write
  • ecs_type_remove
  • ecs_type_match_w_filter
  • ecs_type_index_of
  • ecs_enable_console
flecs - Flecs 1.1

Published by SanderMertens about 5 years ago

This version includes the following features:

  • Add API for bulk insertion of data (#60)
  • Add API for bulk deletion (#33)
  • Add API for bulk add/remove (#67)

This version includes the following improvements:

  • Allow for direct access to table columns in systems (#59)
  • Remove compiler warnings in strict mode (#70)
  • Make EcsOnLoad phase unstaged, allowing for faster insertion of data (#74)
  • Add optional example, improve documentation

This version includes the following bugfixes:

  • Fix crash when calling ecs_quit from worker thread (#61)
  • Fix crash when calling ecs_new_w_count from worker thread (#61)
  • Fix crash when dimensioning table with columns that have size 0 (#60)
  • Fix bug where on some platforms the OS API struct was stored in RO memory, causing a crash (#68)
  • Fix bug when _ecs_field is called with a 0 size (#75)
  • Fix bug when creating a system that only has an OWNED or SHARED column (#78)
flecs - Flecs 1.0

Published by SanderMertens about 5 years ago

The first official Flecs release!

This version includes the following features:

  • A super fast archetypes-based ECS implementation in C99
  • Expressive system queries with support for many operators and ways to subscribe for data
  • Group systems with Flecs features
  • Component sharing (see: inheritance)
  • A web-based dashboard (see: flecs-systems-admin)
  • Hierarchies [BETA] (see: hierarchies)
  • Multithreading [BETA]
  • ... and much, much more! See the manual for more details.