Changelog
-
config
:ENTT_NO_MIXIN
to disable the sigh mixin by default- Print assertion messages upon failure
-
core
:- Avoid uninitialized
length
in all (corner) cases - Export more types as forward declarations (see
fwd.hpp
) - Lambda support for
nth_argument
- Class level new/delete support for
any
- Class level new/delete support for
uninitialized_construct_using_allocator
- Make the
monostate
return*this
fromoperator=
- Enable
enable_borrowed_range
/enable_view
for a few types - Make
popcount
public (waiting for C++20) - Rename
is_power_of_two
tohas_single_bit
(waiting for C++20) - Introduce
bit.hpp
and move a few functions there (iehas_single_bit
) - Self assignment support for
basic_any<...>
- Avoid uninitialized
-
entity
:- Avoid unchecked refresh loops on single type views
- Refine empty registry check in the snapshot loader constructor
- Stop groups from swapping observed types in their pools
- Make sparse set
sort_as
function return an iterator past the last shared element - Update registry
destroy
function to use sparse setsort_as
internally - Add
operator bool
to runtime views - Assert when emplacing invalid entities through a registry
- Improved registry
valid
function - Decouple
size
and next identifier in the storage entity - Faster and memory-friendly storage entity
create
-with-hint function - Update the tombstone class to support zero-sized versions
- Update entity traits the fully support zero-sized versions
- Return the correct value from sparse set
push
functions - Drop sparse set scoped iterators (ie
begin(N)
/end(N)
) - Add
element_type
to the storage class as opposed tovalue_type
- Make registry
traits_type
type member private - Make sparse set
traits_type
type member private - Make storage
traits_type
type member private - Avoid using weak ranges twice in the
sigh_mixin
class - Support comparisons between
basic_handle<...>
andnull_t
- Reliable
valid
function for emptybasic_handle<...>
s - Add pointer stable types support to the snapshot loader class
- Branch-less sparse set
sort
andsort_as
functions - Branch-less centralized swap-only mode check for views
- Refine storage log messages to avoid ambiguity
- Introduce the new
basic_table
andtable
classes - In/Out edges support for
basic_organizer
- Single type view
::operator->
to get access to the underlying storage - All registry now assert on custom user defined entity storage
- Add
storage_policy
constexpr member to all storage classes - Enable
enable_borrowed_range
/enable_view
for a few types - Decouple all types except
basic_storage
fromcomponent_traits
- Drop the
Mask
parameter of thebasic_observer
class - View specialization and improvements for swap-only storage
- View specialization and improvements for swap-and-pop storage
- View specialization and improvements for in-place storage
- Avoid checking for filter validity when iterating views
- Allow resetting a storage in the registry via the
reset
function sigh_mixin
automatic signal registration support for components- Generic
bind
function in thebasic_sparse_set
class - Reactive mixin and storage (designed to replace the
observer
class) operator bool
andregistry
functions forsigh_mixin
sigh_mixin
transparent support to derived registries
-
graph
:- Add an
empty
method to theflow
class - Add an
empty
method to theadjacency_matrix
class
- Add an
-
meta
:- Add
is_pointer
meta traits - Updated meta type
is_pointer
function to make it faster and more reliable - User defined traits for meta objects
- Self assignment support for
meta_any
- User defined arbitrary data support for meta types, meta data and meta functions
- Guaranteed execution/iteration order on overlaoded meta functions
- Support for creating different meta types from different factories concurrently
- Support
noexcept
functions whenever a free or member function is allowed - Improve lookup time of member objects and reduce their compile-time cost
- Add
-
poly
:- Improve support for inherited concepts
-
resource
:- Add
reset
functions to resource class - Support
swap
-ping resources
- Add
-
signal
:- Support for free and member
noexcept
functions to thedelegate
class
- Support for free and member
Build system
- Avoid installing
include/BUILD.bazel
- Updated IWYU version
Any other business
- Removed all previously deprecated methods
- Shared types in the test suite to avoid duplication
- Full review to reduce
NOLINT
directives as much as possible - Refine linter configuration and address as many warnings as possible
- Updated IWYU
entt.imp
as needed - Drop support to Android NDK r17
- Drop support to MSVC toolset v141
Natvis support
All natvis files have been updated where necessary. New entries:
- Natvis view for
basic_handle
class - Natvis view for
meta_ctx
class - Natvis view for
meta_type_descriptor
class - Natvis view for
meta_custom_node
class
Breaking changes
- Sparse set scoped iterators are no longer a thing, check the deletion policy and use the free list value as needed instead
- Registry
traits_type
is private, useentt_traits
class andentity_type
type member instead - Sparse set
traits_type
is private, useentt_traits
class andentity_type
type member instead - Storage
traits_type
is private, usecomponent_traits
class andvalue_type
type member instead - The
basic_observer
class doesn't accept anymore aMask
template parameter - Renamed
is_power_of_two
tohas_single_bit
and moved it tobit.hpp
- Removed support to empty
each
callbacks for single non-empty type views - Deprecate meta properties, use the new
custom
data support for meta types, data and functions instead basic_sparse_set
doesn't require anymore to wrap objects withany
s when passing them tobind
- The
observer
class is now deprecated, use the reactive mixin and storage 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.