Releases: ETLCPP/etl
Fixes for issues #815 and #885
Multiple fixes, features and pull requests
Fixes:
#803 etl::unordered_map buffer overflow
#805 legacy etl::bitset set/reset does not work if the element type is greater than 8 bit
#815 etl::remove_if calls predicate twice for first iterator, where predicate returns true.
#819 etl::optional cannot return an optional object of self from member function
#820 etl::send_message does not allow for non-virtual calls
#825 Fixed extent etl::span shouldn't allow default constructor
#827 Declaration order for etl::first_set_bit_position in binary.h
#829 Possible bug on assign of etl::array
#830 gcc warning - potential null pointer dereference using etl::map
#845 etl::message_packet missing a copy constructor
#857 etl::expected emplace methods are missing-return
#868 etl::variant is missing comparison operators
#869 etl::fsm::receive function can call p_state process_event also when p_state is nullptr
#873 Validate allocated DataNode is not null to prevent gcc Wnull-dereference
#874 Allow direct removal of a node from an etl::intrusive_list
#877 Optimize find_first_not_of and find_last_not_of on string_view
#855 Strange expression in volatile atomic operator--
Pull Requests:
#782 etl::set is full error when adding existing item
#804 etl::variant (variadic) default constructed state
#812 Implement SAE-J1850 CRC8
#832 Only copy/move storage value when optional is valid
#843 In subspan function, add static checks on extents
#849 Fix string_stream add missing initializations of const format specifiers
#850 Fixed names according to Arduino's guidelines
#854 In-place construction of shared_message
#858 Fix unique_ptr assigning nullptr to a null unique_ptr causes an assert
#861 Implement constexpr strong type_def
#862 Update ETL_CONSTEXPR and C++14 designation from type_def
#863 Add eq and ne operators for compare utility
#865 Add utils compare equality operator
#879 Make include paths to private files relative
Features:
#774 Truncating access for etl::bitset - Added extract() functions.
#806 etl::variant_pool should support C++17 variadic parameters (supports C++11 variadic parameters)
#818 Apply code spell check across entire code base
#841 Change push to push_back on containers, so they can be used with std::back_inserter. (Added push_insert_iterator instead).
#847 Add has_active_timer to callback_timer. (Added to all timers).
#883 Add etl::partition and etl::nth_element algorithms
#864 cyclic_value first/last methods. Make first() and last() static for template based limits specialisation
Changes without a GitHub issue#:
Added etl::mem_fn (clone of std::mem_fn)
Added etl::generate algorithm (clone of std::generate)
Added binary functors for ~ & | ^
Added etl::is_default_constructible & etl::is_default_constructible_v
Added syntax checks to GitHub CI
Refactored etl::optional implementation
Fixed etl::optional operator =() for invalid values with non-pod types
Refactored message_packet constructors
Added specific copy and move constructors to message_packet for C++17 and above.
Changed optional 'simple' types implementation for C++14 constexpr compatibility
Fixed implicitly disabled copy constructor for message_packet
Modified accepts() message_router functions to interrogate subscribed and successor routers to achieve consistency.
Fixed nodiscard keyword errors
Removed unused ETL_STATIC_CONSTANT
Make binary functor operator() const
Improved display of CHECK_EQUAL_HEX in UnitTest++
#800 Prioritize ETL_TARGET_OS_* for mutex selection
20.38.10 Updated version and release
Fixed CRC and PMA output iterator typedefs
#799 Iterator returned by crc.input() does not satisfy std::output_iterator
Added etl::crc1 (parity)
Small fixes
Various updates & fixes
Updated CI scripts
Refactored GitHub CI workflows
Updated build script text
Added additional etl::make_lsb_mask and etl::make_msb_mask binary functions.
Mask functions are now constexpr for C++11 and above.
#779 hash.h: warnings produced with -Wfloat-equal
#781 etl::multi_span::iterator::operator *() fails if first span is empty
#780 endian enum_type produces useless-cast warnings
#783 Cannot insert existing value to full set
#786 Added u8string
#787 etl::expected doesn't compile with ETL_LOG_ERRORS
#777 Allow Building Tests as Submodule and GCC < 11
Refactored etl::itr_swap for maximum efficiency.
#776 Add missing semicolons
20.38.5 #776 Add missing semicolons
#773 Return raw pointer for etl::multi_span::operator->()
20.38.4 #773 Return raw pointer for etl::multi_span::operator->()
Fixed type_with_alignment issue
#767 etl::pool silently produces unaligned allocations for types with stricter alignment requirements than built in types
etl::type_with_alignment raises a static_assert if the specified alignment cannot be achieved.
Uses the old method for C++03 and below, alignas for C++11 or above.