Skip to content

EnTT v3.14.0

Latest
Compare
Choose a tag to compare
@skypjack skypjack released this 23 Oct 12:57
· 2 commits to master since this release

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 from operator=
    • Enable enable_borrowed_range/enable_view for a few types
    • Make popcount public (waiting for C++20)
    • Rename is_power_of_two to has_single_bit (waiting for C++20)
    • Introduce bit.hpp and move a few functions there (ie has_single_bit)
    • Self assignment support for basic_any<...>
  • 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 set sort_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 to value_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<...> and null_t
    • Reliable valid function for empty basic_handle<...>s
    • Add pointer stable types support to the snapshot loader class
    • Branch-less sparse set sort and sort_as functions
    • Branch-less centralized swap-only mode check for views
    • Refine storage log messages to avoid ambiguity
    • Introduce the new basic_table and table 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 from component_traits
    • Drop the Mask parameter of the basic_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 the basic_sparse_set class
    • Reactive mixin and storage (designed to replace the observer class)
    • operator bool and registry functions for sigh_mixin
    • sigh_mixin transparent support to derived registries
  • graph:

    • Add an empty method to the flow class
    • Add an empty method to the adjacency_matrix class
  • 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
  • poly:

    • Improve support for inherited concepts
  • resource:

    • Add reset functions to resource class
    • Support swap-ping resources
  • signal:

    • Support for free and member noexcept functions to the delegate class

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, use entt_traits class and entity_type type member instead
  • Sparse set traits_type is private, use entt_traits class and entity_type type member instead
  • Storage traits_type is private, use component_traits class and value_type type member instead
  • The basic_observer class doesn't accept anymore a Mask template parameter
  • Renamed is_power_of_two to has_single_bit and moved it to bit.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 with anys when passing them to bind
  • 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.