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.14.0
Name Modified Size InfoDownloads / Week
Parent folder
EnTT v3.14.0 source code.tar.gz 2024-10-18 872.3 kB
EnTT v3.14.0 source code.zip 2024-10-18 1.0 MB
README.md 2024-10-18 6.5 kB
Totals: 3 Items   1.9 MB 0

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.

Source: README.md, updated 2024-10-18