The ALib C++ Framework provides industrial-strength infrastructure components for modern C++20 applications, including logging, formatting, memory management, configuration systems, expression parsing, and diagnostics.
Its mission is to provide reusable infrastructure, diagnostics, utilities, and development patterns relevant to modern C++ applications.
ALib is modular and subsets of the available modules can be selectively included in custom builds of the framework.
ALib was created as an alternative to assembling large C++ projects from dozens of disconnected micro-libraries. It is a cohesive infrastructure layer for C++20 applications.
The focus is:
ALib combines capabilities typically spread across libraries such as spdlog, fmt, Boost, CLI11, magic_enum, Abseil, folly, exprtk, and dedicated diagnostics, configuration, allocator, and utility frameworks. For many C++20 applications, ALib might be the better-integrated alternative.
ALib is particularly suited for:
Introduced the new module ALib App which aggregates several features of lower-level modules and orchestrates bootstrapping. With this addition, we felt it was appropriate to rename ALib from a "class library" to a "framework". Furthermore the optional C++20-Module compilation is back. Nevertheless, it is only supported on GNU/Linux platform with the newest Clang compiler version. We are waiting for GCC to relax its currently restrictive interpretation of the standard.
In addition to many smaller improvements, we added an external resource format definition and introduced a corresponding resource compiler that writes C++ code.
All details of changes are provided in the Changelog.
Produces the following output:
This small example already demonstrates several core ALib capabilities:
The current version was tested on the following platform combinations:
The Programmer's Manual contains an extensive chapter about how to compile and use ALib in your C++ environment.
The following documentation is provided:
Separated Programmer's Manuals are provided. One dedicated manual is provided for each ALib Module.
The manuals are well-structured, provide step-by-step source code tutorials and sometimes go into in-depth discussion in respect to design decisions and overall rationales behind important features of the ALib Modules.
All documentation provided leverages the full power of Doxygen (the industry standard).
Therefore, changes in the library's interfaces are always detected and corrected. Most code samples are implemented as unit tests and thus are tested when compiling the documentation. This is also mostly true for the output text of the code samples. (See an example here).
Summary: ALib comes with a complete book of documentation, which has more than 1000 pages** if it was printed. It is all explained, for beginners and experts!
ALib is free software and can be downloaded at Github.
Starting with version 2605, ALib is licensed under the MIT License:
MIT License Copyright (c) 2013-2026 A-Worx GmbH, Germany Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
The change from the Boost Software License 1.0 to the MIT License is intended to simplify future integration of third-party MIT-licensed components and adaptations within ALib.
Previous releases remain available under the Boost Software License 1.0.
ALib builds without mandatory third-party dependencies. Optional integrations exist. For example, if boost is available, ALib Strings** are using its regular-expression searches. In contrast, ALib provides optional compatibility headers for 3rd-party libraries (e.g., QT Class Library), which, for example, provide adaptations of ALib type-traits for QT-types.
We are happy about community input and contributions. For legal clarity, contributions must be provided under the MIT License (or a more permissive license).
Historically, parts of ALib were also developed for C# and Java. Those projects are currently unmaintained but remain available as reference implementations and experimental sibling projects.
The primary and actively maintained version is ALib for C++.
ALib for C# and ALib for Java are included in and distributed with the cross-platform ALox Logging Library.
Our thanks go to all supporters that did and do help to realize this project. Furthermore, to just all of these millions of supporters of free software, including: