8000 Release EnTT v3.15.0 · skypjack/entt · GitHub
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content
/ entt Public

EnTT v3.15.0

Latest
Compare
Choose a tag to compare
@skypjack skypjack released this 19 Mar 14:24
· 29 commits to master since this release

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.

0