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.