Small scale C++ STL for embedded use
We think far too much system code is still written in "old style" C today. This results in a maintenance nightmare and buffer overflow and underrun problems discovered every day. We believe even the low level code can benefit from utilizing todays C++ and the accompany STL to avoid many of this problems. However the STL shipped with compilers is normally bound to the system C library and quite large.
For small size a alternative C libraries such as the dietlibc or uClibc is preferable and thus an accompany STL is needed. Best one optimized for static linking, so system startup code can benefit from it.
The embeddedSTL is such a small scale STL developed from scratch for system software for the T2 System Development Environment, optimized for small size, high performance and use with small C libraries such as dietlibc and uClibc. In addition we try to archive readability of the template code.
Preliminary size comparison (on x86):
| || |
dietlibc + embeddedSTL
hello world (i686)
static hello world (i686)
static hotplug++ (AMD64)
static XPM image loading & scaling (via ExactImage), and FB copy (AMD64)
As you can see, especially the statically linked sizes are amazing and allow the use of C++ in low-level system software, including Unix startup code, such as Linux early userspace utilities. EmbeddedSTL was primarily started for such code and is already used by the hotplug++ project. It is not only tiny (50kB, statically linked) but also scans PCI and USB devices on a fully populated desktop computer in about 50ms!
- ANSI C++ STL compatible wherever possible
- small size
- high performance
- ready for dietlibc
- cross platform, tested on x86, PowerPC and SPARC
- open source licensed under the GPL 2
You might contact us to obtain commercial licenses if required or to develop custom solution for your needs.