Releases: electronicarts/EASTL
Releases · electronicarts/EASTL
3.13.03
- Fixed eastl::variant support of move-only types.
- Fixed eastl::rbtree::swap to no longer require types with a copy-ctor.
- Fixed eastl::is_move_constructible_v which was aliasing to an unrelated type-trait.
- Added eastl::is_empty_v template variable for eastl::is_empty::value.
- Fixed eastl::tuple_cat lvalue-reference support.
- Removing some old type_traits fallback code for when C++11 language features were added.
3.13.02
3.13.00 Release
- Fixed eastl::deque selecting an optimized 'memmove' code path to move elements within a memory page. The implementation was incorrectly selecting code that utilized memmove for non-trivial objects.
- Removing some fallback code for variadic template code paths in allocator_traits.h
- Added more type_trait variable template for values.
- Fixed issue in eastl::unique_ptr that would call deleter for unique_ptrs holding a nullptr.
3.12.08 Release
- Resolved eastl::function memory leak when assigning to a non-null eastl::function with a closure containing non-trivial types.
- Fixed all eastl::list::insert overloads to return the insertation position for C++11 standards conformance.
- Fixed eastl::vector noexcept annotations to use EABase portability macros.
- Resolved compilation errors when using eastl::scoped_ptr<void> and eastl::scoped_array<void>.
- Port benchmarks to use std::unordered_map instead of std::hash_map.
3.12.07 Release
- eastl::late_constructed added 'operator* / operator->' const overloads.
- Adding portability macro EA_CONSTEXPR_IF.
- Adding chrono, function, reference_wrapper types to eastl.natvis.
- Improved reference_wrapper implementation.
- Completed eastl::ref / east::cref implementations.
- Updated eastl::unique_ptr to used "delete" keyword to prevent copying.
- Added EA_CURRENT_FUNCTION macro provides a consistent way to get the current function name.
3.12.04 Release
- vector_map fixes for that allow std::variant and other container types.
- MSVC permissive- mode fixes for std::fill algorithms.
- CMake scripts migrating to C++17 for Github builds.
- eastl::array now supports compile-time use-cases added to the C++17 standard.
- Resolving compiler error when using eastl::hash with an enum type.
- Adding eastl::is_enum_v type_trait.
- eastl::deque support for move-only types.
- Resolving eastl::function self-assignment bugs.
- eastl::tuple supports C++17 structured binding.
- Fixed eastl::string_view::copy writing out a null-terminator.
- Added natvis for eastl::optional.
- Added eastl::is_trivially_assignable_v.
- Resolved compiler error in eastl::ring_buffer when using eastl::fixed_vector
as the underlying container type. - Migrated all platforms to use std::mutex by default for our shared_ptr atomic implementations.
- Removed all EASTL_MOVE_SEMANTICS_ENABLED preprocessor branches.
3.12.01 Release
- eastl::pair first element constructor required fix due to a Clang compiler bug when using is_default_constructible type trait on a class with NSDMI.
- We have submitted a bug with LLVM: https://bugs.llvm.org/show_bug.cgi?id=38374
- eastl::is_final type trait support added.
- eastl::endian support for C++20 conformance.
- eastl::fixed_pool improving swap performance by enabling move semantics.
- eastl::optional bug fixes to properly destroy held objects when assigning another object.
- eastl::string bug fixes for string_view substr ctor overload.
- eastl::function improved C++17 standards conformance
- Can now call functions where return type is implicity converitble to the
return type specified in the function template - Implemented missing functions for operator=, such as operator=(Functor&&)
- operator bool() is now explicit so function cannot be implicit convertible
to bool in wierd unintended places (eg. vectoreastl::function). - SFINAE away the templated construct/operator= so it is not a candidate in
the overload set
- Can now call functions where return type is implicity converitble to the
- eastl::function && eastl::fixed_function now share a common implementation
- eastl::invoke_result && eastl::is_invocable are now C++14 compliant
- can be used in an unevaluated context
- typename F is no longer required to be a Callable
- Added EASTL_CPP17_INLINE_VARIABLE macro to declare a variable as inline
- eastl::pair first element constructor overload can not be toggled to give users the opportunity to fix their code before the overloads are removed in a future release.
- Look at the feature define: EASTL_ENABLE_PAIR_FIRST_ELEMENT_CONSTRUCTOR
- eastl::string_map and eastl::string_hash_map optimizations to avoid implicit eastl::string conversions.
- eastl::ring_buffer fixes when using an underlying container with a large stack memory requirement that it allocates the required heap allocation from the containers allocator -- not the default EASTL allocator instance.
3.10.00 Release
- eastl::span implementation for C++20.
- eastl::variant get_if bug fix for requesting the incorrect held type or when passing a nullptr.
- eastl::string substr(), left(), right() return a copy of this->get_allocator()
- eastl::string changed SSOSize variable name from mnSize to mnRemainingSize to
better signify what type of data the variable holds - Added iterator vector::erase_first_unsorted(const T& val) and the reverse equivalent, iterator
vector::erase_last_unsorted(const T& val). These allow for erasing the first found value matching element, as a
convenience function. The container is considered unsorted after the operation. - Implemented for_each_n
- Implemented string_view::starts_with, string_view_ends_with.
- Implemented eastl::basic_string constructor and assignment operator overloads for eastl::basic_string_view.
- Resolved a bug in the uint8_t specialization of radix_sort_impl that was detected by adding verification to a sorting test.
- eastl::fixed_function fixes to ensure closure destructors run correctly.
- eastl::optional copy-construction fixes for complex types.
- eastl::optional move-only type fixes.
3.09.00 Release
- eastl::any fix to correctly decay reference types.
- eastl::fixed_hash_map/eastl::fixed_hash_multimap fixes when a user requests to clear the bucket array hashtable rehashing was disabled with a default bucket count of 1. The behaviour now for fixed_hash_map (and fixed_hash_multimap) is the clear buckets request resets the containter to use the SBO and the default bucket count.
- Added 'eastl::is_literal_type_v' type trait.
- Added 'eastl::is_convertible_v' type trait.
- eastl::string SSO capacity is now optimal
- HeapLayout now uses 1 pointer and 2 size_t instead of 3 pointers
- SSO rework to now use the maximum number of bytes possible, 23 bytes of SSO on 64bit, was 14 bytes before
- set_capacity() will now shrink to SSO if the new capacity is within SSO limits
- shrink_to_fit() implemented
- basic_string(const basic_string&, const Allocator&) constructor implemented
- substr(), left(), right() now properly return a basic_string with a default constructed allocator
when inserting yourself into yourself reduced allocations from 1 to 0 or 1. - is_sso() function implemented that returns true if the current string is an SSO string
- natvis updated
- eastl::fixed_substring && eastl::fixed_string updated due to eastl::string changes
- eastl::vector::emplace_back() now returns a reference to the emplaced element
- eastl::variant::operator=(T) conversion assignment operator fixed an issue due to a incorrect conjunction expression that caused the operator to be removed via SFINAE.
- eastl::intrusive_ptr now supports move semantics.
- eastl::is_trivially_copyable fixes to use the proper compiler intrinsics.
- eastl::deque::shrink_to_fit() implemented.
3.08.00 Release
- Fully qualifying call to move in algorithms "remove_copy_if".
- Implemented the following new C++17 memory algorithms:
- uninitialized_default_construct
- uninitialized_default_construct_n
- uninitialized_value_construct
- uninitialized_value_construct_n
- Implemented the eastl::remove_cvref type trait.
- eastl::string_view hash fixes for both char and wchar types
- eastl::optional compiler fixes when building with exceptions enabled
- Implemented eastl::unordered_map/map/hash_map "try_emplace" and "insert_or_assign".
- Removing deprecated "reset" member function from containers.
- string_view string compare fixes.
- eastl::optional storage now type aligned.
- eastl::string_view no longer crashes when passed a nullptr via the 'const char*' conversion constructor.
- Added static_asserts to eastl::variant visit function to improve diagonistic message when variant instances are not provided.
- Added noexcept decorations to eastl::vector and eastl::string.
- eastl::any::swap fixes to ensure destructors are being called correctly.
- eastl::rbtree and eastl::hashtable insert and emplace optimizations to reduce the allocation overhead for object that act as a handle to a heap allocation (ie. eastl::string). Breaking change: rbtree/hashtable backed containers now correct forbid inserting pointers with that lose cv-qualifers.
- Adding eastl::string_view visualizer to EASTL natvis.