Download Latest Version EnTT v3.16.0 source code.tar.gz (911.6 kB)
Email in envelope

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

Home / v3.15.0
Name Modified Size InfoDownloads / Week
Parent folder
EnTT v3.15.0 source code.tar.gz 2025-03-19 897.4 kB
EnTT v3.15.0 source code.zip 2025-03-19 1.0 MB
README.md 2025-03-19 5.1 kB
Totals: 3 Items   1.9 MB 1

Changelog

  • core
  • Skip most of vtable calls in any for references and dynamically allocated objects
  • Review any_policy values to better capture the nature of the elements stored with any
  • Added any::owner() because any_policy::owner is no longer available
  • Embedded-as-dynamic support for any (useful to transfer ownership of externally allocated objects)
  • is_iterator and is_equality_comparable review to refine them further
  • Self-moving an any puts it in a safe but unspecified state now
  • Introduce ENTT_CONSTEVAL config parameter
  • Apply consteval on appropriate hashed string related functions

  • entity:

  • deletion_policy::unspecified is now available and equal to swap_and_pop
  • Skip tombstone checks in more cases and improve performance of view iterators
  • Auto-disconnection support for reactive_mixin
  • Refined storage fallback mechanism for views to make it work across boundaries
  • Support joining views with storage objects directly
  • Introduce generate functions in the storage entity to replace emplace
  • Add generate functions to the sigh mixin to fully support storage entity
  • as_view and as_group are now copyable
  • Improved shrink_to_fit to also cleanup the sparse array of a sparse set
  • Extended basic_registry<...>::storage<T> const-correctness
  • Allow customizing component_traits based on the entity type
  • Default group template parameters for Get and Exclude lists
  • Make basic_organizer support groups too
  • Fix a bug on view packs when combining views with uninitialized filters
  • Make built-in storage mixins support custom private/protected registries
  • Support to reserved entities (see start_from on the entity storage)
  • Make to_entity work properly with stable types

  • meta:

  • meta_sequence_container::rebind is no longer available
  • meta_associative_container::rebind is no longer available
  • meta_any::base() to return a const reference to the underlying any
  • Deprecated meta_any_policy, meta_any::policy() and meta_any::data()
  • Self-contained meta_factory<T> to avoid having to go through meta<T>
  • Support taking ownership of passed in pointers on construction for meta_any
  • meta_type::from_void allows transferring ownership of elements too
  • Standalone meta_data and meta_func implementations
  • Make empty meta_data, meta_func and meta_type safe to use no matter what
  • Self-moving a meta_any puts it in a safe bug unspecified state now
  • Allow attaching const values of non-Type type to meta types
  • Make as_ref return valid objects when the underlying type is void
  • meta_any::context() returns the underling meta context
  • Deprecated multi-setters meta data support
  • Deprecated context-aware meta_getter utilities
  • Get the context from the instance in the remaining meta_getter utilities
  • Deprecated context-aware meta_invoke utilities
  • Get the context from the instance in the remaining meta_invoke utilities
  • Support deducing meta pointers like types directly
  • Early exit for typed allow_cast

  • signal:

  • Make it possible to create uninitialized sink objects
  • Updated definition for emitter::publish (no forwarding references)
  • Slightly review sink API (these changes should be backward compatible)

Build system

  • Updated IWYU version
  • Updated lcov configuration to make gtest work with lcov2
  • ENTT_INSTALL to enable/disable installation steps as needed

Any other business

  • Removed all previously deprecated methods

Natvis support

All natvis files have been updated where necessary.

Breaking changes

  • core:
  • Reviewed any_policy values with breaking changes in names to avoid subtle errors on user side

  • entity:

  • Deprecated emplace in the storage entity, use generate instead
  • component_traits accepts entity types (possibly breaking if specialized when using a custom entity type), refine specializations

  • meta:

  • meta_sequence_container::rebind was removed, use the constructor instead
  • meta_associative_container::rebind was removed, use the constructor instead
  • Deprecated meta_any_policy, use any_policy instead
  • Deprecated meta_any::policy(), use .base().policy() instead
  • Deprecated meta_any::data(), use .base().data()
  • Deprecated meta<T>, use meta_factory<T> directly instead
  • Deprecated multi-setters meta data support, use variant or convertible types instead
  • Deprecated context-aware meta_getter utilities, rebind the handle as needed instead
  • Deprecated context-aware meta_invoke utilities, rebind the handle as needed instead

Any other business

The documentation is up-to-date and the library is battle-tested with 100% coverage as usual. I started a long term process to reduce the number of instantiations and also speed up the compilation. This release contains some changes in this regard. Still a work in progress though.

Source: README.md, updated 2025-03-19