A C++ template library for embedded applications
Designed and maintained by
Aster Consulting Ltd
Flat map/set re-write + algorithms
Saturday, March 04, 2017
The flat map & set containers have been re-written to enhance the performance of inserts.
Completed addition of extension algorithm variants.

Performance improvements to etl::vector + new algorithms
Sunday, February 26, 2017
Performance improvements added to etl::vector, especially for fundamental types.
New algorithms added.
  transform (output iterator range version)

Re-write of the pool memory manager
Thursday, February 16, 2017
Re-write of the pool memory manager for enhanced performance, both in speed and memory usage.
Fixed a bug where vector & variant did not destruct contained items when destructed themselves.

Added string classes & more
Saturday, August 20, 2016
Version 8.2.0
Added fixed capacity string classes; string, wstring, u16string, u32string.
Added typesafe typedef class.
Modifications to improve cross compiler compatibility.

Added signal debounce class
Tuesday, May 17, 2016
Added a signal debounce class that will debounce noisy signal edges.
Supports 'hold' and 'repeat' modes for use with keyboard inputs.

Customisable checksum. Intrusive list
Wednesday, February 10, 2016
Modified etl::checksum to allow customisation with policy classes.
Added etl::intrusive_list.
Updated intrusive_forward_list to include splice_after and merge functionality.

Error checking mods
Thursday, December 24, 2015
Small changes to error checking facilities.
Fixed bug in flat_set
Friday, December 18, 2015
Fixed a bug in flat_set where multiple instances of the same value were not being checked for.
Error checking redesigned
Friday, December 18, 2015
To give users of the library as many options as possible for error checking (or not) the error macros have been re-written.
See error_handler.

etl::bitset redesign
Wednesday, December 09, 2015
Redesigned bitset to use no virtual functions.
Moved code to ibitset to reduce code size.
Removed iterator functionality.
Fixed storage array type as uint8_t.

Intrusive lists & containers tutorial
Saturday, December 05, 2015
Added etl::intrusive_forward_list.
Added etl::basic_intrusive_forward_list for use as a very low cost list and for internal library use.
Added quick introduction tutorial to ETL container design and use.

Thursday, October 08, 2015
I've started a tutorial section.
So far I've added one for etl::function.

Current work
Saturday, September 26, 2015
I'm currently working on an intrusive list, with the intention of using it to implement unordered maps & sets.
Once these are complete then a set of cache containers will be added.

Intended caches will include:-
Random remove.
Least recently used.
Most recently used.

Bug in etl::vector
Saturday, September 19, 2015
I discovered a serious bug in the vector definition where declaring a vector of N capacity would allocate N^2 elements.
Now fixed in both master and development branches.

New containers
Saturday, July 25, 2015
Added map, multimap, set, multiset and priority_queue.
New aligned storage & IO ports
Monday, March 16, 2015
Removed the align_at and align_as classes and replaced them with an STL C++11 style aligned_storage.

Added io_port classes to allow mapping of IO ports without having to resort to possibly non-portable structure ovrrlays.
They can map memory locations of types read/write, read only, write only and write only with shadow value.
Allows compile time of runtime definition of the bases address.

Hashes, flat_map, flat_set
Sunday, February 22, 2015
etl::ihash. A base class for hash type algorithms has been added.
etl::flat_map & etl::flat_set containers added.

Roadmap V4?
Monday, February 16, 2015
The next set of changes planned include the following.
etl::map & etl::set
etl::unordered_map & etl::unordered_set
etl::string & etl:wstring
At some time in the future etl::utf8string?

V3.0 - Rewrite of containers
Sunday, February 15, 2015
The containers have re-written to allow elements that do not have default constructors.
An initial, as yet incomplete version of etl::map is included.
Binary utilities have been added.

Wednesday, January 14, 2015
At this time the containers are implemented using arrays as the internal storage. This can be a problem if the classes cannot have a default constructor or number of instances of a class are limited in some way.

Work is underway at the moment to modify them so that they will construct and destruct instances of the contained elements, to more closely follow the behavior of standard library containers.

Release at V1.1
Wednesday, December 10, 2014
Changes to etl::pool.
Hoisted common container code.

Initial release
Tuesday, December 09, 2014
Initial release at V1.0
ETL News