STLSoft Libraries

Version 1.9.98

This page:

What is STLSoft?

STLSoft is a suite of libraries that provide:

The overarching characteristic of STLSoft is that it is lightweight. That sounds rather super, but what does it actually mean? Specifically, the STLSoft libraries share the following characteristics:

It is important to note that STLSoft is not a framework. Each library component is as "thin" as possible to provide its given function. The intent is that STLSoft components are used as building blocks for writing higher level components - applications, classes, libraries, servers. STLSoft has been used extensively in the development of software in all these guises.

Understanding STLSoft

To be completed

The STLSoft libraries may be viewed in terms of projects, libraries, concepts, patterns, principles, and techniques. They are organised in two ways: projects and libraries:

Naturally, a project will contain components from many different libraries. For example, the UNIXSTL project currently contains components from the Synchronisation, File System, DL, Performance, String, and Time libraries.

What may not be as obvious is that a library may contain components from several different projects. For example, the Synchronisation library currently contains components from the , UNIXSTL project and WinSTL projects.

For all intents and purposes we can view the STLSoft libraries as a matrix of vertical context, the projects, and horizontal context, the libraries. A small subset of such a matrix might look as follows:

To be completed To be completed To be completed To be completed
To be completed To be completed To be completed To be completed
Memory comstl::task_allocator To be completed winstl::global_allocator, winstl::netapi_allocator, winstl::processheap_allocator, winstl::shell_allocator
To be completed To be completed To be completed To be completed
Performance - unixstl::performance_counter winstl::performance_counter, winstl::highperformance_counter, winstl::threadtimes_counter, winstl::processtimes_counter
String To be completed To be completed To be completed
Synchronisation To be completed unixstl::process_mutex, unixstl::spin_mutex, unixstl::thread_mutex, unixstl::tss_index winstl::process_mutex, winstl::spin_mutex, winstl::thread_mutex, winstl::tss_index
To be completed To be completed To be completed To be completed
To be completed To be completed To be completed To be completed


The STLSoft library distributions are located at Currently available are the latest official release, 1.8.9, and the latest beta for version 1.9.1.

Please note that version 1.9.1 brings with it a huge amount of refinement, including new components, a different directory structure and, last but not least, vastly improved documentation (of which you are currently looking at the latest revision).


Because the STLSoft libraries are 100% header-only their installation can require nothing more than selecting an appropriate directory and unpacking the distribution (making sure to preserve the directory structure). Use of the libraries then consists of nothing more than ensuring that the STLSoft distributions include directory is in the include path for your compiler(s) and including the required header files.

However, several of the dependent projects that are written by contributors to STLSoft assume the definition of an environment variable STLSOFT, whose value is the parent directory of the include directory, under which the project directories - include/stlsoft, include/acestl, include/comstl, and so on - reside. This facilitates the specification of include paths in dependent projects as -I$STLSOFT/include (UNIX) / -I%STLSOFT%\include (Windows). This is a good strategy generally, unless you choose to unzip the libraries under a directory included in your system INCLUDE paths.

For example, let's say you've unzipped the STLSoft distribution into D:\3Pty\STLSoft\1.9, such that you the following directory structure is evident:

    . . .
    . . .
    . . .
    . . .
    . . .
    . . .

In this case, you would define the environment variable STLSOFT with the value D:\3Pty\STLSoft\1.9. Now, when version 1.10 is released, you can unzip it into D:\3Pty\STLSoft\1.10, and change the definition of STLSOFT accordingly. In this way you make it possible (and simple!) to revert back to using version 1.9 should you need to do so.

Dependent Projects

STLSoft is used in the following Open Source projects and commercial products:

If you're a user, and you'd like to have your project mentioned here, post a message on the STLSoft newsgroup.

Generated on Thu Jun 10 08:55:04 2010 for STLSoft by  doxygen 1.5.6