github skypjack/entt v3.16.0
EnTT v3.16.0

21 hours ago

Changelog

  • config:

    • core/attribute.h was merged with config.h
  • core:

    • ⚠️ Huge performance improvements of the entt::any class due to large internal changes with no impact on the API
    • Deprecate basic_any<...>::type() in favor of basic_any<...>::info()
    • Make stripped_type_name return empty views if name is not available
    • Add a full_type_name function to type info API
    • Break the dependency between basic_hashed_string and string_view
    • Make const char * conversion operator explicit for basic_hashed_string
    • Add typed data overloads to basic_any<...>
    • Add has_value overloads to basic_any<...>
    • Make basic_any support self-assignment smoothly
    • attribute.h is no longer a thing, as it was merged with config/config.h
  • container:

    • Transparent lookup for dense_map<...>::at
    • Slightly improved perf of all functions based on dense_map::constrained_find
    • Slightly improved perf of all functions based on dense_set::constrained_find
  • entity:

    • Deprecate basic_sparse_set<...>::type() in favor of basic_sparse_set<...>::info()
    • Full support to swap-only policies for runtime views
    • A const registry is no longer a sync point for the basic_organizer class
    • Make it possible to clear() the registry context as needed
    • Support swapping entity storage objects
    • Quit accepting (and silently discarding) arguments for empty types when invoking ::emplace on a storage
    • Quit accepting (and silently discarding) arguments for empty types when invoking ::insert on a storage
  • graph:

    • Make the graph method of the organizer class const as it should be
  • meta:

    • ⚠️ Huge performance improvements overall due to large internal changes with no impact on the API
    • Introduce meta_dynamic_extent for meta sequence containers
    • Deprecate basic_meta_sequence_container_traits::fixed_size in favor of basic_meta_sequence_container_traits::extent
    • Expose the element type in the factory API
    • Built-in name support for meta types, data and functions
    • Forward declared meta_factory and meta_ctx as it should be
    • Drop meta destructors support for perf reasons
    • Break safe-mode when uninitialized for meta data and meta func
    • Remove operator== and operator!= for meta_handle
    • Strip context-only and context-aware copy constructors from meta_handle
    • Make meta_any support self-assignment smoothly
    • Make as_is_t policy match the constness of the returned type, if any
    • Introduce as_value_t policy to force a copy of the returned value (default)
    • Allow top-level only searches for meta data and meta functions
    • Deprecate const meta_handle::operator->
    • Allow unsetting flags from a meta factory
  • poly:

    • Deprecate basic_poly<...>::type() in favor of basic_poly<...>::info()
  • process:

    • ⚠️ Complete redesign of the module
  • signal

    • Make delegate tests work in release mode (disable comdat folding)
  • tools:

    • Introduce davey, an ImGUI based viewer for entities and components (work in progress)

Build system

  • Updated IWYU version
  • Prepared workflow and build system for testbed target
  • Renamed tools.yml to analyzer.yml
  • Natvis files are now part of the source tree
  • Install natvis files along with source files if requested

Any other business

  • Removed all previously deprecated methods

Natvis support

All natvis files have been updated where necessary.

Breaking changes

  • core:

    • Deprecated basic_any<...>::type(), use basic_any<...>::info() instea0d
    • const char * conversion operator is now explicit for basic_hashed_string
  • entity:

    • Deprecated basic_sparse_set<...>::type(), use basic_sparse_set<...>::info() instead
    • Arguments are no longer accepted when invoking ::emplace on a storage for empty types
    • Arguments are no longer accepted when invoking ::insert on a storage for empty types
  • meta:

    • Deprecated basic_meta_sequence_container_traits::fixed_size, use basic_meta_sequence_container_traits::extent instead
    • Meta destructors are no longer available for perf reasons, use C++ type destructors as it should be instead
    • Meta data and functions are no longer safe to use when uninitialized, check for validity before doing so
    • Removed operator== and operator!= for meta_handle, compare underlying objects instead
    • Removed context-only and context-aware copy constructors from meta_handle because they should not exist
    • Renamed policy as_is_t to as_value_t, as_is_t still exists but it has a different meaning and behavior now
    • Deprecated const meta_handle::operator->, use non-const handles as it should be
  • poly:

    • Deprecated basic_poly<...>::type(), use basic_poly<...>::info() instead
  • process:

    • ⚠️ Complete redesign of the module

Any other business

The documentation is up-to-date and the library is battle-tested with 100% coverage as usual.

Don't miss a new entt release

NewReleases is sending notifications on new releases.