T2 SDE
SANE/Avision
ExactAudio
ExactImage
EmbeddedSTL
eScreen
MacOSD
minised
ExactBuild
Openbench
Vorbisinfo

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.

 

Overview

 

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):

G++ STL

dietlibc + embeddedSTL

hello world (i686)

3920 Bytes

2584 Bytes

static hello world (i686)

844984 Bytes

3820 Bytes

static hotplug++ (AMD64)

1095232 Bytes

67472 Bytes

static XPM image loading & scaling (via ExactImage), and FB copy (AMD64)

1077776 Bytes

50608 Bytes

 

 

 

 

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!

 

Features:

  • 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.


ImpressumAGB