EASTL Versions Save

EASTL stands for Electronic Arts Standard Template Library. It is an extensive and robust implementation that has an emphasis on high performance.

3.13.02

5 years ago
  • Adding explicit moves to eastl::string::operator+ due to NRVO rules.
  • Removing dependency on global new/delete in eastl::any and routing all memory requests to the default allocator.
  • Removing support for 'EASTL_STRING_OPT_CHAR_INIT'.

3.13.00

5 years ago
  • 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

5 years ago
  • 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

5 years ago
  • 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

5 years ago
  • 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<T> 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

5 years ago
  • 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.
  • 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
  • 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

5 years ago
  • 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

6 years ago
  • 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

6 years ago
  • 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.

3.07.02

6 years ago
  • Implemented eastl::variant.
  • Implemented eastl::fixed_function.
  • Implemented eastl::apply for unpacking tuples into callable arguments.
  • Implemented eastl::piecewise_construct constructor overload for eastl::pair.
  • Implemented eastl::reference_wrapper.
  • Implemented eastl::invoke for pointer-to-member, pointer-to-member-function and eastl::reference_wrapper types.
  • Implemented vector::insert updates that return an iterator to the beginning of the inserted range.
  • Implemented eastl::tuple_size_v alias.
  • Removed non-variadic template code paths in eastl::function.
  • Implemented eastl::is_invocable.
  • Fixed eastl::common_type<void, void> and updated eastl::common_type to decay result type based on defect #2141