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 withany
- Added
any::owner()
becauseany_policy::owner
is no longer available - Embedded-as-dynamic support for
any
(useful to transfer ownership of externally allocated objects) is_iterator
andis_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
- Skip most of vtable calls in
-
entity
:deletion_policy::unspecified
is now available and equal toswap_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 replaceemplace
- Add
generate
functions to the sigh mixin to fully support storage entity as_view
andas_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
andExclude
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 availablemeta_associative_container::rebind
is no longer availablemeta_any::base()
to return a const reference to the underlyingany
- Deprecated
meta_any_policy
,meta_any::policy()
andmeta_any::data()
- Self-contained
meta_factory<T>
to avoid having to go throughmeta<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
andmeta_func
implementations - Make empty
meta_data
,meta_func
andmeta_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 isvoid
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)
- Make it possible to create uninitialized
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
- Reviewed
-
entity
:- Deprecated
emplace
in the storage entity, usegenerate
instead component_traits
accepts entity types (possibly breaking if specialized when using a custom entity type), refine specializations
- Deprecated
-
meta
:meta_sequence_container::rebind
was removed, use the constructor insteadmeta_associative_container::rebind
was removed, use the constructor instead- Deprecated
meta_any_policy
, useany_policy
instead - Deprecated
meta_any::policy()
, use.base().policy()
instead - Deprecated
meta_any::data()
, use.base().data()
- Deprecated
meta<T>
, usemeta_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.